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

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ОК.

POST /transactions/signAndBroadcast

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

Важно

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

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

Примечание

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

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

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

Группа 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-пуле в виде числа.

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

GET /unconfirmed/info/{id}

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

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

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

POST /transactions/calculateFee

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

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

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