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

# getBlocksWithLimit

> Возвращает список подтверждённых блоков начиная с указанного слота

## Параметры

<ParamField query="startSlot" type="number" required>
  Начальный слот (включительно)
</ParamField>

<ParamField query="limit" type="number" required>
  Максимальное количество блоков для возврата
</ParamField>

<ParamField query="config" type="object" optional>
  Объект конфигурации, содержащий следующие необязательные поля:

  <Expandable title="поля config">
    <ParamField query="commitment" type="string" optional>
      Уровень commitment для использования:

      * `processed`: Последний блок (неподтверждённый)
      * `confirmed`: Подтверждён супербольшинством
      * `finalized`: Финализирован супербольшинством
    </ParamField>
  </Expandable>
</ParamField>

## Ответ

<ResponseField name="result" type="array">
  Массив слотов блоков в порядке возрастания
</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": "getBlocksWithLimit",
  "params": [
    100000000,
    10
  ]
}'
```

### Запрос с commitment

```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": "getBlocksWithLimit",
  "params": [
    100000000,
    10,
    {
      "commitment": "finalized"
    }
  ]
}'
```

### Использование 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 10 blocks starting from slot
const blocks = await connection.getBlocksWithLimit(100000000, 10);
console.log('Blocks:', blocks);

// Get finalized blocks
const finalizedBlocks = await connection.getBlocksWithLimit(100000000, 10, 'finalized');
console.log('Finalized blocks:', finalizedBlocks);
```

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

1. Возвращает подтверждённые блоки начиная с указанного слота
2. Результаты возвращаются в порядке возрастания
3. Параметр limit контролирует максимальное количество возвращаемых блоков
4. Некоторые слоты могут быть пропущены (блок не произведён)
5. Ответ приходит немедленно, поскольку считывается из текущего состояния

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

1. Используйте подходящий уровень commitment в зависимости от ваших потребностей:
   * `processed` для последних блоков
   * `confirmed` для высокой вероятности финальности
   * `finalized` для гарантированной финальности
2. Держите limit разумным, чтобы избежать тайм-аутов
3. Используйте этот метод для пагинации вместо `getBlocks`
4. Кэшируйте результаты при необходимости для снижения нагрузки на RPC
5. Обрабатывайте пропущенные слоты в логике вашего приложения

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

| Код    | Сообщение                             | Решение                                                         |
| ------ | ------------------------------------- | --------------------------------------------------------------- |
| -32602 | Invalid param: limit must be positive | Убедитесь, что limit больше 0                                   |
| -32602 | Invalid param: limit too large        | Уменьшите значение limit                                        |
| -32601 | Method not found                      | Убедитесь, что вы подключены к узлу Solana RPC                  |
| -32007 | Block information unavailable         | Узел может выполнять начальную загрузку или слот слишком старый |

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

1. **Пагинация блоков**
   ```typescript theme={null}
   async function getBlocksPaginated(startSlot: number, pageSize: number) {
     const blocks = await connection.getBlocksWithLimit(startSlot, pageSize);
     const lastBlock = blocks[blocks.length - 1];
     
     return {
       blocks,
       nextStartSlot: lastBlock ? lastBlock + 1 : null
     };
   }
   ```

2. **Последняя история блоков**
   ```typescript theme={null}
   async function getRecentBlocks(count: number) {
     const currentSlot = await connection.getSlot();
     const blocks = await connection.getBlocksWithLimit(currentSlot - count, count);
     
     return blocks.map(slot => ({
       slot,
       timestamp: new Date() // Add actual timestamp if available
     }));
   }
   ```

3. **Потоковая передача блоков**
   ```typescript theme={null}
   async function* streamBlocks(startSlot: number, batchSize: number) {
     let currentSlot = startSlot;
     
     while (true) {
       const blocks = await connection.getBlocksWithLimit(currentSlot, batchSize);
       if (blocks.length === 0) {
         break;
       }
       
       yield blocks;
       currentSlot = blocks[blocks.length - 1] + 1;
     }
   }
   ```
