Bitcoinマイニングにおけるsha-256
BitcoinがProof-of-Workマイニング、ブロックヘッダー、トランザクションID、Merkleツリーにダブルsha-256ハッシュをどう使用するかを解説。ブロックチェーンセキュリティにおけるSHA-256の役割を理解します。
詳細な説明
BitcoinのProof-of-Workコンセンサスメカニズムは完全にSHA-256上に構築されています。マイナーはブロックヘッダーをSHA-256で繰り返しハッシュしてターゲット閾値以下の値を見つけ、トランザクションはSHA-256ハッシュで識別され、MerkleツリーはSHA-256を使用してブロック内の全トランザクションを効率的に要約します。
ダブルSHA-256(SHA-256d):
BitcoinはSHA-256(SHA-256(data))のようにSHA-256を2回適用します。このダブルハッシュはSatoshi Nakamotoが長さ伸長攻撃への防御として選択しました。HMACも同様の防御を提供しますが、ダブルハッシュの方がシンプルで、すでに数兆のハッシュを計算するマイニングプロセスへのオーバーヘッドは無視できます。
Proof-of-Workマイニング:
Bitcoinブロックヘッダーには前ブロックハッシュ、Merkleルート、タイムスタンプ、難易度ターゲット、32ビットnonceが含まれます。マイナーはこの80バイトヘッダーのSHA-256dを計算し、結果のハッシュ(256ビット数として解釈)が現在のターゲット未満になるまでnonceなどのフィールドを変更します。最近のネットワーク難易度では、ブロックあたり平均で約2^75〜2^80のnonceのテストが必要です。
マイニングハードウェアの進化:
SHA-256マイニングの計算強度はハードウェア軍拡競争を引き起こしました:CPU(2009年)からGPU(2010年)、FPGA(2011年)、そしてASIC(2013年)へ。最新のBitcoin ASICマイナー(Antminer S21など)は毎秒200テラハッシュ(200×10^12 SHA-256d/秒)を約3,500ワットで計算します。
Bitcoinにおけるsha-256のその他の用途:
トランザクションID(TXID)はシリアライズされたトランザクションのダブルSHA-256ハッシュです。各ブロックのMerkleツリーはSHA-256dでトランザクションペアを再帰的にハッシュし、簡易支払い検証(SPV)を可能にします。BitcoinアドレスはSHA-256の後にRIPEMD-160(Hash160)を使用します。ブロックチェーン全体の整合性と不変性はSHA-256の衝突耐性に依存しています。
ユースケース
SHA-256はBitcoinのセキュリティモデルの根幹であり、Proof-of-Workマイニング、トランザクション識別、Merkleツリー構築、アドレス生成に使用されています。