Skip to main content
OrbitFlare’ın EVM zincirleri - Polygon, BNB Smart Chain ve Robinhood Chain - artı kendi tanımladığınız her EVM zinciri için tek bir Rust istemcisi. Baştan sona alloy tipleri üzerine kuruludur (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

Varsayılan olarak yalnızca RPC istemcisi etkindir. İhtiyacınız olanı etkinleştirin:

RPC

Yerleşik varsayılan uç nokta yoktur: URL’yi .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.
Builder; .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çin Chain’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.
Arbitrum ön derlemelerine (ArbSys, ArbGasInfo, …) diğer her kontrat gibi 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.

Ortam değişkenleri

Kaynak

SDK açık kaynaktır: github.com/orbitflare/orbitflare-evm-sdk-rs