Solana RPC Methods & Documentation
Взаимодействуйте с узлами 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-программ:
Программа | Состояние аккаунта | Инструкции |
---|---|---|
Address Lookup | v1.15.0 | v1.15.0 |
BPF Loader | n/a | stable |
BPF Upgradeable Loader | stable | stable |
Config | stable | |
SPL Associated Token Account | n/a | stable |
SPL Memo | n/a | stable |
SPL Token | stable | stable |
SPL Token 2022 | stable | stable |
Stake | stable | stable |
Vote | stable | stable |
Список парсеров аккаунтов можно найти здесь, а парсеров инструкций - здесь.
Критерии фильтра #
Некоторые методы поддерживают создание объекта filters
для предварительной
фильтрации данных в объекте RpcResponse JSON. Существуют следующие фильтры:
-
memcmp: object
- сравнивает предложенную серию байт с программным аккаунтом по конкретному смещению. Поля:offset: usize
- смещение на данные учетной записи программы для начала сравненияbytes: строка
- данные совпадают, как строка в кодировкеencoding: строка
- кодировка для данных фильтраbytes
, либо "base58" или "base64". Размер данных ограничен до 128 или менее декодированных байт.
**НОВОЕ: Это поле и поддержка base64 в целом, доступны только в solana-core v1.14.0 или выше. Пожалуйста, пропускайте при запросе узлов к более ранним версиям **
-
dataSize: u64
- сравнивает длину данных аккаунта программы с предоставленным размером данных