Skip to main content

Mevcut Uç Noktalar

Jetstream, tüm OrbitFlare bölgelerinde kullanılabilir. En düşük gecikme için altyapınıza en yakın bölgeye bağlanın.
Jetstream, gRPC bağlantıları için düz http:// kullanır (https:// değil). gRPC, HTTP/2 üzerinde kendi taşıma güvenliği müzakeresini kullanır. https:// yalnızca özel düğümünüz bunu açıkça gerektiriyorsa kullanı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. Ayrıntılar için bkz. Kimlik Doğrulama.

Protocol Buffer Belirtimi

Bu belge, OrbitFlare Jetstream tarafından kullanılan Protocol Buffer (protobuf) belirtimini özetlemektedir. Tam belirtim GitHub depomuzda bulunabilir; istemcinizi oluşturmak için jetstream_v2.proto dosyasını oradan indirin veya aşağıda çoğaltılan tanımı kullanın. Protobuf paketinin adı jetstream.v2’dir.

Hizmet Tanımı

İstek Mesajları

SubscribeTransactions, çift yönlü bir akıştır. İstemci, akış açıkken aboneliğini yönetmek için bir dizi istek mesajı, her biri tam olarak bir yük taşıyan, gönderir.

SubscribeTransactionsRequest

Filtre Ekleme

Filtreler, akış açıkken dinamik olarak eklenir. Her filtre, eşleşen her işlemde ve doğrulama onayında geri yansıtılan, istemci tarafından seçilen bir filter_id taşır.
Bir filtre, account_include / account_exclude / account_required alanlarından en az birini belirtmelidir. Boş (her şeyle eşleşen) filtreler reddedilir; bkz. FilterResult.

Filtre Kaldırma

Yanıt Mesajları

SubscribeTransactionsResponse

Akıştaki her mesaj, istemcilerin boşlukları tespit edebilmesi için bir sunucu zaman damgası ve monoton olarak artan bir sequence numarası (akış başına) taşır. Tam olarak bir yük ayarlanır.

Filtre Doğrulama

Her AddFilters / RemoveFilters sonrasında sunucu, kabulü onaylayan veya reddi açıklayan, filtre başına bir FilterResult döndürür.

Heartbeat

Filtrelenmiş İşlem

Her eşleşen işlem, eşleştiği filter_id değerlerini listeler, ardından işlemin kendisi gelir.

Paylaşılan Türler

İşlem sürümleri (SIMD-0385)

Solana’nın üç işlem biçimi vardır: legacy, v0 ve v1 (SIMD-0385). config alanı (23) ve priority_fee_lamports alanı (24) işlem v1 için eklenmiştir ve eklemelidir — bu tanımın eski bir kopyasından üretilmiş bir istemci, bunları bilinmeyen alanlar olarak atlar ve diğer tüm alanları normal şekilde çözümler.
“İşlem v1”, “Jetstream v1” ile aynı şey değildir. İşlem v1, bu mevcut Jetstream protokolünün tam olarak desteklediği bir Solana işlem biçimidir (SIMD-0385). “Jetstream v1” ise ayrı, artık kullanımdan kaldırılmış Jetstream protokolüne atıfta bulunur. Mevcut Jetstream, işlem v1’i taşıyan protokoldür.
Sürümü iki alandan belirleyin. Önce config alanını kontrol edin, çünkü versioned hem v0 hem de v1 için true’dur:
Ücrete göre sıralama: compute_unit_price (field 17) değil, priority_fee_lamports (field 24) alanını kullanın. Field 17, bir SetComputeUnitPrice talimatından okunan, hesaplama birimi başına mikro-lamport’tur — bir v1 işleminde böyle bir talimat yoktur, dolayısıyla field 17 her v1 işlemi için yoktur ve yalnızca bu alana göre sıralama tüm v1 trafiğini en sona koyar. Field 24 toplam lamport’tur ve üç sürüm için de doldurulur (türetilen değer için hem field 23 hem de field 24 yalnızca enrichment altında yayılır; config ise v1 için her zaman gönderilir).

Slot Akışı

SubscribeSlots, slot yaşam döngüsü olaylarının bir sunucu akışıdır. Parametre almaz; akışı açın ve slotlar ilerledikçe olayları alın.

Akışsız Metotlar

Protokolü Kullanma

Tipik bir istemci:
  1. Yukarıdaki jetstream.v2 tanımından istemci kodu oluşturur.
  2. SubscribeTransactions çift yönlü akışını açar ve kimlik doğrulaması yapar (x-token başlığı veya IP beyaz listesi).
  3. Her biri benzersiz bir filter_id içeren bir veya daha fazla TxFilter girişiyle bir AddFilters isteği gönderir.
  4. FilterResult onaylarını, ardından FilteredTransaction mesajlarının akışını okur.
  5. Akışı yeniden açmadan istediği zaman filtre ekler veya kaldırır.
  6. Boşlukları tespit etmek için sequence izler ve bir bağlantı kapanmasını yeniden bağlanma sinyali olarak değerlendirir.
  7. İsteğe bağlı olarak, slot yaşam döngüsü olayları için SubscribeSlots (ayrı bir akış) açar.

Kod Oluşturma

TypeScript/JavaScript için:
Rust için:

En İyi Uygulamalar

  1. Filtreleme
    • Her zaman en az bir hesap kısıtlaması ayarlayın; boş filtreler reddedilir.
    • Eşleşmeleri ilişkilendirebilmek ve filtreleri daha sonra kaldırabilmek için filtre başına kararlı, benzersiz bir filter_id kullanın.
  2. Zenginleştirme
    • Ek alanlara ihtiyacınız olmadıkça include_enrichment alanını kapalı bırakın; sade çıktı daha küçüktür. Bunu etkinleştirmek gecikme eklemez; tek maliyet biraz daha büyük bir mesajdır.
    • Zenginleştirme abonelik genelindedir: herhangi bir filtrede etkinleştirmek, oturumun aldığı her işlemi zenginleştirir.
  3. Sıra ve Yeniden Bağlanma
    • Bırakılan mesajları tespit etmek için sequence numarasını izleyin.
    • Otomatik yeniden bağlanma uygulayın; yeniden bağlanırken AddFilters isteğinizi yeniden gönderin.
  4. Canlılık
    • Akışın sağlıklı olduğunu doğrulamak ve gecikmeyi ölçmek için Heartbeat ve Ping/Pong kullanın.

Ayrıca Bakınız

Jetstream Genel Bakış

Akış modeli, zenginleştirme, slot olayları ve başlangıç.

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

Kullanımdan kaldırılan v1 Protocol Buffer belirtimi.

Destek

Protokol veya uygulama ayrıntıları hakkındaki teknik sorularınız için lütfen Discord topluluğumuza katılın.