Ana içeriğe atla

Parametreler

programId
string
gerekli
Program açık anahtarı (base-58 kodlu)
config
object

Yanıt

result
array
Hesap bilgisi nesneleri dizisi
pubkey
string
Hesap açık anahtarı (base-58 kodlu)
account
object
data
array
Belirtilen kodlamada hesap verisi
executable
boolean
Hesabın çalıştırılabilir olup olmadığı
lamports
number
Lamport cinsinden hesap bakiyesi
owner
string
Hesap sahibi (base-58 kodlu)
rentEpoch
number
Hesabın bir sonraki kira borcunun olacağı dönem

Kod Örnekleri

Temel İstek

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

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ı

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

KodMesajÇözüm
-32601Method not foundBir Solana RPC düğümüne bağlı olduğunuzu doğrulayın
-32602Invalid paramsprogramId ve yapılandırma parametrelerini kontrol edin
-32007Account information unavailableDüğüm başlatılıyor veya senkronize ediliyor olabilir