マークル・ポラードとは何ですか?
、許可を得てOdailyによって転載されました。medium、許可を得てOdailyによって転載されました。
副題
ハッシュ関数
画像の説明

-ハッシュ-
マークルツリー
マークルツリー
マークルツリーとは、複数の入力値とそのハッシュ値を組み合わせて固定長の値に圧縮することを指します。
画像の説明

-メルケルツリー-
上に示したマークル ツリーは 8 つの入力値を持ち、4 つの層に分かれています。ルートノードは最後尾の 0xd576...ffd9 です。
画像の説明

~変更によるマークルツリー全体への影響(灰色の網掛け部分)~
副題
メルケル首相の道
画像の説明

-"Peach"副題
メルケルの証明
画像の説明

-メルケルの証明-
マークル証明には、入力値 (赤でマーク)、中間ブランチのハッシュ (緑でマーク)、およびマークル ルート ノード (青でマーク) の 3 つが必要です。各入力値に対応する中間分岐ハッシュ値のセットは異なります。
ブロックチェーン システムは多くの場合、特定の入力値がデータ セットに存在することを証明するためにマークル証明を使用するため、データ セット全体をブロックチェーンに保存する必要はありません。イーサリアム契約にホワイトリスト リストがあり、リスト内のアカウントのみがイーサリアムの購入を許可されていると仮定します。ホワイトリスト内の各アカウントの情報がブロックチェーン上に保存されている場合、高額なコストを支払うことは避けられません。この場合、マークル ツリーを作成し、ルート ノードをブロックチェーンに保存するだけです。
たとえば、ルート ノードがスマート コントラクトに保存されている場合、スマート コントラクトはアカウントがホワイトリストに含まれていることを簡単に証明できます。アカウントは中間ブランチ ハッシュ (オフチェーン手段を通じてコントラクト所有者によって提供される) を提供する必要があります。 ).アカウント所有者に)、スマート コントラクトは、このアカウントのハッシュ値と中間ブランチのハッシュ値のハッシュ計算を順番に実行します。最終結果がメルケル首相のルートノードと一致する場合、そのアカウントが実際にホワイトリストに含まれていることを証明します。
最後の 2 つの図のマークル パスとマークル証明のハッシュの関係に注目してください。同一ツリーの同一レベルでは、マークル証明のハッシュ値とマークルパスのハッシュ値が関連付けられる。このことから、マークル証明は入力値のマークル パスを再形成できることがわかります。これが、最終結果がマークル ルート ノードになる理由です。
これまでのところ、マークル証明には次の特徴があることがわかります。
マークル証明をオンチェーンに保存すると、入力値を直接保存するよりもはるかに少ないスペースが必要になります
マークル証明をオンチェーンに公開して保存しても、入力値のセット全体が公開されるわけではありません
副題
複製証明
上記の例では、各アカウントはマークル証明書を送信して、ホワイトリストに含まれているかどうかを確認するだけで済みます。
さらに、マークル ツリーは、知識の確率的証明 (多くの場合、STARK と呼ばれます) としても使用でき、知識の各証明により、マークル ツリーの作成者 (つまり、「証明者」) が私たち (つまり、「検証者、挑戦者」) をより確信することができます。 ) すべての構成値を知っています。この場合、証明者は通常、数十、場合によっては数百の入力値を含むマークル ツリーに基づいて数百の証明を生成します。これらの証明は、その有効性を検証するために、マークル ルート ノードとともにバリデーターに送信されます。
画像の説明



~同一マークルルートの重複証明~
合計 1 つのマークル ルート ノードと 3 つの証明書が送信され、ルート ノードに 1 つ、残りの 3 つの証明書ごとに 3 つの合計で最大 10 個のハッシュ値が送信されることがわかります。
画像の説明



-拡張マークルルートノードの重複証明-
副題
マークルツリーが切り詰められた
画像の説明

- 1次メルケル切り捨て -
画像の説明

- 2次メルケル切り捨て -
画像の説明

~マークルツリーの異次数切り捨てによるメリット~
副題
実装例
https://github.com/wealdtech/go-merkletree/ は、Go 言語で実装されたマークル ツリーの切り捨てを提供します。


