マークルツリーとは?その効果を具体例を用いて詳しく解説
前回、ブロックチェーン処理サーバ(マイナー)が作り出すブロックをインターネット上に記録されているブロックチェーンに登録していく仕組みを「ブロックチェーンの鎖(くさり)の構造について解説【仮想通貨(ビットコイン)の基礎】」で解説しました。
図1
それぞれのブロックの中には、ブロックヘッダとブロック本体があり、ブロック本体の中には多くの送金トランザクションが格納されています。
個々のトランザクションは「ビットコインのトランザクション形式」で紹介したように、送金元の公開鍵により改ざん検出が可能な形で守られていますが、ブロックの正当性を確認する場合にすべてのトランザクションを確認するのは大変です。
トランザクションを、別のものに交換されてしまうという改ざんもあり得ます。
そこで、ブロック本体の中の全トランザクションのハッシュ値を計算してブロックヘッダに格納することにより、トランザクションすべての正当性を確認可能とするデータ形式になっています。
そして全トランザクションのハッシュ値を計算する方法として、マークルツリーという計算方法を用います。
マークルツリーとは
マークルツリーとは、二つのトランザクションのハッシュ値二つをあわせたデータに対して、新たに一つのハッシュ値を計算するという操作を繰り返して完成するハッシュ値のツリー構造のことです。
図2に、ブロック本体の中に格納されているトランザクションと、トランザクションのハッシュ値から作られているマークルツリーの構造のイメージを示します。
図2
この例では、8個のトランザクションのハッシュ値から4個、2個、1個と新たなハッシュ値が生成されており、ブロック本体の中には、トランザクション自身のハッシュ値8個のほかに7個のハッシュ値が格納されます。
一番上のレベルのハッシュ値1個は、マークルツリーのルートなのでマークルルートと呼ばれ、そのハッシュ値はブロックヘッダ内の「マークルルートのハッシュ値」を格納する場所に書き込まれます。
マークルツリーの効果
さて、実はトランザクションの正当性を検証可能にするだけなら、わざわざマークルツリー構造を作る必要はありません。
すべてのトランザクションのハッシュ値をあわせて、一つのハッシュ値を計算すれば良いのです。
これだけでトランザクションが1個改ざんされるとハッシュ値が違ってしまうので、そのブロックが改ざんされているという事実が判定できるのです。
マークルツリー構造を用いてハッシュ値を並べる効果は、実は小規模なブロックチェーン処理サーバがすべてのトランザクションを記憶する必要を無くことにより、コンピュータの処理負荷を軽減する効果があるのです。
例えば、図2のトランザクション05~08の記憶を削除することにします。
その代わりにルートの下にある「TX(05,06),(07,08)のハッシュ値計算」のところに、計算済みのハッシュ値を1個記憶しておきます。
この例では、トランザクションのデータ記憶容量を半減しています。
この方法で記憶したブロックチェーンを用いて、正確なマイニングを実行することはできないので、主にウォレット(仮想通貨を格納する財布)として使用するコンピュータにおいてこのようなデータ削減方法が用いられます。
また、マークルルートのハッシュ値に誤りがあったときに、その誤りを発生させているトランザクションがどこにあるかを追跡しやすくなるという利点もあります。
上(ルートの方)から下(トランザクション側)へ誤っているハッシュ値を順に追っていけば、原因のトランザクションにたどり着けます。
すべてのトランザクションのハッシュ値を1個ずつ確認していくよりも相当高速に処理が可能です。
以上のように、ブロックの中には多数のトランザクションが格納されているのですが、その格納方法ではマークルツリーというデータ構造が採用されていてブロックチェーン処理におけるいろいろな効果を達成していることが分かっていただけたと思います。
Provided by
上野 仁(Hitoshi Ueno)
1984年山梨大学大学院修士課程(計算機科学専攻)修了後、株式会社日立製作所入社。
システム開発研究所、エンタープライズサーバ事業部などで主としてコンピュータアーキテクチャおよび基本ソフトウェアの研究開発に従事。
2015年より第一工科大学東京上野キャンパス情報電子システム工学科教授に就任。
2023年より東京情報デザイン専門職大学教授。
生体信号処理に関するプログラム開発や種々の先端ソフトウェアついての調査研究に興味を持つ。
技術士(情報工学)。
博士(工学)。
ビットコイン(仮想通貨)を学びたい方にオススメのコンテンツ
東京情報デザイン専門職大学教授の上野仁氏監修による暗号通貨・ブロックチェーンの記事一覧です。
本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。