マークルツリーは、コンピューターサイエンスアプリケーションで使用されるデータ構造です。 ビットコインおよびその他の暗号通貨において、マークルツリーはブロックチェーンデータをより効率的かつ安全にエンコードするのに役立ちます。
それらは「バイナリハッシュツリー」とも呼ばれます。
マークルツリーの分解
ビットコインのブロックチェーンでは、トランザクションのブロックがアルゴリズムを介してハッシュを生成します。ハッシュは、特定のデータセットが元のトランザクションセットと同じであることを確認するために使用できる数字と文字の文字列ですが、トランザクションの元のセットを取得しません。 ただし、ビットコインのソフトウェアは、一度にハッシュ関数を使用して、トランザクションデータのブロック全体(平均で10分間のトランザクションを表す)を実行しません。 むしろ、各トランザクションがハッシュされ、その後、トランザクションの各ペアが連結されて一緒にハッシュされ、ブロック全体に対して1つのハッシュが得られるまで続きます。 (奇数のトランザクションがある場合、1つのトランザクションが2倍になり、そのハッシュがそれ自体と連結されます。)
視覚化された、この構造はツリーに似ています。 以下の図では、「T」はトランザクションを示し、「H」はハッシュを示します。 画像は非常に単純化されていることに注意してください。 平均的なブロックには、8つではなく500を超えるトランザクションが含まれます。
一番下の行のハッシュは「リーフ」と呼ばれ、中間のハッシュは「ブランチ」と呼ばれ、上部のハッシュは「ルート」と呼ばれます。 特定のブロックのマークルルートはヘッダーに格納されます。たとえば、ブロック#482819のマークルルートはe045b18e7a3d708d686717b4f44db2099aabcad9bebf968de5f7271b458f71c8です。 ルートは他の情報(ソフトウェアバージョン、前のブロックのハッシュ、タイムスタンプ、難易度ターゲット、およびナンス)と組み合わされ、ブロックの一意のハッシュを生成するハッシュ関数を実行します:ブロック#482819の場合、000000000000000000bfc767ef8bf28c42cbd4bdbafd9aa1b5c3c33c2b089594 。 このハッシュは実際には関連するブロックには含まれていませんが、次のブロックに含まれています。 マークル根とは異なります。
マークルツリーは、ブロックチェーン全体(2017年8月末で130ギガバイト以上)をダウンロードすることなく、ユーザーが特定のトランザクションを検証できるため便利です。 たとえば、上の図のブロックにトランザクションT Dが含まれていることを確認したいとします。 ルートハッシュ(H ABCDEFGH )がある場合、プロセスは数独のゲームのようになります。HDについてネットワークにクエリを実行すると、H C 、H AB、およびH EFGHが返されます。 マークルツリーを使用すると、すべてが3つのハッシュで説明されていることを確認できます:H AB 、H C 、H EFGH、およびルートH ABCDEFGH 、H D (唯一の欠損ハッシュ)がデータに存在する必要がある場合。
マークルの木は、1987年の「従来の暗号化機能に基づくデジタル署名」という論文で提案したRalph Merkleにちなんで命名されました。 マークルは暗号化ハッシュも発明しました。