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

# getBlock

> Возвращает идентификационные данные и информацию о транзакциях подтверждённого блока

## Параметры

<ParamField query="slot" type="number" required>
  Номер слота блока для получения
</ParamField>

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

  <Expandable title="поля config">
    <ParamField query="encoding" type="string" optional default="json">
      Формат кодирования данных транзакции:

      * `json` - формат JSON
      * `jsonParsed` - формат JSON с разобранными данными транзакции
      * `base58` - двоичные данные, закодированные в base-58
      * `base64` - двоичные данные, закодированные в base-64
    </ParamField>

    <ParamField query="transactionDetails" type="string" optional default="full">
      Уровень детализации транзакции для возврата:

      * `full` - полные данные транзакции
      * `signatures` - только подписи транзакций
      * `none` - без данных транзакции
    </ParamField>

    <ParamField query="rewards" type="boolean" optional default={true}>
      Нужно ли заполнять массив вознаграждений
    </ParamField>

    <ParamField query="commitment" type="string" optional>
      Состояние банка для запроса:

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

    <ParamField query="maxSupportedTransactionVersion" type="number" optional>
      Максимальная версия транзакции для возврата в ответах
    </ParamField>
  </Expandable>
</ParamField>

## Ответ

<ResponseField name="result" type="object | null">
  Возвращает `null`, если блок не найден. В противном случае возвращает объект, содержащий:

  <Expandable title="поля result">
    <ResponseField name="blockhash" type="string">
      Blockhash данного блока (base-58)
    </ResponseField>

    <ResponseField name="previousBlockhash" type="string">
      Blockhash предыдущего блока (base-58)
    </ResponseField>

    <ResponseField name="parentSlot" type="number">
      Индекс слота родительского блока
    </ResponseField>

    <ResponseField name="transactions" type="array">
      Массив информации о транзакциях (если `transactionDetails` != "none"):

      * Для `full`: полные объекты транзакций
      * Для `signatures`: только подписи транзакций
    </ResponseField>

    <ResponseField name="rewards" type="array">
      Массив объектов вознаграждений (если `rewards` = true):

      * `pubkey`: string - публичный ключ (base-58)
      * `lamports`: number - количество lamports вознаграждения
      * `postBalance`: number - баланс аккаунта после вознаграждения
      * `rewardType`: string - тип вознаграждения
      * `commission`: number - комиссия голосующего аккаунта (только для голосования)
    </ResponseField>

    <ResponseField name="blockTime" type="number | null">
      Предполагаемое время производства (Unix timestamp)
    </ResponseField>

    <ResponseField name="blockHeight" type="number | 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": "getBlock",
  "params": [
    430,
    {
      "encoding": "json",
      "transactionDetails": "full",
      "rewards": true
    }
  ]
}'
```

### Запрос с разобранными данными транзакции

```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": "getBlock",
  "params": [
    430,
    {
      "encoding": "jsonParsed",
      "transactionDetails": "full",
      "rewards": true,
      "maxSupportedTransactionVersion": 0
    }
  ]
}'
```

### Использование 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');
const slot = 430;

const block = await connection.getBlock(
  slot,
  {
    maxSupportedTransactionVersion: 0
  }
);
```

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

1. Время производства блока является оценочным и основано на времени genesis-блока и прошедших слотах.
2. Не все блоки включают вознаграждения.
3. Кодирование `jsonParsed` пытается разобрать данные инструкций транзакции на основе известных макетов программ.
4. Некоторые блоки могут быть пропущены (лидер не назначен или производство блока завершилось неудачей).
5. Данные блока могут быть удалены из узла в зависимости от конфигурации реестра.

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

1. Используйте `transactionDetails: "signatures"`, если вам нужны только подписи транзакций.
2. Установите `rewards: false`, если данные о вознаграждениях не нужны.
3. Рассмотрите использование `getBlockHeight` сначала, если вам нужен последний блок.
4. Для обновлений в реальном времени рассмотрите использование подписки через websocket.

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

| Код    | Сообщение                       | Решение                                  |
| ------ | ------------------------------- | ---------------------------------------- |
| -32004 | Block not available for slot    | Блок был удалён или пропущен             |
| -32602 | Invalid param: WrongSize        | Убедитесь, что номер слота действителен  |
| -32602 | Invalid param: Too large        | Запросите более свежий блок              |
| -32009 | Transaction version unsupported | Укажите `maxSupportedTransactionVersion` |
