マークルツリーのガイド
ブロックチェーンテクノロジーについて話し合うときに、マークルツリーについて聞いたことがありますか?これは、マークルツリーがテクノロジー自体の中核であるためです。.
だから、それは正確には何ですか?
この記事では、Merkleツリーを詳しく調べ、ブロックチェーンテクノロジーを成功させる上でのその役割を理解します。.
始めましょう.
マークルツリーとは?
マークルツリーは、大規模なコンテンツプール内のデータを安全に検証するために使用されるデータ構造です。また、データの検証に関しても効率的で一貫性があります.
イーサリアムとビットコインはどちらもマークルツリーを利用しています.
問題: 集中型ネットワークの中核では、1つのコピーからデータにアクセスできます。これは、データを保存したりアクセスしたりするために多くのことをする必要がないことを意味します。ただし、分散型ブロックチェーンネットワークの場合、各データがノード間でコピーされるため、事態は悪化します。したがって、データに効率的にアクセスすることは課題です。課題は、データのコピーを作成してノード間で共有することでもあります。さらに、受信ノードごとに共有データを検証する必要があります.
ソリューション: マークルツリーは、分散型ブロックチェーンがデータを共有し、検証し、信頼できるものにすることを可能にします。データを共有および検証するために多くの処理能力を必要としないようにデータを編成します。また、ハッシュ関数と暗号化の使用により、安全なトランザクションが容易になります.
中本聡は、ビットコインを介してブロックチェーン技術でマークルツリーを実装した最初の人物でした。彼の使用法は、中央集権的な権限を必要としないコンピュータサイエンスの新しい分野を切り開いた。彼はまた、マークルツリーを過度に使用し、ファストマークルツリーを使用しました.
しかし、このコンセプトは、1979年に特許を取得したラルフ・マークルによって最初に導入されました。彼にちなんで名付けられました。.
また、Hyperledger Cactus:A New HyperledgerFrameworkもお読みください。
暗号化ハッシュ関数
マークルツリーについて説明する前に、暗号化ハッシュ関数について理解を深める必要があります。.
ハッシュ関数は、任意の長さの任意の形式の任意のデータを固定サイズの出力にマッピングする役割を果たします。これは暗号化機能であるため、暗号化で広く使用されています.
ハッシュ関数は効率的であり、1つのプロパティで知られています。つまり、関数を元に戻すことはできません。これは、この方法でのみ機能するように設計された一方向性関数です。.
ハッシュには、次のような複数の用途があります
- パスワード保護
- ファイルの整合性チェックと検証
- 暗号通貨
Message Direct(MD)、Secure Hash Function(SHF)、RIPE Message Direct(RIPEMD)など、複数のハッシュファミリがあります。.
SHA256ハッシュアルゴリズムを使用し、101Blockchainsを入力として渡すと、次の出力が得られます。
fbffd63a60374a31aa9811cbc80b577e23925a5874e86a17f712bab874f33ac9
要約すると、ハッシュ関数の主要なプロパティは次のとおりです。
- 決定論的
- プレイメージ耐性
- 計算効率
- リバースエンジニアリングはできません
- 衝突耐性
暗号化ハッシュ関数について詳しく知りたい場合は、こちらの詳細記事を確認してください。
マークルツリーはどのように機能しますか?
ハッシュ関数についてある程度理解できたので、今度はマークルツリーについてさらに学習します。.
したがって、技術的には、マークルツリーはデータ構造ツリーであり、非リーフノードはそれぞれの子ノードのハッシュ値として定義されます。.
これは、葉のノードが最も低いノードである場所で、マークルツリーが反転することも意味します。.
私が伝えようとしていることをよりよく理解するために、マークルツリーの例を見てみましょう。
出典:ウィキペディア
マークルツリーの中心で、3つの重要な用語を学ぶ必要があります。それらは以下の通りです:
- マークルルート
- リーフノード
- 非リーフノード
マークルツリー全体を見ると、逆さまのツリーです。ツリーは、それ自体でトランザクションのセット全体を要約することができます。これは、ユーザーがトランザクションがブロックの一部であるかどうかを確認できることを意味します.
マークルツリーを機能させるために、ハッシュが使用されます。ハッシュ値が1つだけ残るまで、ノードのハッシュペアを繰り返し実行するだけです。左のハッシュ値は次のように知られています マークルルートまたはルートハッシュ. ツリーは、個々のトランザクションハッシュを使用して下から上に作成されます。個々のトランザクションハッシュは、トランザクションIDとも呼ばれます。.
リーフノードは、トランザクションデータハッシュを含むノードです。非リーフノードの場合、前の2つのハッシュのハッシュを格納します.
マークルツリーのもう1つの重要な特性は、本質的にバイナリであるということです。これは、それが機能するためにもリーフノードが必要であることを意味します。リーフノードの数が奇数の場合、最後のハッシュを複製して偶数にします.
例
例を挙げて理解してみましょう.
マークルツリーの例
ここでは、ブロック内で4つのトランザクションが発生していることがわかります。これらのトランザクションには、X、Y、Z、およびWという名前が付けられます。次に、トランザクションはハッシュされ、Hash X、Hash Y、Hash Z、およびHashWという名前のリーフノードに格納されます。.
完了すると、ハッシュX、Y、Z、およびWのリーフノードが再びハッシュされ、XYとZWの結合ハッシュに作成されます。最後に、これら2つのハッシュを使用して、マークルルートまたはルートハッシュを作成します。.
ハッシュのプロセス全体は非常に大きなデータセットで実行できるため、分散型ネットワークの場合にマークルツリーのデータ構造が役立ちます。.
前に説明したように、ハッシュアルゴリズムの使用法は実装によって異なります。ただし、使用される最も一般的なハッシュ関数の1つには、SHA-2暗号化ハッシュ関数が含まれます。.
したがって、ハッシュ値のおかげで、以前のトランザクションが検証可能であるかどうかをトランザクションで検証できます。.
データの整合性について?
マークルツリーはデータの整合性に理想的です。また、その検証可能性を確認するためにトランザクション全体を実行する必要はありません。トランザクションは、ブロックヘッダーに格納されている情報を使用して検証できます。マークルルート値も以前のトランザクションに応じて変更されます.
これは、ルート値が頻繁に変更され、トランザクションをほぼ瞬時に検証するために使用できることも意味します.
これらはすべてハッシュリストに少し似ているように聞こえますが、これは正しくありません。ハッシュリストの場合、トランザクションまたはデータを確認するために完全なリストをダウンロードする必要があります.
マークルツリーの場合、ブランチをダウンロードして、それを使用してトランザクションを確認できます。.
トランザクションを検証するためにツリー全体をダウンロードする必要はありません。これは、ツリー全体を小さなデータブロックに分割して、ネットワーク全体のトランザクションを検証するために使用できることも意味します。コンセプトはとして知られています マークルプルーフ.
また、Merkleツリーpythonをチェックすることもできます—PythonでのMerkleツリーの実装 論文.
マークルツリーがビットコインでどのように機能するか
ビットコインは、マークルツリーを効果的に使用した最初の暗号通貨でした。ハッシュ値が保護され、簡単に元に戻せないようにするために、有名なセキュアハッシュアルゴリズムSHA-256を利用しています。これは、出力されるハッシュ値が256ビット長であることも意味します。コアでは、マークルツリーはデータの保存とトランザクションのプルーニングに使用されます.
また、Blockchainの使用を開始する方法もお読みください
ビットコインでは、各ブロックはハッシュ値を使用して前のブロックに接続されます。これがブロックチェーン全体の作成方法です。ブロックには、次のような重要な情報を含むブロックヘッダーがあります。
- マークルルートハッシュ
- ブロックバージョン番号
- タイムスタンプ
- ノンス
- マイニング難易度ターゲット
- 前のブロックハッシュ
理解を深めるために、下の図を見てみましょう。それはから取られます ビットコインホワイトペーパー 自体.
キャプション:ビットコインのマークルツリー
ご覧のとおり、鉱夫はトランザクションをブロックに含める必要があります。完了すると、ハッシュ化されてマークルツリーの一部になります.
このようにマークルツリーを使用すると、複数のメリットが得られます。これには、1つの注目すべき利点、つまりSimple Payment Verification(SPV)が含まれます。これらのSVPは、軽量クライアントとも呼ばれるノードです。それで、彼らは何をしますか?最長のチェーンブロックヘッダーをダウンロードするだけなので、ブロックチェーン全体をダウンロードする必要はありません。これらすべてを行うには、最長のチェーンのブロックヘッダーが保存されているかどうかを確認する必要があります。これは、ビットコインでマークルツリーの実装が行われる方法です.
最終的に、SPVはMerkle Proof of Mapを使用し、Merkleツリーのルートハッシュを使用してトランザクションを検証できます。.
イーサリアムでのマークルツリーの使用方法
イーサリアムブロックチェーンもマークルツリーを利用しています。ただし、ここでのアプローチは、ビットコインがそれをどのように利用したかとは異なります。イーサリアムでは、マークルツリーの複雑なバージョンであるマークルパトリシアツリーが使用されます。イーサリアムはチューリング完全であるため、これが可能です.
イーサリアムでマークルツリーがどのように機能するかについて詳しく知りたい場合は、詳細な投稿を確認してください ここに.
その他のマークルツリーの実装:ユースケース
もちろん、他にもマークルツリーの実装があります。最も人気のあるものの1つは、分散バージョン管理システムであるGitです。これは、世界中のプログラマーがプロジェクトを管理するために使用します.
別の便利な実装はに見られます 惑星間ファイルシステム —ピアツーピア分散プロトコル。また、オープンソースであり、コンピューティングデバイスがユビキタスファイルシステムに参加して使用できるようにします.
認証局でさえ、その利点のためにマークルツリーを利用しています。彼らはそれをメカニズムで使用して、検証可能な証明書の透明性ログを作成します。ログは巨大であるため、マークルツリーを使用すると、コンピューターは時間と労力を無駄にすることなくログを検証できます。.
ここで説明する最後のユースケースは、AmazonDynamoDBやApacheCassandraなどのデータベースシステムです。これらのNo-SQL分散データベースは、データ複製プロセス中にMerkleツリーを使用して不整合を制御します。問題がある場合は、アンチエントロピー修復プロセスを使用してデータを更新または修復できます.
要するに、マークルツリーのケースの使用には以下が含まれます
- データの同期
- データ検証
- 整合性の検証
マークルツリーの利点
このセクションでは、マークルツリーの利点について簡単に説明します。.
- データの整合性を検証します。 データの整合性を検証するために効果的に使用できます.
- ディスク容量はほとんど必要ありません。 マークルツリーは、他のデータ構造と比較してディスク容量をほとんど必要としません.
- ネットワーク全体の小さな情報: マークルツリーは、検証のために小さな情報に分割できます.
- 効率的な検証: データ構造は効率的であり、データの整合性を検証するのに少し時間がかかります.
結論
マークルツリーは、コンピュータサイエンスの重要な概念の1つです。それは多くのユースケースで広く使用されており、暗号通貨での使用は革新的なテクノロジーを生み出しました—ブロックチェーン.
それで、あなたはマークルの木について何を知っていますか?以下にコメントしてお知らせください.