Как устроена платформа
Описание транзакций¶
Блокчейн-платформа Конфидент поддерживает 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¶
Транзакция, устанавливающая или отменяющая спонсирование.
Механизм спонсирования позволяет адресам выплачивать комиссии за транзакции вызова скрипта и транзакции перевода в спонсорском ассете, заменяющем системный токен.
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,
}