Skip to main content
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:
crates.io’da yayınlandığında:
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çin false olarak 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 örnekler APEX_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.
Apex uç noktasının yakınındaki bir istemciden, mainnet üzerinde tipik çıktı:

İ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.