コンテンツ

  • マークルツリーとは何ですか?

  • マークルツリーはどのように構築されるのでしょうか?

  • マークルルートがビットコインで使用されるのはなぜですか?

    • マイニング

    • 検証

  • 再開する


マークルツリーとは何ですか?

マークル ツリーの概念は、公開鍵暗号化の研究で知られるコンピューター科学者、ラルフ マークルによって 1980 年代初頭に提案されました。

マークル ツリーは、セット内のデータを検証するための構造です。これは、参加者が情報を交換し、それを独立した検証にかける必要があるピアツーピア ネットワークの分野で広く使用されています。

マークル ツリー構造はハッシュ関数に基づいているため、最初に「ハッシュとは何ですか?」の記事を読んでから、このトピックに戻ることをお勧めします。


マークルツリーはどのように構築されるのでしょうか?

大きなファイルをダウンロードするとします。オープンソース プログラムを使用する場合は、ダウンロードしたファイルのハッシュが開発者の公開ハッシュと一致するかどうかを確認する必要があります。一致する場合、コンピュータ上のファイルはそのファイルとまったく同じです。

ハッシュが異なる場合は、プログラムを装った悪意のあるファイルをダウンロードしたか、またはそのファイルが間違ってダウンロードされたため機能しません。問題の読み込みも、特に時間がかかる場合には面倒になる可能性があります。この場合、ファイルを再度ダウンロードする必要がありますが、今回はすべてがうまくいくことを祈ります。

「本当にそんなに複雑なの?」と思うかもしれません。幸いなことに、ここでマークル ツリーが役に立ち、ファイルを複数の部分に分割できるようになります。たとえば、50 GB のファイルは 0.5 GB のチャンク 100 個に分割できます。この場合、トレントを通じてファイルをダウンロードする方法と同様に、ファイルは部分的にダウンロードされます。 

このプロセスの主な目的は、ファイル内の各データを表すマークル ルートと呼ばれる単一のハッシュを取得することです。 Merkle ルートを使用すると、データ検証を大幅に簡素化できます。 

例として、8 GB のファイルを 8 つの部分に分割してみましょう。各フラグメントには A から H までの名前が付けられ、ハッシュ関数を通過して 8 つの異なるハッシュが生成されます。


Каждый из восьми фрагментов проходит через хеш-функцию, чтобы сгенерировать свой хеш.

8 つのフラグメントのそれぞれがハッシュ関数を通過して、ハッシュが生成されます。


それで、それは邪魔になりませんでした。すべてのフラグメントのハッシュを受け取りました。つまり、それを元のフラグメントと比較して、どのフラグメントに問題があるかを特定できるということですよね?それは可能ですが、非常に非効率的です。ファイルには 8 つのフラグメントしかありませんが、フラグメントが数千ある場合、すべてをハッシュして結果を比較しますか?

しそうにない。代わりに、ハッシュの各ペアを取得し、それらを連結して、一緒にハッシュする必要があります。したがって、hA + hB、hC + hD、hE + hF、および hG + hH をハッシュし、4 つのハッシュを取得します。次に、ハッシュをもう 1 回実行して、ハッシュが 2 つになるようにします。最後に、残りのペアをハッシュし、メインのハッシュ、つまりマークル ルート (またはルート ハッシュ) を取得します。


Структура напоминает перевернутое дерево. В нижнем ряду находятся «листья», которые переходят в ноды, а те — в корень.

構造は木を逆さまにしたような構造です。一番下の行には、ノードに入る「葉」があり、それが根に入ります。


したがって、ダウンロードされたファイルを表すマークル ルートが得られます。これで、ルート ハッシュを元の作成者のハッシュと比較できるようになりました。それらが一致すれば、すべてがうまくいきます。ハッシュが異なる場合は、データが変更されたこと、つまり 1 つ以上のフラグメントが異なるハッシュを作成したことを意味します。したがって、データを変更すると、まったく異なるマークル ルートが生成されます。 

幸いなことに、間違ったフラグメントは簡単に見つけることができます。これを hE としましょう。まず、マークル ルート(hABCD と hEFGH)を作成した最後の 2 つのハッシュをクエリします。そのセグメントにエラーがないため、hABCD は元のものと同じになりますが、hEFGH は異なるため、確認する必要があります。次に、hEF と hGH をリクエストし、私たちのものと比較します。 hGH は一致するため、hEF が必要です。最後に、ハッシュ hE と hF を比較します。そのため、間違ったフラグメントは hE であることがわかり、再ダウンロードする必要があります。

要約すると、マークル ツリーはデータを多くの部分に分割し、繰り返しハッシュされてマークル ルートを形成することによって作成されます。このシステムを使用すると、すべてのデータに問題がないことを簡単に確認できます。次のセクションでは、他の可能な使用方法を見ていきます。



暗号通貨をどのように始めればよいか疑問に思っていますか?バイナンスでビットコインを買おう!



マークルルートがビットコインで使用されるのはなぜですか?

マークルツリーには多くの用途がありますが、今のところ、ブロックチェーンでの応用に興味があります。マークル ツリーは、ビットコインや他の多くの暗号通貨を扱う際に必要です。マークル ツリーは各ブロックの不可欠な部分であり、ブロック ヘッダーに配置されます。ツリーの葉を取得するには、ブロックに含まれる各トランザクションのハッシュ(TXID)を使用します。 

この場合、マークル ルートはいくつかのタスクを実行します。次に、暗号通貨のマイニングとトランザクションの検証での使用について見ていきます。


マイニング

ビットコインのブロックは 2 つの部分で構成されます。最初の部分はブロック ヘッダーで、ブロックのメタデータを含む固定サイズのセグメントです。 2 番目の部分はトランザクションのリストで、そのサイズは通常ヘッダーよりもはるかに大きくなりますが、異なる場合があります。

マイナーは、特定の条件を満たす結果を取得し、有効なブロックをマイニングするためにデータを複数回ハッシュする必要があります。マイナーは新しい結果を得るためにブロックヘッダー(ノンス)の乱数を変更する必要があるため、それを見つけるには何兆回もの試行が必要になる可能性がありますが、ブロックの大部分は同じままです。ブロック内には何千ものトランザクションが存在する可能性があり、毎回すべてのトランザクションをハッシュする必要があります。

マークル ルートを使用すると、このプロセスが大幅に簡素化されます。マイニング中、必要なトランザクションはすべてマークル ツリーに並べられます。ルート ハッシュ (32 バイト) がブロック ヘッダーに配置され、その後、ブロック全体ではなくブロック ヘッダーのみがハッシュされます。

この方法は改ざん防止機能があり、すべてのトランザクションをコンパクトな形式でブロックに効率的に要約します。ただし、有効なブロック ヘッダーを見つけてトランザクションのリストを変更することは不可能です。これは、マークル ルートを変更することになるためです。ブロックが他のノードに送信されると、トランザクションのリストからルートが計算されます。ヘッダーのルートと一致しない場合、ブロックは拒否されます。


検証

マークル ルートのもう 1 つの便利なプロパティを見てみましょう。これは、簡略化されたノード (ブロックチェーンの完全なコピーが含まれていない) に関するものです。リソースが限られたデバイス上でノードを実行している場合、必ずしもブロック内のすべてのトランザクションをダウンロードしてハッシュする必要はありません。代わりに、完全なノードにマークル証明 (トランザクションが特定のブロック内にあることの証明) を求めるだけで済みます。この方法は、ビットコイン ホワイトペーパーでサトシ ナカモトによって詳細に説明されており、簡易支払い検証 (SPV) と呼ばれることがよくあります。


Для проверки hD необходимы только хеши красного цвета.

hD をチェックするには、赤いハッシュのみが必要です。


TXID が hD であるトランザクションに関する情報が必要だとします。 hC が与えられると、hCD を計算できます。次に、hABCD を計算するには hAB が必要です。最後に、hEFGH を使用して、結果のマークル ルートがブロック ヘッダーのルートと一致するかどうかを確認できます。 「はい」の場合、異なるデータで同じハッシュを作成することはほぼ不可能であるため、トランザクションがブロックに含まれていることを証明します。

上の例ではハッシュ化は 3 回だけですが、マークル証明がなければ 7 回行う必要があります。ブロックには何千ものトランザクションが含まれる可能性があるため、マークル証明を使用すると、時間とコンピューティング リソースを大幅に節約できます。


再開する

マークル ツリーは、コンピューター テクノロジにおいてその有効性を証明しています。これらはブロックチェーンで非常に役立ち、不必要なデータでネットワークに過負荷をかけることなく、分散システム全体で情報を簡単に検証できるようになります。

マークル ツリー (およびマークル ルート) がなければ、ビットコインやその他の暗号通貨のブロックは非常に大きくなります。軽量ノードにはプライバシーとセキュリティの問題がある可能性がありますが、マークル証明を使用すると、トランザクションがブロックに含まれているかどうかをコスト効率よく知ることができます。