Как устроена платформа
Описание транзакций¶
Блокчейн-платформа Конфидент поддерживает 28 типов транзакций. Для каждой из них предусмотрен свой набор данных, отправляемых в блокчейн.
Запросы и ответы, передаваемые в рамках каждой транзакции по REST API-интерфейсу ноды, имеют формат JSON. Формат запросов и ответов, передающихся по gRPC-интерфейсу ноды, определяется соответствующими proto-схемами. JSON и protobuf-представления запросов и ответов каждой транзакции приведены ниже.
Подсказка
В случае если вы защитили ключевую пару вашей ноды паролем при генерации аккаунта, укажите пароль от вашей ключевой пары в поле password
транзакции.
1. Genesis Transaction¶
Первая транзакция нового блокчейна, которая осуществляет первоначальную привязку баланса к адресам созданных нод.
Подписание этой транзакции не требуется, поэтому выполняется только ее публикация. Транзакция не версионируется.
3. Issue Transaction¶
Транзакция, инициирующая выпуск токенов в обращение.
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
},
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 }Публикация:
{ "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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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
Описание ролей см. в статье Роли участников.
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" }
103. CreateContract Transaction¶
Создание смарт-контракта. Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Поле feeAssetId
этой транзакции опционально и используется только для смарт-контрактов с поддержкой gRPC.
Значение поля version
для этого типа смарт-контрактов - 2.
Подписание транзакции 103 может производиться только пользователем с ролью contract_developer.
JSON-представление:
Подписание:
{ "type": 103, "version": 2, "sender": "3NpN3HyHzGj7Ny1k5F9zMMQ2n54TZg86G9D", "password": "signing-key-password", "image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0", "contractName": "Your contract name", "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", "image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0", "contractName": "Your contract name", "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", "image": "registry.yourdomain.com/test-docker-repo/contract:v1.0.0", "contractName": "Your contract name", "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" ] }
В версии 4 данной транзакции настраивается валидация результатов исполнения обновляемого смарт-контракта при помощи поля validationPolicy.type
(см. раздел Валидация смарт-контрактов).
Варианты политик валидации:
any
– сохраняется действующая в сети общая политика валидации: для майнинга загружаемого смарт-контракта, майнер подписывает соответствующую транзакцию 105. Также этот параметр устанавливается, если в вашей сети нет ни одного зарегистрированного валидатора.majority
– транзакция считается валидной, если она подтверждена большинством валидаторов: 2/3 от общего числа зарегистрированных адресов с ролью contract_validator.majorityWithOneOf(List[Address])
– транзакция считается валидной, если собрано большинство валидаторов, среди которых присутствует хотя бы один из адресов, включенных в список параметра. Адреса, включаемые в список, должны иметь действующую роль contract_validator.
Предупреждение
При выборе политики валидации majorityWithOneOf(List[Address])
, заполните список адресов, передача пустого списка запрещена.
При работе в частной сети транзакция 103 предусматривает загрузку Docker-образа контракта не только из репозиториев, указанных в секции docker-engine
конфигурационного файла ноды.
Если вам необходимо загрузить смарт-контракт из репозитория, не внесенного в конфигурационный файл, укажите в поле name
транзакции полный адрес смарт-контракта в созданном вами репозитории.
Пример запроса на публикацию смарт-контракта из непредустановленного репозитория:
{
"senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww",
"image": "customregistry.com:5000/stateful-increment-contract:latest",
"fee" : 100000000,
"imageHash" : "ad6d0f8a61222794da15571749bc9db08e76b6a120fc1db90e393fc0ee9540d8",
"type" : 103,
"params" : [ {
"type" : "string",
"value" : "Value_here",
"key" : "data"
}, {
"type" : "integer",
"value" : 500,
"key" : "length"
} ],
"version" : 4,
"atomicBadge" : null,
"apiVersion" : "1.0",
"sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d",
"feeAssetId" : null,
"proofs" : [ "L521YncSMJDPqwBjQyS7m7Q6tseAw51nYE8iiPChEALx7S2WvpSosCVtWkXxh2ZqJ6LHkCvjVjRVuVs793kzjw8" ],
"contractName" : "grpc_validatable_statefull here_often",
"id" : "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG",
"validationPolicy" : {
"type" : "any"
},
"timestamp" : 1625732696641,
"height" : 1028130
}
104. CallContract Transaction¶
Вызов смарт-контракта на исполнение. Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Подписание транзакции производится инициатором исполнения контракта.
В поле contractVersion
транзакции указывается версия контракта:
1
- для нового контракта;2
- для обновленного контракта.
Данное поле доступно только для транзакций второй версии и старше: если в поле version
транзакции создания смарт-контракта указано значение >= 2
.
Контракт обновляется при помощи транзакции 107.
Если контракт не выполнился или выполнился с ошибкой, то транзакции 103 и 104 удаляются и не попадают в блок.
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 }
105. ExecutedContract Transaction¶
Запись результата исполнения смарт-контракта в его стейт. Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Транзакция 105 содержит все поля (тело) транзакции 103, 104 или 107 смарт-контракта, результат исполнения которого необходимо записать в его стейт (поле tx
).
Результат исполнения смарт-контракта вносится в его стейт из соответствующих параметров поля params
транзакции 103 или 104.
Подписание транзакции производится нодой, формирующей блок после отправки запроса на публикацию транзакции.
JSON-представление:
Публикация:
{ "type": 105, "id": "38GmSVC5s8Sjeybzfe9RQ6p1Mb6ajb8LYJDcep8G8Umj", "sender": "3N3YTj1tNwn8XUJ8ptGKbPuEFNa9GFnhqew", "senderPublicKey": "3kW7vy6nPC59BXM67n5N56rhhAv38Dws5skqDsjMVT2M", "password": "", "fee": 500000, "timestamp": 1550591780234, "proofs": [ "5whBipAWQgFvm3myNZe6GDd9Ky8199C9qNxLBHqDNmVAUJW9gLf7t9LBQDi68CKT57dzmnPJpJkrwKh2HBSwUer6" ], "version": 2, "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 }
106. DisableContract Transaction¶
Отключение смарт-контракта. Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Подписание транзакции 106 может производиться только пользователем с ролью contract_developer.
JSON-представление:
Подписание:
{ "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", "sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d", "password": "", "fee" : 100000000, "contractId" : "BWzX4mRBEnHKgn3HB78My5DZzDAqnCLWCCNpCuRkZrJA", "imageHash" : "075ad1607f193cc6fdb5e85c201f9ca3907c622718d75706bbc2a94a330de5b5", "type" : 107, "version" : 2 }Публикация:
{ "senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww", "image" : "we-sc/grpc-contract-example:2.2-test-update", "fee" : 100000000, "imageHash" : "075ad1607f193cc6fdb5e85c201f9ca3907c622718d75706bbc2a94a330de5b5", "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", "sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d", "password": "", "fee" : 100000000, "contractId" : "HTqdjXUPTHZqGen2KKUkEenTELAqQ8irN58LA8EcP17q", "imageHash" : "075ad1607f193cc6fdb5e85c201f9ca3907c622718d75706bbc2a94a330de5b5", "type" : 107, "version" : 3, "atomicBadge" : null }Публикация:
{ "senderPublicKey" : "7GiFGcGaEN87ycK8v71Un6b7RUoeKBU4UvUHPYbeHaki", "image" : "registry.wavesenterpriseservices.com/we-sc/grpc-contract-example:2.2-test-update", "fee" : 100000000, "imageHash" : "075ad1607f193cc6fdb5e85c201f9ca3907c622718d75706bbc2a94a330de5b5", "type" : 107, "version" : 3, "atomicBadge" : null, "sender" : "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx", "feeAssetId" : null, "proofs" : [ "3ncWfFPqBAdgh65YceCCvF2RhUWWokQc9MsnHk27YLrYmPj9gWgrbRcousymJVA7ARFSz5UJcdW4Sa62FFhR5en3" ], "contractId" : "HTqdjXUPTHZqGen2KKUkEenTELAqQ8irN58LA8EcP17q", "id" : "B7qjgCa9N6M6FwV63PbLwvtVpFo4bzB5gRZzGjwJpKJV", "timestamp" : 1619187337697, "height" : 861650 }Подписание:
{ "image" : "we-sc/grpc_validatable_stateless:0.1", "sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d", "password": "", "fee" : 100000000, "contractId" : "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG", "imageHash" : "bd98a7d3e55506ff936d8ea15e170a24d27662edd1b47e4fd20801d10655af8d", "type" : 107, "version" : 4, "atomicBadge" : null }Публикация:
{ "senderPublicKey" : "CgqRPcPnexY533gCh2SSvBXh5bca1qMs7KFGntawHGww", "image" : "we-sc/grpc_validatable_stateless:0.1", "fee" : 100000000, "imageHash" : "bd98a7d3e55506ff936d8ea15e170a24d27662edd1b47e4fd20801d10655af8d", "type" : 107, "version" : 4, "atomicBadge" : null, "apiVersion" : "1.0", "sender" : "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d", "feeAssetId" : null, "proofs" : [ "fZr9LpqSWbPcUzArSZxFDEuygN62hR63j2Cz1GyTFxPNRrNvVwkDhTDcC8zwRp235gA1gSM8fvPps9mvPTWDQ4p" ], "contractId" : "HSLdKYqLq4LcZpq9LPki8Yv4ZRkFapVyHEYw1vZW2MoG", "id" : "HWZy7219Nx5oxj2QnK3ReEuZiqsjoULbmfdQz8YysFSz", "validationPolicy" : { "type" : "any" }, "timestamp" : 1625732772746, "height" : 1028132 }
В версии 4 данной транзакции настраивается валидация результатов исполнения обновляемого смарт-контракта при помощи поля validationPolicy.type
(см. раздел Валидация смарт-контрактов).
Варианты политик валидации:
any
– сохраняется действующая в сети общая политика валидации: для майнинга обновляемого смарт-контракта майнер подписывает соответствующую транзакцию 105. Также этот параметр устанавливается, если в вашей сети нет ни одного зарегистрированного валидатора.majority
– транзакция считается валидной, если она подтверждена большинством валидаторов: 2/3 от общего числа зарегистрированных адресов с ролью contract_validator.majorityWithOneOf(List[Address])
– транзакция считается валидной, если собрано большинство валидаторов, среди которых присутствует хотя бы один из адресов, включенных в список параметра. Адреса, включаемые в список, должны иметь действующую роль contract_validator.
Предупреждение
При выборе политики валидации majorityWithOneOf(List[Address])
, заполните список адресов, передача пустого списка запрещена.
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 }
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": 2, }Публикация:
{ "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": "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx", "policyName": "Policy_v3_for_demo_txs", "password":"sfgKYBFCF@#$fsdf()%", "recipients" : [ "3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T", "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF", "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx", "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d", "3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn" ], "fee": 100000000, "description": "", "owners" : [ "3Nm84ERiJqKfuqSYxzMAhaJXdj2ugA7Ve7T", "3NtNJV44wyxRXv2jyW3yXLxjJxvY1vR88TF", "3NxAooHUoLsAQvxBSqjE91WK3LwWGjiiCxx", "3NkZd8Xd4KsuPiNVsuphRNCZE3SqJycqv8d", "3NotQaBygbSvYZW4ftJ2ZwLXex4rTHY1Qzn" ], "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": 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
.
Данная транзакция не требует подписания.
120. AtomicTransaction¶
Атомарная транзакция: помещает в контейнер другие транзакции для их атомарного выполнения. Транзакция этого типа исполняется полностью (ни одна из включенных транзакций не отклоняется) или не исполняется в принципе.
Поддерживается включение 2 и более транзакций следующих типов:
4. Transfer Transaction, версия 3
102. Permission Transaction, версия 2
103. CreateContract Transaction, версия 3
104. CallContract Transaction, версия 4
106. DisableContract Transaction, версия 3
107. UpdateContract Transaction, версия 3
112. CreatePolicy Transaction, версия 3
113. UpdatePolicy Transaction, версия 3
114. PolicyDataHash Transaction, версия 3
Атомарная транзакция сама по себе не требует комиссии: общая сумма складывается из комиссий за транзакции, помещенные в атомарную транзакцию.
Подробнее об атомарных транзакциях: Атомарные транзакции
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, }