Подписание и отправка транзакций
REST API ноды использует JSON-представление транзакции для отправки запросов.
Основные принципы работы с транзакциями приведены в разделе Транзакции блокчейн-платформы.
Описание полей для каждой транзакции приведено в разделе Описание транзакций.
Для подписания транзакций предназначен метод POST /transactions/sign.
Этот метод подписывает транзакцию закрытым ключом отправителя, сохраненным в keystore ноды.
Для подписания запросов ключом из keystore ноды обязательно укажите пароль к ключевой паре в поле password
.
Пример запроса на подписание транзакции 3:
{
"type": 3,
"version": 2,
"name": "Test Asset 1",
"quantity": 100000000000,
"description": "Some description",
"sender": "3FSCKyfFo3566zwiJjSFLBwKvd826KXUaqR",
"decimals": 8,
"reissuable": true,
"password": "1234",
"fee": 100000000
}
Метод POST /transactions/sign в ответе возвращает поля, необходимые для публикации транзакции.
Пример ответа с транзакцией 3:
{
"type": 3,
"id": "DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB",
"sender": "3N65yEf31ojBZUvpu4LCo7n8D73juFtheUJ",
"senderPublicKey": "C1ADP1tNGuSLTiQrfNRPhgXx59nCrwrZFRV4AHpfKBpZ",
"fee": 100000000,
"timestamp": 1549378509516,
"proofs": [ "NqZGcbcQ82FZrPh6aCEjuo9nNnkPTvyhrNq329YWydaYcZTywXUwDxFAknTMEGuFrEndCjXBtrueLWaqbJhpeiG" ],
"version": 2,
"assetId": "DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB",
"name": "Test Asset 1",
"quantity": 10000,
"reissuable": true,
"decimals": 8,
"description": "Some description",
"chainId": 84,
"script": "base64:AQa3b8tH",
"height": 60719
}
Для публикации транзакции предназначен метод POST /transactions/broadcast.
На вход этого метода подаются поля ответа метода sign.
Также транзакция может быть отправлена в блокчейн при помощи других инструментов, приведенных в статье Транзакции блокчейн-платформы.
Помимо отдельных методов подписания и отправки транзакций, предусмотрен комбинированный метод POST /transactions/signAndBroadcast.
Этот метод подписывает и отправляет транзакцию в блокчейн без промежуточной передачи информации между методами.
Пример запроса и ответа метода с транзакцией 112:
Запрос:
{
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"policyName": "Policy for sponsored v1",
"password":"sfgKYBFCF@#$fsdf()*%",
"recipients": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
],
"fee": 100000000,
"description": "Privacy for sponsored",
"owners": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T"
],
"type": 112
}
Ответ:
{
"senderPublicKey": "3X6Qb6p96dY4drVt3x4XyHKCRvree4QDqNZyDWHzjJ79",
"policyName": "Policy for sponsored v1",
"fee": 100000000,
"description": "Privacy for sponsored",
"owners": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T"
],
"type": 112,
"version": 2,
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId": "G16FvJk9vabwxjQswh9CQAhbZzn3QrwqWjwnZB3qNVox",
"proofs": [
"3vDVjp6UJeN9ahtNcQWt5WDVqC9KqdEsrr9HTToHfoXFd1HtVwnUPPtJKM8tAsCtby81XYQReLj33hLEZ8qbGA3V"
],
"recipients": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
],
"id": "EyymzQcM2LrsgGDFFxeGn8DhahJbFYmorcBrEh8phv5S",
"timestamp": 1585307711344
}
Информация о транзакциях
Группа transactions
также включает следующие методы получения информации о транзакциях в блокчейне:
GET /transactions/info/{id}
Получение информации о транзакции по ее идентификатору {id}
.
Идентификатор транзакции указывается в ответе методов POST /transactions/sign или POST /transactions/signAndBroadcast.
Метод возвращает данные транзакции, аналогичные ответам методов POST /transactions/broadcast и POST /transactions/signAndBroadcast.
Пример ответа:
{
"type": 4,
"id": "52GG9U2e6foYRKp5vAzsTQ86aDAABfRJ7synz7ohBp19",
"sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8",
"senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw",
"recipient": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8",
"assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG",
"amount": 100000,
"fee": 100000,
"timestamp": 1549365736923,
"attachment": "string",
"signature": "GknccUA79dBcwWgKjqB7vYHcnsj7caYETfncJhRkkaetbQon7DxbpMmvK9LYqUkirJp17geBJCRTNkHEoAjtsUm",
"height": 7782
}
GET /transactions/address/{address}/limit/{limit}
Метод возвращает данные последних {limit}
транзакций адреса {address}
.
Для каждой транзакции возвращаются данные, аналогичные ответам методов POST /transactions/broadcast и POST /transactions/signAndBroadcast.
Пример ответа для одной транзакции:
[
[
{
"type": 2,
"id": "4XE4M9eSoVWVdHwDYXqZsXhEc4q8PH9mDMUBegCSBBVHJyP2Yb1ZoGi59c1Qzq2TowLmymLNkFQjWp95CdddnyBW",
"fee": 100000,
"timestamp": 1549365736923,
"signature": "4XE4M9eSoVWVdHwDYXqZsXhEc4q8PH9mDMUBegCSBBVHJyP2Yb1ZoGi59c1Qzq2TowLmymLNkFQjWp95CdddnyBW",
"sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8",
"senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw",
"recipient": "3N9iRMou3pgmyPbFZn5QZQvBTQBkL2fR6R1",
"amount": 1000000000
}
]
]
GET /transactions/unconfirmed
Метод возвращает данные всех транзакций из UTX-пула ноды.
Для каждой транзакции возвращаются данные, аналогичные ответам методов POST /transactions/broadcast и POST /transactions/signAndBroadcast.
Пример ответа для одной транзакции:
[
{
"type": 4,
"id": "52GG9U2e6foYRKp5vAzsTQ86aDAABfRJ7synz7ohBp19",
"sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8",
"senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw",
"recipient": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8",
"assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG",
"amount": 100000,
"fee": 100000,
"timestamp": 1549365736923,
"attachment": "string",
"signature": "GknccUA79dBcwWgKjqB7vYHcnsj7caYETfncJhRkkaetbQon7DxbpMmvK9LYqUkirJp17geBJCRTNkHEoAjtsUm"
}
]
GET /transactions/unconfirmed/size
Метод возвращает количество транзакций, находящихся в UTX-пуле в виде числа.
Пример ответа:
GET /unconfirmed/info/{id}
Метод возвращает данные транзакции, находящейся в UTX-пуле, по ее {id}
.
В ответе метода содержатся данные транзакции, аналогичные ответам методов POST /transactions/broadcast и POST /transactions/signAndBroadcast.
Пример ответа:
{
"type": 4,
"id": "52GG9U2e6foYRKp5vAzsTQ86aDAABfRJ7synz7ohBp19",
"sender": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8",
"senderPublicKey": "CRxqEuxhdZBEHX42MU4FfyJxuHmbDBTaHMhM3Uki7pLw",
"recipient": "3NBVqYXrapgJP9atQccdBPAgJPwHDKkh6A8",
"assetId": "E9yZC4cVhCDfbjFJCc9CqkAtkoFy5KaCe64iaxHM2adG",
"amount": 100000,
"fee": 100000,
"timestamp": 1549365736923,
"attachment": "string",
"signature": "GknccUA79dBcwWgKjqB7vYHcnsj7caYETfncJhRkkaetbQon7DxbpMmvK9LYqUkirJp17geBJCRTNkHEoAjtsUm",
"height": 7782
}
POST /transactions/calculateFee
Метод возвращает сумму комиссии за отправленную транзакцию.
В запросе указываются параметры, аналогичные запросу POST /transactions/broadcast.
В ответе метода возвращается идентификатор ассета, в котором взимается комиссия (null
для WAVES).
Пример ответа:
{
"feeAssetId": null,
"feeAmount": 10000
}