アグリゲートトランザクション

アグリゲートトランザクションは複数のトランザクションを1つにまとめ、 トラストレスな交換 やその他高度なロジックを可能にします。NEM はワンタイムの破棄可能なスマートコントラクトを生成することでこれを実現しています。アグリゲートトランザクションへ全ての アカウント が署名をすると、全てのインナートランザクションは同時に実行されます。

アグリゲートコンプリート

要求されている参加者全員が署名をすると、アグリゲートトランザクションは コンプリート になります。

連署者はそのトランザクションに、ブロックチェーンを使うことなく署名することができます。必要な署名をすべて取得したら、彼らのうちの1人がネットワークにアナウンスできます。インナートランザクションのセットアップが正当で、バリデーションエラーがない場合、トランザクションは同時に実行されます。

アグリゲートコンプリートトランザクションは、複数のインナートランザクションを集めることで、ブロックへさらに多くのトランザクションを追加できます。

支払の送信

Dan は2つの転送トランザクションを集約したアグリゲートトランザクションをアナウンスします。

彼だけが必須の署名者なので、署名した後、トランザクションはコンプリートと見なされます。これがネットワークへアナウンスされると、Alice と Bob は同時にモザイクを受け取るでしょう。

../_images/aggregate-sending-payouts.png

アグリゲート完了トランザクションによって支払を送信する

アグリゲートボンド

アグリゲートトランザクションは、他の参加者からの署名が必要な場合に ボンド となることを考慮してください。

注釈

アグリゲートボンドトランザクション を送信する前に、アカウントはまず ハッシュロックトランザクション をアナウンスし、最低でも 10 cat.currency でそれが承認されている必要があります。

アグリゲートボンドがアナウンスされると、パーシャル状態になり、WebSocket または HTTP API 呼び出しによって状態を通知します。

連署者がトランザクションに署名し アグリゲートボンド連署をアナウンスする たびに、ネットワークは必要な連署者が署名しているかどうかをチェックします。すべての署名が取得されると、ネットワークがそれをブロックに含めるまで、トランザクションは未承認状態へ遷移します。

../_images/aggregate-bonded-transaction-cycle.png

アグリゲートボンドトランザクションサイクル

マルチアセットエスクロートランザクション

この例では、Alice はチケットを currency:euro モザイク で購入しています。チケット販売者はアグリゲートトランザクションに署名し、交換はアトミックに起こります。

../_images/aggregate-escrow-1.png

マルチアセットエスクロートランザクション

他人の手数料を支払う

Alice は 10 currency.euro を Bob へ支払うためにアプリで送ります。しかし彼女はブロックチェーンのトランザクション手数料を支払う分の cat.currency を持っていません。

アグリゲートボンドトランザクションを作ることで、彼女は USD を手数料のための cat.currency に替えることができます。これで Alice と Bob は cat.currency を購入したり保有することなく、ブロックチェーンを使うことができます。

アプリの製作者は、オープンソースの支払いアプリに独自ブランドを付けることができるので、Alice と Bob は彼らがブロックチェーンを使っていることすら知らないでしょう。

../_images/aggregate-paying-for-others-fees.png

他人の手数料を支払う

ガイド

スキーマ

注釈

設定パラメータは 編集可能 です。公開ネットワークでは異なる可能性があります。

AggregateTransaction

バージョン: 0x02

エンティティタイプ: 0x4141 (コンプリート), 0x4241 (ボンド)

インライン

Transaction

プロパティ タイプ 説明
payloadSize uint32 バイト単位のトランザクションのペイロードサイズ。つまりインナートランザクションすべてによって占有されている合計バイト数。
transactions array(byte, payloadSize) 異なるアカウントによって開始されたトランザクション配列です。アグリゲートトランザクションは 1000 までのインナートランザクションを内包でき、 15 までの連署者を設定できます。他のアグリゲートトランザクションをインナートランザクションとして内包することはできません。
cosignatures array(byte, size - payloadSize) 連署者 トランザクションの配列

DetachedCosignature

署名トランザクションは、まだ署名の揃っていない アナウンス済みのアグリゲートボンドトランザクション への署名に使用します。

インライン

プロパティ タイプ 説明
parentHash 32 bytes (binary) 署名するアグリゲートボンドトランザクションハッシュ

Cosignature

プロパティ タイプ 説明
signer 32 bytes (binary) 連署者の公開鍵
signature 64 bytes (binary) トランザクションの署名

HashLockTransaction

Alias: LockFundsTransaction

署名された アグリゲートボンドトランザクション を送信する前に、ハッシュロックトランザクションをアナウンスします。このメカニズムはネットワークスパムを防止するために要求されます。

関連するアグリゲートボンドトランザクションが承認されると、ロックされた資金は、初期ハッシュロックトランザクションに署名したアカウントで再び利用可能になります。

すべての連署者によって署名されずにアグリゲートボンドトランザクションが期間に達した場合、ロックされた資産は、ブロックのハーベスタによって、ロックの有効期限が切れるブロック高でハーベストされます。

バージョン: 0x01

エンティティタイプ: 0x4148

インライン

プロパティ タイプ 説明
mosaic Mosaic ロックモザイク 10 cat.currency 以上必要です。
duration uint64 ロック期間
hash 32 bytes (binary) モザイクをアンロックする前に、アグリゲートボンドトランザクションハッシュが承認されていなければなりません。