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

# minimumLedgerSlot

> Возвращает наименьший слот, о котором у узла есть информация в его реестре

## Параметры

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

## Ответ

<ResponseField name="result" type="number">
  Наименьший слот, о котором у узла есть информация в его реестре
</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": "minimumLedgerSlot"
}'
```

### Использование 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 minimum ledger slot
const minSlot = await connection.minimumLedgerSlot();
console.log('Minimum ledger slot:', minSlot);

// Get minimum ledger slot with analysis
async function getMinimumLedgerSlotWithAnalysis() {
  const minSlot = await connection.minimumLedgerSlot();
  const currentSlot = await connection.getSlot();
  
  return {
    slots: {
      minimum: minSlot,
      current: currentSlot,
      difference: currentSlot - minSlot
    },
    metadata: {
      timestamp: Date.now()
    }
  };
}
```

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

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

## Лучшие практики

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

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

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

## Примеры использования

1. **Анализ реестра**
   ```typescript theme={null}
   interface LedgerAnalysis {
     slots: {
       minimum: number;
       current: number;
       difference: number;
     };
     metrics: {
       pruningRate: number;
       retentionPeriod: number;
     };
     metadata: {
       timestamp: number;
     };
   }

   class LedgerAnalyzer {
     private readonly slotsPerSecond = 2; // Solana's target slots per second
     
     async analyzeLedger(): Promise<LedgerAnalysis> {
       const minSlot = await connection.minimumLedgerSlot();
       const currentSlot = await connection.getSlot();
       const difference = currentSlot - minSlot;
       
       return {
         slots: {
           minimum: minSlot,
           current: currentSlot,
           difference
         },
         metrics: {
           pruningRate: difference / this.slotsPerSecond, // seconds
           retentionPeriod: difference / (this.slotsPerSecond * 3600) // hours
         },
         metadata: {
           timestamp: Date.now()
         }
       };
     }
   }
   ```

2. **Мониторинг реестра**
   ```typescript theme={null}
   interface LedgerStatus {
     slots: {
       minimum: number;
       previous: number;
       difference: number;
     };
     history: Array<{
       timestamp: number;
       minimum: number;
     }>;
   }

   class LedgerMonitor {
     private previousMinSlot: number | null = null;
     private history: Array<{
       timestamp: number;
       minimum: number;
     }> = [];
     
     async monitorLedger(): Promise<LedgerStatus | null> {
       const minSlot = await connection.minimumLedgerSlot();
       const now = Date.now();
       
       this.history.push({
         timestamp: now,
         minimum: minSlot
       });
       
       if (this.previousMinSlot === null) {
         this.previousMinSlot = minSlot;
         return null;
       }
       
       const status: LedgerStatus = {
         slots: {
           minimum: minSlot,
           previous: this.previousMinSlot,
           difference: minSlot - this.previousMinSlot
         },
         history: this.history
       };
       
       this.previousMinSlot = minSlot;
       return status;
     }
   }
   ```

3. **Планирование операций с реестром**
   ```typescript theme={null}
   interface LedgerPlan {
     slots: {
       minimum: number;
       current: number;
       difference: number;
     };
     recommendations: Array<{
       type: 'fetch' | 'wait' | 'error';
       reason: string;
     }>;
     metadata: {
       timestamp: number;
     };
   }

   class LedgerPlanner {
     private readonly maxSlotRange = 1000000; // Maximum slots to search
     
     async planLedgerOperation(
       targetSlot: number
     ): Promise<LedgerPlan> {
       const minSlot = await connection.minimumLedgerSlot();
       const currentSlot = await connection.getSlot();
       const now = Date.now();
       
       const recommendations: Array<{
         type: 'fetch' | 'wait' | 'error';
         reason: string;
       }> = [];
       
       if (targetSlot < minSlot) {
         recommendations.push({
           type: 'error',
           reason: `Target slot ${targetSlot} is below minimum ledger slot ${minSlot}`
         });
       } else if (targetSlot > currentSlot) {
         recommendations.push({
           type: 'wait',
           reason: `Target slot ${targetSlot} has not been reached yet`
         });
       } else if (currentSlot - targetSlot > this.maxSlotRange) {
         recommendations.push({
           type: 'error',
           reason: `Target slot ${targetSlot} is too far in the past`
         });
       } else {
         recommendations.push({
           type: 'fetch',
           reason: 'Target slot is within valid range'
         });
       }
       
       return {
         slots: {
           minimum: minSlot,
           current: currentSlot,
           difference: currentSlot - minSlot
         },
         recommendations,
         metadata: {
           timestamp: now
         }
       };
     }
   }
   ```
