Методи RPC Solana та документація
Взаємодійте з вузлами Solana безпосередньо через JSON RPC API за допомогою методів HTTP та Websocket.
Налаштування підтвердження стану
Для попередніх перевірок та обробки транзакцій вузли Solana вибирають, який стан банку запитувати на основі вимог підтвердження, встановлених клієнтом. Підтвердження описує, наскільки фіналізованим є блок на цей момент часу. При запиті стану реєстру рекомендується використовувати нижчі рівні підтвердження для відображення прогресу та вищі рівні, щоб гарантувати, що стан не буде відкочено.
У порядку зменшення підтвердження (від найбільш фіналізованого до найменш фіналізованого), клієнти можуть вказати:
finalized
- вузол запитає найновіший блок, підтверджений більшістю кластера як такий, що досяг максимального блокування, що означає, що кластер визнав цей блок фіналізованимconfirmed
- вузол запитає найновіший блок, за який проголосувала більшість кластера.- Він включає голоси з gossip та replay.
- Він не враховує голоси за нащадків блоку, лише прямі голоси за цей блок.
- Цей рівень підтвердження також підтримує гарантії "оптимістичного підтвердження" у версії 1.3 і пізніших.
processed
- вузол запитає свій найновіший блок. Зауважте, що блок все ще може бути пропущений кластером.
Для обробки багатьох залежних транзакцій послідовно рекомендується
використовувати підтвердження confirmed
, яке балансує швидкість із безпекою
відкату. Для повної безпеки рекомендується використовувати підтвердження
finalized
.
Зобов'язання за замовчуванням
Якщо конфігурація зобов'язання не надана, вузол буде
за замовчуванням використовувати finalized
commitment
Лише методи, які запитують стан банку, приймають параметр зобов'язання. Вони вказані в Довіднику API нижче.
Структура 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 | н/д | стабільно |
BPF Upgradeable Loader | стабільно | стабільно |
Config | стабільно | |
SPL Associated Token Account | н/д | стабільно |
SPL Memo | н/д | стабільно |
SPL Token | стабільно | стабільно |
SPL Token 2022 | стабільно | стабільно |
Stake | стабільно | стабільно |
Vote | стабільно | стабільно |
Список парсерів облікових записів можна знайти тут, а парсери інструкцій тут.
Критерії фільтрації
Деякі методи підтримують надання об'єкта filters
для попередньої фільтрації
даних, що повертаються в об'єкті JSON RpcResponse. Існують такі фільтри:
-
memcmp: object
- порівнює надану серію байтів з даними program account у певному зміщенні. Поля:offset: usize
- зміщення в даних program account, з якого починається порівнянняbytes: string
- дані для порівняння, як закодований рядокencoding: string
- кодування для фільтрації данихbytes
, або "base58", або "base64". Розмір даних обмежений до 128 або менше декодованих байтів.
НОВЕ: Це поле та підтримка base64 загалом доступні лише у solana-core v1.14.0 або новіших версіях. Будь ласка, не вказуйте при запитах до вузлів на старіших версіях
-
dataSize: u64
- порівнює довжину даних program account із наданим розміром даних
Is this page helpful?