AggregateBondedトランザクションの実行
7-1.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.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)に署名した人のみが手数料を纏めて支払う(代払い)が可能になります。