Parametreler
Döndürülecek maksimum blok sayısı
Aşağıdaki isteğe bağlı alanları içeren yapılandırma nesnesi:
Kullanılacak onay seviyesi:
processed: En son blok (onaylanmamış)
confirmed: Süper çoğunluk tarafından onaylanmış
finalized: Süper çoğunluk tarafından sonuçlandırılmış
Yanıt
Artan sırayla blok slotları dizisi
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": "getBlocksWithLimit",
"params": [
100000000,
10
]
}'
Onay Seviyesiyle İ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": "getBlocksWithLimit",
"params": [
100000000,
10,
{
"commitment": "finalized"
}
]
}'
web3.js Kullanımı
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');
// Get 10 blocks starting from slot
const blocks = await connection.getBlocksWithLimit(100000000, 10);
console.log('Blocks:', blocks);
// Get finalized blocks
const finalizedBlocks = await connection.getBlocksWithLimit(100000000, 10, 'finalized');
console.log('Finalized blocks:', finalizedBlocks);
Notlar
- Belirtilen slottan itibaren onaylanmış blokları döndürür
- Sonuçlar artan sırayla döndürülür
- Limit, döndürülecek maksimum blok sayısını kontrol eder
- Bazı slotlar atlanmış olabilir (blok üretilmemiş)
- Mevcut durumdan okuduğu için yanıt anında gelir
En İyi Uygulamalar
- İhtiyacınıza göre uygun onay seviyesini kullanın:
- En son bloklar için
processed
- Yüksek olasılıklı kesinlik için
confirmed
- Garantili kesinlik için
finalized
- Zaman aşımını önlemek için limiti makul tutun
getBlocks yerine sayfalama için bu metodu kullanın
- RPC yükünü azaltmak için uygun durumlarda sonuçları önbelleğe alın
- Uygulama mantığınızda atlanan slotları yönetin
Yaygın Hatalar
| Kod | Mesaj | Çözüm |
|---|
| -32602 | Invalid param: limit must be positive | Limitin 0’dan büyük olduğundan emin olun |
| -32602 | Invalid param: limit too large | Limit boyutunu küçültün |
| -32601 | Method not found | Bir Solana RPC düğümüne bağlı olduğunuzu doğrulayın |
| -32007 | Block information unavailable | Düğüm başlatılıyor veya slot çok eski olabilir |
Kullanım Senaryoları
-
Blok Sayfalama
async function getBlocksPaginated(startSlot: number, pageSize: number) {
const blocks = await connection.getBlocksWithLimit(startSlot, pageSize);
const lastBlock = blocks[blocks.length - 1];
return {
blocks,
nextStartSlot: lastBlock ? lastBlock + 1 : null
};
}
-
Son Blok Geçmişi
async function getRecentBlocks(count: number) {
const currentSlot = await connection.getSlot();
const blocks = await connection.getBlocksWithLimit(currentSlot - count, count);
return blocks.map(slot => ({
slot,
timestamp: new Date() // Add actual timestamp if available
}));
}
-
Blok Akışı
async function* streamBlocks(startSlot: number, batchSize: number) {
let currentSlot = startSlot;
while (true) {
const blocks = await connection.getBlocksWithLimit(currentSlot, batchSize);
if (blocks.length === 0) {
break;
}
yield blocks;
currentSlot = blocks[blocks.length - 1] + 1;
}
}