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.
Параметры
Этот метод не принимает параметров.
Ответ
Наивысший слот полного снимка
Наивысший слот инкрементального снимка, или null, если инкрементальные снимки недоступны
Примеры кода
Базовый запрос
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": "getHighestSnapshotSlot"
}'
Использование web3.js
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://fra.rpc.orbitflare.com?api_key=YOUR-API-KEY');
// Get highest snapshot slot
const snapshotSlot = await connection.getHighestSnapshotSlot();
console.log('Highest full snapshot slot:', snapshotSlot.full);
if (snapshotSlot.incremental !== null) {
console.log('Highest incremental snapshot slot:', snapshotSlot.incremental);
}
// Check snapshot availability
async function checkSnapshotAvailability() {
const snapshotSlot = await connection.getHighestSnapshotSlot();
const currentSlot = await connection.getSlot();
return {
fullSnapshotAvailable: snapshotSlot.full > 0,
incrementalSnapshotAvailable: snapshotSlot.incremental !== null,
fullSnapshotSlot: snapshotSlot.full,
incrementalSnapshotSlot: snapshotSlot.incremental,
currentSlot,
fullSnapshotAge: currentSlot - snapshotSlot.full,
incrementalSnapshotAge: snapshotSlot.incremental ? currentSlot - snapshotSlot.incremental : null
};
}
Примечания
- Возвращает информацию о наивысших слотах снимков
- Полные снимки содержат полное состояние реестра
- Инкрементальные снимки содержат изменения с момента последнего полного снимка
- Инкрементальные снимки могут быть недоступны на всех узлах
- Ответ приходит немедленно, так как читается из текущего состояния
Рекомендации
- Используйте этот метод для определения доступности снимков
- Учитывайте возраст снимка при планировании операций
- Кэшируйте результаты там, где это уместно, для снижения нагрузки на RPC
- Обрабатывайте случаи, когда инкрементальные снимки недоступны
- Используйте совместно с другими методами работы со снимками
Распространённые ошибки
| Код | Сообщение | Решение |
|---|
| -32601 | Method not found | Убедитесь, что вы подключены к узлу Solana RPC |
| -32007 | Snapshot information unavailable | Узел может выполнять начальную загрузку или синхронизацию |
Сценарии использования
-
Анализ снимков
interface SnapshotMetrics {
fullSnapshot: {
slot: number;
age: number;
available: boolean;
};
incrementalSnapshot: {
slot: number | null;
age: number | null;
available: boolean;
};
currentSlot: number;
}
async function analyzeSnapshots(): Promise<SnapshotMetrics> {
const snapshotSlot = await connection.getHighestSnapshotSlot();
const currentSlot = await connection.getSlot();
return {
fullSnapshot: {
slot: snapshotSlot.full,
age: currentSlot - snapshotSlot.full,
available: snapshotSlot.full > 0
},
incrementalSnapshot: {
slot: snapshotSlot.incremental,
age: snapshotSlot.incremental ? currentSlot - snapshotSlot.incremental : null,
available: snapshotSlot.incremental !== null
},
currentSlot
};
}
-
Мониторинг снимков
interface SnapshotAlert {
type: 'full' | 'incremental';
message: string;
currentSlot: number;
snapshotSlot: number;
age: number;
}
async function monitorSnapshots(maxAge: number): Promise<SnapshotAlert[]> {
const snapshotSlot = await connection.getHighestSnapshotSlot();
const currentSlot = await connection.getSlot();
const alerts: SnapshotAlert[] = [];
if (snapshotSlot.full > 0) {
const fullAge = currentSlot - snapshotSlot.full;
if (fullAge > maxAge) {
alerts.push({
type: 'full',
message: `Full snapshot is ${fullAge} slots old`,
currentSlot,
snapshotSlot: snapshotSlot.full,
age: fullAge
});
}
}
if (snapshotSlot.incremental !== null) {
const incrementalAge = currentSlot - snapshotSlot.incremental;
if (incrementalAge > maxAge) {
alerts.push({
type: 'incremental',
message: `Incremental snapshot is ${incrementalAge} slots old`,
currentSlot,
snapshotSlot: snapshotSlot.incremental,
age: incrementalAge
});
}
}
return alerts;
}
-
Верификация снимков
async function verifySnapshotAvailability() {
const snapshotSlot = await connection.getHighestSnapshotSlot();
const currentSlot = await connection.getSlot();
if (snapshotSlot.full === 0) {
throw new Error('No full snapshots available');
}
const fullAge = currentSlot - snapshotSlot.full;
if (fullAge > 100000) { // Alert if snapshot is more than 100k slots old
console.warn(`Full snapshot is ${fullAge} slots old`);
}
if (snapshotSlot.incremental === null) {
console.warn('No incremental snapshots available');
} else {
const incrementalAge = currentSlot - snapshotSlot.incremental;
if (incrementalAge > 10000) { // Alert if incremental snapshot is more than 10k slots old
console.warn(`Incremental snapshot is ${incrementalAge} slots old`);
}
}
return {
fullSnapshot: snapshotSlot.full,
incrementalSnapshot: snapshotSlot.incremental,
currentSlot,
fullAge,
incrementalAge: snapshotSlot.incremental ? currentSlot - snapshotSlot.incremental : null
};
}