> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt
> Use this file to discover all available pages before exploring further.

# gRPC Hata Ayıklama

> OrbitFlare üzerindeki Jetstream ve Yellowstone gRPC bağlantılarını düzeltin: IP Whitelist ve API Key Only erişimi, x-token hataları, TLS ve port hataları, hiçbir şeyle eşleşmeyen filtreler ve keepalive.

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:

| | Jetstream | Yellowstone |
| - | - | - |
| Ana bilgisayar | `{region}.jetstream.orbitflare.com` | `{region}.rpc.orbitflare.com` |
| Port | `80` | `10000` |
| Taşıma | Düz metin (`http://`) | Düz metin (`http://`) |
| Erişim | Beyaz listedeki IP veya `x-token` anahtarı | Beyaz listedeki IP veya `x-token` anahtarı |
| Filtreler | Yalnızca işlemler | Hesaplar, işlemler, slotlar, bloklar, girdiler |

Nasıl erişeceğiniz lisansınızın [kimlik doğrulama moduna](/tr/authentication#kimlik-doğrulama-modları) 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](https://orbitflare.com/dashboard) kontrol edin.

## Bağlantıyı grpcurl ile kontrol edin

[grpcurl](https://github.com/fullstorydev/grpcurl) bir gRPC metodunu komut satırından çağırır, böylece kod yazmadan erişimi test edebilirsiniz. Proto dosyalarını [SDK deposundan](https://github.com/orbitflare/orbitflare-sdk-ts/tree/main/protos) geçerli klasöre indirin, ardından:

```bash Jetstream theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
grpcurl -plaintext -H "x-token: $ORBITFLARE_LICENSE_KEY" -import-path . -proto jetstream_v2.proto \
  -d '{}' fra.jetstream.orbitflare.com:80 jetstream.v2.JetstreamV2/GetVersion
```

```bash Yellowstone theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
grpcurl -plaintext -H "x-token: $ORBITFLARE_LICENSE_KEY" -import-path . -proto geyser.proto \
  -d '{}' fra.rpc.orbitflare.com:10000 geyser.Geyser/GetVersion
```

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](/tr/authentication#kimlik-doğrulama-modları) farklı anlamlara gelebilir.

| Servis | Gördüğünüz | IP Whitelist modu | API Key Only modu |
| - | - | - | - |
| Yellowstone | `Unauthenticated: authentication required: provide x-token header` | IP'niz beyaz listede değil. Beyaz listeye ekleyin; x-token gerekmez | `x-token` gönderilmedi. Lisans anahtarınızı bu başlıkta gönderin |
| Yellowstone | `PermissionDenied: IP not whitelisted for this api key` | Anahtar geçerli ama IP beyaz listede değil. Bu modda anahtar tek başına yeterli değildir | Bölge lisansınızda yok |
| Yellowstone | `Unauthenticated: invalid x-token: api key not found` | x-token geçerli bir anahtar değil | x-token geçerli bir anahtar değil. Panelden tekrar kopyalayın |
| Jetstream | `Unavailable: error reading from server: EOF` veya `connection reset by peer` | IP'niz beyaz listede değil | Geçerli bir `x-token` gönderilmedi |

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](https://orbitflare.com/dashboard) 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

| Gördüğünüz | Neden | Çözüm |
| - | - | - |
| `tls: first record does not look like a TLS handshake` | İstemci düz metin bir porta TLS ile bağlandı | URL'de `http://` veya grpcurl ile `-plaintext` kullanın |
| Bağlanırken `context deadline exceeded` | Yanlış port, örneğin `10000` üzerinde Jetstream | Jetstream `80`, Yellowstone `10000` portundadır |
| DNS sorgusu başarısız | Ana bilgisayar mevcut değil | Bölge kodunu [Altyapı](/tr/infrastructure) sayfasında kontrol edin. Jetstream ve Yellowstone'un bölge listeleri farklıdır |

### 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](/tr/authentication#veri-akışı-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:

```json theme={"theme":{"light":"github-light","dark":"github-dark-default"}}
{ "filterValidation": { "filterId": "pump", "accepted": true } }
{ "filterValidation": { "filterId": "bad", "rejectionReason": "invalid pubkey" } }
```

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](/tr/data-streaming/yellowstone-account-monitoring) 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ıç](/tr/data-streaming/yellowstone-quickstart).

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](https://discord.gg/orbitflare) üzerinden sorun.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.