Параметры
Номер слота блока для получения
Объект конфигурации, содержащий следующие необязательные поля:
encoding
string
по умолчанию:"json"
Формат кодирования данных транзакции:
json - формат JSON
jsonParsed - формат JSON с разобранными данными транзакции
base58 - двоичные данные, закодированные в base-58
base64 - двоичные данные, закодированные в base-64
transactionDetails
string
по умолчанию:"full"
Уровень детализации транзакции для возврата:
full - полные данные транзакции
signatures - только подписи транзакций
none - без данных транзакции
Нужно ли заполнять массив вознаграждений
Состояние банка для запроса:
processed - последний блок (неподтверждённый)
confirmed - подтверждён супербольшинством
finalized - финализирован супербольшинством
maxSupportedTransactionVersion
Максимальная версия транзакции для возврата в ответах
Ответ
Возвращает null, если блок не найден. В противном случае возвращает объект, содержащий:
Blockhash данного блока (base-58)
Blockhash предыдущего блока (base-58)
Индекс слота родительского блока
Массив информации о транзакциях (если transactionDetails != “none”):
- Для
full: полные объекты транзакций
- Для
signatures: только подписи транзакций
Массив объектов вознаграждений (если rewards = true):
pubkey: string - публичный ключ (base-58)
lamports: number - количество lamports вознаграждения
postBalance: number - баланс аккаунта после вознаграждения
rewardType: string - тип вознаграждения
commission: number - комиссия голосующего аккаунта (только для голосования)
Предполагаемое время производства (Unix timestamp)
Количество блоков ниже данного блока
Примеры кода
Базовый запрос
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
}
]
}'
Запрос с разобранными данными транзакции
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
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
}
);
Примечания
- Время производства блока является оценочным и основано на времени genesis-блока и прошедших слотах.
- Не все блоки включают вознаграждения.
- Кодирование
jsonParsed пытается разобрать данные инструкций транзакции на основе известных макетов программ.
- Некоторые блоки могут быть пропущены (лидер не назначен или производство блока завершилось неудачей).
- Данные блока могут быть удалены из узла в зависимости от конфигурации реестра.
Лучшие практики
- Используйте
transactionDetails: "signatures", если вам нужны только подписи транзакций.
- Установите
rewards: false, если данные о вознаграждениях не нужны.
- Рассмотрите использование
getBlockHeight сначала, если вам нужен последний блок.
- Для обновлений в реальном времени рассмотрите использование подписки через websocket.
Распространённые ошибки
| Код | Сообщение | Решение |
|---|
| -32004 | Block not available for slot | Блок был удалён или пропущен |
| -32602 | Invalid param: WrongSize | Убедитесь, что номер слота действителен |
| -32602 | Invalid param: Too large | Запросите более свежий блок |
| -32009 | Transaction version unsupported | Укажите maxSupportedTransactionVersion |