Общие структуры данных JSON для методов RPC Solana

Различные методы RPC Solana возвращают более сложные отклики как структурированные объекты JSON и заполненные заданными значениями ключей.

Наиболее распространенными из этих структур данных JSON являются:

Транзакции #

Transactions are quite different from those on other blockchains. Обязательно просмотрите Anatomy of a Transaction, чтобы узнать о транзакциях в Solana.

Структура JSON транзакции определяется следующим образом:

  • signatures: <array[string]> - список базисно-58 кодированных подписей, применяемых к транзакции. Список всегда имеет длину message.header.numRequiredSignatures и не пуст. Подпись в индексе i соответствует публичному ключу в индексе i в message.accountKeys. Сайт первый используется в качестве transaction id.
  • message: <object> - Определяет содержимое транзакции.
    • accountKeys: <array[string]> - Список публичных ключей с кодировкой 58, используемых транзакции, в том числе инструкциями и для подписей. Первые открытые ключи message.header.numRequiredSignatures должны подписать транзакцию .
    • header: <object> - Детали типы счетов и подписи, требуемые транзакции.
      • numRequiredSignatures: - Общее количество подписей необходимых для признания транзакции действительной. Подписи должны совпадать с первым numRequiredSignatures из message.accountKeys.
      • numReadonlySignedAccounts: <number> - последний numReadonlySignedAccounts подписанных ключей являются аккаунтами только для чтения. Программы могут обрабатывать несколько транзакций, загружающих счета, доступные только для чтения в рамках одной записи PoH, но не имеют права кредитовать или дебетовать кредиты или дебеты или изменять данные счета. Транзакции, направленные на один и тот же Учетные записи для чтения и записи оцениваются последовательно.
      • numReadonlySignedAccounts: <number> - последний numReadonlySignedAccounts подписанных ключей являются аккаунтами только для чтения.
    • recentBlockhash: <string> - хэш недавнего блока с кодированным кодом используется для предотвращения дублирования транзакций и предоставления операций жизненного периода.
    • instructions: - Список инструкций программы, которые будут выполняться последовательно и фиксироваться в одной атомарной транзакции, если все они успешны.
      • programIdIndex: <number> - индексировать в массив message.accountKeys с указанием учетной записи программы, которая выполняет эту инструкцию.
      • accounts: <array[number]> - список упорядоченных индексов в массиве message.accountKeys с указанием аккаунтов для передачи программе .
      • data: <string> - вводные данные программы в строке base-58.
    • addressTableLookups: <array[object]|undefined> - список адресной таблицы поисков, используемых транзакцией для динамической загрузки адресов из таблиц поиска адресов. Не определен ли maxSupportedTransactionVersion не set.
      • accountKey: <string> - открытый ключ с базой 58 для поиска адреса в таблице.
      • writableIndexes: <array[number]> - Список индексов, используемых для загрузки адресов записываемых аккаунтов из таблицы справки.
      • readonlyIndexes: <array[number]> - Список индексов, используемых для загрузки адресов учетных записей из таблицы поиска.

Внутренние Инструкции #

Выполнение Solana записывает кросс-программные инструкции, на которые ссылаются во время обработки транзакций, и делает их доступными для большей прозрачности того, что было выполнено в цепочке для каждой транзакции. Вызванные инструкции сгруппированы по исходной транзакционной инструкции и перечислены в порядке обработки.

Структура JSON внутренних инструкций определяется как список объектов в следующей структуре:

  • index: number - Индекс инструкции по транзакции, из которого возникла внутренняя инструкция(и)
  • указания: <array[object]> - упорядоченный список внутренних инструкций по программам , которые были вызваны во время одной транзакции.
    • programIdIndex: <number> - индексировать в массив message.accountKeys с указанием учетной записи программы, которая выполняет эту инструкцию.
    • accounts: <array[number]> - список упорядоченных индексов в массиве message.accountKeys с указанием аккаунтов для передачи программе .
    • data: <string> - вводные данные программы в строке base-58.

Балансы токенов #

Структура JSON внутренних инструкций определяется как список объектов в следующей структуре:

  • accountIndex: <number> - Индекс счета, на котором указан баланс токенов .
  • mint: - Pubkey монетного двора токена.
  • владелец: <string|undefined> - Pubkey владельца токена.
  • ID программы: <string|undefined> - Pubkey программы Token владельца учетной записи .
  • uiTokenAmount: <object> -
    • amount: - Сырое количество токенов в виде строки, без учета десятичных дробей.
    • decimals: - Количество десятичных знаков, настроенное для монетного двора токена.
    • uiAmount: <number|null> - количество токенов в виде плавающей дроби, на что приходится десятичных дробей. УДАЛЕННО
    • uiAmount: <number|null> - количество токенов в виде плавающей дроби, на что приходится десятичных дробей.