Взаимодействуйте с узлами Solana напрямую с помощью JSON RPC API через методы HTTP и Websocket.

Настройка комманды состояния #

Для предполётных проверок и обработки транзакций узлы Solana выбирают, какое состояние банка запрашивать, на основе требования к обязательствам, установленного клиентом. Обязательство описывает, насколько завершен блок в данный момент времени. Обязательство описывает, насколько завершен блок в данный момент времени. При запросе состояния ledger рекомендуется использовать более низкие уровни обязательств, чтобы сообщить о прогрессе, и более высокие уровни, чтобы гарантировать, что состояние не будет возвращено.

В порядке убывания обязательств (наиболее завершен по крайней мере к завершению), клиенты могут указать:

  • finalized - узел будет запрашивать последний блок, подтвержденный супербольшинством кластера как достигший максимального значения блокировки, что означает кластер признал этот блок как завершённый
  • confirmed - узел будет запрашивать последний блок, который был проголосован на сверхбольшинством кластера.
    • Он включает в себя голоса из сплетен и повторов.
    • Он не учитывает голоса по потомкам блока, только прямые голоса на этом блоке .
    • Этот уровень подтверждения также поддерживает "оптимистическое подтверждение" гарантий в релизе 1.3 и далее.
  • processed - узел будет запрашивать последний блок. Обратите внимание, что блок все еще может быть пропущен кластером.

Для обработки многих зависимых транзакций в серии рекомендуется использовать комманду confirmed, которая балансирует скорость и безопасность отката. Для полной безопасности рекомендуется использовать финализированное обязательство.Обязательство по умолчанию

Обязательство по умолчанию #

Если конфигурация обязательств не указана, узел будет по умолчанию finalized commitment

Только методы, которые запрашивают состояние банка принимают параметр обязательства. Они указаны в приведенной ниже информации по API.

Структура RpcResponse #

Многие методы, принимающие параметр commitment, возвращают JSON-объект RpcResponse, состоящий из двух частей:

  • context : Структура RpcResponseContext JSON, включая поле slot на которое была вычислена операция.
  • value : значение, возвращаемое самой операцией.

Парсированные ответы #

Некоторые методы поддерживают параметр кодировки и могут возвращать данные о счетах или инструкциях в разобранном формате JSON, если запрашивается «encoding»: «jsonParsed» и узел имеет парсер для соответствующей программы. В настоящее время узлы Solana поддерживают парсинг JSON для следующих родных и SPL-программ:

ПрограммаСостояние аккаунтаИнструкции

Список парсеров аккаунтов можно найти здесь, а парсеров инструкций - здесь.

Критерии фильтра #

Некоторые методы поддерживают создание объекта filters для предварительной фильтрации данных в объекте RpcResponse JSON. Существуют следующие фильтры:

  • memcmp: object - сравнивает предложенную серию байт с программным аккаунтом по конкретному смещению. Поля:

    • offset: usize - смещение на данные учетной записи программы для начала сравнения
    • bytes: строка - данные совпадают, как строка в кодировке
    • encoding: строка - кодировка для данных фильтра bytes, либо "base58" или "base64". Размер данных ограничен до 128 или менее декодированных байт.
      **НОВОЕ: Это поле и поддержка base64 в целом, доступны только в solana-core v1.14.0 или выше. Пожалуйста, пропускайте при запросе узлов к более ранним версиям **
  • dataSize: u64 - сравнивает длину данных аккаунта программы с предоставленным размером данных