Установка и использование платформы
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ОК
.
Примечание
Для отправки транзакций в блокчейн также можно использовать 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).
Пример ответа: