Как устроена платформа
Описание транзакций¶
Блокчейн-платформа 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.
Важно
Начиная с релиза 1.12 (после активации фичи 1120) создание REST контрактов невозможно. Рекомендуется использовать gRPC контракты вместо REST контрактов.
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" ] }Подписание:
{ "type": 103, "version": 5, "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": 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_CONTRACT_VERSION", "payments": [ { "amount": 100 }, { "assetId": "SOME_ASSET_ID", "amount": 100 } ] }
В версии 4 данной транзакции настраивается валидация результатов исполнения обновляемого смарт-контракта при помощи поля validationPolicy.type
(см. раздел Валидация смарт-контрактов).
Варианты политик валидации:
any
– сохраняется действующая в сети общая политика валидации: для майнинга загружаемого смарт-контракта, майнер подписывает соответствующую транзакцию 105. Также этот параметр устанавливается, если в вашей сети нет ни одного зарегистрированного валидатора.majority
– транзакция считается валидной, если она подтверждена большинством валидаторов: 2/3 от общего числа зарегистрированных адресов с ролью contract_validator.majorityWithOneOf(List[Address])
– транзакция считается валидной, если собрано большинство валидаторов, среди которых присутствует хотя бы один из адресов, включенных в список параметра. Адреса, включаемые в список, должны иметь действующую роль contract_validator.
Предупреждение
При выборе политики валидации majorityWithOneOf(List[Address])
, заполните список адресов, передача пустого списка запрещена.
В версии 5 данной транзакции пользователь может перевести свои активы на баланс контракта. Для этого в поле payments
указывается массив ассетов и их количество. Можно передать как системный токен WEST, так и любые другие ассеты, созданные в сети. Использование версии 5 данной транзакции возможно начиная с релиза 1.12 после активации фичи 1120.
При работе в частной сети транзакция 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 килобайт.
Подписание транзакции производится инициатором исполнения контракта.
Важно
Начиная с релиза 1.12 (после активации фичи 1120) вызов REST контрактов невозможен. Рекомендуется использовать gRPC контракты вместо REST контрактов.
В поле 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 }Подписание:
{ "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": 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 } ] }
В версии 5 данной транзакции пользователь может перевести свои активы на баланс контракта. Для этого в поле payments
указывается массив ассетов и их количество. Можно передать как системный токен WEST, так и любые другие ассеты, созданные в сети. Использование версии 5 данной транзакции возможно начиная с релиза 1.12 после активации фичи 1120.
105. ExecutedContract Transaction¶
Запись результата исполнения смарт-контракта в его стейт. Байтовое представление этой транзакции после ее подписания не должно превышать 150 килобайт.
Транзакция 105 содержит все поля (тело) транзакции 103. CreateContract, 104. CallContract, 107. UpdateContract смарт-контракта, результат исполнения которого необходимо записать в его стейт (поле 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 }Публикация:
{ "type": 105, "id": "SOME_TX_ID", "sender": "3N3YTj1tNwn8XUJ8ptGKbPuEFNa9GFnhqew", "senderPublicKey": "3kW7vy6nPC59BXM67n5N56rhhAv38Dws5skqDsjMVT2M", "fee": 0, "timestamp": 1665267880, "proofs": [ "32mNYSefBTrkVngG5REkmmGAVv69ZvNhpbegmnqDReMTmXNyYqbECPgHgXrX2UwyKGLFS45j7xDFyPXjF8jcfw94" ], "version": 3, "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": [], }
В версии 3 данной транзакции в поле assetOperations
можно передать последовательность операций над ассетами, например перевод токенов с баланса пользователя на баланс контракта.
При помощи операции перевода токенов (
transfer
) можно передать как системный токен WEST, так и любые другие ассеты, созданные в сети.Операции
issue
,reissue
,burn
можно осуществить с любыми токенами, кроме системного токена WEST.Операции
lease
иcancel-lease
работают только с системным токеном WEST.
Использование версии 3 данной транзакции возможно начиная с релиза 1.12 после активации функциональной возможности 1120. После активации фичи 1120 в сети используется только версия 3 транзакции.
Использование операций lease
и cancel-lease
возможно начиная с релиза 1.12.3 после активации функциональной возможности 1123.
Важно
Если в поле isReissuable
указано значение False
, то есть довыпуск токенов запрещён, то в дальнейшем изменить это значение невозможно.
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.
Важно
Начиная с релиза 1.12 (после активации фичи 1120) создание и вызов REST контрактов невозможны. Также нельзя обновить REST контракт на gRPC контракт. Рекомендуется использовать gRPC контракты вместо REST контрактов.
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 }Подписание:
{ "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
.
Данная транзакция не требует подписания.
120. Atomic Transaction¶
Атомарная транзакция помещает в контейнер другие транзакции для их атомарного выполнения. Транзакция этого типа исполняется полностью (ни одна из включенных транзакций не отклоняется) или не исполняется в принципе.
Поддерживается включение 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
После активации функциональной возможности 1122 также поддерживается включение в атомарную транзакцию транзакций следующих типов:
3. Issue Transaction, версия 3
5. Reissue Transaction, версия 3
6. Burn Transaction, версия 3
8. Lease Transaction, версия 3
9. LeaseCancel Transaction, версия 3
10. CreateAlias Transaction, версия 4
11. MassTransfer Transaction, версия 3
12. Data Transaction, версия 3
14. Sponsorship Transaction, версия 2
111. RegisterNode Transaction, версия 2
Атомарная транзакция сама по себе не требует комиссии: общая сумма складывается из комиссий за транзакции, помещенные в атомарную транзакцию.
Подробнее об атомарных транзакциях: Атомарные транзакции
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, }