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.
İstemciler zincir üzerinde geneldir (RpcClient<C>, WsClient<C>); aşağıdaki takma adlar kolaylık sağlayan kısaltmalardır. gRPC şu anda yalnızca Polygon içindir (Bor).
Desteklenen zincirler
orbitflare-robinhood-sdk’ten mi geçiyorsunuz? Robinhood Chain artık burada RobinhoodRpcClient / RobinhoodWsClient ile kapsanıyor. RPC ve WebSocket yüzeyi aynıdır; bağımsız crate kullanımdan kaldırılmıştır.Kurulum
RPC
.url() ile veya bir ortam değişkeni aracılığıyla ayarlayın (bkz. Uç noktalar) ve API anahtarını .api_key() ile veya ORBITFLARE_LICENSE_KEY ile ayarlayın.
Builder yöntemleri
.url(url) - Birincil uç nokta. Çözümleme sırası: builder üzerindeki .url(), sonra ORBITFLARE_RPC_URL ortam değişkeni.
.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. 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 ORBITFLARE_LICENSE_KEY’i kontrol eder. Anahtar istek zamanında uç nokta URL’sine ?api_key=<key> olarak eklenir.
.block_tag(tag) - Durum sorgularının (get_balance, call, get_code, …) kullandığı varsayılan blok etiketi. 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.
.timeout(duration) - Her tekil istek için HTTP zaman aşımı.
Kullanılabilir yöntemler
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:
Rastgele 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. request_raw ham JSON-RPC gövde dizgesi gönderir.
WebSocket
ws özelliğini etkinleştirin. .build() asenkrondur - döndürmeden önce bağlantıyı kurar.
.urls(), .fallback_url(s), .api_key() ve .retry() yöntemlerini RPC builder ile paylaşır; WebSocket’e özgü seçenekler .ping_interval_secs(n) (varsayılan 10) ve .max_missed_pongs(n) (varsayılan 3) yöntemleridir.
Abonelikler
Abonelikler tiplenmiştir - her biri ham JSON yerine karşılık gelen alloy tipini üretir:
Tüm abonelikler bir
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; aboneliği düşürmek de işe yarar.
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. Ölü bağlantılar etkin ping/pong ile tespit edilir.
Polygon gRPC
Polygon, düşük yüklü blok, başlık ve makbuz erişimi için bir Bor gRPC arayüzü sunar.grpc özelliğini etkinleştirin. gRPC, düz metin HTTP/2 üzerinden çalışır; .api_key() aracılığıyla bir token ile kimlik doğrulaması yapın (x-token olarak gönderilir) veya IP beyaz listesi kullanın.
H160/H256 değerleri
ToAlloy trait’i ile alloy Address/B256 tiplerine dönüşür.
Özel zincirler
Her EVM zinciri çalışır: bir işaretçi tip içinChain’i uygulayın ve genel bir RpcClient<C>’yi onun URL’sine yönlendirin. CHAIN_ID meta veridir (RpcClient::<C>::chain_id_const() olarak erişilebilir); istekleri kısıtlamaz.
Arbitrum ve Nitro blok alanları
Robinhood Chain bir Arbitrum Nitro ağıdır, bu yüzden blokları standart EVM blok tiplerinin düşürdüğü ekstra alanlar (l1BlockNumber, sendRoot, sendCount) taşır. SDK bunları korur ve NitroBlockExt aracılığıyla tiplenmiş erişimciler sunar. Diğer standart dışı alanlar hâlâ block.other üzerinde kullanılabilir.
call() üzerinden erişilebilir.
Uç noktalar
Varsayılan uç nokta yoktur. URL’yi her istemci için.url() ile veya bir ortam değişkeni aracılığıyla ayarlayın. Çözümleme sırası: builder üzerindeki .url(), sonra ortam değişkeni.
OrbitFlare panonuzdaki tam uç noktaları kullanın.