マルチシグ化

8.マルチシグトランザクションの実行

address3を、address1,address2を連署者とした1of2のマルチシグ化するトランザクションを実行します。

mijin

使用するトランザクションは前項:7.AggregateBondedサンプルと同じ、AggregateBondedトランザクションになります。

実行

python 08_multisig_transaction.py
出力例:

------------------- signedTransaction ------------------------
{
  "SignedTransaction": {
    "payload": "<payloadが表示されます>",
    "hash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
    "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
    "type": 16961,
    "networkType": 96
  }
}
------------------- hashLockTransaction ------------------------
{
  "SignedTransaction": {
    "payload": "<payloadが表示されます>",
    "hash": "A32A377939281D456C1F9FCDEF97EC25CAC14CC407A3BB4DE2B3691A708E1045",
    "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
    "type": 16712,
    "networkType": 96
  }
}
------------------- sendTransaction ------------------------
------------------- Success --------------------------------
Success: Transaction
{
  "transaction": {
    "signature": "<signatureが表示されます>",
    "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
    "version": 1,
    "network": 96,
    "type": 16712,
    "maxFee": "0",
    "deadline": "127803378000",
    "mosaicId": "570AAB28BDA34D9F",
    "amount": "0",
    "duration": "1000",
    "hash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349"
  },
  "meta": {
    "hash": "A32A377939281D456C1F9FCDEF97EC25CAC14CC407A3BB4DE2B3691A708E1045",
    "merkleComponentHash": "A32A377939281D456C1F9FCDEF97EC25CAC14CC407A3BB4DE2B3691A708E1045",
    "height": "507002"
  }
}
Next Command: python ./07_02_aggregate_bonded_transaction_cosign.py address1 430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349 880100000000000043C8371202B63D6C8711FB551F956437E9586369AE75DCF65FF6521FA6440B1B6D03F1AD27B857DA9B00DBFECB1EDB15534E6BAF46A01049B330BF547ABD540AB1E269453CD3FEE641088B752A394A4BA53AD2E01B583533558A2CBD51C02E8F0000000002604142000000000000000050C9ACC11D0000003928E16AEF154097B983795C6F64D7880BBF797D94AF05B78167E27371D421A9E0000000000000007100000000000000B1E269453CD3FEE641088B752A394A4BA53AD2E01B583533558A2CBD51C02E8F0000000001605441602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF311000100000000008E5792A6E142885200000000000000000054455354204D494A494E2064756D6D790000000000000068000000000000005A4107FC227AC66BF2626654EF90F6C63FDB241DCC000570F45CBBA466BF702600000000016055410101020000000000604E8AB826559C805E060AD671802927773571767E6559AD6004FB97236610D6CFEF2DA13ABE6D0BE0289792D5EB39D1
Next Command: python ./07_02_aggregate_bonded_transaction_cosign.py address2 430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349 880100000000000043C8371202B63D6C8711FB551F956437E9586369AE75DCF65FF6521FA6440B1B6D03F1AD27B857DA9B00DBFECB1EDB15534E6BAF46A01049B330BF547ABD540AB1E269453CD3FEE641088B752A394A4BA53AD2E01B583533558A2CBD51C02E8F0000000002604142000000000000000050C9ACC11D0000003928E16AEF154097B983795C6F64D7880BBF797D94AF05B78167E27371D421A9E0000000000000007100000000000000B1E269453CD3FEE641088B752A394A4BA53AD2E01B583533558A2CBD51C02E8F0000000001605441602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF311000100000000008E5792A6E142885200000000000000000054455354204D494A494E2064756D6D790000000000000068000000000000005A4107FC227AC66BF2626654EF90F6C63FDB241DCC000570F45CBBA466BF702600000000016055410101020000000000604E8AB826559C805E060AD671802927773571767E6559AD6004FB97236610D6CFEF2DA13ABE6D0BE0289792D5EB39D1
Next Command: python ./07_02_aggregate_bonded_transaction_cosign.py address3 430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349 880100000000000043C8371202B63D6C8711FB551F956437E9586369AE75DCF65FF6521FA6440B1B6D03F1AD27B857DA9B00DBFECB1EDB15534E6BAF46A01049B330BF547ABD540AB1E269453CD3FEE641088B752A394A4BA53AD2E01B583533558A2CBD51C02E8F0000000002604142000000000000000050C9ACC11D0000003928E16AEF154097B983795C6F64D7880BBF797D94AF05B78167E27371D421A9E0000000000000007100000000000000B1E269453CD3FEE641088B752A394A4BA53AD2E01B583533558A2CBD51C02E8F0000000001605441602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF311000100000000008E5792A6E142885200000000000000000054455354204D494A494E2064756D6D790000000000000068000000000000005A4107FC227AC66BF2626654EF90F6C63FDB241DCC000570F45CBBA466BF702600000000016055410101020000000000604E8AB826559C805E060AD671802927773571767E6559AD6004FB97236610D6CFEF2DA13ABE6D0BE0289792D5EB39D1

最期に Next Command: が3つ表示されます。


上記でworkaddressが発行したTxhashに対して、address1,address2,address3がそれぞれ署名を行います。

署名は

  • address1
  • address2
  • address3

3つのアドレスが署名を期限内に行う必要があります。

本サンプルでは期限を2時間としています。

署名を実行する際に、署名対象のTxhashを指定します。

上記出力例ではTxhashとして `` が表示されていますが、実行は実際のTxhashを指定して下さい。

address1の署名

実行

python 07_02_aggregate_bonded_transaction_cosign.py address1 <Txhash> <Payload>
出力例:
{
  "meta": {
    "height": "0",
    "hash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
    "merkleComponentHash": "0000000000000000000000000000000000000000000000000000000000000000",
    "index": 0
  },
  "transaction": {
    "size": 392,
    "signature": "<signatureが表示されます>",
    "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
    "version": 2,
    "network": 96,
    "type": 16961,
    "maxFee": "0",
    "deadline": "127803378000",
    "transactionsHash": "3928E16AEF154097B983795C6F64D7880BBF797D94AF05B78167E27371D421A9",
    "cosignatures": [],
    "transactions": [
      {
        "meta": {
          "height": "0",
          "aggregateHash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
          "aggregateId": "649E4456E1FE0179BF2E44C3",
          "index": 0
        },
        "transaction": {
          "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
          "version": 1,
          "network": 96,
          "type": 16724,
          "recipientAddress": "602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF3",
          "message": "0054455354204D494A494E2064756D6D79",
          "mosaics": [
            {
              "id": "078ABAE03B6EF461",
              "amount": "0"
            }
          ]
        },
        "id": "649E4456E1FE0179BF2E44C4"
      },
      {
        "meta": {
          "height": "0",
          "aggregateHash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
          "aggregateId": "649E4456E1FE0179BF2E44C3",
          "index": 1
        },
        "transaction": {
          "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
          "version": 1,
          "network": 96,
          "type": 16725,
          "minRemovalDelta": 1,
          "minApprovalDelta": 1,
          "addressAdditions": [
            "604E8AB826559C805E060AD671802927773571767E6559AD",
            "6004FB97236610D6CFEF2DA13ABE6D0BE0289792D5EB39D1"
          ],
          "addressDeletions": []
        },
        "id": "649E4456E1FE0179BF2E44C5"
      }
    ]
  },
  "id": "649E4456E1FE0179BF2E44C3"
}

address2の署名

実行

python 07_02_aggregate_bonded_transaction_cosign.py address2 <Txhash> <Payload>
出力例:
{
  "meta": {
    "height": "0",
    "hash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
    "merkleComponentHash": "0000000000000000000000000000000000000000000000000000000000000000",
    "index": 0
  },
  "transaction": {
    "size": 392,
    "signature": "<signatureが表示されます>",
    "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
    "version": 2,
    "network": 96,
    "type": 16961,
    "maxFee": "0",
    "deadline": "127803378000",
    "transactionsHash": "3928E16AEF154097B983795C6F64D7880BBF797D94AF05B78167E27371D421A9",
    "cosignatures": [
      {
        "version": "0",
        "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
        "signature": "<signatureが表示されます>"
      }
    ],
    "transactions": [
      {
        "meta": {
          "height": "0",
          "aggregateHash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
          "aggregateId": "649E4456E1FE0179BF2E44C3",
          "index": 0
        },
        "transaction": {
          "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
          "version": 1,
          "network": 96,
          "type": 16724,
          "recipientAddress": "602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF3",
          "message": "0054455354204D494A494E2064756D6D79",
          "mosaics": [
            {
              "id": "078ABAE03B6EF461",
              "amount": "0"
            }
          ]
        },
        "id": "649E4456E1FE0179BF2E44C4"
      },
      {
        "meta": {
          "height": "0",
          "aggregateHash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
          "aggregateId": "649E4456E1FE0179BF2E44C3",
          "index": 1
        },
        "transaction": {
          "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
          "version": 1,
          "network": 96,
          "type": 16725,
          "minRemovalDelta": 1,
          "minApprovalDelta": 1,
          "addressAdditions": [
            "604E8AB826559C805E060AD671802927773571767E6559AD",
            "6004FB97236610D6CFEF2DA13ABE6D0BE0289792D5EB39D1"
          ],
          "addressDeletions": []
        },
        "id": "649E4456E1FE0179BF2E44C5"
      }
    ]
  },
  "id": "649E4456E1FE0179BF2E44C3"
}

address3の署名

実行

python 07_02_aggregate_bonded_transaction_cosign.py address3 <Txhash> <Payload>
出力例:
{
  "meta": {
    "height": "0",
    "hash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
    "merkleComponentHash": "0000000000000000000000000000000000000000000000000000000000000000",
    "index": 0
  },
  "transaction": {
    "size": 392,
    "signature": "<signatureが表示されます>",
    "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
    "version": 2,
    "network": 96,
    "type": 16961,
    "maxFee": "0",
    "deadline": "127803378000",
    "transactionsHash": "3928E16AEF154097B983795C6F64D7880BBF797D94AF05B78167E27371D421A9",
    "cosignatures": [
      {
        "version": "0",
        "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
        "signature": "<signatureが表示されます>"
      }
    ],
    "transactions": [
      {
        "meta": {
          "height": "0",
          "aggregateHash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
          "aggregateId": "649E4456E1FE0179BF2E44C3",
          "index": 0
        },
        "transaction": {
          "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
          "version": 1,
          "network": 96,
          "type": 16724,
          "recipientAddress": "602CD997B1F156815FF4B6E8D6060456D1A9627BE1B58DF3",
          "message": "0054455354204D494A494E2064756D6D79",
          "mosaics": [
            {
              "id": "078ABAE03B6EF461",
              "amount": "0"
            }
          ]
        },
        "id": "649E4456E1FE0179BF2E44C4"
      },
      {
        "meta": {
          "height": "0",
          "aggregateHash": "430882470CE539351DB9385A487DA901F32463A08E8842D060F1FF7393F36349",
          "aggregateId": "649E4456E1FE0179BF2E44C3",
          "index": 1
        },
        "transaction": {
          "signerPublicKey": "<送信元workaddressのpublicKeyが表示されます>",
          "version": 1,
          "network": 96,
          "type": 16725,
          "minRemovalDelta": 1,
          "minApprovalDelta": 1,
          "addressAdditions": [
            "604E8AB826559C805E060AD671802927773571767E6559AD",
            "6004FB97236610D6CFEF2DA13ABE6D0BE0289792D5EB39D1"
          ],
          "addressDeletions": []
        },
        "id": "649E4456E1FE0179BF2E44C5"
      }
    ]
  },
  "id": "649E4456E1FE0179BF2E44C3"
}

マルチシグ化アカウント情報の取得

上記でマルチシグ化を実施した、address3のアカウント情報を確認します。

  • address3

実行

python account_info.py address3
出力例:
{
  "AccountInfo": {
    "url": "https://xxxxxxxx.mijin.io",
    "network": 96,
    "account": "address3",
    "address": "MAWNTF5R6FLICX7UW3UNMBQEK3I2SYT34G2Y34Y",
    "mosaics": [
      {
        "mosaic": "078ABAE03B6EF461",
        "amount": "3",
        "namespaceAlias": "techbureau"
      }
    ],
    "linkedKeys": {
      "linked": null,
      "node": null,
      "vrf": null,
      "voting": null
    },
    "meta": [],
    "multisig": [
      '<address1のアドレスが表示されます>',
      '<address2のアドレスが表示されます>'
    ]
  }
}

multisig の値が追加され、連署者であるaddress1,address2が表示されます。


参考)ブロックチェーンエクスプローラーでaddress3のアドレスを検索すると、以下の様に表示されます。

mijin

ブロックチェーンエクスプローラーに関しては以下FAQを参照ください。