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.
Genel Bakış
OrbitFlare, Solana’nın başlatılmasından bu yana her blok, işlem ve hesap durumunu koruyan tam arşiv düğümleri çalıştırır. Standart RPC sağlayıcıları genellikle depolamadan tasarruf etmek için eski verileri budayarak yalnızca son epoch’ları saklar. OrbitFlare ile Solana geçmişindeki herhangi bir slotu sorgulayabilirsiniz.
Kullanım Senaryoları
Geçmiş blok zinciri verileri çeşitli önemli iş akışlarını mümkün kılar:
- Olay kurtarma: İndeksleyici kesintisi veya webhook hataları sonrasında kaçırılan işlemleri geri doldurun
- Uyumluluk: Denetimler ve düzenleyici gereksinimler için işlem kayıtlarını alın
- Araştırma: Zaman içinde zincir üstü eğilimleri, token dağılımlarını ve protokol metriklerini analiz edin
- Gezgin uygulamaları: Eksiksiz geçmişi gösteren blok gezginleri ve gösterge tabloları oluşturun
İlgili RPC Yöntemleri
Bu yöntemler OrbitFlare’in arşiv düğümlerinde geçmiş sorguları destekler:
Blok Yöntemleri
| Yöntem | Açıklama |
|---|
| getBlock | Herhangi bir slot için tam blok verisi alın |
| getBlocks | İki slot arasındaki onaylanmış blokların listesini alın |
| getBlocksWithLimit | Bir slottan başlayarak limitle onaylanmış blokları alın |
| getBlockTime | Bir blok için tahmini Unix zaman damgasını alın |
| getBlockHeight | Mevcut blok yüksekliğini alın |
| getFirstAvailableBlock | Blok verisi olan en düşük slotu alın |
İşlem Yöntemleri
| Yöntem | Açıklama |
|---|
| getTransaction | İmzayla onaylanmış bir işlem alın |
| getSignaturesForAddress | Bir adres için işlem imzaları alın |
| getSignatureStatuses | İşlem imzalarının durumunu alın |
Hesap Yöntemleri
| Yöntem | Açıklama |
|---|
| getAccountInfo | Hesap verisi alın (yalnızca mevcut durum) |
| getMultipleAccounts | Bir çağrıda birden fazla hesap için veri alın |
| getProgramAccounts | Bir program tarafından sahip olunan tüm hesapları alın |
Slot Yöntemleri
| Yöntem | Açıklama |
|---|
| getSlot | Mevcut slotu alın |
| minimumLedgerSlot | Düğümün veri sakladığı en düşük slotu alın |
Örnekler
Geçmişten Bir Blok Alın
getBlock kullanarak slot 100.000.000 için blok verisi getirin:
curl https://fra.rpc.orbitflare.com?api_key=YOUR_LICENSE_KEY -X POST -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getBlock",
"params": [
100000000,
{
"encoding": "json",
"transactionDetails": "full",
"rewards": false,
"maxSupportedTransactionVersion": 0
}
]
}'
Blok Zaman Damgasını Alın
getBlockTime kullanarak belirli bir bloğun ne zaman üretildiğini bulun:
curl https://fra.rpc.orbitflare.com?api_key=YOUR_LICENSE_KEY -X POST -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getBlockTime",
"params": [100000000]
}'
Bir Aralıktaki Blokları Listeleyin
getBlocks kullanarak iki slot arasındaki tüm onaylanmış blokları alın:
curl https://fra.rpc.orbitflare.com?api_key=YOUR_LICENSE_KEY -X POST -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getBlocks",
"params": [100000000, 100000100]
}'
Bir İşlem Alın
getTransaction kullanarak imzayla işlem ayrıntılarını alın:
curl https://fra.rpc.orbitflare.com?api_key=YOUR_LICENSE_KEY -X POST -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getTransaction",
"params": [
"5wHu1qwD7q5menP8rgbzknAHruqg7rq1BwLNjmKnMwVH2VNhVvPLT6jGfKNLwKUTG4Xn2vRvDz5Q6Z8zCLN5gLp1",
{
"encoding": "json",
"maxSupportedTransactionVersion": 0
}
]
}'
Bir Adres için İşlem Geçmişi Alın
getSignaturesForAddress kullanarak bir adres için imzaları alın:
curl https://fra.rpc.orbitflare.com?api_key=YOUR_LICENSE_KEY -X POST -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getSignaturesForAddress",
"params": [
"Vote111111111111111111111111111111111111111",
{"limit": 100}
]
}'
TypeScript Örnekleri
Geçmiş Blok Verisi Getirme
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR_LICENSE_KEY');
async function getHistoricalBlock(slot: number) {
const block = await connection.getBlock(slot, {
maxSupportedTransactionVersion: 0,
});
if (block) {
console.log(`Block ${slot}:`);
console.log(` Transactions: ${block.transactions.length}`);
console.log(` Block time: ${block.blockTime}`);
console.log(` Parent slot: ${block.parentSlot}`);
}
return block;
}
// 2023'ün başından bir blok getir
const block = await getHistoricalBlock(175000000);
Eksiksiz İşlem Geçmişi Oluşturun
Tam geçmiş oluşturmak için getSignaturesForAddress ile getTransaction’ı birleştirin:
import { Connection, PublicKey } from '@solana/web3.js';
const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR_LICENSE_KEY');
async function getFullTransactionHistory(address: string) {
const pubkey = new PublicKey(address);
const allTransactions = [];
let before: string | undefined;
// Tüm imzalar arasında sayfalama yap
while (true) {
const signatures = await connection.getSignaturesForAddress(pubkey, {
limit: 1000,
before,
});
if (signatures.length === 0) break;
// Tam işlem verisini toplu olarak getir
for (let i = 0; i < signatures.length; i += 10) {
const batch = signatures.slice(i, i + 10);
const txs = await Promise.all(
batch.map(sig =>
connection.getTransaction(sig.signature, {
maxSupportedTransactionVersion: 0,
})
)
);
allTransactions.push(...txs.filter(tx => tx !== null));
}
before = signatures[signatures.length - 1].signature;
}
return allTransactions;
}
Zaman Aralığındaki Blokları Sorgulayın
Belirli bir zaman dilimindeki blokları bulun:
async function getBlocksInTimeRange(startTime: number, endTime: number) {
// Başlangıç slotu tahmini al
const currentSlot = await connection.getSlot();
const currentTime = Math.floor(Date.now() / 1000);
// Solana saniyede ~2-3 blok üretir
const slotsPerSecond = 2.5;
const estimatedStartSlot = currentSlot - Math.floor((currentTime - startTime) * slotsPerSecond);
const blocks = [];
let slot = estimatedStartSlot;
while (true) {
const blockTime = await connection.getBlockTime(slot);
if (blockTime && blockTime >= startTime && blockTime <= endTime) {
const block = await connection.getBlock(slot, {
maxSupportedTransactionVersion: 0,
});
if (block) blocks.push({ slot, block });
}
if (blockTime && blockTime > endTime) break;
slot++;
}
return blocks;
}
-
İsteklerinizi toplu yapın: Birden fazla blok veya işlemi tek bir çağrıda getirmek için JSON-RPC toplu istekler kullanın
-
Büyük sorguları sayfalayın: getSignaturesForAddress yöntemi çağrı başına 1000 imzaya kadar döndürür — sayfalama için
before parametresini kullanın
-
Dikkatli paralelize edin: Hız ve hız sınırları arasında denge kurmak için 10-20’lik paralel toplu işlem parçaları halinde işlem getirin
-
Değişmez verileri önbelleğe alın: Geçmiş bloklar ve işlemler onaylandıktan sonra hiçbir zaman değişmez — yerel olarak önbelleğe alın
-
maxSupportedTransactionVersion kullanın: Sürümlü işlemleri işlemek için bu parametreyi her zaman dahil edin
Sınırlamalar
Hesap durum geçmişi: Solana düğümleri geçmiş anlık görüntüleri değil mevcut hesap durumunu saklar. Bir hesabı değiştiren işlemleri alabilirsiniz, ancak belirli bir geçmiş slottaki hesabın bakiyesini veya verisini alamazsınız.
Hız sınırları: Geçmiş sorgular daha fazla kaynak tüketebilir. Planınızın hız sınırlarını kontrol edin ve uygun kısıtlama uygulayın.
Daha Hızlı İşlem Geçmişi
Verimli adres geçmişi sorguları için, imza aramasını ve işlem alımını filtreleme ve sıralama seçenekleriyle tek bir çağrıda birleştiren getTransactionsForAddress kullanın.
Yönetilen Geri Doldurmalar
Özel ETL ardışık düzenleri yazmadan büyük ölçekli geçmiş veri teslimatına ihtiyaç duyan ekipler için OrbitFlare Yönetilen Geri Doldurmalar hizmeti sunar.
Ne Yapar
OrbitFlare mühendisleri, yapılandırılmış Solana geçmiş verilerini doğrudan depolamanıza çıkarır ve iletir:
| Çıktı Formatı | Desteklenen Hedefler |
|---|
| JSON (satır sınırlı) | AWS S3, Google Cloud Storage |
| Parquet | AWS S3, Google Cloud Storage |
| SQL | PostgreSQL, ClickHouse |
Ne Teslim Edilebilir
- Belirli bir program, cüzdan veya token mint için tüm işlemler
- Herhangi bir slot aralığı için tam blok verisi
- Token transfer geçmişi (SPL Token / Token-2022)
- Gereksinimlerinize göre özel sorgular ve veri şekilleri
SLA
| Öğe | Ayrıntı |
|---|
| Teslim süresi | Standart geri doldurmalar için 3–5 iş günü |
| Veri kapsamı | Genesis (Mart 2020)‘ten günümüze |
| Format | JSON, Parquet veya SQL — tercihinize göre |
| Özel destek | İş süresi boyunca atanan mühendis |
Ne Zaman Kullanılır
Yönetilen Geri Doldurmalar şunlar için en uygundur:
- Yeni bir indeksleyici veya analitik veritabanı tohumlama
- Tek seferlik uyumluluk veya denetim verisi talepleri
- Geçmiş ML/AI eğitim veri setleri
- Uzun kesintiden sonra geri doldurma
Yeni verilerin devam eden akışı için bunun yerine gRPC akışı uç noktalarını kullanın.