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.
Parameters
This method does not take any parameters.
Response
Highest full snapshot slot
Highest incremental snapshot slot, or null if no incremental snapshots are available
Code Examples
Basic Request
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"
}'
Using 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
};
}
Notes
- Returns information about the highest snapshot slots
- Full snapshots contain the complete ledger state
- Incremental snapshots contain changes since the last full snapshot
- Incremental snapshots may not be available on all nodes
- The response is immediate as it reads from the current state
Best Practices
- Use this method to determine snapshot availability
- Consider snapshot age when planning operations
- Cache results when appropriate to reduce RPC load
- Handle cases where incremental snapshots are not available
- Use in conjunction with other snapshot methods
Common Errors
| Code | Message | Solution |
|---|
| -32601 | Method not found | Verify you’re connected to a Solana RPC node |
| -32007 | Snapshot information unavailable | Node may be bootstrapping or syncing |
Use Cases
-
Snapshot Analysis
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
};
}
-
Snapshot Monitoring
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;
}
-
Snapshot Verification
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
};
}