Parametreler
Program açık anahtarı (base-58 kodlu)
Onay seviyesi (processed, confirmed, finalized)
Hesap verisi için kodlama formatı (base58, base64, jsonParsed)
Okumaya başlanacak hesap verisi ofseti
Hesaplara uygulanacak filtre nesneleri dizisiKarşılaştırılacak hesap verisi ofseti
Eşleştirilecek base-58 kodlu baytlar
Eşleştirilecek hesap verisi boyutu
Yanıt
Hesap bilgisi nesneleri dizisiHesap açık anahtarı (base-58 kodlu)
Belirtilen kodlamada hesap verisi
Hesabın çalıştırılabilir olup olmadığı
Lamport cinsinden hesap bakiyesi
Hesap sahibi (base-58 kodlu)
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
- Belirli bir programa ait tüm hesapları döndürür
- Sonuçları daraltmak için filtreler uygulanabilir
- Yanıt boyutunu azaltmak için hesap verisi dilimlere ayrılabilir
- Mevcut durumdan okuduğu için yanıt anında gelir
- Hesap verisi için farklı kodlamalar belirtilebilir
En İyi Uygulamalar
- Belirli hesapları verimli sorgulamak için filtreler kullanın
- Yanıt boyutunu azaltmak için dataSlice kullanmayı düşünün
- RPC yükünü azaltmak için uygun durumlarda sonuçları önbelleğe alın
- Büyük sonuç kümelerini sayfalama ile yönetin
- İ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 |