ハッシュ化の概要
メニューを表示するにはスワイプしてください
ハッシュ化およびブロックハッシュについてはこれまでに何度か言及されてきましたが、その概念自体についてはまだ詳しく説明されていません。ここで、ハッシュ化とは何かを理解します。
ハッシュ化は、入力を受け取り、通常は16進数で表現される固定長のバイト列を生成するプロセス。出力はハッシュと呼ばれ、ランダムに見え、入力がわずかでも変化すると完全に異なる値になる「アバランチ効果」という特性を持つ。
ハッシュ関数の特性
ブロックチェーンでは、ハッシュ関数は以下の用途で使用される:
- 各トランザクションに固有のフィンガープリントを作成し、取引を保護する;
- 公開鍵からアドレスを生成する;
- ブロックハッシュによってブロックチェーン内のリンクを作成する。
これらを踏まえ、ブロックチェーンに適したハッシュ関数にはいくつかの重要な特性がある:
ハッシュ化、特に優れたハッシュ関数を使用する場合は、スムージーを作ることに例えることができます。次の図を見てみましょう:
実際のところ、ハッシュから元の入力を見つけることは可能ですが、現実的に利用できるほどの時間内に行うのは非常に困難です。
ブロックのハッシュ化
特定のブロックのハッシュを取得するために、ビットコインはSHA-256ハッシュ関数を使用します。この関数は256ビット(32バイト)のハッシュ値を出力します。SHA-2ファミリーの一部であり、**アメリカ国家安全保障局(NSA)**によって設計され、強力なセキュリティ特性で知られており、衝突やプレイメージ攻撃、その他の暗号学的な脆弱性に対して耐性があります。
ビットコインブロックのハッシュは、ブロックヘッダーデータを取得して計算されます。このデータはSHA-256ハッシュ関数に2回入力され、ダブルSHA-256と呼ばれるプロセスで処理されます。
以下の画像でさらに分かりやすく説明します:
生成された256ビットハッシュは、ネットワークの難易度ターゲットで定義された特定の基準を満たす必要があります。ハッシュがターゲット未満でない場合、ノンスが調整され、適格なハッシュが見つかるまでハッシュが再計算されます。この最終的なハッシュがブロックの一意識別子となります。
メルクルルート
メルクルルートは、ブロックに含まれるすべてのトランザクションを表す単一のハッシュです。その計算は、各トランザクションごとのハッシュ(ダブルSHA-256を使用)から始まります。
各トランザクションハッシュは他のハッシュとペアになり、そのペアをまとめてハッシュ化して新しいハッシュを生成します。このペアリングとハッシュ化のプロセスは、1つのハッシュが残るまで階層的に繰り返されます。最終的なハッシュがメルクルルートであり、すべてのトランザクションを1つの値にエンコードすることで完全性を保証します。この階層構造はメルクルツリーと呼ばれます。
次の例は、メルクルツリーがどのように形成されるかを示しています。
ご覧の通り、ブロックには6つのトランザクション(それぞれTxとラベル付け)を含み、ハッシュ化とペアリングによって新しいハッシュが生成され、最終的にメルクルルートが計算されます。
右端のハッシュにペアが存在しない場合(例では Hash56)、この最後のハッシュが複製されてペアが作成されます。この手法により、トランザクションやハッシュの数が奇数の場合でも、マークルツリー構造の整合性と効率性が維持されます。
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください