Методи 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 Lookupv1.15.0v1.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?

Зміст

Редагувати сторінку