マークルツリー

マークルツリーは、その機能を支えるブロックチェーンの基本的なコンポーネントです。それらは、大規模なデータ構造の効率的かつ安全な検証を可能にし、ブロックチェーンの場合、潜在的に無限のデータセットを可能にします.

ブロックチェーンでのマークルツリーの実装には、複数の効果があります。データの整合性を維持するためのハッシュベースのアーキテクチャと、データの整合性を検証するための簡単な方法を提供しながら、スケーリングを可能にします。.

暗号化ハッシュ関数は、マークルツリーが機能するための基盤となるテクノロジーであるため、最初に、暗号化ハッシュ関数とは何かを理解することが重要です。.

暗号化ハッシュ関数

簡単に言えば、ハッシュ関数は、任意のサイズ(入力)のデータを固定サイズの出力にマップするために使用される任意の関数です。ハッシュアルゴリズムがデータ入力に適用され、結果の固定長出力はハッシュと呼ばれます.

多くのハッシュアルゴリズムは広く公開されており、ニーズに基づいて選択できます.

任意の入力から得られるハッシュは、長さが固定されているだけでなく、入力に対して完全に一意であり、関数自体が決定論的です。つまり、同じ入力で関数を何度実行しても、出力は常に同じになります.

たとえば、以下のデータセットを入力として使用している場合、結果の出力は入力ごとに一意になります。 2番目と3番目の例では、入力の違いが1ワードしかない場合でも、結果の出力が完全に異なることに注意してください。.

これは、データの「フィンガープリント」を可能にするため、非常に重要です。.

暗号化ハッシュ関数、からの画像 ウィキペディア

出力(例ではハッシュの合計)の長さは、使用されるハッシュアルゴリズムによって決定される長さと常に同じであるため、結果のハッシュだけで大量のデータを識別できます。.

大量のデータを含むシステムでは、固定長の出力でデータを保存および識別できるという利点により、ストレージを大幅に節約し、効率を高めることができます。.

ブロックチェーン内では、ハッシュアルゴリズムを使用してブロックチェーンの状態を判別します.

ブロックチェーンは、前のブロックを指すデータとハッシュポインターを含むリンクリストであり、接続されたブロックのチェーンを作成するため、「ブロックチェーン」という名前が付けられています。.

各ブロックは、前のブロック内のデータと前のブロックのアドレスのハッシュであるハッシュポインタを介して相互に接続されています。この形式でデータのブロックをリンクすることにより、前のブロックのすべてのハッシュデータが1つのハッシュにハッシュされるため、前のブロックの結果の各ハッシュはブロックチェーンの全体の状態を表します.

これは(SHA-256アルゴリズムの場合)次のような出力(ハッシュ)で表されます。.

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

上記のハッシュは、その前のブロックチェーンの状態全体のフィンガープリントです。 (ハッシュされたデータとしての)新しいブロックの前のブロックチェーンの状態が入力であり、結果のハッシュが出力です.

マークルツリーなしで暗号化ハッシュを使用することは可能ですが、それは非常に非効率的でスケーラブルではありません。ハッシュを使用してデータを一連の形式でブロックに格納するのは、時間と手間がかかります.

ご覧のとおり、Merkleツリーでは、データの整合性を簡単に解決できるだけでなく、Merkleプルーフを使用してツリー全体でそのデータをマッピングできます。.

マークルツリーとマークルプルーフ

1979年にこの概念の特許を取得したラルフマークルにちなんで名付けられたマークルツリーは、基本的に、各非リーフノードがそれぞれの子ノードのハッシュであるデータ構造ツリーです。.

リーフノードは、ツリー内のノードの最下位層です。最初はわかりにくいかもしれませんが、下のよく使われる図を見るとわかりやすくなります。.

ハッシュツリー

バイナリハッシュツリーの例、 ウィキペディア

重要なのは、左側の非リーフノードまたは「ブランチ」(ハッシュ0-0およびハッシュ0-1で表される)がそれぞれの子L1およびL2のハッシュであることに注意してください。さらに、ブランチハッシュ0が連結された子のハッシュであり、ブランチハッシュ0-0とハッシュ0-1であることに注意してください。.

上記の例は、バイナリマークルツリーとして知られるマークルツリーの最も一般的で単純な形式です。ご覧のとおり、ルートハッシュと呼ばれる、ツリー全体のハッシュであるトップハッシュがあります。基本的に、マークルツリーは「n」個のハッシュを取り、それを単一のハッシュで表すことができるデータ構造です。.

ツリーの構造により、任意の量のデータを効率的にマッピングでき、そのデータの変更が発生した場所を簡単に識別できます。この概念により、Merkle証明が可能になります。これにより、ハッシュのセット全体を実際に確認しなくても、データのハッシュがツリー全体で正しい位置にあることを誰かが確認できます。.

代わりに、データセット全体ではなく、ハッシュの小さなサブセットのみをチェックすることで、データチャンクがルートハッシュと一致していることを確認できます。.

ルートハッシュが公に知られていて信頼されている限り、データベースでキー値ルックアップを実行したい人は誰でも、マークル証明を使用して、データベース内のデータの位置と整合性を検証できます。特定のルート.

ルートハッシュが利用可能な場合、信頼できないソースからハッシュツリーを受信でき、ツリー全体がまだ利用できない場合でも、ツリーの1つのブランチを一度にダウンロードして、データの整合性を即座に検証できます。.

マークルツリー構造の最も重要な利点の1つは、はるかに少量のデータを検証するために使用される同様のハッシュメカニズムを通じて、任意に大きなデータセットを認証できることです。.

このツリーは、データサイズが全体的に大きいにもかかわらず、整合性の検証の障壁が大幅に軽減されている管理可能な小さな部分に大量のデータセットを分散するのに有利です。.

ルートハッシュは、データベース全体を含む、またはブロックチェーンの状態全体を表すデータセット全体のフィンガープリントとして使用できます。次のセクションでは、ビットコインやその他のシステムがどのようにマークルツリーを実装するかについて説明します.

ビットコインのマークルツリー

ビットコインで採用されている暗号化ハッシュ関数はSHA-256アルゴリズムです。これは「SecureHashingAlgorithm」の略で、出力は256ビットの固定長です。ビットコインのマークルツリーの基本的な機能は、すべてのブロックでトランザクションを保存し、最終的には整理することです.

前述のように、ブロックチェーン内のブロックは、前のブロックのハッシュを介して接続されます。ビットコインでは、各ブロックには、そのブロック内のすべてのトランザクションと、以下で構成されるブロックヘッダーが含まれます。

  • ブロックバージョン番号
  • 前のブロックハッシュ
  • タイムスタンプ
  • マイニング難易度ターゲット
  • ノンス
  • マークルルートハッシュ

下の画像はビットコインからのものです 白書 マークルツリーが各ブロックにどのように適合するかを示しています.

マークルツリー

トランザクションはマイナーによってブロックに含まれ、Merkleツリーの一部としてハッシュされ、ブロックヘッダーに格納されるMerkleルートにつながります。この設計には、いくつかの明確な利点があります.

特に、ホワイトペーパーで概説されているように、これにより、「軽量クライアント」とも呼ばれるSimple Payment Verification(SPV)ノードの存在が可能になります。これらのノードは、ビットコインブロックチェーン全体をダウンロードする必要はなく、最長のチェーンのブロックヘッダーのみをダウンロードします。.

SPVノードは、操作している格納されたブロックヘッダーが最長のチェーンの一部であると確信するまで、ピアノードにクエリを実行することでこれを実現できます。 SPVノードは、Merkleプルーフを使用してトランザクションを特定のMerkleツリーにマッピングし、最長のチェーンの一部であるブロックヘッダーにそれぞれのMerkleツリーのルートハッシュを含めることで、トランザクションのステータスを判断できます。.

さらに、ビットコインのマークルツリーの実装により、スペースを節約するためにブロックチェーンの剪定が可能になります。これは、ルートハッシュのみがブロックヘッダーに格納されている結果であるため、Merkle証明に必要なブランチのみを保持しながら、Merkleツリーの不要なブランチを削除することで古いブロックをプルーニングできます。.

他のブロックチェーンおよびシステムでのマークルツリーの実装

ビットコインはマークルツリーを実装した最初のブロックチェーンでしたが、他の多くのブロックチェーンは同様のマークルツリー構造またはさらに複雑なバージョンを実装しています.

さらに、マークルツリーの実装はブロックチェーンに限定されるだけでなく、他のさまざまなシステムにも適用されます.

他の最も認識可能な暗号通貨であるイーサリアムも、異なるマークルツリー実装の優れた例です。イーサリアムは、はるかに複雑なアプリケーションを構築するためのプラットフォームとしてチューリング完全であるため、実際には3種類のオブジェクトに使用される3つの別々のマークルツリーであるマークルパトリシアツリーと呼ばれる、より複雑なバージョンのマークルツリーを使用します。あなたはこれらの木についてもっと学ぶことができます ここに.

最後に、マークルツリーはGitやIPFSなどの分散バージョン管理システムの重要なコンポーネントです。 P2P形式でコンピューター間で共有されるデータの整合性を簡単に保証および検証する機能により、これらのシステムにとって非常に貴重です。.

結論

マークルツリーはブロックチェーンの不可欠なコンポーネントであり、証明可能な不変性とトランザクションの整合性で効果的に機能することができます.

分散ネットワークで果たす役割と暗号化ハッシュ関数の基盤となるテクノロジーを理解することは、暗号通貨がより大規模で複雑なシステムに発展し続ける中で、暗号通貨内の基本的な概念を理解するために重要です.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me