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