AggregateBondedトランザクションの実行

7.AggregateBondedトランザクションの実行

複数の送信元 が存在するトランザクションを纏めて送信します。

mijin

本サンプルではaddress1とaddress2の二つの送信元が存在します。

  • address1 -> address3
  • address2 -> address3

前項:6.AggregateCompleteサンプルとの違いは、HashLockトランザクションを作成し、送信元となるユーザー全員がトランザクションへ署名する必要があります。

送信するモザイクの指定は

2.モザイク発行(token)トランザクションの実行

4.Namespace作成トランザクションの実行

5.Aliasトランザクションの実行

にて設定ファイルである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)に署名した人のみが手数料を纏めて支払う(代払い)が可能になります。