Методы 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?