Установка и использование платформы
REST API: работа с транзакциями¶
Для работы с транзакциями предусмотрены методы группы 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).
Пример ответа: