HTTP-методы RPC Solana

Узлы Solana принимают HTTP-запросы, используя спецификацию JSON-RPC 2.0.

Для JavaScript-приложений используйте библиотеку @solana/web3.js как удобный интерфейс для методов RPC для взаимодействия с узлом Solana. Для подключения PubSub к узлу Solana используйте Websocket API.

HTTP-эндпоинт RPC

Порт по умолчанию: 8899

Форматирование запросов

Чтобы выполнить JSON-RPC-запрос, отправьте HTTP POST-запрос с заголовком Content-Type: application/json. Данные JSON-запроса должны содержать 4 поля:

  • jsonrpc: <string> - установлено в "2.0"
  • id: <string | number | null> - уникальный идентификатор запроса, сгенерированный клиентом. Обычно это строка или число, хотя null технически допустим, но не рекомендуется
  • method: <string> - строка, содержащая вызываемый метод
  • params: <array> - JSON-массив упорядоченных значений параметров

Пример с использованием curl:

curl https://api.devnet.solana.com -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri"
]
}
'

Выходной ответ будет JSON-объектом с следующими полями:

  • jsonrpc: <string> - соответствующий спецификации запроса
  • id: <number> - соответствующий идентификатору запроса
  • result: <array|number|object|string> - запрошенные данные или подтверждение успешного выполнения

Запросы могут быть отправлены пакетами, отправляя массив объектов JSON-RPC-запросов в качестве данных для одного POST-запроса.

Пример запроса

Параметр commitment должен быть включен в качестве последнего элемента в массив params:

curl https://api.devnet.solana.com -s -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [
"83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri",
{
"commitment": "finalized"
}
]
}
'

Определения

  • Хэш: SHA-256 хэш блока данных.
  • Pubkey: Публичный ключ пары ключей Ed25519.
  • Транзакция: Список инструкций Solana, подписанных парой ключей клиента для авторизации этих действий.
  • Подпись: Подпись Ed25519 данных полезной нагрузки транзакции, включая инструкции. Это может быть использовано для идентификации транзакций.

Проверка работоспособности

Хотя это и не JSON RPC API, запрос GET /health к RPC HTTP Endpoint предоставляет механизм проверки работоспособности, который можно использовать балансировщиками нагрузки или другой сетевой инфраструктурой. Этот запрос всегда возвращает ответ HTTP 200 OK с телом "ok", "behind" или "unknown":

  • ok: Узел находится в пределах HEALTH_CHECK_SLOT_DISTANCE слотов от последнего подтвержденного слота кластера
  • behind { distance }: Узел отстает на distance слотов от последнего подтвержденного слота кластера, где distance > HEALTH_CHECK_SLOT_DISTANCE
  • unknown: Узел не может определить, где он находится относительно кластера

Is this page helpful?

Содержание

Редактировать страницу