本文へスキップ
BecomeCoder

Solidityコース · 第1章 ブロックチェーンとスマートコントラクト · レッスン3

合意形成 ― マイニングとProof of Work / Stake

ローカル実施

導入

台帳を全員で持つなら、「次のブロックを誰が作り、どれを正しいと認めるか」を全員で一致させる必要があります。この仕組みを 合意形成(コンセンサス) と呼びます。代表的な2方式、PoWPoS を見てみましょう。

説明

新しいブロックをネットワークに追加する権利を得るには、ルールで決められた「面倒な条件」を満たす必要があります。

PoW(Proof of Work / 仕事の証明) … 「条件を満たすハッシュ」を見つけるまで、数値(ノンス)を変えながら膨大な計算を繰り返す。最初に見つけた人が次のブロックを作れ、報酬をもらえる。この作業を マイニング(採掘) と呼びます。ビットコインが採用。

flowchart TD
    T[未確定の取引を集める] --> P[ブロック案を作る]
    P --> N[ノンスを変えて<br/>ハッシュを計算]
    N --> C{先頭が0000...<br/>の条件を満たす?}
    C -- いいえ --> N
    C -- はい --> B[ブロック確定!<br/>ネットワークへ発表]
    B --> V[他ノードが検証して<br/>各自の台帳に追加]

PoS(Proof of Stake / 保有の証明) … 通貨をたくさん預けて(ステーク)担保にした人の中から、次のブロックを作る人を選ぶ。膨大な計算をしないため消費電力が圧倒的に少ないのが利点。Ethereum は 2022 年に PoW から PoS へ移行しました(The Merge)。

PoWPoS
選ばれ方計算を最初に解いた人通貨を多く預けた人から抽選
コスト大量の電力・計算機預ける資金(ステーク)
不正のペナルティ電力の浪費預けた資金の没収(スラッシング)
代表例ビットコイン現在のEthereum

どちらも共通するのは「不正をするより正直に従うほうが得」という設計です。多数の参加者が正直に動く限り、改ざんは割に合わず、台帳の正しさが保たれます。

やってみよう

PoW で「1つのブロックを書き換える」には、そのブロック以降を全部計算し直したうえ、正直なネットワーク全体の計算力を上回り続けねばなりません。これが「51%攻撃」が非現実的とされる理由です。なぜ後ろのブロックほど改ざんが難しくなるか、レッスン2の鎖の図と合わせて考えてみましょう。