Skip to main content
orbitflare-apex, 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, orbitflare-apex adıyla crates.io’da yayınlanmıştır; kaynak kodu GitHub’dadır:
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. Bir işlem oluşturmak ve göndermek için ihtiyaç duyduğunuz tek bağımlılık budur. Crate, Solana türlerini orbitflare_apex::prelude üzerinden, uç noktanın birlikte gönderdiği sürümlere sabitlenmiş biçimde yeniden dışa aktarır; dolayısıyla herhangi bir solana-* crate’ini kendiniz eklemeniz veya sürümünü eşleştirmeniz gerekmez. 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.
Paketleri rpc::RpcClient::send_bundle(&[&[u8]]) ile gönderin; bu, bir BundleAccepted (bundle_id ve signatures) döndürür. BundleStatus (state, landed_slot) için bundle_statuses(&[&str]) çağrısını yoklayın. En fazla MAX_BUNDLE (4) üye, tam olarak biri bahşişli.

Prelude

use orbitflare_apex::prelude::*;, bahşişli bir işlemi oluşturmak, imzalamak ve göndermek için gereken her şeyi içeri alır, dolayısıyla istemciyi kullanan bir program hiçbir solana-* crate’ine doğrudan bağımlı olmaz. Her tür, uç noktanın birlikte gönderdiği sürümde yeniden dışa aktarılır; bu da aksi halde derlemeyi bozan sürüm eşleştirmesini ortadan kaldırır (Solana crate’leri ara sürümler arasında wincode 0.5 ve 0.6’yı karıştırır). Genel API türleri (VersionedTransaction, Instruction, Keypair, Pubkey, Signature, Hash) crate kökünde de bulunur. İşlemleri kendi Solana crate’lerinizle oluşturmayı tercih ederseniz, onları kendiniz serileştirin ve baytları send_transaction_bytes ile gönderin; bu, istemcinin bağımlılık grafiğinin hiçbirini paylaşmaz.

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.
  • Her yeniden bağlanmada ana bilgisayar adı yeniden çözümlenir; böylece Region::Global kullanan bir istemci, kendi uç noktası düştüğünde yeniden başlatılmadan yük dengeleyiciyi izleyerek bir sonraki en yakın uç noktaya geçer. Çözümleme gönderim sırasında değil, arka plandaki yeniden bağlanmada yapılır; başarısız olursa veya iki saniyeden uzun sürerse istemci elindeki adresi korur. IP adresi olarak verilen bir uç nokta hiçbir zaman çözümlenmez.
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, APEX_TX_VERSION (legacy veya v1), APEX_MEMO_BYTES ve APEX_CU_LIMIT 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.