Skip to main content

Genel Bakış

OrbitFlare Jetstream, Solana işlemlerinin gerçek zamanlı olarak akışını sağlayan yüksek performanslı bir gRPC hizmetidir. Minimum gecikmeli beslemeyi zengin ve esnek bir protokol üzerinden sunar: aboneliğinizi anında ayarlamanıza ve önceden hesaplanmış işlem meta verilerini almanıza olanak tanır, böylece istemciniz daha az iş yapar.

Öne Çıkanlar

  • Dinamik filtreler — akış açıkken filtre ekleyin ve kaldırın, her biri istemci tarafından seçilen bir filter_id ile eşleşen her işlemde geri yansıtılır. Yeniden bağlanma gerekmez ve her değişiklik bir FilterResult ile onaylanır.
  • İsteğe bağlı zenginleştirme — fee_payer, writable_accounts, program_ids, compute_unit_price (işlem birimi fiyatı, mikro-lamport/CU; toplam ücret değil), compute_limit, tx_size ve çözümlenmiş adres arama tablosu adreslerini, istemci tarafında yeniden türetmek yerine doğrudan her işlemde isteyin.
  • Slot yaşam döngüsü akışı — özel bir SubscribeSlots akışı, mevcut lider ve üst slot ile birlikte slot başına ALIVE / COMPLETE / DEAD olayları yayınlar.
  • Yerleşik canlılık — her mesaj, boşluk tespiti için monoton bir sequence numarası taşır ve sunucu, boşta olan bir işlem akışında bir Heartbeat yayınlar.
  • Talep üzerine zenginleştirme — bir işlem varsayılan olarak temel alanlarla birlikte tek bir düz mesajdır; ek alanları istediğinizde eklemek için abonelik başına zenginleştirmeyi açın.

Kimlik Doğrulama

API anahtarınızı x-token gRPC meta veri başlığında sağlayın veya IP beyaz listesi kimlik doğrulamasını kullanın. Kurulum ayrıntıları için bkz. Kimlik Doğrulama.

Bağlanma

  1. Altyapınıza en yakın bölge uç noktasını seçin.
  2. jetstream.v2 protobuf tanımından bir istemci oluşturun; bkz. referanstaki Kod Oluşturma.
  3. x-token API anahtarınızla (veya beyaz listeye alınmış bir IP’den) kimlik doğrulaması yapın ve bir akış açın.

Akış nasıl çalışır

SubscribeTransactions, çift yönlü bir akıştır; aboneliğinizi, verileri aldığınız aynı bağlantıyla yönetirsiniz:
  1. Akışı açın ve bir veya daha fazla filtre içeren bir AddFilters isteği gönderin. Her filtrenin account_include / account_exclude / account_required alanlarından en az birine ihtiyacı vardır. (Boş, her şeyle eşleşen filtreler reddedilir.) account_required herhangi-biri anlamındadır; bir işlem, listelenen hesaplardan en az birine başvuruyorsa eşleşir, hepsine değil.
  2. Sunucu, filtre başına bir FilterResult ile yanıt verir (accepted veya bir rejection_reason).
  3. Eşleşen işlemler, eşleştikleri filter_id değerlerini listeleyen FilteredTransaction mesajları olarak gelir.
  4. Aldıklarınızı değiştirmek için istediğiniz zaman AddFilters / RemoveFilters gönderin; yeniden bağlanma yok.
  5. Boşta olan bir işlem akışında sunucu Heartbeat mesajları gönderir; canlılığı doğrulamak için bunları (ve Ping/Pong kullanın).
  6. Herhangi bir boşluğu tespit etmek için sequence numarasını izleyin ve akış kapanırsa yeniden bağlanın (filtrelerinizi yeniden göndererek).
Zenginleştirilmiş işlemler almak için bir filtrede include_enrichment: true ayarlayın.
Zenginleştirme abonelik genelindedir: aktif filtrelerinizden herhangi biri include_enrichment ayarlarsa, oturumun aldığı her işlem zenginleştirilir. Ek alanları istediğinizde abonelik başına açın; akışa hiç gecikme eklemez; tek fark biraz daha büyük bir mesajdır.

Slot olayları

Her slot geçişi için bir SlotEvent almak üzere SubscribeSlots (ayrı bir, sunucu akışlı RPC, parametresiz) açın:
  • ALIVE — slotun ilk parçası (shred) alındı.
  • COMPLETE — slotun son parçası (shred) alındı.
  • DEAD — slot atlandı veya tamamlanmadan sonraki slotlar tarafından geçersiz kılındı.
Her olay, current_leader (mevcut lider kullanılabilir olduğunda 32 baytlık pubkey) ve parent_slot içerir.

v1’den Geçiş

Önceki Jetstream v1 protokolü kullanımdan kaldırılmıştır ancak mevcut entegrasyonlar için hâlâ kullanılabilir. v1 kullanıyorsanız, her iki hizmet de aynı uç noktalarda yan yana çalışır, bu nedenle geçiş, ağ değişikliği olmayan istemci tarafı bir protokol değişikliğidir. Alan alan eşleme için bkz. v1’den Geçiş veya kullanımdan kaldırılan v1 genel bakışı.

En İyi Uygulamalar

  1. Filtreleme — her zaman en az bir hesap kısıtlaması ayarlayın ve eşleşmeleri ilişkilendirebilmek ve filtreleri daha sonra kaldırabilmek için filtre başına kararlı ve benzersiz bir filter_id kullanın.
  2. Zenginleştirme — ek alanlara ihtiyacınız olmadıkça kapalı tutun; tüm aboneliğe uygulanır.
  3. Yeniden Bağlanma — boşluklar için sequence izleyin ve filtrelerinizi yeniden göndererek otomatik olarak yeniden bağlanın.
  4. Canlılık — durmuş bir bağlantıyı tespit etmek için Heartbeat / Ping kullanın.

Ayrıca Bakınız

v1'den Geçiş

Alan alan v1-Jetstream eşlemesi ve her yeteneğin size ne kazandırdığı.

Protokol Referansı

Tam Protocol Buffer belirtimi, uç noktalar ve kod oluşturma.

Jetstream v1 (kullanımdan kaldırıldı)

Kullanımdan kaldırılan v1 genel bakışı, istemci örnekleri ve filtreleme kılavuzu.

Yellowstone gRPC

İç talimatlar ve eksiksiz meta verilerle Geyser tabanlı tam kapsamlı akış.

Destek

Jetstream hakkında teknik destek veya sorularınız için lütfen destek ekibimizle iletişime geçin ya da Discord topluluğumuza katılın.