Wait a moment...

【NEM技術勉強会】6.2 アグリゲートトランザクション【Symbol白書】

nem3.40xem (4)
606
0
2020-02-13 15:28:37
【NEM技術勉強会】6.2 アグリゲートトランザクション【Symbol白書】

さて、問題のアグリゲートトランザクションです。どうやってスマートコントラクトのように複数のトランザクションをひとまとめに処理しているのでしょうか。


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

アグリゲートトランザクションのレイアウトは、ベーシックトランザクションに比べて複雑である。しかし、似通っている部分も多い。アグリゲートトランザクションは、ベーシックトランザクションと同じ「検証不可能なヘッダー」を持ち、この部分の処理はまったく同じである。さらに、アグリゲートトランザクションにはフッター(検証可能データの後に置かれる部分)にも、検証不可能データが存在し、埋め込み(embedded)トランザクションと共同署名が連なる形になっている。

 

アグリゲートトランザクションは、必要とされるすべての共同署名と一緒にネットワークに投入されることもできる。その場合は、「完了」したと判断され、特別な工程無しに他のトランザクションと同様に処理される(つまり検証工程を経てブロックチェーンに刻まれる)。

 

APIノードは、完全ではない共同署名がなされた、債券付き(bonded)アグリゲートトランザクションを受け入れることもできる。トランザクションの発行者は、期限が切れる前にすべての共同署名が集められた場合にのみ返金される債券を発行しなければならない。この前金制度によって、APIノードは共同署名を集める作業をする。この作業は、必要な数の署名が集まるか、期限切れになるまで続けられる。

 

TransactionHash(トランザクションハッシュ)は、アグリゲートトランザクションの最も重要なフィールドである。これは、アグリゲートトランザクションに埋め込まれたすべてのトランザクションハッシュの、マークルルートハッシュとなる。埋め込まれた複数のトランザクションは、自然な順番でソートされ(パトリシアツリー的に)、マークルツリーが作られる。その結果がルートハッシュとなり、TransactionHashとして検証可能データの一部として組み込まれる。

 

そのため、検証不可能フィールドにあるデータは検証される必要がなくなる。PayloadSizeは、TransactionHashを計算するのに使用された、埋め込みトランザクションが入っている部分の正確なサイズである。Reservedバイトは、今回も桁揃えのために使われて、中身に特に意味はない。

図9:アグリゲートトランザクションのバイナリーレイアウト


アグリゲートトランザクションは、複数のトランザクションと複数の署名をひとつにまとめたものですが、マークルパトリシアツリーを使って、全体のルートハッシュを計算しているのが、最も重要なポイントになると思います。また、検証が終わってブロックチェーンに書き込まれる前に、債券という形で手数料が支払われ、APIはその前金を使って働くというイーメージになっていますね。つまり、期限までに共同署名が集まらない場合は、支払った手数料は没収という形になるわけです。

 

目指せ北海道

この記事を書いた人
趣味はバイクでツーリングしながら、ブログを書いたり、動画配信したりすること。 ラズパイをバイクに積載して、ボタン一つでYoutubeライブ配信できるシステムを作りました。それを発展させて、XEMの価格を常時監視、取引するボットも作って活用してます。子供の頃から技術書を読むのが好きなので、NEMの技術文書を訳したりもしています。 本業は再生医療研究者です。歯の神経の中にいる「歯髄(しずい)細胞」を活用して新しい医療を開拓するために、しずい細胞プロジェクトを推進中。細胞の流通(トレーサビリティー)管理にNEMを使おうと思ってmijin v.2を導入したんですが、コロナで実用化が全然進みません。管理システムの名称は「ShizuiNet」。