Методы 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 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
для
предварительной фильтрации данных, возвращаемых в 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?