apex-sender-client, Apex için referans istemcidir. Apex uç noktası başına tek bir kalıcı QUIC bağlantısı tutar, API anahtarınızdan türetilen bir istemci sertifikasıyla kimlik doğrular, akış başına bir serileştirilmiş işlem gönderir ve bağlantı koptuğunda 0-RTT ile yeniden bağlanır.
Kurulum
Crate,apex-sender-client adıyla crates.io’ya geliyor. Yayınlanana kadar OrbitFlare GitHub deposundan kurun:
rpc özelliği HTTP yardımcılarını ekler: getTipAccounts, JSON-RPC sendTransaction, ikili rotalar ve herhangi bir Solana RPC için bir blockhash ve onay yardımcısı. QUIC yolunun tek başına HTTP bağımlılığı yoktur, dolayısıyla yalnızca QUIC’e ihtiyacınız varsa özelliği kapalı bırakın.
Crate, Rust 1.92 veya daha yenisini gerektirir.
Hızlı Başlangıç
Cargo.toml içeren eksiksiz bir program için Hızlı başlangıç sayfasının Rust sekmesine bakın.
Bölgeler
Region her Apex uç noktasını adlandırır. Region::parse("fra") ve Region::code() kısa kodlarla karşılıklı eşleme yapar, Region::ALL ise bunları listeler.
region.quic_endpoint() <code>.apex.orbitflare.com:7001 döndürür ve region.rpc_url() http://<code>.apex.orbitflare.com döndürür. Uç noktalar ve bölgeler sayfasına bakın.
Taşıma Yöntemleri
Taşıma yöntemi önceliği veya yönlendirmeyi değiştirmez. Bunu bahşiş belirler.
API
İstemciyi
Clone ile kopyalamak ucuzdur ve kopyalar tek bir bağlantıyı paylaşır. Onu bir kez oluşturun ve kopyalarını görevlerinize dağıtın.
Crate’te henüz bir paket yardımcısı yoktur. Paketleri HTTP üzerinden
sendBundle veya POST /send-bundle ile gönderin.Seçenekler
ClientOptions, Default uygular, dolayısıyla yalnızca ihtiyacınız olanı ayarlayın:
Canlı Tutma ve Yeniden Bağlanmalar
Bağlantı, Apex uç noktasındaki 30 saniyelik boşta kalma zaman aşımına karşı her saniye gönderilen bir QUIC PING ile açık kalır. Sıcak bir bağlantıda bir gönderim, bir akış açma ve bir yazmadan ibarettir. Bağlantı koparsa:- Bir arka plan görevi bunu fark eder ve hemen yeniden el sıkışır (
proactive_reconnect), böylece bir sonraki gönderim genellikle canlı bir bağlantı bulur. - Yeniden bağlanma, önbelleğe alınmış bir oturum bileti kullanır ve bekleyen işlemi el sıkışmanın ilk uçuşunda gönderir (0-RTT). Uç nokta erken veriyi reddederse istemci onu el sıkışmadan sonra yeniden gönderir.
- Bağlantı gittiği için başarısız olan bir gönderim yeniden bağlanır ve bir kez yeniden dener (
auto_reconnect). Bunu kendiniz ele almak içinfalseolarak ayarlayın.
health(), reconnects_total() ve zero_rtt_resumptions_total() ne olduğunu gösterir. Bunları metriklerinize aktarın.
Hatalar
HTTP yardımcıları
rpc::RpcError döndürür: taşıma hataları için Http, bir JSON-RPC veya düz HTTP reddi için Rpc { code, message } ve BadResponse.
Depodaki Örnekler
Tüm örneklerAPEX_API_KEY, KEYPAIR_PATH (varsayılan payer.json), SOLANA_RPC_URL ve isteğe bağlı olarak APEX_REGION, APEX_QUIC, APEX_RPC, TIP_LAMPORTS ve APEX_TX_VERSION (legacy veya v1) değişkenlerini okur. Her biri bahşişli bir memo gönderir ve bloğa girdiği slotu bildirir.
İstemcinin Yapmadıkları
- İşlem oluşturmak veya imzalamak ya da öncelik ücretinizi seçmek.
- Simülasyon yapmak veya preflight kontrolleri çalıştırmak. Sizinle lider arasındaki hiçbir şey bunu yapmaz.