> ## 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.

# getHighestSnapshotSlot

> Возвращает информацию о наивысшем слоте из снимка

## Параметры

Этот метод не принимает параметров.

## Ответ

<ResponseField name="result" type="object">
  <Expandable title="поля результата">
    <ResponseField name="full" type="number">
      Наивысший слот полного снимка
    </ResponseField>

    <ResponseField name="incremental" type="number | null">
      Наивысший слот инкрементального снимка, или null, если инкрементальные снимки недоступны
    </ResponseField>
  </Expandable>
</ResponseField>

## Примеры кода

### Базовый запрос

```bash theme={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

```typescript theme={null}
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
  };
}
```

## Примечания

1. Возвращает информацию о наивысших слотах снимков
2. Полные снимки содержат полное состояние реестра
3. Инкрементальные снимки содержат изменения с момента последнего полного снимка
4. Инкрементальные снимки могут быть недоступны на всех узлах
5. Ответ приходит немедленно, так как читается из текущего состояния

## Рекомендации

1. Используйте этот метод для определения доступности снимков
2. Учитывайте возраст снимка при планировании операций
3. Кэшируйте результаты там, где это уместно, для снижения нагрузки на RPC
4. Обрабатывайте случаи, когда инкрементальные снимки недоступны
5. Используйте совместно с другими методами работы со снимками

## Распространённые ошибки

| Код    | Сообщение                        | Решение                                                   |
| ------ | -------------------------------- | --------------------------------------------------------- |
| -32601 | Method not found                 | Убедитесь, что вы подключены к узлу Solana RPC            |
| -32007 | Snapshot information unavailable | Узел может выполнять начальную загрузку или синхронизацию |

## Сценарии использования

1. **Анализ снимков**
   ```typescript theme={null}
   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
     };
   }
   ```

2. **Мониторинг снимков**
   ```typescript theme={null}
   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;
   }
   ```

3. **Верификация снимков**
   ```typescript theme={null}
   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
     };
   }
   ```
