Address, U256, B256, Filter, TransactionRequest, tiplenmiş bloklar, işlemler, makbuzlar ve günlükler — ve OrbitFlare’ın kendi taşıma katmanıyla gelir: yedek uç nokta, geri çekilmeli yeniden deneme ve kendi kendini onaran WebSocket abonelikleri. SDK, EVM uyumlu L2 Robinhood Chain’i hedefler ve varsayılan olarak OrbitFlare’ın üretim endpoint’lerine bağlanır.
Kurulum
Alloy tipleri
Tüm adresler, hash’ler ve miktarlar alloy tipleridir. Yaygın olanlar crate kökünde yeniden dışa aktarılır (Address, U256, B256, Bytes, Filter, TransactionRequest, BlockNumberOrTag, …); crate’lerin tamamına ise orbitflare_robinhood_sdk::primitives (alloy-primitives) ve orbitflare_robinhood_sdk::rpc_types (alloy-rpc-types-eth) olarak erişilebilir.
RPC istemcisi
Tüm seçeneklerin ayarlı olduğu bir istemci:Builder yöntemleri
.url(url) — Birincil uç nokta. Çözümleme sırası: builder üzerindeki .url(), sonra ORBITFLARE_ROBINHOOD_RPC_URL ortam değişkeni, sonra varsayılan https://robinhood.rpc.orbitflare.com (rpc::DEFAULT_RPC_URL).
.urls(&[...]) — Birincil ve tüm yedekleri tek çağrıda ayarlar. İlk eleman birincil, kalanlar yedeklerdir.
.fallback_url(url) / .fallback_urls(&[...]) — Yedek uç noktalar ekler. Birincil başarısız olduğunda SDK yedekleri sırayla dener. Başarısız olan uç noktalar üstel bekleme süresiyle (10 sn, 20 sn, 40 sn, en çok 60 sn) karantinaya alınır ve süre dolduğunda otomatik olarak yeniden denenir; sağlıklı uç noktalar her zaman tercih edilir.
.api_key(key) — OrbitFlare lisans anahtarınız. Ayarlanmazsa SDK ortamdan ORBITFLARE_LICENSE_KEY okur. Anahtar istek zamanında uç nokta URL’sine eklenir.
.block_tag(tag) — Durum sorgularının (get_balance, call, get_code, …) kullandığı varsayılan blok etiketi. BlockNumberOrTag tipine dönüşen her şeyi alır. Varsayılan: Latest.
.retry(policy) — Geçici hatalarda (5xx, 429, bağlantı kopmaları, JSON-RPC hata kodu -32005) sonraki uç noktaya geçmeden önce üstel geri çekilmeli yeniden denemeyi denetler. Retry-After başlığı taşıyan 429 yanıtlarına uyulur.
.timeout(duration) — Her tekil istek için HTTP zaman aşımı.
Kullanılabilir RPC yöntemleri
Zincir durumunu okuma
Günlük filtreleri
get_logs, alloy’un Filter tipini doğrudan alır:
Kontrat çağrıları ve işlemler
call ve estimate_gas, alloy’un TransactionRequest tipini alır. İşlem göndermek için işlemi alloy ile (alloy-signer, alloy-network) oluşturup imzalayın, ardından SDK üzerinden yayınlayın:
Diğer yöntemler
request, herhangi bir RPC yöntemini ada göre çağırır — SDK JSON-RPC zarfını oluşturur, yeniden deneme ve yedek uç noktayı yönetir ve result alanını döndürür. Bu, Robinhood Chain’in bir Arbitrum Nitro ağı olarak sunduğu arb_* uzantı yöntemlerini de kapsar. request_raw ham JSON-RPC gövde dizgesi gönderir.
WebSocket istemcisi
ws özelliğini etkinleştirin. Robinhood Chain yaklaşık her 100 milisaniyede bir blok üretir; bu nedenle newHeads, Ethereum mainnet’e ve çoğu L2’ye göre çok daha hızlı tetiklenir.
.build() öğesinin asenkron olduğuna dikkat edin — döndürmeden önce WebSocket bağlantısını kurar. Builder; .urls(), .fallback_url(s)(), .api_key() ve .retry() yöntemlerini RPC builder ile paylaşır. WebSocket’e özgü seçenekler şunlardır:
.url(url) — Birincil WebSocket uç noktası. Çözümleme sırası: .url(), sonra ORBITFLARE_ROBINHOOD_WS_URL, sonra varsayılan wss://robinhood.rpc.orbitflare.com (ws::DEFAULT_WS_URL).
.ping_interval_secs(n) — SDK’nın ölü bağlantıları tespit etmek için WebSocket Ping çerçevelerini gönderme sıklığı. Varsayılan: 10.
.max_missed_pongs(n) — Bağlantı ölü sayılıp yeniden bağlanılmadan önce yanıtsız kalan ping sayısı. Varsayılan: 3.
Abonelikler
Abonelikler tiplenmiştir — her biri ham JSON yerine karşılık gelen alloy tipini üretir:WsSubscription<T> döndürür. Sonraki tiplenmiş olay için .next() çağırın (None, aboneliğin kapatıldığı anlamına gelir); tiplenmemiş serde_json::Value yükü için .next_raw() kullanın.
sub.unsubscribe().await bir aboneliği açıkça kaldırır; bunu çağırmadan aboneliği düşürmek de işe yarar — SDK yetimi tespit eder ve abonelikten çıkmayı otomatik gönderir.
Yeniden bağlanma
Bağlantı koparsa arka plan görevi üstel geri çekilme ile yeniden bağlanır ve tüm etkin abonelikleri otomatik olarak yeniden abone eder..next() çağrılarınız çalışmaya devam eder — bağlantı geri gelince olaylar sürer. Ölü bağlantılar etkin ping/pong ile tespit edilir; bu, .ping_interval_secs() ve .max_missed_pongs() ile yapılandırılabilir.