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

7-1.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.jsでは

  • HashLockトランザクションの作成
  • AggregateBondedトランザクションの作成
  • address1の署名

を行います。

実行

node 07_01_aggregate_bonded_transaction.js
出力例:
network 96
GenerationHash 7E77022504E4EAEFC49F4C1F33A30BEE6E40417BB63597CA400EED72ECBFF6A4
Fee TransactionFees {
  averageFeeMultiplier: 0,
  medianFeeMultiplier: 0,
  highestFeeMultiplier: 0,
  lowestFeeMultiplier: 0,
  minFeeMultiplier: 0
}
UInt64 { lower: 0, higher: 0 }
------------------- signedTransaction ------------------------
SignedTransaction {
  payload: '<payloadが表示されます>',
  hash: '84B32BB4461B9F3EEDD94791F53EC43AE72F94A61959AFB6E5CE5848CF8DC306',
  signerPublicKey: '<送信元address1のpublicKeyが表示されます>',
  type: 16961,
  networkType: 96
}
------------------- hashRockTransaction ------------------------
LockFundsTransaction {
  type: 16712,
  networkType: 96,
  version: 1,
  deadline: Deadline { adjustedValue: 126957206432 },
  maxFee: UInt64 { lower: 0, higher: 0 },
  signature: undefined,
  signer: undefined,
  transactionInfo: undefined,
  payloadSize: undefined,
  mosaic: Mosaic {
    id: MosaicId { id: [Id] },
    amount: UInt64 { lower: 0, higher: 0 }
  },
  duration: UInt64 { lower: 1000, higher: 0 },
  hash: '84B32BB4461B9F3EEDD94791F53EC43AE72F94A61959AFB6E5CE5848CF8DC306'
}
------------------- sendTransaction ------------------------
------------------- Success --------------------------------
Success: Transaction AggregateTransaction {
  type: 16961,
  networkType: 96,
  version: 2,
  deadline: Deadline { adjustedValue: 126960806412 },
  maxFee: UInt64 { lower: 0, higher: 0 },
  signature: '<signatureが表示されます>',
  signer: PublicAccount {
    publicKey: '<送信元address1のpublicKeyが表示されます>',
    address: Address {
      address: '<送信元address1のアドレスが表示されます>',
      networkType: 96
    }
  },
  transactionInfo: TransactionInfo {
    height: UInt64 { lower: 0, higher: 0 },
    index: undefined,
    id: undefined,
    timestamp: UInt64 { lower: 0, higher: 0 },
    feeMultiplier: 0,
    hash: '84B32BB4461B9F3EEDD94791F53EC43AE72F94A61959AFB6E5CE5848CF8DC306',
    merkleComponentHash: '0000000000000000000000000000000000000000000000000000000000000000'
  },
  payloadSize: undefined,
  innerTransactions: [
    TransferTransaction {
      type: 16724,
      networkType: 96,
      version: 1,
      deadline: [Deadline],
      maxFee: [UInt64],
      signature: '<signatureが表示されます>',
      signer: [PublicAccount],
      transactionInfo: undefined,
      payloadSize: undefined,
      recipientAddress: [Address],
      mosaics: [Array],
      message: [PlainMessage]
    },
    TransferTransaction {
      type: 16724,
      networkType: 96,
      version: 1,
      deadline: [Deadline],
      maxFee: [UInt64],
      signature: '<signatureが表示されます>',
      signer: [PublicAccount],
      transactionInfo: undefined,
      payloadSize: undefined,
      recipientAddress: [Address],
      mosaics: [Array],
      message: [PlainMessage]
    }
  ],
  cosignatures: []
}
Next Command: node ./07_02_aggregate_bonded_transaction_cosign address2 84B32BB4461B9F3EEDD94791F53EC43AE72F94A61959AFB6E5CE5848CF8DC306

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


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

上記で発行したTxhashに対して、address2が署名を行います。

署名は期限内に行う必要があります。

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

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

07_02_aggregate_bonded_transaction_cosign.jsではaddress2の署名を行っています。

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

実行

node 07_02_aggregate_bonded_transaction_cosign.js address2 <出力されたTxhash>
出力例:
node ./07_02_aggregate_bonded_transaction_cosign address2 84B32BB4461B9F3EEDD94791F53EC43AE72F94A61959AFB6E5CE5848CF8DC306
network 96
GenerationHash 7E77022504E4EAEFC49F4C1F33A30BEE6E40417BB63597CA400EED72ECBFF6A4
AggregateTransaction {
  type: 16961,
  networkType: 96,
  version: 2,
  deadline: Deadline { adjustedValue: 126960806412 },
  maxFee: UInt64 { lower: 0, higher: 0 },
  signature: '<signatureが表示されます>',
  signer: PublicAccount {
    publicKey: '<送信元address1のpublicKeyが表示されます>',
    address: Address {
      address: '<送信元address1のアドレスが表示されます>',
      networkType: 96
    }
  },
  transactionInfo: TransactionInfo {
    height: UInt64 { lower: 0, higher: 0 },
    index: 0,
    id: '64915B00E1FE0179BF2BA9B8',
    timestamp: UInt64 { lower: 0, higher: 0 },
    feeMultiplier: 0,
    hash: '84B32BB4461B9F3EEDD94791F53EC43AE72F94A61959AFB6E5CE5848CF8DC306',
    merkleComponentHash: '0000000000000000000000000000000000000000000000000000000000000000'
  },
  payloadSize: 392,
  innerTransactions: [
    TransferTransaction {
      type: 16724,
      networkType: 96,
      version: 1,
      deadline: [Deadline],
      maxFee: [UInt64],
      signature: '<signatureが表示されます>',
      signer: [PublicAccount],
      transactionInfo: [AggregateTransactionInfo],
      payloadSize: undefined,
      recipientAddress: [Address],
      mosaics: [Array],
      message: [PlainMessage]
    },
    TransferTransaction {
      type: 16724,
      networkType: 96,
      version: 1,
      deadline: [Deadline],
      maxFee: [UInt64],
      signature: '<signatureが表示されます>',
      signer: [PublicAccount],
      transactionInfo: [AggregateTransactionInfo],
      payloadSize: undefined,
      recipientAddress: [Address],
      mosaics: [Array],
      message: [PlainMessage]
    }
  ],
  cosignatures: []
}

アカウント情報の取得

address1,2,3のアカウント情報を確認します。

  • address1の場合

実行

node account_info.js address1
出力例:
AccountInfo {
  url: 'https://xxxxxxxx.mijin.io',
  network: '96',
  account: 'address1',
  address: '<address1のアドレスが表示されます>',
  mosaics: [
    {
      mosaic: '1D361778B3471970',
      amount: '1', //⇐address3へ送金した分が減算されている
      namespaceAlias: 'techbureau' //ネームスペースtechbureauが紐付されているモザイク
    }
  ],
  linkedKeys: { linked: 'None', node: 'None', vrf: 'None', voting: 'None' },
  meta: []
}

  • address2の場合

実行

node account_info.js address2
出力例:
AccountInfo {
  url: 'https://xxxxxxxx.mijin.io',
  network: '96',
  account: 'address2',
  address: '<address2のアドレスが表示されます>',
  mosaics: [],//⇐address3へ送金したためmosaicを保持していない
  linkedKeys: { linked: 'None', node: 'None', vrf: 'None', voting: 'None' },
  meta: []
}

  • address3の場合

実行

node account_info.js address3
出力例:
AccountInfo {
  url: 'https://xxxxxxxx.mijin.io',
  network: '96',
  account: 'address3',
  address: '<address3のアドレスが表示されます>',
  mosaics: [
    {
      mosaic: '1D361778B3471970',
      amount: '3', //address1 address2 から送金された分が増加している
      namespaceAlias: 'techbureau' //ネームスペースtechbureauが紐付されているモザイク
    }
  ],
  linkedKeys: { linked: 'None', node: 'None', vrf: 'None', voting: 'None' },
  meta: []
}

注記)手数料ありモードの場合:複数の送信元のトランザクションですが、纏めたトランザクション(HashLock)に署名した人のみが手数料を纏めて支払う(代払い)が可能になります。