Parametreler
Bu metod herhangi bir parametre almaz.
Yanıt
Mevcut en düşük onaylanmış bloğun slotu
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": "getFirstAvailableBlock"
}'
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 first available block
const firstBlock = await connection.getFirstAvailableBlock();
console.log('First available block:', firstBlock);
// Get block range
async function getAvailableBlockRange() {
const firstBlock = await connection.getFirstAvailableBlock();
const currentSlot = await connection.getSlot();
return {
firstBlock,
currentSlot,
totalBlocks: currentSlot - firstBlock + 1
};
}
Notlar
- Mevcut en düşük onaylanmış bloğun slotunu döndürür
- Düğümün mevcut geçmişini belirlemek için kullanışlıdır
- Değer, düğüm eski blokları budadıkça değişebilir
- Farklı düğümler farklı değerler döndürebilir
- Mevcut durumdan okuduğu için yanıt anında gelir
En İyi Uygulamalar
- Mevcut blok aralığını belirlemek için bu metodu kullanın
- Geçmiş blokları sorgularken düğüm budamasını göz önünde bulundurun
- RPC yükünü azaltmak için uygun durumlarda sonuçları önbelleğe alın
- İstenen blokların mevcut olmadığı durumları yönetin
- Diğer blok metodlarıyla birlikte 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 |
| -32007 | Block information unavailable | Düğüm başlatılıyor veya senkronize ediliyor olabilir |
Kullanım Senaryoları
-
Blok Aralığı Doğrulaması
async function verifyBlockRange(startSlot: number, endSlot: number) {
const firstBlock = await connection.getFirstAvailableBlock();
const currentSlot = await connection.getSlot();
if (startSlot < firstBlock) {
throw new Error(`Start slot ${startSlot} is before first available block ${firstBlock}`);
}
if (endSlot > currentSlot) {
throw new Error(`End slot ${endSlot} is after current slot ${currentSlot}`);
}
return {
startSlot,
endSlot,
available: true
};
}
-
Geçmiş Veri Kullanılabilirliği
interface BlockAvailability {
firstAvailable: number;
currentSlot: number;
availableRange: number;
requestedSlot: number;
isAvailable: boolean;
}
async function checkBlockAvailability(slot: number): Promise<BlockAvailability> {
const firstBlock = await connection.getFirstAvailableBlock();
const currentSlot = await connection.getSlot();
return {
firstAvailable: firstBlock,
currentSlot,
availableRange: currentSlot - firstBlock + 1,
requestedSlot: slot,
isAvailable: slot >= firstBlock && slot <= currentSlot
};
}
-
Blok Geçmişi Analizi
async function analyzeBlockHistory() {
const firstBlock = await connection.getFirstAvailableBlock();
const currentSlot = await connection.getSlot();
const blocks = await connection.getBlocks(firstBlock, currentSlot);
const metrics = {
firstBlock,
currentSlot,
totalSlots: currentSlot - firstBlock + 1,
availableBlocks: blocks.length,
missingBlocks: (currentSlot - firstBlock + 1) - blocks.length,
availabilityPercentage: (blocks.length / (currentSlot - firstBlock + 1)) * 100
};
return metrics;
}