Ana içeriğe atla
OrbitFlare iki gRPC servisi çalıştırır. Sorunların çoğu bunların ana bilgisayarlarını, portlarını veya kimlik doğrulamasını karıştırmaktan kaynaklanır, bu yüzden önce bunu kontrol edin: Nasıl erişeceğiniz lisansınızın kimlik doğrulama moduna bağlıdır:
  • IP Whitelist: bağlantı, lisansınızın beyaz listesindeki bir IP’den gelmelidir. Anahtar gerekmez ve başka bir IP’den tek başına anahtar sizi içeri almaz. Bir sunucunun hangi IP’den bağlandığını görmek için o sunucuda curl -s ifconfig.me çalıştırın.
  • API Key Only: lisans anahtarınızı herhangi bir IP’den x-token metadata başlığında gönderin. gRPC’de sorgu dizesi yoktur ve x-api-key kabul edilmez.
Başka bir şeyle uğraşmadan önce lisansınızın hangi modda olduğunu panelden kontrol edin.

Bağlantıyı grpcurl ile kontrol edin

grpcurl bir gRPC metodunu komut satırından çağırır, böylece kod yazmadan erişimi test edebilirsiniz. Proto dosyalarını SDK deposundan geçerli klasöre indirin, ardından:
IP Whitelist modunda -H bayrağını kaldırabilirsiniz. Bir sürüm dizesi, ana bilgisayara erişilebildiği ve erişim izninizin olduğu anlamına gelir. Başka bir şey görürseniz aşağıda arayın.

Hatalar ve anlamları

Erişim reddedildi

İki servis bunu farklı bildirir ve aynı mesaj her kimlik doğrulama modunda farklı anlamlara gelebilir. Jetstream bağlantıyı herhangi bir gRPC durumu göndermeden kapatır, bu yüzden aldığınız tek işaret EOF veya bir sıfırlamadır. Bir uç nokta lisansınızın kapsamında değilse, ona istek göndermek her iki modda da aynı EOF sonucunu verir. Lisansınızın hangi bölgeleri kapsadığını panelden kontrol edin. SDK’lar bunları gRPC durum numarası ve uç noktayla sarar; örneğin Rust’ta grpc error (16): authentication required: provide x-token header veya Go’da grpc error (14): [http://ams.jetstream.orbitflare.com] error reading from server: EOF. 16 durumu Unauthenticated, 7 PermissionDenied ve 14 Unavailable anlamına gelir. Aynı kod bir sunucudan çalışıp diğerinden başarısız oluyorsa, neredeyse kesinlikle IP Whitelist modundasınız ve ikinci sunucunun IP’si listede değil. API Key Only modunda her yerde başarısız oluyorsa, istemcinizin x-token başlığını gerçekten gönderdiğini kontrol edin.

Yanlış taşıma veya port

Bağlantı limitine ulaşıldı

RESOURCE_EXHAUSTED: connection limit exceeded, IP’nizin Jetstream, Yellowstone ve tüm bölgeler genelinde sayılan 50 açık gRPC bağlantısına zaten sahip olduğu anlamına gelir. Artık kullanmadığınız akışları kapatın ve her filtre için ayrı bir akış açmak yerine birkaç filtreyi tek bir akışa koyun. Bkz. bağlantı limitleri.

Bağlı ama hiçbir şey gelmiyor

Jetstream

Jetstream v2 her filtrenin kabul edilip edilmediğini bildirir. Yeni bir akıştaki ilk mesaj, gönderdiğiniz her filtre için bir filterValidation mesajıdır:
Reddedilen bir filtre akışı kapatmaz. Heartbeat almaya devam edersiniz, bu yüzden hiçbir şey eşleşmezken bağlantı sağlıklı görünür. filterValidation mesajlarını loglayın ve piyasanın sakin olduğunu varsaymadan önce accepted değerini kontrol edin. Diğer nedenler:
  • Hesap istediniz. Jetstream yalnızca işlemleri akışla gönderir. Hesap filtreleri desteklenmez ve accounts filtresi içeren bir v1 aboneliği hiçbir şey göndermez. Hesap durumunu izlemek için Yellowstone kullanın.
  • account_required çok katı. account_include, listelenen hesaplardan herhangi birini içeren bir işlemle eşleşir. account_required yalnızca hepsini içeren işlemlerle eşleşir. account_include ile başlayın ve oradan daraltın.
  • SubscribeParsed çağırdınız. Bu metot uygulanmamıştır ve Unavailable: EOF ile kapanır. Subscribe (v1) veya SubscribeTransactions (v2) kullanın ve talimatları kendiniz çözümleyin.

Yellowstone

  • Filtre haritası boş. Filtresiz bir SubscribeRequest geçerlidir ve hiçbir şey döndürmez. Her filtrenin bir adı olmalıdır: {"accounts": {"my-filter": {"account": ["..."]}}}.
  • Hesap değişmiyor. Hesap filtreleri yalnızca hesap değiştiğinde güncelleme gönderir. Her slotta değişen SysvarC1ock11111111111111111111111111111111 ile test edin.
  • Başarısız işlemler filtreleniyor. failed: false, hata veren her işlemi dışarıda bırakır. İşlemlerinizin zincire girip başarısız olup olmadığını görebilmek için hata ayıklarken bunu ayarlamayın. (vote filtresinin artık bir önemi yok: Alpenglow’dan bu yana doğrulayıcılar zincir dışında oy kullanır ve mainnet’te oy işlemi yoktur.)

Duran akışlar

Boştaki gRPC akışları yaklaşık 10 dakika sonra kapatılır. Akış üzerinden her 30 saniyede bir ping gönderin:
  • Jetstream v2: SubscribeTransactions akışında bir ping mesajı gönderin. Sunucu aynı kimliği taşıyan bir pong ile yanıt verir.
  • Yellowstone: yalnızca ping ayarlanmış bir SubscribeRequest gönderin. Bkz. Yellowstone hızlı başlangıç.
OrbitFlare SDK’ları otomatik olarak ping gönderir, kaçırılan pong’ları tespit eder, backoff ile yeniden bağlanır ve filtrelerinizi tekrar gönderir. Kendi istemcinizi kullanıyorsanız yeniden bağlandıktan sonra aboneliğin tamamını tekrar gönderin, çünkü filtreler bir akışa aittir ve akışla birlikte kaybolur.

Hâlâ çözemediyseniz

Ana bilgisayarı ve portu, çağırdığınız metodu, gönderdiğiniz filtreyi, durum koduyla birlikte hatanın tam halini ve bağlandığınız genel IP’yi toplayın. Ardından Discord üzerinden sorun.