Symbol入門 その11
データバリデーション
少しずつSymbolの技術について勉強中です。
まずは、入門ということで下記の公式ドキュメントを読んでいくことにしました。
日本語になっているのは非常にありがたいですね。
—
順に公式ドキュメントを読むのも、その11まで来ました。
今日はデータバリデーションについて読んでみました。
Symbolはブロックヘッダから直接取り出すことの出来ないブロックに関連する大きなデータを保存するために木構造を用いています。 これにより軽量クライアントは要素(例:トランザクションやレシートステートメント)を帳簿全体の履歴を必要とすることなく検証できるようになります。
すべてのデータを保持すると、膨大な容量が必要となるのでこの辺は当たり前の技術ですね。
Symbolでもマークル木が利用されています。 これはビットコインでも同様の技術が使われています。
マークルツリーとは上記のようなハッシュを組み合わせて構成するツリー構造になります。
ブロック内に含まれるトランザクションが改ざんされていないかをチェックするなどに利用されます。
上記の図を例に取ると、あるブロックに、トランザクションA~Eが含まれていた場合に、まずそれぞれのトランザクションのハッシュを計算します。(図中H1-H5)
次に、H1とH2、H3とH4、H5は対となるトランザクションがないため、H5とH5でそれぞれ再びハッシュを計算します。(図中H6-H8)
同様に図の通りハッシュの計算を繰り返し、最終的に1つのハッシュを算出します。
これをブロックのヘッダ部分に含んでおくことで、少ない容量でブロック内に含まれるトランザクションを要約したデータを持つことが出来ます。
また、Symbolではトランザクションだけでなく、レシートについても同様の計算を行い、ハッシュ値を保持します。
本データはブロックの検証の際などに、トランザクションやレシートが改ざんされていないか検証するために使用されます。
データバリデーションについては以上になります。