Методы RPC Solana и документация

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

Настройка уровня подтверждения состояния

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

В порядке убывания уровня подтверждения (от наиболее финализированного к наименее финализированному) клиенты могут указать:

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

Для обработки множества зависимых транзакций последовательно рекомендуется использовать уровень подтверждения confirmed, который балансирует скорость и безопасность от откатов. Для полной безопасности рекомендуется использовать уровень подтверждения finalized.

Уровень подтверждения по умолчанию

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

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

Структура RpcResponse

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

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

Разобранные ответы

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

ПрограммаСостояние аккаунтаИнструкции
Address Lookupv1.15.0v1.15.0
BPF Loadern/astable
BPF Upgradeable Loaderstablestable
Configstable
SPL Associated Token Accountn/astable
SPL Memon/astable
SPL Tokenstablestable
SPL Token 2022stablestable
Stakestablestable
Votestablestable

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

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

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

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

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

Is this page helpful?

Содержание

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