AggregateBondedトランザクションの実行
7.AggregateBondedトランザクションの実行
複数の送信元 が存在するトランザクションを纏めて送信します。
本サンプルではaddress1とaddress2の二つの送信元が存在します。
- address1 -> address3
- address2 -> address3
前項:6.AggregateCompleteサンプルとの違いは、HashLockトランザクションを作成し、送信元となるユーザー全員がトランザクションへ署名する必要があります。
送信するモザイクの指定は
にて設定ファイルであるlocal.jsonにprivate1.workaddress.namespaceとして記載し、モザイクに紐づけたNamespaceを指定して送付します。
送付するモザイクはNamespaceで指定しています。
- private1.workaddress.namespace
07_01_aggregate_bonded_transaction.pyでは
- HashLockトランザクションの作成
- AggregateBondedトランザクションの作成
- address1の署名
を行います。
実行
python 07_01_aggregate_bonded_transaction.py
出力例:
python 07_01_aggregate_bonded_transaction.py
------------------- signedTransaction ------------------------
{
"SignedTransaction": {
payload: '<payloadが表示されます>',
"hash": "23CBAD14FA9900DD357215B68932C152FF0F7F268C7F21ED98B96A6DE529D481",
"signerPublicKey": '<送信元address1のpublicKeyが表示されます>',
"type": 16961,
"networkType": 96
}
}
------------------- hashLockTransaction ------------------------
{
"SignedTransaction": {
payload: '<payloadが表示されます>',
"hash": "BFCE91A375E1BE0F26BE153F7D89FBF3DF90360E2770E3CFB83AF4E9EF984138",
"signerPublicKey": '<送信元address1のpublicKeyが表示されます>',
"type": 16712,
"networkType": 96
}
}
------------------- sendTransaction ------------------------
------------------- Success --------------------------------
Success: Transaction
{
"transaction": {
'<signatureが表示されます>',
"signerPublicKey": '<送信元address1のpublicKeyが表示されます>',
"version": 1,
"network": 96,
"type": 16712,
"maxFee": "0",
"deadline": "127803000000",
"mosaicId": "570AAB28BDA34D9F",
"amount": "0",
"duration": "1000",
"hash": "23CBAD14FA9900DD357215B68932C152FF0F7F268C7F21ED98B96A6DE529D481"
},
"meta": {
"hash": "BFCE91A375E1BE0F26BE153F7D89FBF3DF90360E2770E3CFB83AF4E9EF984138",
"merkleComponentHash": "BFCE91A375E1BE0F26BE153F7D89FBF3DF90360E2770E3CFB83AF4E9EF984138",
"height": "506969"
}
}
Next Command: python ./07_02_aggregate_bonded_transaction_cosign.py address2 23CBAD14FA9900DD357215B68932C152FF0F7F268C7F21ED98B96A6DE529D481 880100000000000014F44987B5707599A64D006BF2CA257B00D5103DE36ADFB62C222C8E2F45DB85B4303300B04E6F0F07B5A43DB2A4181E347CDE5DCAE338637EE2C28E6EC6720C91230DF117F252C06BD82EE412997215311A1F76736D3AA2B09026C01A9805D600000000026041420000000000000000C004A7C11D0000005031EE1853789C3E935B0AC7382C1EB0126E25037978D22D1DA84B7E7F22563DE0000000000000006F0000000000000091230DF117F252C06BD82EE412997215311A1F76736D3AA2B09026C01A9805D60000000001605441602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF30F000100000000008E5792A6E142885201000000000000000054455354204D494A494E20747831006F0000000000000080D4EDF3FB35F1F28D5D6B0555DF807823185F3F7D725C1669BD4B1F3647F3420000000001605441602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF30F000100000000008E5792A6E142885201000000000000000054455354204D494A494E2074783200
最期に Next Command: が表示されます。
7-2.AggregateBondedトランザクションの実行
上記で発行したTxhashに対して、address2が署名を行います。
署名は期限内に行う必要があります。
本サンプルでは期限を1時間としています。
address2の署名を実行する際に、署名対象のTxhashを指定します。
07_02_aggregate_bonded_transaction_cosign.pyではaddress2の署名を行っています。
上記出力例ではTxhashとして `` が表示されていますが、実行は実際のTxhashを指定して下さい。
実行
python 07_02_aggregate_bonded_transaction_cosign.py address2 <Txhash> <Payload>
出力例:
{
"meta": {
"height": "0",
"hash": "23CBAD14FA9900DD357215B68932C152FF0F7F268C7F21ED98B96A6DE529D481",
"merkleComponentHash": "0000000000000000000000000000000000000000000000000000000000000000",
"index": 0
},
"transaction": {
"size": 392,
"signature": "<signatureが表示されます>",
"signerPublicKey": "<送信元address1のpublicKeyが表示されます>",
"version": 2,
"network": 96,
"type": 16961,
"maxFee": "0",
"deadline": "127803000000",
"transactionsHash": "5031EE1853789C3E935B0AC7382C1EB0126E25037978D22D1DA84B7E7F22563D",
"cosignatures": [],
"transactions": [
{
"meta": {
"height": "0",
"aggregateHash": "23CBAD14FA9900DD357215B68932C152FF0F7F268C7F21ED98B96A6DE529D481",
"aggregateId": "649E42E8E1FE0179BF2E4474",
"index": 0
},
"transaction": {
"signerPublicKey": "<送信元address1のpublicKeyが表示されます>",
"version": 1,
"network": 96,
"type": 16724,
"recipientAddress": "602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF3",
"message": "0054455354204D494A494E20747831",
"mosaics": [
{
"id": "078ABAE03B6EF461",
"amount": "1"
}
]
},
"id": "649E42E8E1FE0179BF2E4475"
},
{
"meta": {
"height": "0",
"aggregateHash": "23CBAD14FA9900DD357215B68932C152FF0F7F268C7F21ED98B96A6DE529D481",
"aggregateId": "649E42E8E1FE0179BF2E4474",
"index": 1
},
"transaction": {
"signerPublicKey": "<送信元address1のpublicKeyが表示されます>",
"version": 1,
"network": 96,
"type": 16724,
"recipientAddress": "602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF3",
"message": "0054455354204D494A494E20747832",
"mosaics": [
{
"id": "078ABAE03B6EF461",
"amount": "1"
}
]
},
"id": "649E42E8E1FE0179BF2E4476"
}
]
},
"id": "649E42E8E1FE0179BF2E4474"
}
------------------- Success --------------------------------
Success: Transaction
{
"transaction": {
"signature": "<signatureが表示されます>",
"signerPublicKey": "<送信元address1のpublicKeyが表示されます>",
"version": 2,
"network": 96,
"type": 16961,
"maxFee": "0",
"deadline": "127803000000",
"transactionsHash": "5031EE1853789C3E935B0AC7382C1EB0126E25037978D22D1DA84B7E7F22563D",
"transactions": [
{
"transaction": {
"signerPublicKey": "<送信元address1のpublicKeyが表示されます>",
"version": 1,
"network": 96,
"type": 16724,
"recipientAddress": "602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF3",
"mosaics": [
{
"id": "078ABAE03B6EF461",
"amount": "1"
}
],
"message": "0054455354204D494A494E20747831"
}
},
{
"transaction": {
"signerPublicKey": "<送信元address1のpublicKeyが表示されます>",
"version": 1,
"network": 96,
"type": 16724,
"recipientAddress": "602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF3",
"mosaics": [
{
"id": "078ABAE03B6EF461",
"amount": "1"
}
],
"message": "0054455354204D494A494E20747832"
}
}
],
"cosignatures": [
{
"version": "0",
"signerPublicKey": "<送信元address1のpublicKeyが表示されます>",
"signature": "<signatureが表示されます>"
}
]
},
"meta": {
"hash": "23CBAD14FA9900DD357215B68932C152FF0F7F268C7F21ED98B96A6DE529D481",
"merkleComponentHash": "46FB1D3A89FC88A2914CB7EE6FB7C864B2B0D444E35DDAE043F6613B3BD5C8DF",
"height": "506978"
}
}
------------------------------------------------------------
アカウント情報の取得
address1,2,3のアカウント情報を確認します。
- address1の場合
実行
python account_info.py address1
出力例:
{
"AccountInfo": {
"url": "https://xxxxxxxx.mijin.io",
"network": 96,
"account": "address1",
"address": "<address1のアドレスが表示されます>",
"mosaics": [
{
"mosaic": "078ABAE03B6EF461",
"amount": "1", //⇐address3へ送金した分が減算されている
"namespaceAlias": "techbureau" //ネームスペースtechbureauが紐付されているモザイク
}
],
"linkedKeys": {
"linked": null,
"node": null,
"vrf": null,
"voting": null
},
"meta": [],
"multisig": []
}
}
- address2の場合
実行
python account_info.py address2
出力例:
{
"AccountInfo": {
"url": "https://xxxxxxxx.mijin.io",
"network": 96,
"account": "address2",
"address": "MACPXFZDMYINNT7PFWQTVPTNBPQCRF4S2XVTTUI",
"mosaics": [], //⇐address3へ送金したためmosaicを保持していない
"linkedKeys": {
"linked": null,
"node": null,
"vrf": null,
"voting": null
},
"meta": [],
"multisig": []
}
}
- address3の場合
実行
python account_info.py address3
出力例:
{
"AccountInfo": {
"url": "https://xxxxxxxx.mijin.io",
"network": 96,
"account": "address3",
"address": "MAWNTF5R6FLICX7UW3UNMBQEK3I2SYT34G2Y34Y",
"mosaics": [
{
"mosaic": "078ABAE03B6EF461",
"amount": "3", //address1 address2 から送金された分が増加している
"namespaceAlias": "techbureau" //ネームスペースtechbureauが紐付されているモザイク
}
],
"linkedKeys": {
"linked": null,
"node": null,
"vrf": null,
"voting": null
},
"meta": [],
"multisig": []
}
}
注記)手数料ありモードの場合:複数の送信元のトランザクションですが、纏めたトランザクション(HashLock)に署名した人のみが手数料を纏めて支払う(代払い)が可能になります。