0Pricing
Cryptology Academy · レッスン

Proof of Work:マイニングと難易度調整

PoWマイナーを実装し、ノンス探索と目標難易度を理解します。

「Proof of Work:マイニングと難易度調整」はCoddyKit上の無料Cryptology Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCryptology Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cryptology Academyコースには全4レッスンが含まれています。

Proof of Workとは

Proof of Work(PoW)では、ブロック生成者がブロックを追加するために、計算コストの高いタスクを実行する必要があります。これによりスパムを抑止し、チェーンの書き換えを高コストにします。証明の検証は安価で、1回のハッシュ計算で済みます。作業の実行には多数のハッシュ計算が必要です。

マイニングの課題

BitcoinのPoWでは、SHA256d(block_header) < target となるnonceを見つけます。targetは256ビットの数値です。targetが小さいほど、ハッシュ出力に必要な先頭ゼロが増えるため、有効なnonceは見つかりにくくなります。

PythonによるPoWデモ

import hashlib def mine(data, difficulty): target = "0"*difficulty nonce = 0 while True: h = hashlib.sha256(f"{data}{nonce}".encode()).hexdigest() if h.startswith(target): return nonce, h nonce += 1 nonce, h = mine("block data", 4) print(nonce, h) # hash starts with "0000"

難易度のtarget

Bitcoinのブロックヘッダーには、現在のtargetをエンコードした「bits」フィールドがあります。Target = coefficient * 256^(exponent-3)。例: bits=0x1703a30c → target = 0x03a30c * 2^(8*(0x17-3)) = 約72個の先頭ゼロビットを必要とする256ビットの数値です。

難易度調整

Bitcoinは2,016ブロックごと(約2週間ごと)に難易度を調整します。Targetの調整: new_target = old_target * (actual_time / 2016 * 10 minutes)。ブロックの平均生成時間が10分より短ければtargetは下がり、難しくなります。長ければtargetは上がり、簡単になります。これにより、ブロック生成時間を約10分に維持します。

ハッシュレートとセキュリティ

ネットワークのハッシュレート(H/s)は、マイニングの総計算力を測定するものです。ハッシュレートが高いほど、有効なnonceを偶然見つける単位時間あたりの確率は低くなります。k個のブロックを書き換えるには、攻撃者はk*10 minutesに比例する時間にわたって、ネットワークのハッシュレートの50%超を維持する必要があります。

51%攻撃

ハッシュレートの50%超を持つ攻撃者は、次のことができます: (1) 秘密のフォークをマイニングする、(2) トランザクションを含めたり除外したりする、(3) 支払いが承認された後に、より長いチェーンを公開して二重支払いを行う。できないこと: 他者のコインを盗む、何もないところからコインを作る、チェーンの深い位置にあるトランザクションを取り消す。

ASICマイニングと集中化

BitcoinのSHA256dマイニングは、ASIC(Application-Specific Integrated Circuits)に支配されています。ASICは、単一のハッシュ関数に最適化されたチップです。ASICはCPUより10^6倍効率的です。そのためマイニングが大規模なデータセンターに集中し、中央集権化への懸念が生じています。

メモリハードPoW

Ethereumでは、以前Ethash(現在は非推奨)を使用していました。これは大規模なDAGデータセットを必要とする、メモリハードなPoWです。メモリハード性はASICへの耐性になります(メモリ帯域幅を低コストで最適化するのは困難です)。MoneroはRandomX(CPU最適化、ASIC耐性)を使用しています。ZcashはEquihash(メモリハード)を使用しています。

セルフィッシュマイニング

セルフィッシュマイニング戦略では、見つけたブロックを公開せずに保持し、2つ目のブロックをマイニングしてから、両方を同時に公開します。タイミングが適切であれば、正当なマイナーは孤立したブロックに対して行った作業を無駄にします。平均的に利益を得るには約33%のハッシュレートが必要であり、51%ではありません。

Proof of Stakeという選択肢

Proof of Stake(PoS、The Merge後のEthereumで使用)は、ハッシュ計算の作業をステークされた暗号資産に置き換えます。バリデーターは、ステーク量に比例してブロック提案者に選ばれます。PoSのエネルギー消費量はPoWより99.95%少なくなります。トレードオフとして、異なる信頼の前提と攻撃の経済性があります。

確認問題

Bitcoinの難易度調整は、何を維持しようとしていますか。

まとめ

PoWでは、SHA256d(header) < target となるnonceを見つける必要があります。難易度は2,016ブロックごとに調整されます。ハッシュレートの51%により、二重支払い攻撃が可能になります。BitcoinのマイニングはASICに支配されていますが、メモリハード関数はASICに耐性があります。次は、Bitcoin ScriptとUTXO署名です。

よくある質問

「Proof of Work:マイニングと難易度調整」レッスンは無料ですか?

はい。「Proof of Work:マイニングと難易度調整」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cryptology Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cryptology Academyコースには全4レッスンが含まれています。

「Proof of Work:マイニングと難易度調整」で何を学びますか?

PoWマイナーを実装し、ノンス探索と目標難易度を理解します。 ブラウザで直接実行するハンズオンコードでCryptology Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cryptology Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCryptology Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Proof of Work:マイニングと難易度調整」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCryptology Academyレッスンでコードを書いて実行できますか?

はい。すべてのCryptology Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ハッシュチェーンとブロック連結
  2. Merkle木:大規模環境でのトランザクション完全性
  3. Proof of Work:マイニングと難易度調整
  4. Bitcoin ScriptとUTXO署名検証
← Cryptology Academyに戻る