> ## 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.

# getProgramAccounts

> Bir programa ait tüm hesapları döndürür

## Parametreler

<ResponseField name="programId" type="string" required>
  Program açık anahtarı (base-58 kodlu)
</ResponseField>

<ResponseField name="config" type="object" optional>
  <Expandable title="config fields">
    <ResponseField name="commitment" type="string" optional>
      Onay seviyesi (processed, confirmed, finalized)
    </ResponseField>

    <ResponseField name="encoding" type="string" optional>
      Hesap verisi için kodlama formatı (base58, base64, jsonParsed)
    </ResponseField>

    <ResponseField name="dataSlice" type="object" optional>
      <ResponseField name="offset" type="number">
        Okumaya başlanacak hesap verisi ofseti
      </ResponseField>

      <ResponseField name="length" type="number">
        Okunacak veri uzunluğu
      </ResponseField>
    </ResponseField>

    <ResponseField name="filters" type="array" optional>
      Hesaplara uygulanacak filtre nesneleri dizisi

      <ResponseField name="memcmp" type="object" optional>
        <ResponseField name="offset" type="number">
          Karşılaştırılacak hesap verisi ofseti
        </ResponseField>

        <ResponseField name="bytes" type="string">
          Eşleştirilecek base-58 kodlu baytlar
        </ResponseField>
      </ResponseField>

      <ResponseField name="dataSize" type="number" optional>
        Eşleştirilecek hesap verisi boyutu
      </ResponseField>
    </ResponseField>
  </Expandable>
</ResponseField>

## Yanıt

<ResponseField name="result" type="array">
  Hesap bilgisi nesneleri dizisi

  <ResponseField name="pubkey" type="string">
    Hesap açık anahtarı (base-58 kodlu)
  </ResponseField>

  <ResponseField name="account" type="object">
    <ResponseField name="data" type="array">
      Belirtilen kodlamada hesap verisi
    </ResponseField>

    <ResponseField name="executable" type="boolean">
      Hesabın çalıştırılabilir olup olmadığı
    </ResponseField>

    <ResponseField name="lamports" type="number">
      Lamport cinsinden hesap bakiyesi
    </ResponseField>

    <ResponseField name="owner" type="string">
      Hesap sahibi (base-58 kodlu)
    </ResponseField>

    <ResponseField name="rentEpoch" type="number">
      Hesabın bir sonraki kira borcunun olacağı dönem
    </ResponseField>
  </ResponseField>
</ResponseField>

## Kod Örnekleri

### Temel İstek

```bash theme={null}
curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY -X POST -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getProgramAccounts",
  "params": [
    "PROGRAM_ID"
  ]
}'
```

### Filtreli İstek

```bash theme={null}
curl https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY -X POST -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getProgramAccounts",
  "params": [
    "PROGRAM_ID",
    {
      "filters": [
        {
          "dataSize": 165
        },
        {
          "memcmp": {
            "offset": 0,
            "bytes": "BASE58_ENCODED_BYTES"
          }
        }
      ]
    }
  ]
}'
```

### web3.js Kullanımı

```typescript theme={null}
import { Connection, PublicKey } from '@solana/web3.js';

const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');

// Get all program accounts
const accounts = await connection.getProgramAccounts(
  new PublicKey('PROGRAM_ID')
);
console.log('Accounts:', accounts);

// Get filtered program accounts
async function getFilteredProgramAccounts(
  programId: PublicKey,
  filters: any[]
) {
  const accounts = await connection.getProgramAccounts(programId, {
    filters
  });
  
  return accounts.map(({ pubkey, account }) => ({
    pubkey: pubkey.toBase58(),
    data: account.data,
    lamports: account.lamports,
    owner: account.owner.toBase58(),
    executable: account.executable
  }));
}
```

## Notlar

1. Belirli bir programa ait tüm hesapları döndürür
2. Sonuçları daraltmak için filtreler uygulanabilir
3. Yanıt boyutunu azaltmak için hesap verisi dilimlere ayrılabilir
4. Mevcut durumdan okuduğu için yanıt anında gelir
5. Hesap verisi için farklı kodlamalar belirtilebilir

## En İyi Uygulamalar

1. Belirli hesapları verimli sorgulamak için filtreler kullanın
2. Yanıt boyutunu azaltmak için dataSlice kullanmayı düşünün
3. RPC yükünü azaltmak için uygun durumlarda sonuçları önbelleğe alın
4. Büyük sonuç kümelerini sayfalama ile yönetin
5. İhtiyaçlarınıza göre uygun kodlamayı kullanın

## Yaygın Hatalar

| Kod    | Mesaj                           | Çözüm                                                  |
| ------ | ------------------------------- | ------------------------------------------------------ |
| -32601 | Method not found                | Bir Solana RPC düğümüne bağlı olduğunuzu doğrulayın    |
| -32602 | Invalid params                  | programId ve yapılandırma parametrelerini kontrol edin |
| -32007 | Account information unavailable | Düğüm başlatılıyor veya senkronize ediliyor olabilir   |
