Table of Contents
  • Edit Page
  • Общие структуры данных 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> - количество токенов в виде плавающей дроби, на что приходится десятичных дробей.