Установка и использование платформы

REST API: работа с транзакциями

https://img.shields.io/badge/auth-required-orange.svg

Для работы с транзакциями предусмотрены методы группы transactions:

  • Подписание и отправка транзакций:

  • Получение информации о транзакциях:

Подписание и отправка транзакций

REST API ноды использует JSON-представление транзакции для отправки запросов.

Основные принципы работы с транзакциями приведены в разделе Транзакции блокчейн-платформы. Описание полей для каждой транзакции приведено в разделе Описание транзакций.

POST /transactions/sign

Для подписания транзакций предназначен метод POST /transactions/sign. Этот метод подписывает транзакцию закрытым ключом отправителя, сохраненным в keystore ноды. Для подписания запросов ключом из keystore ноды обязательно укажите пароль к ключевой паре в поле password.

Важно

Метод ​/transactions​/sign недоступен при использовании PKI, то есть когда в конфигурационном файле ноды параметру node.crypto.pki.mode присвоено значение ON. В тестовом режиме PKI (node.crypto.pki.mode = TEST) или при отключенном PKI (node.crypto.pki.mode = OFF) метод можно использовать.

Пример запроса на подписание транзакции 3:

Метод POST /transactions/sign в ответе возвращает поля, необходимые для публикации транзакции.

Пример ответа с транзакцией 3:

POST /transactions/broadcast

Для публикации транзакции предназначен метод POST /transactions/broadcast. На вход этого метода подаются поля ответа метода sign. Также транзакция может быть отправлена в блокчейн при помощи других инструментов, приведенных в статье Транзакции блокчейн-платформы.

Когда новый пользователь, который не является владельцем ноды (node-owner), делает свою первую транзакцию, ему необходимо в запросе в поле certificates приложить цепочку своих сертификатов. В других случаях поле certificates является необязательным.

Примечание

Поле certificates в запросе на публикацию транзакции RegisterNode является обязательным при использовании PKI или тестового режима PKI (то есть когда в конфигурационном файле ноды параметру node.crypto.pki.mode присвоено значение ON или TEST. В этом случае поле certificates должно содержать цепочку сертификатов, которая соответствует публичному ключу в поле target транзакции.

Пример запроса метода POST /transactions/broadcast

В случае успешной публикации транзакции метод возвращает json с транзакцией и сообщение 200ОК.

Примечание

Для отправки транзакций в блокчейн также можно использовать gRPC методы Broadcast или BroadcastWithCerts.

POST /transactions/signAndBroadcast

Помимо отдельных методов подписания и отправки транзакций (POST /transactions/sign и POST /transactions/broadcast), предусмотрен комбинированный метод POST ​/transactions​/signAndBroadcast.

Этот метод подписывает транзакцию закрытым ключом отправителя и отправляет её в блокчейн без промежуточной передачи информации между методами.

В запросе метод signAndBroadcast принимает json транзакции, которую нужно подписать. JSON-представления транзакций приведены в разделе Описание транзакций. В ответе метод возвращает код 200, если транзакция успешно подписана и отправлена, или код ошибки.

Важно

Метод ​/transactions​/signAndBroadcast недоступен при использовании PKI, то есть когда в конфигурационном файле ноды параметру node.crypto.pki.mode присвоено значение ON. Метод можно использовать в тестовом режиме PKI (node.crypto.pki.mode = TEST) или при отключенном PKI (node.crypto.pki.mode = OFF).

Примечание

При использовании тестового режима PKI (то есть когда в конфигурационном файле ноды параметру node.crypto.pki.mode присвоено значение TEST) когда новый пользователь, который не является владельцем ноды (node-owner), публикует свою первую транзакцию, он должен приложить к ней цепочку своих сертификатов, которая соответствует публичному ключу в поле target транзакции. Для этого предназначено поле certificates в запросе на публикацию транзакции.

Сертификаты прикладываются только для первой транзакции от нового адреса; затем они автоматически считываются из стейта.

Пример запроса метода с транзакцией 103 CreateContract:

Информация о транзакциях

Группа transactions также включает следующие методы получения информации о транзакциях в блокчейне:

GET /transactions/info/{id}

Получение информации о транзакции по ее идентификатору {id}. Идентификатор транзакции указывается в ответе методов POST /transactions/sign или POST ​/transactions​/signAndBroadcast.

Метод возвращает данные транзакции, аналогичные ответам методов POST ​/transactions​/broadcast и POST ​/transactions​/signAndBroadcast.

Пример ответа:

GET /transactions/address/{address}/limit/{limit}

Метод возвращает данные последних {limit} транзакций адреса {address}.

Для каждой транзакции возвращаются данные, аналогичные ответам методов POST ​/transactions​/broadcast и POST ​/transactions​/signAndBroadcast.

Пример ответа для одной транзакции:

GET /transactions/unconfirmed

Метод возвращает данные всех транзакций из UTX-пула ноды.

Для каждой транзакции возвращаются данные, аналогичные ответам методов POST ​/transactions​/broadcast и POST ​/transactions​/signAndBroadcast.

Пример ответа для одной транзакции:

GET /transactions/unconfirmed/size

Метод возвращает число транзакций, находящихся в UTX-пуле, то есть количество транзакций, которые были отправлены в сеть, но еще не валидированы и не записаны в блок блокчейна в ходе раунда майнинга.

Пример ответа:

Примечание

Данные о размере UTX-пула в байтах и килобайтах можно получить с помощью gRPC метода UtxInfo.

GET /transactions/unconfirmed/info/{id}

Метод возвращает данные транзакции, находящейся в UTX-пуле, по ее {id}.

В ответе метода содержатся данные транзакции, аналогичные ответам методов POST ​/transactions​/broadcast и POST ​/transactions​/signAndBroadcast.

Пример ответа:

POST /transactions/calculateFee

Метод возвращает сумму комиссии за отправленную транзакцию.

В запросе указываются параметры, аналогичные запросу POST /transactions/broadcast. В ответе метода возвращается идентификатор ассета, в котором взимается комиссия (null для WAVES).

Пример ответа: