Liking cljdoc? Tell your friends :D

Resmî Go ve JavaScript SDK Çapraz Kontrolü

İnceleme tarihi: 2026-08-18 Sonuç: Faz 1'in temel kararları doğrulandı; retry sınıflandırması endpoint execution semantiğine bağlanarak sıkılaştırıldı.

İncelenen Kaynaklar

SDKCommitSpot/common sürümü
Binance Go Connector553d82485895a6ccabd881e6bf838d384a65fc1aSpot 1.10.0, common 2.6.0
Binance JavaScript Connector092e4f289e9047114fb8ec66256510cc207e16bb@binance/spot 32.0.1, @binance/common 2.4.5

Her iki güncel depo da ürün bazlı, OpenAPI-generated modüler connector yapısıdır. Eski monolitik Node/TypeScript connector'ları güncel tasarım kaynağı değildir.

Karar Matrisi

KonuGo / JavaScript bulgusubinance-clj kararı
Client ayrımıREST, WebSocket API ve WebSocket Streams ayrı config/lifecycle taşırDoğrulandı. Tek facade altında ayrı sınırlar korunur
Public modelÇok sayıda generated struct/interface vardırKopyalanmaz. Immutable Clojure map + küçük normalizer
Finansal alanGüncel Go ve JS Spot modellerinde price/qty/balance gibi alanlar çoğunlukla string'dirGüçlendirildi. Wire string, public/internal değer BigDecimal
Büyük integerJS json-with-bigint, Go int64/typed modeller kullanırID/timestamp integer kalır; finansal değerle karıştırılmaz
REST signingParametre serialization ile imzalanan payload birlikte üretilirExact-wire-payload ve percent-encoding kararı doğrulandı
WS API signingİki SDK da parametreleri alfabetik sıralarAlfabetik sıralama doğrulandı
WS UnicodeOrtak SDK yardımcıları URL encoding uygularResmî WS dokümanındaki raw UTF-8 vektörü üstün; Phase 3'te uyumsuzluğu yakalayan test yazılır
AuthHMAC, RSA ve Ed25519 signer yolları vardırHMAC + Ed25519 V1; RSA kapsam dışı kararı korunur
TimestampSDK'lar sistem saatini doğrudan okurClock injection korunur; deterministik test ve server offset için daha güvenlidir
Response metadataStatus, headers ve rate-limit metadata korunurNormalize metadata envelope kararı doğrulandı
Error modeliHTTP status odaklı ortak hata sınıfları vardırBinance numeric code + status + retry metadata + unknown execution daha zengin tutulur
ReconnectConnection/subscription registry, serverShutdown, reconnect ve restore bulunurRegistry/restore doğrulandı; bounded queue, jitter ve kullanıcı kapatması ayrımı korunur
Testnet varsayılanıSDK varsayılanları production URL'leridirTestnet varsayılanı güvenlik gereği bilinçli farklılık olarak korunur

Kritik Retry Bulgusu

Go common 2.6.0, REST response 500504 olduğunda HTTP metodunu kontrol etmeden varsayılan üç retry uygular. JavaScript common 2.4.5, network/500504 retry'sini GET ve DELETE metodlarıyla sınırlar. Binance Spot'ta DELETE /api/v3/order bir state-changing cancel komutudur; yalnız metoda bakılarak güvenli kabul edilemez.

Bu nedenle binance-clj:

  • retry kararını GET/POST/DELETE metodundan türetmez;
  • her endpoint spec'inde :execution :read|:command taşır;
  • :command için :retry-policy :never zorunlu kılar;
  • create ve cancel dahil belirsiz trading sonuçlarını ileriki fazlarda query/UDS ile reconcile eder.

Bu, önceki “trading POST tekrar edilmez” kararını “hiçbir state-changing trading command otomatik tekrar edilmez” şeklinde genişletir.

SDK'lardan Bilinçli Ayrılıklar

  1. Generated model ağı ve SDK enum kapalılığı alınmaz.
  2. Production URL varsayılanı alınmaz.
  3. Sabit/global retry sayısı alınmaz.
  4. HTTP metoduna göre retry güvenliği çıkarımı yapılmaz.
  5. REST ve WebSocket API için aynı canonicalizer kullanılmaz.
  6. Sabit reconnect delay tek başına yeterli sayılmaz; exponential backoff + jitter uygulanır.
  7. Ham exception/request içeriği tanılama verisine taşınmaz; secret-safe normalize hata üretilir.

Nihai Teyit

Faz 1'de seçilen kapsam, endpointler, Testnet güvenliği, BigDecimal, ayrı REST/WS signing, güncel User Data Stream yöntemi, metadata zarfı, unknown execution ve reconnect/restore kararlarında geri alınması gereken bir hata bulunmadı. Retry kapsamı yukarıdaki şekilde sıkılaştırıldı ve Faz 2 endpoint sözleşmesine işlendi.

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close