Как устроена платформа
Описание транзакций¶
Блокчейн-платформа Waves Enterprise поддерживает 28 типов транзакций. Для каждой из них предусмотрен свой набор данных, отправляемых в блокчейн.
Запросы и ответы, передаваемые в рамках каждой транзакции по REST API-интерфейсу ноды, имеют формат JSON. Формат запросов и ответов, передающихся по gRPC-интерфейсу ноды, определяется соответствующими proto-схемами. JSON и protobuf-представления запросов и ответов каждой транзакции приведены ниже.
Подсказка
В случае если вы защитили ключевую пару вашей ноды паролем при генерации аккаунта, укажите пароль от вашей ключевой пары в поле password
транзакции.
1. Genesis Transaction¶
Первая транзакция нового блокчейна, которая осуществляет первоначальную привязку баланса к адресам созданных нод.
Подписание этой транзакции не требуется, поэтому выполняется только ее публикация. Транзакция не версионируется.
3. Issue Transaction¶
Транзакция, инициирующая выпуск токенов в обращение.
Важно
Если в поле reissuable
указано значение False
, то есть довыпуск токенов запрещён, то в дальнейшем изменить это значение невозможно.
JSON-представление:
Подписание:
{
"type": 3,
"version":2,
"name": "Test Asset 1",
"quantity": 100000000000,
"description": "Some description",
"sender": "3FSCKyfFo3566zwiJjSFLBwKvd826KXUaqR",
"password": "",
"decimals": 8,
"reissuable": true,
"fee": 100000000
}
Публикация:
{
"type": 3,
"id": "DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB",
"sender": "3N65yEf31ojBZUvpu4LCo7n8D73juFtheUJ",
"senderPublicKey": "C1ADP1tNGuSLTiQrfNRPhgXx59nCrwrZFRV4AHpfKBpZ",
"fee": 100000000,
"timestamp": 1549378509516,
"proofs": [ "NqZGcbcQ82FZrPh6aCEjuo9nNnkPTvyhrNq329YWydaYcZTywXUwDxFAknTMEGuFrEndCjXBtrueLWaqbJhpeiG" ],
"version": 2,
"assetId": "DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB",
"name": "Token Name",
"quantity": 10000,
"reissuable": true,
"decimals": 2,
"description": "SmarToken",
"chainId": 84,
"script": "base64:AQa3b8tH",
"height": 60719
}
Подписание:
{
"type": 3,
"version":3,
"name": "Test Asset 1",
"quantity": 100000000000,
"description": "Some description",
"sender": "3FSCKyfFo3566zwiJjSFLBwKvd826KXUaqR",
"password": "",
"decimals": 8,
"reissuable": true,
"fee": 100000000
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
}
Публикация:
{
"type": 3,
"id": "DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB",
"sender": "3N65yEf31ojBZUvpu4LCo7n8D73juFtheUJ",
"senderPublicKey": "C1ADP1tNGuSLTiQrfNRPhgXx59nCrwrZFRV4AHpfKBpZ",
"fee": 100000000,
"timestamp": 1549378509516,
"proofs": [ "NqZGcbcQ82FZrPh6aCEjuo9nNnkPTvyhrNq329YWydaYcZTywXUwDxFAknTMEGuFrEndCjXBtrueLWaqbJhpeiG" ],
"version": 3,
"assetId": "DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB",
"name": "Token Name",
"quantity": 10000,
"reissuable": true,
"decimals": 2,
"description": "SmarToken",
"chainId": 84,
"script": "base64:AQa3b8tH",
"height": 60719
}
4. Transfer Transaction¶
Транзакция для перевода токенов с одного адреса на другой.
JSON-представление:
Подписание:
{
"type": 4,
"version": 2,
"sender": "3M6dRZXaJY9oMA3fJKhMALyYKt13D1aimZX",
"password": "",
"recipient": "3M6dRZXaJY9oMA3fJKhMALyYKt13D1aimZX",
"amount": 40000000000,
"fee": 100000
}
Публикация:
{
"senderPublicKey": "4WnvQPit2Di1iYXDgDcXnJZ5yroKW54vauNoxdNeMi2g",
"amount": 200000000,
"fee": 100000,
"type": 4,
"version": 2,
"attachment": "3uaRTtZ3taQtRSmquqeC1DniK3Dv",
"sender": "3GLWx8yUFcNSL3DER8kZyE4TpyAyNiEYsKG",
"feeAssetId": null,
"proofs": [
"2hRxJ2876CdJ498UCpErNfDSYdt2mTK4XUnmZNgZiq63RupJs5WTrAqR46c4rLQdq4toBZk2tSYCeAQWEQyi72U6"
],
"assetId": null,
"recipient": "3GPtj5osoYqHpyfmsFv7BMiyKsVzbG1ykfL",
"id": "757aQzJiQZRfVRuJNnP3L1d369H2oTjUEazwtYxGngCd",
"timestamp": 1558952680800
}
Подписание:
{
"type": 4,
"version": 3,
"sender": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"password": "",
"recipient": "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"amount": 40000000000,
"fee": 10000000
"atomicBadge" : {
"trustedSender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
},
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"amount" : 10,
"fee" : 10000000,
"type" : 4,
"version" : 3,
"atomicBadge" : {
"trustedSender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
},
"attachment" : "",
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"feeAssetId" : null,
"proofs" : [ "2vbAJmwzQw2FCtozcewxJVfxoHxf97BTNdGuaeSATV4vEHZ3XYA4Z7nXGsSnf18aesnAWTKWCfzwM5yGpWEyGM7f" ],
"assetId" : null,
"recipient" : "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"id" : "2wCEMREFbgk318hFFaNGsgFzyjZHuCrtwSnpK35qhiw4",
"timestamp" : 1619186861204,
"height" : 861644
}
5. Reissue Transaction¶
Транзакция для довыпуска нативных токенов.
JSON-представление:
Подписание:
{
"type": 5,
"version":2,
"quantity": 556105,
"sender": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"password": "",
"assetId": "6UAMZA6RshxyPvt9W7aoWiUiB6N73yLQMMfiRQYXdWZh",
"reissuable": true,
"fee": 100000000
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"quantity" : 556105,
"fee" : 100000000,
"type" : 5,
"version" : 2,
"reissuable" : true,
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"chainId" : 86,
"proofs" : [ "5ahD78wciu8YTsLoxo1XRghJWAGG7At7ePiBWTNzdkvX7cViRCKRLjjjPTGCoAH2mdGQK9i1JiY1wh18eh4h7pGy" ],
"assetId" : "6UAMZA6RshxyPvt9W7aoWiUiB6N73yLQMMfiRQYXdWZh",
"id" : "8T9jJUusN5KBexxDUX1XBjoDydXGP34zWH7Qvp5mnmES",
"timestamp" : 1619187184206,
"height" : 861645
}
Подписание:
{
"type": 5,
"version":3,
"quantity": 556105,
"sender": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"password": "",
"assetId": "6UAMZA6RshxyPvt9W7aoWiUiB6N73yLQMMfiRQYXdWZh",
"reissuable": true,
"fee": 100000000
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"quantity" : 556105,
"fee" : 100000000,
"type" : 5,
"version" : 3,
"reissuable" : true,
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"chainId" : 86,
"proofs" : [ "5ahD78wciu8YTsLoxo1XRghJWAGG7At7ePiBWTNzdkvX7cViRCKRLjjjPTGCoAH2mdGQK9i1JiY1wh18eh4h7pGy" ],
"assetId" : "6UAMZA6RshxyPvt9W7aoWiUiB6N73yLQMMfiRQYXdWZh",
"id" : "8T9jJUusN5KBexxDUX1XBjoDydXGP34zWH7Qvp5mnmES",
"timestamp" : 1619187184206,
"height" : 861645
}
Важно
Если в поле reissuable
указано значение False
, то есть последующий довыпуск токенов запрещён, то в дальнейшем изменить это значение невозможно.
6. Burn Transaction¶
Транзакция для сжигания нативных токенов: уменьшает количество токенов на счету отправителя, тем самым снижая общее количество токенов в обращении. Сожженные токены невозможно восстановить.
JSON-представление:
Подписание:
{
"type": 6,
"version": 2,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"password": "",
"assetId": "7bE3JPwZC3QcN9edctFrLAKYysjfMEk1SDjZx5gitSGg",
"quantity": 1000,
"fee": 100000,
"attachment": "string"
}
Публикация:
{
"senderPublicKey": "Fbt5fKHesnQG2CXmsKf4TC8v9oB7bsy2AY56CUopa6H3",
"amount": 1000,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"chainId": 84,
"proofs": [ "kzTwsNXjJkzk6dpFFZZXyeimYo6iLTVbCnCXBD4xBtyrNjysPqZfGKk9NdJUTP3xeAPhtEgU9hsdwzRVo1hKMgS" ],
"assetId": "7bE3JPwZC3QcN9edctFrLAKYysjfMEk1SDjZx5gitSGg",
"fee": 100000,
"id": "3yd2HZq7sgun7GakisLH88UeKcpYMUEL4sy57aprAN5E",
"type": 6,
"version": 2,
"timestamp": 1551448489758,
"height": 1190
}
Подписание:
{
"type": 6,
"version": 3,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"password": "",
"assetId": "7bE3JPwZC3QcN9edctFrLAKYysjfMEk1SDjZx5gitSGg",
"quantity": 1000,
"fee": 100000,
"attachment": "string"
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
}
Публикация:
{
"senderPublicKey": "Fbt5fKHesnQG2CXmsKf4TC8v9oB7bsy2AY56CUopa6H3",
"amount": 1000,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"chainId": 84,
"proofs": [ "kzTwsNXjJkzk6dpFFZZXyeimYo6iLTVbCnCXBD4xBtyrNjysPqZfGKk9NdJUTP3xeAPhtEgU9hsdwzRVo1hKMgS" ],
"assetId": "7bE3JPwZC3QcN9edctFrLAKYysjfMEk1SDjZx5gitSGg",
"fee": 100000,
"id": "3yd2HZq7sgun7GakisLH88UeKcpYMUEL4sy57aprAN5E",
"type": 6,
"version": 3,
"timestamp": 1551448489758,
"height": 1190
}
8. Lease Transaction¶
Передача токенов в аренду другому адресу. Средства, переданные в аренду, начинают учитываться в генерирующем балансе получателя через 1000 блоков.
Передача токенов в лизинг может проводиться для повышения вероятности выбора ноды в качестве майнера следующего раунда. Как правило, в обмен на аренду токенов получатель делится вознаграждением, полученным за генерацию блока, с адресом, предоставившим токены в лизинг.
Токены, переданные в лизинг, остаются заблокированными на адресе отправителя. Отмена лизинга производится с помощью транзакции отмены лизинга.
JSON-представление:
Подписание:
{
"type": 8,
"version": 2,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"password": "",
"recipient": "3N1ksBqc6uSksdiYjCzMtvEpiHhS1JjkbPh",
"amount": 1000,
"fee": 100000
}
Публикация:
{
"senderPublicKey": "Fbt5fKHesnQG2CXmsKf4TC8v9oB7bsy2AY56CUopa6H3",
"amount": 1000,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"proofs": [ "5jvmWKmU89HnxXFXNAd9X41zmiB5fSGoXMirsaJ9tNeyiCAJmjm7MR48g789VucckQw2UExaVXfhsdEBuUrchvrq" ],
"fee": 100000,
"recipient": "3N1ksBqc6uSksdiYjCzMtvEpiHhS1JjkbPh",
"id": "6Tn7ir9MycHW6Gq2F2dGok2stokSwXJadPh4hW8eZ8Sp",
"type": 8,
"version": 2,
"timestamp": 1551449299545,
"height": 1190
}
Подписание:
{
"type": 8,
"version": 3,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"password": "",
"recipient": "3N1ksBqc6uSksdiYjCzMtvEpiHhS1JjkbPh",
"amount": 1000,
"fee": 100000
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
}
Публикация:
{
"senderPublicKey": "Fbt5fKHesnQG2CXmsKf4TC8v9oB7bsy2AY56CUopa6H3",
"amount": 1000,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"proofs": [ "5jvmWKmU89HnxXFXNAd9X41zmiB5fSGoXMirsaJ9tNeyiCAJmjm7MR48g789VucckQw2UExaVXfhsdEBuUrchvrq" ],
"fee": 100000,
"recipient": "3N1ksBqc6uSksdiYjCzMtvEpiHhS1JjkbPh",
"id": "6Tn7ir9MycHW6Gq2F2dGok2stokSwXJadPh4hW8eZ8Sp",
"type": 8,
"version": 3,
"timestamp": 1551449299545,
"height": 1190
}
9. LeaseCancel Transaction¶
Отмена аренды токенов, переданных в транзакции с определенным ID.
Структура lease
данной транзакции не заполняется: нода автоматически заполняет ее при предоставлении данных о транзакции.
JSON-представление:
Подписание:
{
"type": 9,
"version": 2,
"fee": 100000,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"password": "",
"txId": "6Tn7ir9MycHW6Gq2F2dGok2stokSwXJadPh4hW8eZ8Sp"
}
Публикация:
{
"senderPublicKey": "Fbt5fKHesnQG2CXmsKf4TC8v9oB7bsy2AY56CUopa6H3",
"leaseId": "6Tn7ir9MycHW6Gq2F2dGok2stokSwXJadPh4hW8eZ8Sp",
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"chainId": 84,
"proofs": [ "2Gns72hraH5yay3eiWeyHQEA1wTqiiAztaLjHinEYX91FEv62HFW38Hq89GnsEJFHUvo9KHYtBBrb8hgTA9wN7DM" ],
"fee": 100000,
"id": "9vhxB2ZDQcqiumhQbCPnAoPBLuir727qgJhFeBNmPwmu",
"type": 9,
"version": 2,
"timestamp": 1551449835205,
"height": 1190
}
Подписание:
{
"type": 9,
"version": 3,
"fee": 100000,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"password": "",
"txId": "6Tn7ir9MycHW6Gq2F2dGok2stokSwXJadPh4hW8eZ8Sp"
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
}
Публикация:
{
"senderPublicKey": "Fbt5fKHesnQG2CXmsKf4TC8v9oB7bsy2AY56CUopa6H3",
"leaseId": "6Tn7ir9MycHW6Gq2F2dGok2stokSwXJadPh4hW8eZ8Sp",
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"chainId": 84,
"proofs": [ "2Gns72hraH5yay3eiWeyHQEA1wTqiiAztaLjHinEYX91FEv62HFW38Hq89GnsEJFHUvo9KHYtBBrb8hgTA9wN7DM" ],
"fee": 100000,
"id": "9vhxB2ZDQcqiumhQbCPnAoPBLuir727qgJhFeBNmPwmu",
"type": 9,
"version": 3,
"timestamp": 1551449835205,
"height": 1190
}
10. CreateAlias Transaction¶
Создание псевдонима для адреса отправителя. Псевдоним может использоваться для проведения транзакций в качестве идентификатора получателя.
В третьей версии транзакции реализована возможность оплаты комиссии в другом токене. В четвёртой версии транзакции появилась возможность включения транзакцию в атомик.
JSON-представление:
Подписание:
{
"type": 10,
"version": 2,
"fee": 100000000,
"sender": "3NwTvbW7TMckBc785XjtGTUfHmcesaWBe1A",
"password": "",
"alias": "1@k1_kv29"
}
Публикация:
{
"senderPublicKey" : "C4eRfdUFaZMRkfUp91bYr7uMgdBRnUfAxuAjetxmK7KY",
"sender" : "3NwTvbW7TMckBc785XjtGTUfHmcesaWBe1A",
"proofs" : [ "3fhJztBNnTDjppmqgi4GugAYo1aS1mzZhVhPdnNsqYqCEyLLHfzgb75psRPntHD4uBZgk8jByFP9mwwx2Ezsdg59" ],
"fee" : 100000000,
"alias" : "1@k1_kv29",
"id" : "AavgVzV7avPMpERro6YqikwFESAgG2wViprtPJUtXP6F",
"type" : 10,
"version" : 2,
"timestamp" : 1608737444468,
"height" : 595942
}
Подписание:
{
"type": 10,
"version": 3,
"fee": 100000000,
"feeAssetId": DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB,
"sender": "3NwTvbW7TMckBc785XjtGTUfHmcesaWBe1A",
"password": "",
"alias": "1@k1_kv29"
}
Публикация:
{
"senderPublicKey" : "C4eRfdUFaZMRkfUp91bYr7uMgdBRnUfAxuAjetxmK7KY",
"sender" : "3NwTvbW7TMckBc785XjtGTUfHmcesaWBe1A",
"proofs" : [ "3fhJztBNnTDjppmqgi4GugAYo1aS1mzZhVhPdnNsqYqCEyLLHfzgb75psRPntHD4uBZgk8jByFP9mwwx2Ezsdg59" ],
"fee" : 100000000,
"feeAssetId": DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB,
"alias" : "1@k1_kv29",
"id" : "AavgVzV7avPMpERro6YqikwFESAgG2wViprtPJUtXP6F",
"type" : 10,
"version" : 3,
"timestamp" : 1608737444468,
"height" : 595942
}
Подписание:
{
"type": 10,
"version": 4,
"fee": 100000000,
"feeAssetId": DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB,
"sender": "3NwTvbW7TMckBc785XjtGTUfHmcesaWBe1A",
"password": "",
"alias": "1@k1_kv29"
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
Публикация:
{
"senderPublicKey" : "C4eRfdUFaZMRkfUp91bYr7uMgdBRnUfAxuAjetxmK7KY",
"sender" : "3NwTvbW7TMckBc785XjtGTUfHmcesaWBe1A",
"proofs" : [ "3fhJztBNnTDjppmqgi4GugAYo1aS1mzZhVhPdnNsqYqCEyLLHfzgb75psRPntHD4uBZgk8jByFP9mwwx2Ezsdg59" ],
"fee" : 100000000,
"feeAssetId": DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB,
"alias" : "1@k1_kv29",
"id" : "AavgVzV7avPMpERro6YqikwFESAgG2wViprtPJUtXP6F",
"type" : 10,
"version" : 4,
"timestamp" : 1608737444468,
"height" : 595942
}
11. MassTransfer Transaction¶
Перевод токенов нескольким получателям (от 1 до 100 адресов). Комиссия за транзакцию зависит от количества задействованных адресов.
JSON-представление:
Подписание:
{
"type": 11,
"sender": "3NydXoTq3UgUW5rxsNwEMs1iwbbvVEwxoHU",
"password": "",
"fee": 30000000,
"version": 2,
"transfers":
[
{ "recipient": "3MtHszoTn399NfsH3v5foeEXRRrchEVtTRB", "amount": 100000 },
{ "recipient": "3N7BA6J9VUBfBRutuMyjF4yKTUEtrRFfHMc", "amount": 100000 }
]
}
Публикация:
{
"senderPublicKey" : "AMhAY8RMy5QsPqj58xeMY3fJxTZKx71QztsjDzqWprHo",
"fee" : 30000000,
"type" : 11,
"transferCount" : 4,
"version" : 2,
"totalAmount" : 400000000,
"attachment" : "",
"sender" : "3NydXoTq3UgUW5rxsNwEMs1iwbbvVEwxoHU",
"feeAssetId" : "8bec1mhqTiveMeRTHgYr6az12XdqBBtpeV3ZpXMRHfSB",
"proofs" : [ "21hhAMmwze6nLLQ9K6AoU6scek9Sk5KabR4VggGfdTVFHonfMGwVTse6qL2f8zR8DRm7RckMaikiYRt5XxWEKWcA" ],
"assetId" : "8bec1mhqTiveMeRTHgYr6az12XdqBBtpeV3ZpXMRHfSB",
"transfers" : [ {
"recipient" : "3NqEjAkFVzem9CGa3bEPhakQc1Sm2G8gAFU",
"amount" : 100000000
}, {
"recipient" : "3NzkzibVRkKUzaRzjUxndpTPvoBzQ3iLng3",
"amount" : 100000000
}, {
"recipient" : "3Nnx8cX3UiyfQeC3YQKVRqVr2ewSxrvaDyB",
"amount" : 100000000
}, {
"recipient" : "3NzC4Ex91VBQKfJHPiGhuPEomLg48NMi2ZF",
"amount" : 100000000
} ],
"id" : "EvnxFxdYhYxHgQSMhkyLaqgyUDZdnBknfAWEXyqEHt97",
"timestamp" : 1627643861044,
"height" : 1076874
}
Подписание:
{
"type": 11,
"sender": "3NydXoTq3UgUW5rxsNwEMs1iwbbvVEwxoHU",
"password": "",
"fee": 30000000,
"version": 3,
"transfers":
[
{ "recipient": "3MtHszoTn399NfsH3v5foeEXRRrchEVtTRB", "amount": 100000 },
{ "recipient": "3N7BA6J9VUBfBRutuMyjF4yKTUEtrRFfHMc", "amount": 100000 }
]
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
}
Публикация:
{
"senderPublicKey" : "AMhAY8RMy5QsPqj58xeMY3fJxTZKx71QztsjDzqWprHo",
"fee" : 30000000,
"type" : 11,
"transferCount" : 4,
"version" : 3,
"totalAmount" : 400000000,
"attachment" : "",
"sender" : "3NydXoTq3UgUW5rxsNwEMs1iwbbvVEwxoHU",
"feeAssetId" : "8bec1mhqTiveMeRTHgYr6az12XdqBBtpeV3ZpXMRHfSB",
"proofs" : [ "21hhAMmwze6nLLQ9K6AoU6scek9Sk5KabR4VggGfdTVFHonfMGwVTse6qL2f8zR8DRm7RckMaikiYRt5XxWEKWcA" ],
"assetId" : "8bec1mhqTiveMeRTHgYr6az12XdqBBtpeV3ZpXMRHfSB",
"transfers" : [ {
"recipient" : "3NqEjAkFVzem9CGa3bEPhakQc1Sm2G8gAFU",
"amount" : 100000000
}, {
"recipient" : "3NzkzibVRkKUzaRzjUxndpTPvoBzQ3iLng3",
"amount" : 100000000
}, {
"recipient" : "3Nnx8cX3UiyfQeC3YQKVRqVr2ewSxrvaDyB",
"amount" : 100000000
}, {
"recipient" : "3NzC4Ex91VBQKfJHPiGhuPEomLg48NMi2ZF",
"amount" : 100000000
} ],
"id" : "EvnxFxdYhYxHgQSMhkyLaqgyUDZdnBknfAWEXyqEHt97",
"timestamp" : 1627643861044,
"height" : 1076874
}
12. Data Transaction¶
Транзакция для добавления, изменения или удаления записей в хранилище данных адреса. В хранилище данных адреса представлены записи в формате «ключ:значение».
Размер хранилища данных адреса неограничен, однако при помощи одной транзакции данных можно внести до 100 новых пар «ключ:значение». Также байтовое представление транзакции после подписания не должно превышать 150 килобайт.
Если автор данных (адрес в поле author
) совпадает с отправителем транзакции (адрес в поле sender
), при подписании транзакции не требуется указывать параметр senderPublicKey
.
Структура данных запроса на подписание транзакции:
JSON-представление:
Подписание:
{
"type": 12,
"version": 2,
"sender": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"password": "",
"senderPublicKey": "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"author": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"data": [
...
],
"fee": 150000000
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"data" : [
...
],
"author" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"fee" : 150000000,
"type" : 12,
"version" : 2,
"authorPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"feeAssetId" : null,
"proofs" : [ "4wFNmn32NZqGwP4D4aAxCMyigGEVZLWftqi919pHAK7mCj3sFw7Ekf76g2rr51PZuk5sLwzjkKiZArQvWY8uEGqk" ],
"id" : "GcDy84oTFf5NQzDtixkfUqiFNZwMaN2vfXqxsbGxumfo",
"timestamp" : 1619187166499,
"height" : 861644
}
Подписание:
{
"type": 12,
"version": 3,
"sender": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"password": "",
"senderPublicKey": "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"author": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"data": [
...
],
"fee": 150000000
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"data" : [
...
],
"author" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"fee" : 150000000,
"type" : 12,
"version" : 3,
"authorPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"feeAssetId" : null,
"proofs" : [ "4wFNmn32NZqGwP4D4aAxCMyigGEVZLWftqi919pHAK7mCj3sFw7Ekf76g2rr51PZuk5sLwzjkKiZArQvWY8uEGqk" ],
"id" : "GcDy84oTFf5NQzDtixkfUqiFNZwMaN2vfXqxsbGxumfo",
"timestamp" : 1619187166499,
"height" : 861644
}
13. SetScript Transaction¶
Транзакция для привязки скрипта к аккаунту или удаления скрипта. Аккаунт с привязанным к нему скриптом называется смарт-аккаунтом.
Скрипт позволяет верифицировать транзакции, передаваемые от имени аккаунта, без использования механизма верификации транзакций блокчейна.
JSON-представление:
Подписание:
{
"type": 13,
"version": 1,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"password": "",
"fee": 1000000,
"name": "faucet",
"script": "base64:AQQAAAAHJG1hdGNoMAUAAAACdHgG+RXSzQ=="
}
Публикация:
{
"type": 13,
"id": "HPDypnQJHJskN8kwszF8rck3E5tQiuiM1fEN42w6PLmt",
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"senderPublicKey": "Fbt5fKHesnQG2CXmsKf4TC8v9oB7bsy2AY56CUopa6H3",
"fee": 1000000,
"timestamp": 1545986757233,
"proofs": [ "2QiGYS2dqh8QyN7Vu2tAYaioX5WM6rTSDPGbt4zrWS7QKTzojmR2kjppvGNj4tDPsYPbcDunqBaqhaudLyMeGFgG" ],
"chainId": 84,
"version": 1,
"script": "base64:AQQAAAAHJG1hdGNoMAUAAAACdHgG+RXSzQ==",
"name": "faucet",
"description": "",
"height": 3805
}
14. Sponsorship Transaction¶
Транзакция, устанавливающая или отменяющая спонсирование.
Механизм спонсирования позволяет адресам выплачивать комиссии за транзакции вызова скрипта и транзакции перевода в спонсорском ассете, заменяющем WEST.
JSON-представление:
Подписание:
{
"sender": "3JWDUsqyJEkVa1aivNPP8VCAa5zGuxiwD9t",
"assetId": "G16FvJk9vabwxjQswh9CQAhbZzn3QrwqWjwnZB3qNVox",
"fee": 100000000,
"isEnabled": false,
"type": 14,
"password": "1234",
"version": 1
}
Публикация:
{
"type": 14,
"id": "Ht6kpnQJHJskN8kwszF8rck3E5tQiuiM1fEN42wGfdk7",
"sender": "3JWDUsqyJEkVa1aivNPP8VCAa5zGuxiwD9t",
"senderPublicKey": "Gt55fKHesnQG2CXmsKf4TC8v9oB7bsy2AY56CUophy89",
"fee": 100000000,
"assetId": "G16FvJk9vabwxjQswh9CQAhbZzn3QrwqWjwnZB3qNVox",
"timestamp": 1545986757233,
"proofs": [ "5TfgYS2dqh8QyN7Vu2tAYaioX5WM6rTSDPGbt4zrWS7QKTzojmR2kjppvGNj4tDPsYPbcDunqBaqhaudLyMeGFh7" ],
"chainId": 84,
"version": 1,
"isEnabled": false,
"height": 3865
}
Подписание:
{
"sender": "3JWDUsqyJEkVa1aivNPP8VCAa5zGuxiwD9t",
"assetId": "G16FvJk9vabwxjQswh9CQAhbZzn3QrwqWjwnZB3qNVox",
"fee": 100000000,
"isEnabled": false,
"type": 14,
"password": "1234",
"version": 2,
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
}
Публикация:
{
"type": 14,
"id": "Ht6kpnQJHJskN8kwszF8rck3E5tQiuiM1fEN42wGfdk7",
"sender": "3JWDUsqyJEkVa1aivNPP8VCAa5zGuxiwD9t",
"senderPublicKey": "Gt55fKHesnQG2CXmsKf4TC8v9oB7bsy2AY56CUophy89",
"fee": 100000000,
"assetId": "G16FvJk9vabwxjQswh9CQAhbZzn3QrwqWjwnZB3qNVox",
"timestamp": 1545986757233,
"proofs": [ "5TfgYS2dqh8QyN7Vu2tAYaioX5WM6rTSDPGbt4zrWS7QKTzojmR2kjppvGNj4tDPsYPbcDunqBaqhaudLyMeGFh7" ],
"chainId": 84,
"version": 2,
"isEnabled": false,
"height": 3865
}
15. SetAssetScript Transaction¶
Транзакция для установки или удаления скрипта ассета для адреса. Скрипт ассета позволяет верифицировать транзакции с участием того или иного ассета (токена) без использования механизма верификации транзакций блокчейна.
JSON-представление:
Подписание:
{
"type": 15,
"version": 1,
"sender": "3N9vL3apA4j2L5PojHW8TYmfHx9Lo2ZaKPB",
"password": "",
"fee": 100000000,
"script": "base64:AQQAAAAHJG1hdGNoMAUAAAACdHgG+RXSzQ==",
"assetId": "7bE3JPwZC3QcN9edctFrLAKYysjfMEk1SDjZx5gitSGg"
}
Публикация:
{
"type": 15,
"id": "CQpEM9AEDvgxKfgWLH2HxE82iAzpXrtqsDDcgZGPAF9J",
"sender": "3N65yEf31ojBZUvpu4LCo7n8D73juFtheUJ",
"senderPublicKey": "C1ADP1tNGuSLTiQrfNRPhgXx59nCrwrZFRV4AHpfKBpZ",
"fee": 100000000,
"timestamp": 1549448710502,
"proofs": [ "64eodpuXQjaKQQ4GJBaBrqiBtmkjSxseKC97gn6EwB5kZtMr18mAUHPRkZaHJeJxaDyLzGEZKqhYoUknWfNhXnkf" ],
"version": 1,
"chainId": 84,
"assetId": "DnK5Xfi2wXUJx9BjK9X6ZpFdTLdq2GtWH9pWrcxcmrhB",
"script": "base64:AQQAAAAHJG1hdGNoMAUAAAACdHgG+RXSzQ==",
"height": 61895
}
101. GenesisPermission Transaction¶
Транзакция для назначения первого администратора сети, который раздает роли другим участникам.
102. Permission Transaction¶
Выдача или отзыв роли участника. Отправлять транзакцию 102 в блокчейн может только участник с ролью permissioner.
Возможные роли для указания в поле role
:
permissioner
sender
blacklister
miner
issuer
contract_developer
connection_manager
contract_validator
banned
Описание ролей см. в статье Роли участников.
Начиная со второй версии транзакцию 102. Permission Transaction можно включать в атомарную транзакцию.
JSON-представление:
Подписание:
{
"type": 102,
"sender": "3GLWx8yUFcNSL3DER8kZyE4TpyAyNiEYsKG",
"password": "",
"senderPublicKey": "4WnvQPit2Di1iYXDgDcXnJZ5yroKW54vauNoxdNeMi2g",
"fee": 0,
"target": "3GPtj5osoYqHpyfmsFv7BMiyKsVzbG1ykfL",
"opType": "add",
"role": "contract_developer",
"dueTimestamp": null,
"version": 1
}
Публикация:
{
"senderPublicKey": "4WnvQPit2Di1iYXDgDcXnJZ5yroKW54vauNoxdNeMi2g",
"role": "contract_developer",
"sender": "3GLWx8yUFcNSL3DER8kZyE4TpyAyNiEYsKG",
"proofs": [
"5ABJCRTKGo6jmDZCRWcLQc257CCeczmcjmtfJmbBE7TP3KsVkwvisH9kEkfYPckVCzEMKZTCd3LKAPcN8o4Git3j"
],
"fee": 0,
"opType": "add",
"id": "8zVUH7nsDCcpwyfxiq8DCTgqL7Q23FW1KWepB9EZcFG6",
"type": 102,
"dueTimestamp": null,
"timestamp": 1559048837487,
"target": "3GPtj5osoYqHpyfmsFv7BMiyKsVzbG1ykfL"
"version": 1
}
Подписание:
{
"type": 102,
"sender": "3GLWx8yUFcNSL3DER8kZyE4TpyAyNiEYsKG",
"password": "",
"senderPublicKey": "4WnvQPit2Di1iYXDgDcXnJZ5yroKW54vauNoxdNeMi2g",
"fee": 0,
"target": "3GPtj5osoYqHpyfmsFv7BMiyKsVzbG1ykfL",
"opType": "add",
"role": "contract_developer",
"dueTimestamp": null,
"version": 2
}
Публикация:
{
"senderPublicKey": "4WnvQPit2Di1iYXDgDcXnJZ5yroKW54vauNoxdNeMi2g",
"role": "contract_developer",
"sender": "3GLWx8yUFcNSL3DER8kZyE4TpyAyNiEYsKG",
"proofs": [
"5ABJCRTKGo6jmDZCRWcLQc257CCeczmcjmtfJmbBE7TP3KsVkwvisH9kEkfYPckVCzEMKZTCd3LKAPcN8o4Git3j"
],
"fee": 0,
"opType": "add",
"id": "8zVUH7nsDCcpwyfxiq8DCTgqL7Q23FW1KWepB9EZcFG6",
"type": 102,
"dueTimestamp": null,
"timestamp": 1559048837487,
"target": "3GPtj5osoYqHpyfmsFv7BMiyKsVzbG1ykfL"
"version": 2
"atomicBadge": null
}
103. CreateContract Transaction¶
Создание смарт-контракта. Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Подписать транзакцию 103 может только пользователь с ролью contract_developer.
JSON-представление:
Подписание:
{
"type": 103,
"version": 2,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"password": "signing-key-password",
"contractName": "Your contract name",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"type": "string",
"key": "test_key",
"value": "test_value"
}
],
"fee": 100000000,
"timestamp": 1651487626477,
"feeAssetId": null
}
Публикация:
{
"id": "4WVhw3QdiinpE5QXDG7QfqLiLanM7ewBw4ChX4qyGjs2",
"type": 103,
"version": 2,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"senderPublicKey": "YNpp7chAaudMqEtSZZPyN4GYLJ5ZTXdjCXrQdszzuRp",
"contractName": "Your contract name",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"type": "string",
"key": "test_key",
"value": "test_value"
}
],
"fee": 100000000,
"timestamp": 1651487626477,
"feeAssetId": null,
"proofs": [
"4vqLnpJRFpcDgM5vgi78DpZnVfqztsARHNb7Hbmq3mQBjS3SRnzFAiYjRvPazEVMhBM9cE4Rcp6H5K29kk75Uxyh"
]
}
Подписание:
{
"type": 103,
"version": 3,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"password": "signing-key-password",
"contractName": "Your contract name",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"type": "string",
"key": "test_key",
"value": "test_value"
}
],
"fee": 100000000,
"timestamp": 1651487626477,
"feeAssetId": null,
"atomicBadge": null
}
Публикация:
{
"id": "4WVhw3QdiinpE5QXDG7QfqLiLanM7ewBw4ChX4qyGjs2",
"type": 103,
"version": 3,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"senderPublicKey": "YNpp7chAaudMqEtSZZPyN4GYLJ5ZTXdjCXrQdszzuRp",
"contractName": "Your contract name",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"type": "string",
"key": "test_key",
"value": "test_value"
}
],
"fee": 100000000,
"timestamp": 1651487626477,
"feeAssetId": null,
"atomicBadge": null,
"proofs": [
"4vqLnpJRFpcDgM5vgi78DpZnVfqztsARHNb7Hbmq3mQBjS3SRnzFAiYjRvPazEVMhBM9cE4Rcp6H5K29kk75Uxyh"
]
}
Подписание:
{
"type": 103,
"version": 4,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"password": "signing-key-password",
"contractName": "Your contract name",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"type": "string",
"key": "test_key",
"value": "test_value"
}
],
"fee": 100000000,
"timestamp": 1651487626477,
"feeAssetId": null,
"atomicBadge": null,
"validationPolicy": {
"type": "majority"
},
"apiVersion": "1.0"
}
Публикация:
{
"id": "4WVhw3QdiinpE5QXDG7QfqLiLanM7ewBw4ChX4qyGjs2",
"type": 103,
"version": 4,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"senderPublicKey": "YNpp7chAaudMqEtSZZPyN4GYLJ5ZTXdjCXrQdszzuRp",
"contractName": "Your contract name",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"type": "string",
"key": "test_key",
"value": "test_value"
}
],
"fee": 100000000,
"timestamp": 1651487626477,
"feeAssetId": null,
"atomicBadge": null,
"proofs": [
"4vqLnpJRFpcDgM5vgi78DpZnVfqztsARHNb7Hbmq3mQBjS3SRnzFAiYjRvPazEVMhBM9cE4Rcp6H5K29kk75Uxyh"
]
}
Подписание:
{
"type": 103,
"version": 5,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"password": "signing-key-password",
"contractName": "Your contract name",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"type": "string",
"key": "test_key",
"value": "test_value"
}
],
"fee": 100000000,
"timestamp": 1651487626477,
"feeAssetId": null,
"atomicBadge": null,
"validationPolicy": {
"type": "majority"
},
"apiVersion": "1.0"
}
Публикация:
{
"id": "4WVhw3QdiinpE5QXDG7QfqLiLanM7ewBw4ChX4qyGjs2",
"type": 103,
"version": 5,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"senderPublicKey": "YNpp7chAaudMqEtSZZPyN4GYLJ5ZTXdjCXrQdszzuRp",
"contractName": "SOME_CONTRACT_NAME",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"key": "int",
"type": "integer",
"value": 24
},
{
"key": "bool",
"type": "boolean",
"value": true
},
{
"key": "blob",
"type": "binary",
"value": "base64:YWxpY2U="
}
],
"fee": 0,
"timestamp": 1665267880,
"feeAssetId": null,
"atomicBadge": {
"trustedSender": "SOME_SENDER_ACCOUNT_ADDRESS"
},
"proofs": [
"32mNYSefBTrkVngG5REkmmGAVv69ZvNhpbegmnqDReMTmXNyYqbECPgHgXrX2UwyKGLFS45j7xDFyPXjF8jcfw94"
],
"validationPolicy": {
"type": "SOME_VALIDATION_POLICY_NAME"
},
"apiVersion": "SOME_API_VERSION",
"payments": [
{
"amount": 100
},
{
"assetId": "SOME_ASSET_ID",
"amount": 100
}
]
}
Подписание:
{
"type": 103,
"version": 6,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"password": "signing-key-password",
"contractName": "Your contract name",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"type": "string",
"key": "test_key",
"value": "test_value"
}
],
"fee": 100000000,
"timestamp": 1651487626477,
"feeAssetId": null,
"atomicBadge": null,
"validationPolicy": {
"type": "majority"
},
"apiVersion": "1.0"
"isConfidential": true
"groupParticipants" : [ "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ", "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY"],
"groupOwners" : [ "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ", "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY"]
}
Публикация:
{
"id": "4WVhw3QdiinpE5QXDG7QfqLiLanM7ewBw4ChX4qyGjs2",
"type": 103,
"version": 6,
"sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D",
"senderPublicKey": "YNpp7chAaudMqEtSZZPyN4GYLJ5ZTXdjCXrQdszzuRp",
"contractName": "SOME_CONTRACT_NAME",
"image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0",
"imageHash": "573387bbf50cfdeda462054b8d85d6c24007f91044501250877392e43ff5ed50",
"params": [
{
"key": "int",
"type": "integer",
"value": 24
},
{
"key": "bool",
"type": "boolean",
"value": true
},
{
"key": "blob",
"type": "binary",
"value": "base64:YWxpY2U="
}
],
"fee": 0,
"timestamp": 1665267880,
"feeAssetId": null,
"atomicBadge": {
"trustedSender": "SOME_SENDER_ACCOUNT_ADDRESS"
},
"proofs": [
"32mNYSefBTrkVngG5REkmmGAVv69ZvNhpbegmnqDReMTmXNyYqbECPgHgXrX2UwyKGLFS45j7xDFyPXjF8jcfw94"
],
"validationPolicy": {
"type": "SOME_VALIDATION_POLICY_NAME"
},
"apiVersion": "SOME_API_VERSION",
"payments": [
{
"amount": 100
},
{
"assetId": "SOME_ASSET_ID",
"amount": 100
}
]
"isConfidential": true
"groupParticipants" : [ "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ", "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY"],
"groupOwners" : [ "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ", "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY"]
}
Подписание:
{
"type": 103,
"version": 7,
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"contractName": " not world",
"params": [
{
"type": "integer",
"value": 0,
"key": "count"
}
],
"fee": 100000000,
"feeAssetId": null,
"validationPolicy":
{
"type": "any"
},
"payments": [],
"isConfidential": false,
"groupParticipants": [],
"groupOwners": [],
"storedContract":
{
"bytecode": "AGFzbQEAAAABNwdgA39/fgF/YAADf39/YAR/f39/AX9gBH9/f38Cf35gBH9/f38Df39/YAR/f39/An9/YAF+AX8CnAEHA2VudgZtZW1vcnkCAQIQBGVudjAPc2V0X3N0b3JhZ2VfaW50AAAEZW52MA1nZXRfdHhfc2VuZGVyAAEEZW52MBJzZXRfc3RvcmFnZV9iaW5hcnkAAgRlbnYwD2dldF9zdG9yYWdlX2ludAADBGVudjASZ2V0X3N0b3JhZ2VfYmluYXJ5AAQEZW52MA1iaW5hcnlfZXF1YWxzAAUDBAMGBgYGEAN/AUEQC38AQRoLfwBBIAsHRwUMX2NvbnN0cnVjdG9yAAYHY291bnRlcgAHD3Jlc3RvcmVfY291bnRlcgAICl9fZGF0YV9lbmQDAQtfX2hlYXBfYmFzZQMCCvcBA0sBA38CQEGQgICAAEEFIAAQgICAgAAiAQ0AEIGAgIAAGiECIgENABCBgICAACEDGiIBDQBBlYCAgABBBSACIAMQgoCAgAAhAQsgAQs4AgF+AX8CQEEAQQBBkICAgABBBRCDgICAACEBIgINAEGQgICAAEEFIAEgAHwQgICAgAAhAgsgAgtwAQV/AkBBAEEAQZWAgIAAQQUQhICAgAAhAiEBIgMNABCBgICAABohBCIDDQAQgYCAgAAhBRoiAw0AIAEgAiAEIAUQhYCAgAAhASIDDQBBrAIhAyABQQFxRQ0AQZCAgIAAQQUgABCAgICAACEDCyADCwsQAQBBEAsKY291bnRvd25lcg==",
"bytecodeHash": "083b7d0cb08b4a30f3d9f96a30ede04680623f73527432f947d5d5880e670625"
}
}
Публикация:
{
"senderPublicKey" : "5oKuxwiRmqHnr7vCAHK3VRJBhg9andjskfX11HpmJcYp8JifBXisz4KEKFD3pbRum3PWHDf4ZKkoCAgrrsLbp8HH",
"isConfidential" : false,
"fee" : 100000000,
"payments" : [ ],
"groupOwners" : [ ],
"type" : 103,
"params" : [ ],
"version" : 7,
"atomicBadge" : null,
"groupParticipants" : [ ],
"sender" : "3Hakpx6EE4fDb7Vd7EaWMG1HT9UJezLeVcG",
"feeAssetId" : null,
"storedContract" : {
"bytecode" : "AGFzbQEAAAABJQVgBH9/f38Df39/YAN/f34Bf2AEf39/fwJ/fmAAAX9gAn9/AX8CSgQDZW52Bm1lbW9yeQIBAhAEZW52MARqb2luAAAEZW52MA9zZXRfc3RvcmFnZV9pbnQAAQRlbnYwD2dldF9zdG9yYWdlX2ludAACAwMCAwQGEAN/AUEQC38AQSALfwBBIAsHOQQMX2NvbnN0cnVjdG9yAAMLaW5jcmVtZW50XzEABApfX2RhdGFfZW5kAwELX19oZWFwX2Jhc2UDAgrXAQJwAQR/QQAhAANAAkAgAEEKRw0AQQAPCwJAQZqAgIAAQQBBmoCAgABBBhCAgICAACECIQEiAw0AIAEgAiAAQZCAgIAAakEBEICAgIAAIQIhASIDDQAgAEEBaiEAIAEgAkIAEIGAgIAAIgNFDQELCyADC2QCA38BfgJAQZqAgIAAQQBBmoCAgABBBhCAgICAACEDIQIiBA0AIAIgAyAAIAEQgICAgAAhASEAIgQNAEEAQQAgACABEIKAgIAAIQUiBA0AIAAgASAFQgF8EIGAgIAAIQQLIAQLCxYBAEEQCxAwMTIzNDU2Nzg5c2hhcmRf",
"bytecodeHash" : "c2f116a528291d6cbcadc308edd8a1f294c4656009705916f3f0929150838388"
},
"contractName" : "name",
"id" : "GQ4CaT9vyKUsK7tFrg2F7bfqEspwVeaPFtE2tpAwAtye",
"validationPolicy" : {
"type" : "any"
},
"timestamp" : 1704962852721
}
Версия 4¶
В версии 4 данной транзакции настраивается валидация результатов исполнения обновляемого смарт-контракта при помощи поля validationPolicy.type
(см. раздел Валидация смарт-контрактов).
Версия 5¶
В версии 5 данной транзакции пользователь может перевести свои активы на баланс контракта. Для этого в поле payments
указывается массив ассетов и их количество. Можно передать как системный токен WEST, так и любые другие ассеты, созданные в сети. Использование версии 5 данной транзакции возможно начиная с релиза 1.12 после активации функциональной возможности 1120.
При работе в частной сети транзакция 103 предусматривает загрузку Docker-образа контракта не только из репозиториев, указанных в секции docker-engine
конфигурационного файла ноды.
Если вам необходимо загрузить смарт-контракт из репозитория, не внесенного в конфигурационный файл, укажите в поле name
транзакции полный адрес смарт-контракта в созданном вами репозитории.
Версия 6¶
В версии 6 данной транзакции реализована поддержка конфиденциальных смарт-контрактов. При регистрации контракта с помощью шестой версии транзакции можно указать, что контракт является конфиденциальным, и определить множество адресов нод, имеющих доступ к приватным данным смарт-контракта. Ниже описаны реализованные для этого поля.
Использование версии 6 данной транзакции возможно начиная с релиза 1.13 после активации функциональной возможности 1130.
Версия 7 – Create Wasm Contract Transaction¶
В версии 7 данной транзакции реализована поддержка WASM смарт-контрактов. Для этого удалены поля image
, imageHash
, apiVersion
и реализовано поле storedContract
. В зависимости от типа смарт-контракта это поле имеет следующую структуру:
для Docker смарт-контрактов:
"storedContract" : { "image" : <image docker> in Array[Byte] "imageHash": ssh256 от image docker "apiVersion" : "1.10", }
для WASM смарт-контрактов:
"storedContract" : { "bytecode" : <bytecode contracts> in Array[Byte] "bytecodeHash" : "Sha256 от <bytecode contracts>" }
Использование версии 7 данной транзакции возможно начиная с релиза 1.14.0 после активации функциональной возможности 1140.
Важно
В релизе 1.14.0 WASM смарт-контракты не поддерживают атомарные транзакции и конфиденциальные смарт-контракты. Поэтому для WASM смарт-контракта следующие поля должны иметь следующие значения:
... "atomicBadge" : null, ... "isConfidential": false, "groupParticipants": [], "groupOwners": [], ...
104. CallContract Transaction¶
Вызов смарт-контракта на исполнение. Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Подписание транзакции производится инициатором исполнения контракта.
В поле contractVersion
транзакции указывается версия контракта:
1
– для нового контракта;2
– для обновленного контракта.
Данное поле доступно только для транзакций второй версии и выше: если в поле version
транзакции вызова смарт-контракта указано значение >= 2
.
Контракт обновляется при помощи транзакции 107.
До релиза 1.14.0 если контракт не выполнялся или выполнялся с ошибкой, то транзакции 103 и 104 удалялись и не попадали в блок. Начиная с релиза 1.14.0 исполнение смарт-контракта в случае ошибки также сохраняется в блокчейне. Подробнее о алгоритме обработки ошибок смарт-контрактов см. раздел 105. ExecutedContract Transaction – Версия 5.
JSON-представление:
Подписание:
{
"contractId": "2sqPS2VAKmK77FoNakw1VtDTCbDSa7nqh5wTXvJeYGo2",
"fee": 10,
"sender": "3PKyW5FSn4fmdrLcUnDMRHVyoDBxybRgP58",
"password": "",
"type": 104,
"params":
[
{
"type": "integer",
"key": "a",
"value": 1
},
{
"type": "integer",
"key": "b",
"value": 100
}
],
"version": 2,
"contractVersion": 1
}
Публикация:
{
"type": 104,
"id": "9fBrL2n5TN473g1gNfoZqaAqAsAJCuHRHYxZpLexL3VP",
"sender": "3PKyW5FSn4fmdrLcUnDMRHVyoDBxybRgP58",
"senderPublicKey": "2YvzcVLrqLCqouVrFZynjfotEuPNV9GrdauNpgdWXLsq",
"fee": 10,
"timestamp": 1549365736923,
"proofs": [ "2q4cTBhDkEDkFxr7iYaHPAv1dzaKo5rDaTxPF5VHryyYTXxTPvN9Wb3YrsDYixKiUPXBnAyXzEcnKPFRCW9xVp4v" ],
"version": 2,
"contractVersion": 1,
"contractId": "2sqPS2VAKmK77FoNakw1VtDTCbDSa7nqh5wTXvJeYGo2",
"params":
[
{
"key": "a",
"type": "integer",
"value": 1
},
{
"key": "b",
"type": "integer",
"value": 100
}
]
}
Подписание:
{
"contractId": "Dgk1hR7xRnDT1KJreaXCVtZLrnd5LJ8uUYtoZyQrV1LJ",
"fee": 10000000,
"sender": "3NpkC1FSW9xNfmAMuhRSRArLgnfyGyEry7w",
"password": "",
"type": 104,
"params":
[ {
"type" : "string",
"value" : "value",
"key" : "data"
}, {
"type" : "integer",
"value" : 500,
"key" : "length"
} ],
"version": 3,
"contractVersion": 1,
}
Публикация:
{
"senderPublicKey" : "9Kgnqqxr5MU3PNrLgf1dkZL2HH6LBktB5Pv9L1cVELi1",
"fee" : 10000000,
"type" : 104,
"params" : [ {
"type" : "string",
"value" : "data_response",
"key" : "action"
}, {
"type" : "string",
"value" : "000008_regular_data_request_2m3SgcnQz9LXVi9ETy3CFHVGM1EyiqJi3vvRRQUM3oPp",
"key" : "request_id"
}, {
"type" : "string",
"value" : "76.33",
"key" : "value"
}, {
"type" : "string",
"value" : "1627678789267",
"key" : "timestamp"
} ],
"version" : 3,
"contractVersion" : 1,
"sender" : "3NpkC1FSW9xNfmAMuhRSRArLgnfyGyEry7w",
"feeAssetId" : null,
"proofs" : [ "4aanqYjaTVNot8Fbz5ixjwKSdqS5x3DdvzxQ4WsTaPcftYdoFx99xwLC3UPN91VAtez4RTMzaYb1TECaVxHHT9AH" ],
"contractId" : "Dgk1hR7xRnDT1KJreaXCVtZLrnd5LJ8uUYtoZyQrV1LJ",
"id" : "55imLuEXyVpBXb1S64R5PRx9acQQHaEATPwYwUVpqjAT",
"timestamp" : 1627678789267,
"height" : 1076064
}
Подписание:
{
"contractId": "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"fee": 10000000,
"sender": "3PKyW5FSn4fmdrLcUnDMRHVyoDBxybRgP58",
"password": "",
"type": 104,
"params":
[ {
"type" : "string",
"value" : "value",
"key" : "data"
}, {
"type" : "integer",
"value" : 500,
"key" : "length"
} ],
"version": 4,
"contractVersion": 3,
"atomicBadge" : null
}
Публикация:
{
"senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"fee" : 10000000,
"type" : 104,
"params" : [ {
"type" : "string",
"value" : "value",
"key" : "data"
}, {
"type" : "integer",
"value" : 500,
"key" : "length"
} ],
"version" : 4,
"contractVersion" : 3,
"atomicBadge" : null,
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId" : null,
"proofs" : [ "2bpALen4diR7DTFhNQCrZKPueCPds2gFFPxe1KVzQwfRuGaK6QfvtpN8oqaZMsStoEHAa5DrTkKM8AuzHPYyMPVP" ],
"contractId" : "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"id" : "GBfibn8VjGmDS9ex4Nd4JNRLvDyvJjj8jLUUcbYwFTCf",
"timestamp" : 1625732766458,
"height" : 1028132
}
Подписание:
{
"contractId": "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"fee": 10000000,
"sender": "3PKyW5FSn4fmdrLcUnDMRHVyoDBxybRgP58",
"password": "",
"type": 104,
"params": [
{
"type" : "string",
"value" : "value",
"key" : "data"
},
{
"type" : "integer",
"value" : 500,
"key" : "length"
}
],
"version": 5,
"contractVersion": 3,
"atomicBadge" : null
}
Публикация:
{
"senderPublicKey": "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"fee": 0,
"type": 104,
"params": [
{
"key": "int",
"type": "integer",
"value": 24
},
{
"key": "bool",
"type": "boolean",
"value": true
},
{
"key": "blob",
"type": "binary",
"value": "base64:YWxpY2U="
}
],
"version": 5,
"contractVersion": "3",
"atomicBadge": {
"trustedSender": "SOME_SENDER_ACCOUNT_ADDRESS"
},
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId": null,
"proofs": [
"32mNYSefBTrkVngG5REkmmGAVv69ZvNhpbegmnqDReMTmXNyYqbECPgHgXrX2UwyKGLFS45j7xDFyPXjF8jcfw94"
],
"contractId": "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"id": "GBfibn8VjGmDS9ex4Nd4JNRLvDyvJjj8jLUUcbYwFTCf",
"timestamp": 1665267880,
"payments": [
{
"amount": 100
},
{
"assetId": "SOME_ASSET_ID",
"amount": 100
}
]
}
Подписание:
{
"contractId": "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"fee": 10000000,
"sender": "3PKyW5FSn4fmdrLcUnDMRHVyoDBxybRgP58",
"password": "",
"type": 104,
"params": [
{
"type" : "string",
"value" : "value",
"key" : "data"
},
{
"type" : "integer",
"value" : 500,
"key" : "length"
}
],
"version": 6,
"contractVersion": 3,
"atomicBadge" : null
"inputCommitment" : "SOME_COMMITMENT"
}
Публикация:
{
"senderPublicKey": "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"fee": 0,
"type": 104,
"params": [
{
"key": "int",
"type": "integer",
"value": 24
},
{
"key": "bool",
"type": "boolean",
"value": true
},
{
"key": "blob",
"type": "binary",
"value": "base64:YWxpY2U="
}
],
"version": 6,
"contractVersion": "3",
"atomicBadge": {
"trustedSender": "SOME_SENDER_ACCOUNT_ADDRESS"
},
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId": null,
"proofs": [
"32mNYSefBTrkVngG5REkmmGAVv69ZvNhpbegmnqDReMTmXNyYqbECPgHgXrX2UwyKGLFS45j7xDFyPXjF8jcfw94"
],
"contractId": "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"id": "GBfibn8VjGmDS9ex4Nd4JNRLvDyvJjj8jLUUcbYwFTCf",
"timestamp": 1665267880,
"payments": [
{
"amount": 100
},
{
"assetId": "SOME_ASSET_ID",
"amount": 100
}
]
"inputCommitment" : "SOME_COMMITMENT"
}
Подписание:
{
"contractId": "2TUhT1eRvpKcwxUfpUEB7BHEiXNVZnEbEMgZKnxuPXHJ",
"fee": 10000000,
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"type": 104,
"params": [
{
"type": "integer",
"value": 7,
"key": "count"
}
],
"version": 7,
"contractVersion": 1,
"feeAssetId": null,
"payments": [],
"callFunc": "restore_counter",
"contractEngine": "wasm"
}
Публикация:
{
"senderPublicKey" : "5oKuxwiRmqHnr7vCAHK3VRJBhg9andjskfX11HpmJcYp8JifBXisz4KEKFD3pbRum3PWHDf4ZKkoCAgrrsLbp8HH",
"fee" : 100000000,
"type" : 104,
"params" : [
{
"type" : "boolean",
"value" : true,
"key" : "bool_value"
},
{
"type" : "integer",
"value" : 100000000,
"key" : "int_value"
},
{
"type" : "string",
"value" : "Hello World",
"key" : "string_value"
},
{
"type" : "string",
"value" : "3Hakpx6EE4fDb7Vd7EaWMG1HT9UJezLeVcG",
"key" : "address_value"
}
],
"version" : 7,
"contractVersion" : 1,
"atomicBadge" : null,
"sender" : "3Hakpx6EE4fDb7Vd7EaWMG1HT9UJezLeVcG",
"feeAssetId" : null,
"contractId" : "GyDvD8r2yXE1Kdu31TMkYtSW9i7F4qXXkfWpfKgkYxX",
"id" : "3bGqThohX5KX79k9snWENduwgkmpfKDMjqtK3QGMH1me",
"timestamp" : 1704963915571
"payments" : [ ],
"callFunc" : "update_storage",
"contractEngine" : "wasm"
}
Версия 5¶
В версии 5 данной транзакции пользователь может перевести свои активы на баланс контракта. Для этого в поле payments
указывается массив ассетов и их количество. Можно передать как системный токен WEST, так и любые другие ассеты, созданные в сети. Использование версии 5 данной транзакции возможно начиная с релиза 1.12 после активации функциональной возможности 1120.
Версия 6¶
В версии 6 данной транзакции реализовано поле, необходимое для работы с конфиденциальными смарт-контрактами.
Использование версии 6 данной транзакции возможно начиная с релиза 1.13 после активации функциональной возможности 1130. После активации функциональной возможности 1130 в сети используется только версия 6 транзакции.
Версия 7¶
В версии 7 данной транзакции реализована поддержка WASM смарт-контрактов. Для этого реализованы следующие поля:
contractEngine
– определяет, какой тип контракта будет вызван; доступные значения:wasm
docker
callFunc
– название функции WASM смарт-контракта, которую необходимо вызвать; в этом поле нельзя указать функцию_constructor
, так как она вызывается только при создании контракта; для Docker смарт-контракта поле должно остаться пустым:callFunc: null
.Внимание
Важен порядок и тип параметров, переданных функции: в JSON на подписание в поле
params
параметры должны быть указаны именно в том порядке, в каком их ожидает функция, заданная в полеcallFunc
.
Использование версии 7 данной транзакции возможно начиная с релиза 1.14.0 после активации функциональной возможности 1140.
Важно
В релизе 1.14.0 WASM смарт-контракты не поддерживают атомарные транзакции и конфиденциальные смарт-контракты, поэтому для WASM смарт-контракта в JSON на подписание поле inputCommitmentOpt
должно отсустствовать, а поле atomicBadge
должно отсустствовать или иметь значение null
.
105. ExecutedContract Transaction¶
Запись результата исполнения смарт-контракта в его стейт. Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Транзакция 105 содержит все поля (тело) транзакции 103. CreateContract, 104. CallContract, 107. UpdateContract смарт-контракта, результат исполнения которого необходимо записать в его стейт (поле tx
).
Результат исполнения смарт-контракта вносится в его стейт из соответствующих параметров поля params
транзакции 103 или 104.
Подписание транзакции производится нодой, формирующей блок после отправки запроса на публикацию транзакции.
JSON-представление:
Публикация:
{
"type": 105,
"version": 2,
"id": "38GmSVC5s8Sjeybzfe9RQ6p1Mb6ajb8LYJDcep8G8Umj",
"sender": "3N3YTj1tNwn8XUJ8ptGKbPuEFNa9GFnhqew",
"senderPublicKey": "3kW7vy6nPC59BXM67n5N56rhhAv38Dws5skqDsjMVT2M",
"password": "",
"fee": 500000,
"timestamp": 1550591780234,
"proofs": [ "5whBipAWQgFvm3myNZe6GDd9Ky8199C9qNxLBHqDNmVAUJW9gLf7t9LBQDi68CKT57dzmnPJpJkrwKh2HBSwUer6" ],
"tx":
{
"type": 103,
"id": "ULcq9R7PvUB2yPMrmBdxoTi3bcRmQPT3JDLLLZVj4Ky",
"sender": "3N3YTj1tNwn8XUJ8ptGKbPuEFNa9GFnhqew",
"senderPublicKey": "3kW7vy6nPC59BXM67n5N56rhhAv38Dws5skqDsjMVT2M",
"fee": 500000,
"timestamp": 1550591678479,
"proofs": [ "yecRFZm9iBLyDy93bDVaNo1PR5Qkkic7196GAgUt9TNH1cnQphq4yGQQ8Fxj4BYA4TaqYVw5qxtWzGMPQyVeKYv" ],
"version": 2,
"image": "stateful-increment-contract:latest",
"imageHash": "7d3b915c82930dd79591aab040657338f64e5d8b842abe2d73d5c8f828584b65",
"contractName": "stateful-increment-contract",
"params": [],
"height": 1619
},
"results": [],
"height": 1619,
"atomicBadge" : null
}
Публикация:
{
"type": 105,
"version": 3,
"id": "SOME_TX_ID",
"sender": "3N3YTj1tNwn8XUJ8ptGKbPuEFNa9GFnhqew",
"senderPublicKey": "3kW7vy6nPC59BXM67n5N56rhhAv38Dws5skqDsjMVT2M",
"fee": 0,
"timestamp": 1665267880,
"proofs": [
"32mNYSefBTrkVngG5REkmmGAVv69ZvNhpbegmnqDReMTmXNyYqbECPgHgXrX2UwyKGLFS45j7xDFyPXjF8jcfw94"
],
"tx": { // inner (executed) tx json-object
"id": "SOME_INNER_TX_ID",
// ...
},
"results": [
{
"key": "int",
"type": "integer",
"value": 24
},
{
"key": "bool",
"type": "boolean",
"value": true
},
{
"key": "blob",
"type": "binary",
"value": "base64:YWxpY2U="
}
],
"assetOperations": [
{
"operationType": "issue",
"version": 1,
"assetId": "SOME_ASSET_ID",
"name": "Gigacoin",
"description": "Gigacoin",
"quantity": 10000000000,
"decimals": 8,
"isReissuable": true,
"nonce": 1 // SOME_NONCE
},
{
"operationType": "burn",
"version": 1,
"assetId": "SOME_ASSET_ID",
"amount": 1000
},
{
"operationType": "reissue",
"version": 1,
"assetId": "SOME_ASSET_ID",
"quantity": 10000000000,
"isReissuable": true
},
{
"operationType": "transfer",
"version": 1,
"recipient": "SOME_RECIPIENT_ACCOUNT_ADDRESS",
"assetId": "SOME_ASSET_ID",
"amount": 1000
}
{
"operationType": "lease",
"leaseId": "SOME_LEASE_ID",
"nonce": 1,
"recipient": "SOME_RECIPIENT_ACCOUNT_ADDRESS"
"amount": 1000
}
{
"operationType": "cancel-lease",
"leaseId": "SOME_LEASE_ID"
}
]
"resultsHash": "SOME_RESULTS_HASH",
"validationProofs": [],
}
Публикация:
{
"type": 105,
"version": 4,
"id": "SOME_TX_ID",
"sender": "3N3YTj1tNwn8XUJ8ptGKbPuEFNa9GFnhqew",
"senderPublicKey": "3kW7vy6nPC59BXM67n5N56rhhAv38Dws5skqDsjMVT2M",
"fee": 0,
"timestamp": 1665267880,
"proofs": [
"32mNYSefBTrkVngG5REkmmGAVv69ZvNhpbegmnqDReMTmXNyYqbECPgHgXrX2UwyKGLFS45j7xDFyPXjF8jcfw94"
],
"tx": { // inner (executed) tx json-object
"id": "SOME_INNER_TX_ID",
// ...
},
"results": [
{
"key": "int",
"type": "integer",
"value": 24
},
{
"key": "bool",
"type": "boolean",
"value": true
},
{
"key": "blob",
"type": "binary",
"value": "base64:YWxpY2U="
}
],
"assetOperations": [
{
"operationType": "issue",
"version": 1,
"assetId": "SOME_ASSET_ID",
"name": "Gigacoin",
"description": "Gigacoin",
"quantity": 10000000000,
"decimals": 8,
"isReissuable": true,
"nonce": 1 // SOME_NONCE
},
{
"operationType": "burn",
"version": 1,
"assetId": "SOME_ASSET_ID",
"amount": 1000
},
{
"operationType": "reissue",
"version": 1,
"assetId": "SOME_ASSET_ID",
"quantity": 10000000000,
"isReissuable": true
},
{
"operationType": "transfer",
"version": 1,
"recipient": "SOME_RECIPIENT_ACCOUNT_ADDRESS",
"assetId": "SOME_ASSET_ID",
"amount": 1000
}
{
"operationType": "lease",
"leaseId": "SOME_LEASE_ID",
"nonce": 1,
"recipient": "SOME_RECIPIENT_ACCOUNT_ADDRESS"
"amount": 1000
}
{
"operationType": "cancel-lease",
"leaseId": "SOME_LEASE_ID"
}
]
"resultsHash": "SOME_RESULTS_HASH",
"validationProofs": [],
"readings": [ReadDescriptor1, ..., ReadDescriptorN],
"readingsHash" : "SOME_READINGS_HASH",
"outputCommitment" : "SOME_COMMITMENT"
}
Публикация:
{
"type": 105,
"version": 5,
"id": "HydNFEUeCj5DXFfHm32CrpcohvRvTABqdoFERtosgf5a",
"sender": "3NdJB3vGAAQm2xQc2SAEhGNqDtXpL7YCn3v",
"senderPublicKey": "9e4poNdEc9KF1qRxRJLbhqx6hrcjieQP2YcPiBdd3fpT",
"fee": 0,
"timestamp": 1708355888775,
"proofs": [
"3VHTSQh5HKkt1KGwhZg39WhPVNbNE5GnmyAD82no92e8CbYthh1KepjECyAcXXVu8QPoduscdZnnnrPtyfHZYjSR"
],
"tx":
{
"type": 104,
"version": 7,
"sender": "3Nremv58EXSYK2qa5bhMeGnm1f2pRqLnv34",
"senderPublicKey": "4sCvMtLD9MJUaw6dQrjnzWhrM6D32nrQcgQk5ULtQUXw",
"contractEngine": "docker",
"callFunc": null,
"fee": 10000000,
"feeAssetId": null,
"payments": [],
"params": [
{
"type": "integer",
"value": 1,
"key": "error_code"
}
],
"contractVersion": 1,
"atomicBadge": null,
"proofs": [
"emoXX9D1tknstbNjkxAdERQsVz59AM9XchH9fwfeyUYNdkwSmBEU1FRfH71gDyyPHs3t4e6hrXqNiNUTrLkQ7pc"
],
"contractId": "4K6gRgAhnzzbHXaGSRbWnjtU2r4kYUw61uwPuKJq1ims",
"id": "Ecectk1L6T6TFAtUcQH2XerXNGT4gm7tMKBf2NnNKBjK",
"timestamp": 1708355888031
},
"resultsHash": "xyw95Bsby3s4mt6f4FmFDnFVpQBAeJxBFNGzu2cX4dM",
"validationProofs": [],
"readings": [],
"readingsHash" : null,
"resultsMap": {},
"assetOperationsMap": {},
"statusCode": 2,
"errorMessage": "Rejected because the CircuitBreaker is in the Open state, attempting to close in 53 millis"
}
Версия 3¶
В версии 3 данной транзакции в поле assetOperations
можно передать последовательность операций над ассетами, например перевод токенов с баланса пользователя на баланс контракта.
При помощи операции перевода токенов (
transfer
) можно передать как системный токен WEST, так и любые другие ассеты, созданные в сети.Операции
issue
,reissue
,burn
можно осуществить с любыми токенами, кроме системного токена WEST.Операции
lease
иcancel-lease
работают только с системным токеном WEST.
Важно
Если в поле isReissuable
указано значение False
, то есть довыпуск токенов запрещён, то в дальнейшем изменить это значение невозможно.
Использование версии 3 данной транзакции возможно начиная с релиза 1.12 после активации функциональной возможности 1120. После активации функциональной возможности 1120 в сети используется только версия 3 транзакции.
Использование операций lease
и cancel-lease
возможно начиная с релиза 1.12.3 после активации функциональной возможности 1123.
Версия 4¶
В версии 4 данной транзакции реализованы поля, необходимые для работы с конфиденциальными смарт-контрактами.
Использование версии 4 данной транзакции возможно начиная с релиза 1.13 после активации функциональной возможности 1130. После активации функциональной возможности 1130 в сети используется только версия 4 транзакции.
Версия 5¶
В версии 5 данной транзакции изменён алгоритм обработки ошибок смарт-контрактов:
В случае успешного исполнения нода (как и в предыдущих версиях) формирует и отправляет в блокчейн транзакцию 105, которая содержит в себе детали изменения стейта в рамках исходной 103-й или 104-й транзакций в следующем формате:
"results": [ { "type": "string", "value": "[{\"accountNumber\":\"1119810\"}]", "key": "accounts" } ]
В случае ошибки также происходит генерация транзакции 105, и исполнение смарт-контракта с ошибкой сохраняется в блокчейне при наборе транзакцией кворума.
В этой версии транзакции реализованы поля, необходимые для фиксации статусов исполнения смарт-контракта:
statusCode
– статус исполнения смарт контракта; доступны следующие значения:0
– Success – успешное исполнение контракта, получен предполагаемый результат;1
– Error – ошибка бизнес-логики; контракт закончился с ошибкой, но может завершиться успешно в будущем;2
– Failure – системная ошибка; отказала компонента блокчейна, например в случае timeout.
errorMessage
– описание ошибки; в случае WASM смарт-контракта поле содержит код ошибки; в случае Docker смарт-контракта может быть возвращена ошибка, заданная пользователем, или другая ошибка.
Помимо этого, теперь в одной транзакции могут быть переданы данные нескольких смарт-контрактов, в связи с чем:
поле
results
заменено на полеresultsMap
, в котором может быть передан список результатов для каждого из смарт-контрактов;поле
assetOperations
заменено на полеassetOperationsMap
, в котором может быть передан ряд упорядоченных списков действий смарт-контрактов с доступными им ассетами.
Использование версии 5 данной транзакции возможно начиная с релиза 1.14.0 после активации функциональной возможности 1140.
106. DisableContract Transaction¶
Отключение смарт-контракта.
Важно
Транзакция является необратимой, то есть отключенным контрактом нельзя будет пользоваться ни при каких условиях.
Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Подписать транзакцию 106 может только пользователь с ролью contract_developer.
JSON-представление:
Подписание:
{
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"contractId": "HKftkVDTcQp6kxdqVYNdzB9d4rhND4YRKxwJV1thMXcr",
"fee": 1000000,
"type": 106,
"version": 1,
}
Публикация:
{
"senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"proofs" : [ "3FKPGT8YbLVun5cffZi1sHkgr9JZVxkeN7z2kUqDVLfhB5CwMtCAfyStRz1tpZuriKsR3MaBqNfReGx5sM2qey8i" ],
"fee" : 1000000,
"contractId" : "HKftkVDTcQp6kxdqVYNdzB9d4rhND4YRKxwJV1thMXcr",
"id" : "5hXuHs5HVhZSfek153t76HfW6egmCLdZmi5AeFzYBFN",
"type" : 106,
"version" : 1,
"timestamp" : 1625648619321,
"height" : 1025992
}
Подписание:
{
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"contractId": "HKftkVDTcQp6kxdqVYNdzB9d4rhND4YRKxwJV1thMXcr",
"fee": 1000000,
"type": 106,
"version": 2,
}
Публикация:
{
"senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId" : "7QpXWLGuaspzrMsESRaHTgksndq5mcvfbVrqBTuLbxuy",
"proofs" : [ "3FKPGT8YbLVun5cffZi1sHkgr9JZVxkeN7z2kUqDVLfhB5CwMtCAfyStRz1tpZuriKsR3MaBqNfReGx5sM2qey8i" ],
"fee" : 1000000,
"contractId" : "HKftkVDTcQp6kxdqVYNdzB9d4rhND4YRKxwJV1thMXcr",
"id" : "5hXuHs5HVhZSfek153t76HfW6egmCLdZmi5AeFzYBFN",
"type" : 106,
"version" : 2,
"timestamp" : 1625648619321,
"height" : 1025992
}
Подписание:
{
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"contractId": "75PumcfCVxzV3v7RAPYQUwCtSpU21hxfaWFhureCRTLM",
"fee": 1000000,
"type": 106,
"version": 3,
"atomicBadge" : {
"trustedSender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
}
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"atomicBadge" : {
"trustedSender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
},
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"feeAssetId" : null,
"proofs" : [ "22tK24qHhgbTDjtRmR86z3WeLLqLnqPvhUhQrz8ohfbCwQ9nrwmHESuT9aFuwABeBRJ7MfVob1FiJnqg3y2PHLSj" ],
"fee" : 1000000,
"contractId" : "75PumcfCVxzV3v7RAPYQUwCtSpU21hxfaWFhureCRTLM",
"id" : "7opPrLd6x1hATRr9R5oXnEbYjYQzo5cn4Qpkiz12Mw9b",
"type" : 106,
"version" : 3,
"timestamp" : 1619186857911,
"height" : 861644
}
107. UpdateContract Transaction¶
Обновление кода смарт-контракта. Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Подписать транзакцию 107, а также обновить смарт-контракт, может только пользователь с ролью contract_developer.
JSON-представление:
Подписание:
{
"image" : "we-sc/grpc-contract-example:2.2-test-update",
"imageHash" : "075ad1607f193cc6fdb5e85c201f9ca3907c622718d75706bbc2a94a330de5b5",
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"fee" : 100000000,
"contractId" : "BWzX4mRBEnHKgn3HB78My5DZzDAqnCLWCCNpCuRkZrJA",
"type" : 107,
"version" : 2
}
Публикация:
{
"senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"image" : "we-sc/grpc-contract-example:2.2-test-update",
"imageHash" : "075ad1607f193cc6fdb5e85c201f9ca3907c622718d75706bbc2a94a330de5b5",
"fee" : 100000000,
"type" : 107,
"version" : 2,
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId" : null,
"proofs" : [ "RetQwzuWZWxpSNMqwB7k7o6hSm6nhFCc49zKUpwZEedzBYcohj9NVEPwAbKLW9RzRKX168xApV7Nu2qV2jaHAMg" ],
"contractId" : "BWzX4mRBEnHKgn3HB78My5DZzDAqnCLWCCNpCuRkZrJA",
"id" : "6oopqcEf4AF943SCAqkBPrghyeQhmwn64TrhtCZbAn3v",
"timestamp" : 1625649822957,
"height" : 1026022
}
Подписание:
{
"image" : "registry.wavesenterpriseservices.com/we-sc/grpc-contract-example:2.2-test-update",
"imageHash" : "075ad1607f193cc6fdb5e85c201f9ca3907c622718d75706bbc2a94a330de5b5",
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"fee" : 100000000,
"contractId" : "HTqdjXUPTHZqGen2KKUkEenTELAqQ8irN58LA8EcP17q",
"type" : 107,
"version" : 3,
"atomicBadge" : null
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"image" : "registry.wavesenterpriseservices.com/we-sc/grpc-contract-example:2.2-test-update",
"imageHash" : "075ad1607f193cc6fdb5e85c201f9ca3907c622718d75706bbc2a94a330de5b5",
"fee" : 100000000,
"type" : 107,
"version" : 3,
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"feeAssetId" : null,
"proofs" : [ "3ncWfFPqBAdgh65YceCCvF2RhUWWokQc9MsnHk27YLrYmPj9gWgrbRcousymJVA7ARFSz5UJcdW4Sa62FFhR5en3" ],
"contractId" : "HTqdjXUPTHZqGen2KKUkEenTELAqQ8irN58LA8EcP17q",
"id" : "B7qjgCa9N6M6FwV63PbLwvtVpFo4bzB5gRZzGjwJpKJV",
"timestamp" : 1619187337697,
"height" : 861650
"atomicBadge" : null,
}
Подписание:
{
"image" : "we-sc/grpc_validatable_stateless:0.1",
"imageHash" : "bd98a7d3e55506ff936d8ea15e170a24d27662edd1b47e4fd20801d10655af8d",
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"fee" : 100000000,
"contractId" : "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"type" : 107,
"version" : 4,
"atomicBadge" : null
"validationPolicy" : {
"type" : "any"
}
Публикация:
{
"senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"image" : "we-sc/grpc_validatable_stateless:0.1",
"imageHash" : "bd98a7d3e55506ff936d8ea15e170a24d27662edd1b47e4fd20801d10655af8d",
"fee" : 100000000,
"type" : 107,
"version" : 4,
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId" : null,
"proofs" : [ "fZr9LpqSWbPcUzArSZxFDEuygN62hR63j2Cz1GyTFxPNRrNvVwkDhTDcC8zwRp235gA1gSM8fvPps9mvPTWDQ4p" ],
"contractId" : "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"id" : "HWZy7219Nx5oxj2QnK3ReEuZiqsjoULbmfdQz8YysFSz",
"timestamp" : 1625732772746,
"height" : 1028132,
"atomicBadge" : null,
"apiVersion" : "1.0",
"validationPolicy" : {
"type" : "any"
},
}
Подписание:
{
"image" : "we-sc/grpc_validatable_stateless:0.1",
"imageHash" : "bd98a7d3e55506ff936d8ea15e170a24d27662edd1b47e4fd20801d10655af8d",
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"fee" : 100000000,
"contractId" : "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"type" : 107,
"version" : 5,
"atomicBadge" : null
"groupParticipants" : [ "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ", "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY"],
"groupOwners" : [ "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ", "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY"],
"validationPolicy" : {
"type" : "any"
}
Публикация:
{
"senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"image" : "we-sc/grpc_validatable_stateless:0.1",
"imageHash" : "bd98a7d3e55506ff936d8ea15e170a24d27662edd1b47e4fd20801d10655af8d",
"fee" : 100000000,
"type" : 107,
"version" : 5,
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId" : null,
"proofs" : [ "fZr9LpqSWbPcUzArSZxFDEuygN62hR63j2Cz1GyTFxPNRrNvVwkDhTDcC8zwRp235gA1gSM8fvPps9mvPTWDQ4p" ],
"contractId" : "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"id" : "HWZy7219Nx5oxj2QnK3ReEuZiqsjoULbmfdQz8YysFSz",
"timestamp" : 1625732772746,
"height" : 1028132,
"atomicBadge" : null,
"apiVersion" : "1.0",
"validationPolicy" : {
"type" : "any"
},
"groupParticipants" : [ "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ", "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY"],
"groupOwners" : [ "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ", "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY"],
}
Подписание:
{
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"password": "",
"fee": 100000000,
"contractId": "HcJTMMpcLaMXme2hLzC7JqZ5Dn8ecfNeKkwHNYCVfdFZ",
"type": 107,
"version": 6,
"feeAssetId": null,
"groupParticipants": [],
"groupOwners": [],
"validationPolicy": {"type": "any"},
"storedContract":
{
"bytecode": "AGFzbQEAAAABGgRgA39/fgF/YAR/f39/An9+YAABf2ABfgF/Aj4DA2VudgZtZW1vcnkCAQIQBGVudjAPc2V0X3N0b3JhZ2VfaW50AAAEZW52MA9nZXRfc3RvcmFnZV9pbnQAAQMEAwICAwYQA38BQRALfwBBFwt/AEEgCwdFBQxfY29uc3RydWN0b3IAAgtpbmNyZW1lbnRfMQADCWluY3JlbWVudAAECl9fZGF0YV9lbmQDAQtfX2hlYXBfYmFzZQMCCoYBAxIAQZCAgIAAQQdCABCAgICAAAs4AgF+AX8CQEEAQQBBkICAgABBBxCBgICAACEAIgENAEGQgICAAEEHIABCAXwQgICAgAAhAQsgAQs4AgF+AX8CQEEAQQBBkICAgABBBxCBgICAACEBIgINAEGQgICAAEEHIAEgAHwQgICAgAAhAgsgAgsLDQEAQRALB2NvdW50ZXI=",
"bytecodeHash": "2d52876455a4d8cd599c16fa0e0ad6f028b76b8494e40f6c4651598f29066013"
}
}
Публикация:
{
"senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"fee" : 100000000,
"type" : 107,
"version" : 6,
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId" : None,
'proofs': ['5x2giusM21s5jgSzQDkZABpnRGNrPyDxpTFm2RS1znP9DSEHEuccyPMUmhpPq78U1bKksbemYeRo8mApVWuGybpb'],
"contractId" : "HcJTMMpcLaMXme2hLzC7JqZ5Dn8ecfNeKkwHNYCVfdFZ",
"id" : "8PrdyjiM443kYSrBpeU6BVBKkCbnTKcMmAsWHieMvW8n",
"timestamp" : 1708435405364
"atomicBadge" : None,
"groupOwners" : [ ],
"groupParticipants" : [ ],
"validationPolicy" : {
"type" : "any"
},
"storedContract" : {
"bytecode" : "AGFzbQEAAAABLwZgA39/fwF/YAN/f34Bf2AEf39/fwF/YAJ/fwN/f39gAAN/f39gBn9+f39/fwF/ApcBBwNlbnYGbWVtb3J5AgECEARlbnYwEHNldF9zdG9yYWdlX2Jvb2wAAARlbnYwD3NldF9zdG9yYWdlX2ludAABBGVudjASc2V0X3N0b3JhZ2Vfc3RyaW5nAAIEZW52MAdiYXNlXzU4AAMEZW52MBJzZXRfc3RvcmFnZV9iaW5hcnkAAgRlbnYwDWdldF90eF9zZW5kZXIABAMDAgUFBhIDfwFBEAt/AEHBAAt/AEHQAAsHPAQMX2NvbnN0cnVjdG9yAAYOdXBkYXRlX3N0b3JhZ2UABwpfX2RhdGFfZW5kAwELX19oZWFwX2Jhc2UDAgqqAgKrAQACQEGQgICAAEEKIAAQgICAgAAiAA0AQZqAgIAAQQkgARCBgICAACIADQBBo4CAgABBDCACIAMQgoCAgAAiAA0AIAQgBRCDgICAABohAyIADQAgBCAFEIOAgIAAIQIaIgANAEGvgICAAEENIAMgAhCEgICAACIADQAQhYCAgAAaIQMiAA0AEIWAgIAAIQIaIgANAEG8gICAAEEFIAMgAhCEgICAACEACyAAC3sAAkBBkICAgABBCiAAEICAgIAAIgANAEGagICAAEEJIAEQgYCAgAAiAA0AQaOAgIAAQQwgAiADEIKAgIAAIgANACAEIAUQg4CAgAAaIQMiAA0AIAQgBRCDgICAACECGiIADQBBr4CAgABBDSADIAIQhICAgAAhAAsgAAsLNwEAQRALMWJvb2xfdmFsdWVpbnRfdmFsdWVzdHJpbmdfdmFsdWVhZGRyZXNzX3ZhbHVlb3duZXI=",
"bytecodeHash" : "1afd57a7be47a0f762821bdbe2099c9590efd4471a716e5f0da60a06bc317ec6"
},
}
Версия 4¶
В версии 4 данной транзакции настраивается валидация результатов исполнения обновляемого смарт-контракта при помощи поля validationPolicy.type
(см. раздел Валидация смарт-контрактов).
Версия 5¶
В версии 5 данной транзакции реализованы поля, необходимые для работы с конфиденциальными смарт-контрактами.
Использование версии 5 данной транзакции возможно начиная с релиза 1.13 после активации функциональной возможности 1130.
Версия 6¶
В версии 6 данной транзакции реализована поддержка WASM смарт-контрактов. Для этого удалены поля image
, imageHash
, apiVersion
и реализовано поле storedContract
:
для Docker смарт-контрактов:
"storedContract" : { "image" : String "imageHash": String "apiVersion" : Byte, }
Для WASM смарт-контрактов:
"storedContract" : { "bytecode" : <bytecode contracts> "bytecodeHash" : "Sha256 от <bytecode contracts>" }
Важно
Невозможно обновить Docker смарт-контракт на WASM смарт-контракт.
Использование версии 6 данной транзакции возможно начиная с релиза 1.14.0 после активации функциональной возможности 1140.
Важно
В релизе 1.14.0 WASM смарт-контракты не поддерживают атомарные транзакции и конфиденциальные смарт-контракты. Поэтому для WASM смарт-контракта поле atomicBadge
должно отсустствовать в JSON на подписание или иметь значение null
; следующие поля должны иметь следующие значения:
... "groupParticipants": [], "groupOwners": [], ...
110. GenesisRegisterNode Transaction¶
Регистрация ноды в генезис-блоке при старте блокчейна.
Данная транзакция не требует подписания.
111. RegisterNode Transaction¶
Регистрация новой ноды в блокчейне или ее удаление.
JSON-представление:
Подписание:
{
"type": 111,
"opType": "add",
"sender":"3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ",
"password": "",
"targetPubKey": "6caEKC1UBgRvgAe9A7L5PWcrawrnEZGxtsXynGESwSj7",
"nodeName": "GATEs node",
"fee": 1100000,
}
Публикация:
{
"senderPublicKey" : "FWz5gZ2w2ZxXbKEiwhgEcZKT4we1Wneh9XqmCeGPsA4r",
"nodeName" : "GATEs node",
"fee" : 1100000,
"opType" : "add",
"type" : 111,
"version" : 1,
"target" : "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY",
"sender" : "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ",
"proofs" : [ "FHEexr8MqMCkdqaVRrfxv7dnQFwo1VQxQFb4rW2VKh1NkuAhjhtzftKybBQCVbpKcCD1ZTRhwATpwERF9re2Viz" ],
"id" : "6WnDGkBDeSjg5y6QqVdy3BFHUy5nnr4QsxZCeNXZtZoq",
"targetPubKey" : "6caEKC1UBgRvgAe9A7L5PWcrawrnEZGxtsXynGESwSj7",
"timestamp" : 1619078302988,
"height" : 858895
}
Подписание:
{
"type": 111,
"version" : 2,
"opType": "add",
"sender":"3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ",
"password": "",
"targetPubKey": "6caEKC1UBgRvgAe9A7L5PWcrawrnEZGxtsXynGESwSj7",
"nodeName": "GATEs node",
"fee": 1100000,
"atomicBadge":{
"trustedSender":"3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP"
}
}
Публикация:
{
"senderPublicKey" : "FWz5gZ2w2ZxXbKEiwhgEcZKT4we1Wneh9XqmCeGPsA4r",
"nodeName" : "GATEs node",
"fee" : 1100000,
"opType" : "add",
"type" : 111,
"version" : 2,
"target" : "3NtieMGjVAH1nDsvnSEJ37BSW3hpJV2CneY",
"sender" : "3NgSJRdMYu4ZbNpSbyRNZLJDX926W7e1EKQ",
"proofs" : [ "FHEexr8MqMCkdqaVRrfxv7dnQFwo1VQxQFb4rW2VKh1NkuAhjhtzftKybBQCVbpKcCD1ZTRhwATpwERF9re2Viz" ],
"id" : "6WnDGkBDeSjg5y6QqVdy3BFHUy5nnr4QsxZCeNXZtZoq",
"targetPubKey" : "6caEKC1UBgRvgAe9A7L5PWcrawrnEZGxtsXynGESwSj7",
"timestamp" : 1619078302988,
"height" : 858895
}
112. CreatePolicy Transaction¶
Создание группы доступа к конфиденциальным данным из указанных адресов.
JSON-представление:
Подписание:
{
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"policyName": "Policy# 7777",
"password":"sfgKYBFCF@#$fsdf()%",
"recipients": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
],
"fee": 15000000,
"description": "Buy bitcoin by 1c",
"owners": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T"
],
"type": 112,
"version": 1,
}
Публикация:
{
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"policyName": "Policy# 7777",
"password":"sfgKYBFCF@#$fsdf()%",
"recipients": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
],
"fee": 15000000,
"description": "Buy bitcoin by 1c",
"owners": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T"
],
"type": 112,
"version": 1,
}
Подписание:
{
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"policyName": "Policy# 7777",
"password":"sfgKYBFCF@#$fsdf()%",
"recipients": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
],
"fee": 15000000,
"description": "Buy bitcoin by 1c",
"owners": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T"
],
"type": 112,
"version": 2,
}
Публикация:
{
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"policyName": "Policy# 7777",
"password":"sfgKYBFCF@#$fsdf()%",
"recipients": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
],
"fee": 15000000,
"feeAssetId" : null,
"description": "Buy bitcoin by 1c",
"owners": [
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn",
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T"
],
"type": 112,
"version": 2,
}
Подписание:
{
"sender": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"policyName": "Policy_v3_for_demo_txs",
"password":"sfgKYBFCF@#$fsdf()%",
"recipients" : [
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn"
],
"fee": 100000000,
"description": "",
"owners" : [
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx"
],
"type": 112,
"version": 3
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"policyName" : "Policy_v3_for_demo_txs",
"fee" : 100000000,
"description" : "",
"owners" : [
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn"
],
"type" : 112,
"version" : 3,
"atomicBadge" : null,
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"feeAssetId" : null,
"proofs" : [ "4NccZyPCgchDjeMdMmFKu7kxyU8AFF4e9cWaPFTQVQyYU1ZCCu3QmtmkfJkrDpDwGs4eJhYUVh5TnwYvjZYKPhLp" ],
"recipients" : [
"3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T",
"3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF",
"3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn"
],
"id" : "5aYtmTr1AYYG8BrYvTTSqKzfJZxfgorx1BLGVwSAhwrz",
"timestamp" : 1619186864092,
"height" : 861637
}
113. UpdatePolicy Transaction¶
Изменение группы доступа к конфиденциальным данным .
JSON-представление:
Подписание:
{
"policyId": "UkvoboGXiwWpASr1GLG9M1MUbhrEMo4NBS7kquxVMw5",
"password":"sfgKYBFCF@#$fsdf()*%",
"sender": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"recipients" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"fee": 50000000,
"opType": "remove",
"owners" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"type": 113,
"version": 1
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"fee" : 50000000,
"opType" : "remove",
"owners" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"type" : 113,
"version" : 1,
"policyId" : "UkvoboGXiwWpASr1GLG9M1MUbhrEMo4NBS7kquxVMw5",
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"proofs" : [ "2CKd57kU3wbxdrHxMPNbrWHptnf5ZcydYjqxMPk46miMcUUAxgFGXcy621cjYFXC3vjpKNNrB2QcgtKe1Yx9TcLY" ],
"recipients" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"id" : "6o4azRwzmMg9SqWUq6rv6GAe5gzTYJvE5ek1v9VM3Mb",
"timestamp" : 1619004195630,
"height" : 856970
}
Подписание:
{
"policyId": "UkvoboGXiwWpASr1GLG9M1MUbhrEMo4NBS7kquxVMw5",
"password":"sfgKYBFCF@#$fsdf()*%",
"sender": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"recipients" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"fee": 50000000,
"opType": "remove",
"owners" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"type": 113,
"version": 2
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"fee" : 50000000,
"opType" : "remove",
"owners" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"type" : 113,
"version" : 2,
"policyId" : "UkvoboGXiwWpASr1GLG9M1MUbhrEMo4NBS7kquxVMw5",
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"feeAssetId" : null,
"proofs" : [ "2CKd57kU3wbxdrHxMPNbrWHptnf5ZcydYjqxMPk46miMcUUAxgFGXcy621cjYFXC3vjpKNNrB2QcgtKe1Yx9TcLY" ],
"recipients" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"id" : "6o4azRwzmMg9SqWUq6rv6GAe5gzTYJvE5ek1v9VM3Mb",
"timestamp" : 1619004195630,
"height" : 856970
}
Подписание:
{
"policyId": "5aYtmTr1AYYG8BrYvTTSqKzfJZxfgorx1BLGVwSAhwrz",
"password":"sfgKYBFCF@#$fsdf()*%",
"sender": "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"recipients" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"fee": 50000000,
"opType": "remove",
"owners" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"type": 113,
"version": 3
}
Публикация:
{
"senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki",
"fee" : 50000000,
"opType" : "remove",
"owners" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"type" : 113,
"version" : 3,
"atomicBadge" : null,
"policyId" : "5aYtmTr1AYYG8BrYvTTSqKzfJZxfgorx1BLGVwSAhwrz",
"sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx",
"feeAssetId" : null,
"proofs" : [ "2QMGoz6rycNsDLhN3mDce2mqGRQQ8r26vDDw551pnYcAecpFBDA8j38FVqDjLTGuFHs6ScX32fsGcaemmptpCFHk" ],
"recipients" : [ "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF" ],
"id" : "Hwqf8LgpQfEcUYX9nMNG8uU2Cw1xSuGFqYxmuACpvU1L",
"timestamp" : 1619187450552,
"height" : 861653
}
114. PolicyDataHash Transaction¶
Отправка хэша конфиденциальных данных в сеть. Эта транзакция создается автоматически при отправке в сеть конфиденциальных данных при помощи REST API метода POST /privacy/sendData.
Данная транзакция не требует подписания.
JSON-представление:
Публикация:
{
"senderPublicKey": "4L4XEpNpesX9r6rVJ8hW1TrMiNCZ6SMvRuWPKB7T47wKfnp4D84XBUv7xsa36CGwoyK3fzfojivwonHNrsX2fLBL",
"dataHash": "8GPtHQeLxhtt8HianM9c8otS2EeAHNVZCfpCRUmYbSFi",
"fee": 0,
"type": 114,
"version": 1,
"policyId": "75rGACZxkTE5x5seNjEzJUEe73fTzkQiBrr28hCjMMVq",
"sender": "3M3ybNZvLG7o7rnM4F7ViRPnDTfVggdfmRX",
"proofs": [
"5uW8SeX4k3nb8esuMeRY27MyZ6dnWijwbGhSo53zSKY1FjjofWiE4mPfNwUhYKgqyAtHtUvwsdTMyL87LGNqwp5o"
],
"id": "52zCNUhfne9HYfHr7sEYBGFHqnzHKBdkGbGnsYfCYXug",
"timestamp": 1632916536685,
"height": 1585580
}
Публикация:
{
"senderPublicKey": "4L4XEpNpesX9r6rVJ8hW1TrMiNCZ6SMvRuWPKB7T47wKfnp4D84XBUv7xsa36CGwoyK3fzfojivwonHNrsX2fLBL",
"dataHash": "8GPtHQeLxhtt8HianM9c8otS2EeAHNVZCfpCRUmYbSFi",
"fee": 0,
"type": 114,
"version": 2,
"policyId": "75rGACZxkTE5x5seNjEzJUEe73fTzkQiBrr28hCjMMVq",
"sender": "3M3ybNZvLG7o7rnM4F7ViRPnDTfVggdfmRX",
"feeAssetId": null,
"proofs": [
"5uW8SeX4k3nb8esuMeRY27MyZ6dnWijwbGhSo53zSKY1FjjofWiE4mPfNwUhYKgqyAtHtUvwsdTMyL87LGNqwp5o"
],
"id": "52zCNUhfne9HYfHr7sEYBGFHqnzHKBdkGbGnsYfCYXug",
"timestamp": 1632916536685,
"height": 1585580
}
Публикация:
{
"senderPublicKey": "4L4XEpNpesX9r6rVJ8hW1TrMiNCZ6SMvRuWPKB7T47wKfnp4D84XBUv7xsa36CGwoyK3fzfojivwonHNrsX2fLBL",
"dataHash": "8GPtHQeLxhtt8HianM9c8otS2EeAHNVZCfpCRUmYbSFi",
"fee": 0,
"type": 114,
"version": 3,
"atomicBadge": {
"trustedSender": "3M3ybNZvLG7o7rnM4F7ViRPnDTfVggdfmRX"
},
"policyId": "75rGACZxkTE5x5seNjEzJUEe73fTzkQiBrr28hCjMMVq",
"sender": "3M3ybNZvLG7o7rnM4F7ViRPnDTfVggdfmRX",
"feeAssetId": null,
"proofs": [
"5uW8SeX4k3nb8esuMeRY27MyZ6dnWijwbGhSo53zSKY1FjjofWiE4mPfNwUhYKgqyAtHtUvwsdTMyL87LGNqwp5o"
],
"id": "52zCNUhfne9HYfHr7sEYBGFHqnzHKBdkGbGnsYfCYXug",
"timestamp": 1632916536685,
"height": 1585580
}
120. Atomic Transaction¶
Атомарная транзакция помещает в контейнер другие транзакции для их атомарного выполнения. Транзакция этого типа исполняется полностью (ни одна из включенных транзакций не отклоняется) или не исполняется в принципе.
Поддерживается включение в атомарную транзакцию двух и более транзакций. Типы и версии транзакций, которые могут быть включены в атомарную, перечислены в разделе Атомарные транзакции, там же дана более подробная информация об обработке этого типа транзакций.
Атомарная транзакция сама по себе не требует комиссии: общая сумма складывается из комиссий за транзакции, помещенные в атомарную транзакцию.
JSON-представление:
Подписание:
{
"sender": sender_0,
"transactions": [
signed_transfer_tx,
signed_transfer_tx2
],
"type": 120,
"version": 1,
"password":"lskjbJJk$%^#298",
"fee": 0,
}
Публикация:
{
"sender": "3MufokZsFzaf7heTV1yreUtm1uoJXPoFzdP",
"transactions": [
signed_transfer_tx,
signed_transfer_tx2
],
"type": 120,
"version": 1,
}