MSTR Cat

ブロックチェーン/レベル III · ネットワーク/3.1 ノード/レッスン 7

コンセンサスルールと検証

ブロックをお金に変えるルールの一覧

用意するもの公開ブロックエクスプローラーBIP141仕様任意:Bitcoin Coreノード

問い

  1. 最も大きな力を持つマイナーが無限にコインを発行するのを防いでいるのは何でしょうか?
  2. なぜ、あなたのノードが中継を拒否したトランザクションでも有効なブロックに含まれることがあるのでしょうか?
  3. コンセンサスコードが変更された場合、全員がまったく同じ瞬間にアップグレードしなければならないのでしょうか?

探究

  1. コンセンサスルールとは、すべてのフルノードがブロックを検証する際に用いる厳格な基準です。これらは技術的に何が可能かを定めており、発行スケジュール、4,000,000ユニットというブロックウェイトの上限、プルーフ・オブ・ワークの難易度、署名の有効性などが含まれます。いずれか一つのルールにでも違反するブロックは、どれだけのハッシュパワーを投じて生成されたかに関係なく、すべての誠実なノードによって拒否されます。ブロックを提案するのはマイナーで、それを有効と認めるかどうかを決めるのはノードです。この分離により、どの主体も一方的に台帳の状態を変更することはできません。
  2. ポリシールールは、マイニングされる前にノードがピアに何を中継するかを定めるものです。これにはダストのしきい値、最低中継手数料、標準的なスクリプトタイプなどが含まれます。ポリシーに違反するトランザクションはほとんどのノードによって破棄されますが、マイナーがそれをブロックに含めれば有効なままです。この区別は重要です。セキュリティをポリシーによる拒否に頼るのは危険です。その気になった者はピアのフィルターを迂回してマイナーに直接送信でき、コンセンサスを満たしている限り、ネットワークは非標準のトランザクションを受け入れざるを得なくなるからです。
  3. コードこそが仕様です。ルールとは、広く稼働しているノードソフトウェアが実際に適用しているもののすべてであり、エッジケースも含まれます。だからこそ、コンセンサスコードの変更はゆっくりと進められ、Bitcoin Coreの他のどの部分よりも厳しくレビューされるのです。コンセンサスのバグは緊急事態として扱われます。2010年の値オーバーフローバグも2018年のインフレーションバグも、協調したリリースによって緊急に修正されました。
  4. これらのルールを変更するには、協調的な採用が必要です。ソフトフォークはルールを厳格化するため、アップグレードしていないノードも新しいブロックを引き続き受け入れます。一方、ハードフォークはルールを緩和または変更するため、すべてのノードがアップグレードするか、分離するかのどちらかになります。両者については後のレッスンで詳しく扱います。SegWit(2017年8月)はソフトフォークであり、Bitcoin Cash(2017年8月)はブロックサイズ上限をめぐる対立からハードフォークによって生まれました。
  5. ブロックを生成するにはコストがかかりますが、検証するのは安価です。無効なブロックを生成したマイナーは、すべての検証ノードがそれを破棄するため、報酬と費やしたエネルギーを失います。そのため、ルール違反は高くつく賭けになります。このコストが検証の厳格さを補強しています。ネットワークのセキュリティは、数千の独立したノードがすべてのヘッダーとトランザクションをチェックすることに支えられており、単一の障害点によって共有された状態が破壊されることはありません。
  6. mempool.spaceやblockchain.comのようなブロックエクスプローラーを開きます。最近のブロックを任意に選び、その「weight」フィールドを確認します。この数値を、BIP141で定められている4,000,000というウェイト単位の上限と比較します。各ノードが守るコンセンサスの制約の範囲内で、マイナーたちが1バイトあたりの収益を最大化しようとしている様子が、現代のブロックがこの上限にどれだけ近づいているかからわかります。

重要な事実

  • コンセンサスルールはブロックの有効性を定義し、ポリシールールはトランザクションの中継を定義します。
  • SegWit(BIP141)の下では、最大ブロックウェイトは4,000,000ユニットです。
  • コインベースのアウトプットは、使用できるようになるまでに100承認が必要です。
  • SegWitは、ブロック481,824でソフトフォークとして2017年8月に有効化されました。
  • コンセンサスコードは、他のコードよりもはるかに慎重にレビューされます。なぜなら、いかなる相違もチェーンを分断しかねないからです。
  • 非標準のトランザクションは、中継ノードによって破棄されても、マイニングされれば有効となりえます。

演習 九・六・三・一

9集めるBitcoin Coreが新しいブロックヘッダーやトランザクションに対して行う具体的な検証チェックを9つ挙げてください。
6まとめる9つのチェックを、構造的完全性、経済的制約、暗号学的有効性、タイミング制約、状態遷移、ネットワークパラメータの6つのカテゴリーに分類してください。
3絞り込む6つのカテゴリーを、コンセンサスルールが防ぐ3種類の害にまとめてください。
1結晶化するマイナーの意図にかかわらず、ノードによるブロックの拒否が最終的なものである理由を1文で説明してください。

事実確認

日付、数字、主張は、下記に記載された公表資料と照合して確認しました。

インタラクティブ版で開く →

EN PT ES ZH KO RU DE FR MS