本文へスキップ
buybitcoinsmart

用語集 / マイニングとコンセンサス

コンセンサスルール

コンセンサスルールとは?
コンセンサスルールとは、すべてのフルノードがブロックに対して適用する妥当性の確認のことであり、たとえ1つでも破れば、そのブロックがどれだけの作業量を伴っていても無効になります。

そのルールブックは細部にわたります。二重支払いはなく、入力より価値の高い出力もなく、スクリプトは有効で、coinbaseは補助金に手数料を加えた額を超えて主張しません。Bitcoin Coreはその数値をハードコードしています。ブロックあたり4,000,000のweight unit、80,000の署名オペレーション、そしてマイニングされたコインを使用できるようになる前に100ブロックの待機です。これらのルールがあるため、どの取引所も、ネットワークが決して生成していないコインをあなたに与えることはできません。

仕組み

コンセンサスルールは4つのグループに分かれ、そのほとんどは意図的に退屈です。

最初のグループはお金を規定します。ブロックの報酬は210,000ブロックごとに半減し、coinbaseの出力は、その補助金に実際に含まれるトランザクションの手数料を加えた額を1 サトシたりとも超えて主張できません。ブロックが生成したコインは、さらに100ブロックの間は費やせません。その他のすべてのトランザクションは、存在し、まだ費やされておらず、それをロックしたスクリプトを満たす出力を費やす必要があり、出ていく合計が入ってくる合計を超えることは決してありません。

2番目のグループはリソースを規定します。検証は通常のマシンにとって十分に安価であり続ける必要があるからです。ブロックは4,000,000weight unitまたは80,000署名オペレーションユニットを超えられません。3番目のグループは構造を規定します。coinbaseトランザクションは最初に来て1回だけであり、ヘッダーのマークルルートは存在するトランザクションと一致しなければならず、ヘッダーのハッシュは難易度ルールが要求するターゲット以下でなければなりません。4番目のグループは時間を規定します。ブロックのタイムスタンプは、直前の11ブロックの中央値より後でなければならず、ノード自身の時計より2時間を超えて先行してはなりません。そしてBIP113以降、ロックタイムはこの同じ中央値時間を基準に測られます。

これらのルールがどこに書かれているかが厄介な点です。独立した仕様は存在しません。ルールとは、デプロイされたコードが受け入れるものであり、ネットワークの圧倒的多数にとってそれはBitcoin Coreの検証ロジックを意味し、その癖や偶然も含みます。だからこそ、別の言語での書き直しは改善ではなく危険と見なされ、最もよく知られた派生版であるBitcoin Knotsは、Coreのコンセンサス動作をバイト単位でそのまま保ち、リレーとマイニングのポリシーだけが異なります。

このリストの変更は2つの方向のいずれかで行われます。ソフトフォークは可能性を取り除くため、新しいルールの下で作られたブロックも古いソフトウェアには有効に見えます。厳格なDER署名エンコーディングはブロック363,725で必須となり、OP_CHECKLOCKTIMEVERIFYはブロック388,381で必須となり、どちらもネットワークを分裂させませんでした。ハードフォークは可能性を追加するため、アップグレードしていない人には新しいブロックが無効に見え、採用が普遍的でない限り2つのチェーンを生みます。

ビットコインを購入するときにこれが重要な理由

コンセンサスルールは、ビットコインを保有するうえで、後から誰もあなたと再交渉できない唯一の部分です。

コンセンサスルールは、少数のリスクに対して硬い下限を設定します。誰もスケジュール外でコインを発行できず、鍵なしで出力を費やせず、実際の作業の下に埋もれた支払いを削除できません。その下限は狭く、その外側に何があるかを正確に述べる価値があります。そこが人々が実際にお金を失う場所だからです。取引所の支払不能、シードフレーズを収集するフィッシングサイト、口座を凍結するサポート担当者、予算外に届く税の請求です。これらのいずれもルール違反ではありません。ルールが決して網羅しなかった何かを信頼することが関係しています。

この区別は、宣伝文句を試す手段を与えます。あるサービスが確認済みの支払いを取り消せるなら、それはビットコインのトランザクションを取り消したのではなく、自社の台帳を調整したのであり、あなたは決してオンチェーンにいませんでした。ある製品がブロックの許すより速い決済を宣伝するなら、それはあなたに信用を供与し、自らリスクを負っているのであり、それが自分が買ったものだと分かっていれば、まったく良いサービスかもしれません。あるコインが毎秒数千のトランザクションでビットコインの安全性を主張するなら、上記のリソース制限こそが、ビットコインがそうしない理由です。

コンセンサスルールが断じてそうではないのは、法律です。ネットワークは地球上のすべてのユーザーに同じチェックを適用しますが、法的なルールブックは国境ごとに変わります。だからこそ当サイトの国別ガイドは、このページの内容とは別に存在します。有効性はノードが決めます。合法性、報告義務、そして取引所がそもそもあなたを受け入れるかどうかは、あなたの管轄区域が決めます。そして両者が互いに協議することに合意したことは、ただの一度もありません。

5時間だけ存在した1,840億ビットコイン

2010年8月15日、ブロック74,638のトランザクションが、それぞれ920億ビットコインを超える2つの出力を生成しました。

バグは算術でした。コードは各出力が妥当な額であることを確認しましたが、それらを合計してオーバーフローする値にしたため、供給スケジュール全体より大きい合計が小さな正の数として読み取られ、通過しました。Satoshi Nakamotoは数時間以内に修正を加えたバージョン0.3.10を公開し、ノードはそれに切り替え、修正されたチェーンが53ブロック後に障害のあるチェーンを追い越しました。この事件はCVE-2010-5139として記録され、ビットコインの供給がスケジュールを超えた唯一の事例として残っています。

2つの教訓が残ります。2,100万の上限は物理法則ではなく、1行のコードであり、コードは間違うことがあります。そして修理がうまくいったのは、まさに誰もそれを監督していなかったからです。何千もの独立した運用者がそれぞれ修正されたソフトウェアを実行することを選びました。それがコンセンサスルールがかつて持った唯一の仕組みです。

コンセンサスルールvs mempoolポリシー

コンセンサスルールは何が有効かを決め、mempoolポリシーはノードが何を中継するかを決めます。ポリシーはより緩く、ローカルで、ノードごとに調整可能です。デフォルトの最小リレー手数料1sat/vB、レガシー出力における546サトシのダストしきい値、データを運ぶ出力への制限、標準と見なされるスクリプトタイプのリストです。ポリシーに反すれば、あなたのトランザクションは単に伝播しないかもしれません。コンセンサスルールに反すれば、それを含むブロックは決して存在できません。マイナーは一部のノードが中継しなかったトランザクションを定期的に含め、その結果のブロックはまったく有効です。だからこそ「私のウォレットは非標準と言う」は回避策のあるルーティングの問題であり、「無効」は最終的なのです。

混同しやすい用語

よくある質問

2,100万BTCの供給上限は変更できますか?

実質的にすべてのノード運用者がそれを許可するソフトウェアの実行を選んだ場合に限り可能であり、それは現在のビットコインからハードフォークによって離れることを意味します。保有者、取引所、マイナーは供給を増やすことでいずれも損をするため、これまで意味のある支持は存在しませんでした。

ノードがリレーを拒否したトランザクションは無効ですか?

いいえ。リレーはポリシーでありノードごとに異なり得ますが、有効性はコンセンサスであり、どこでも同一です。ノードのポリシーに適合しないトランザクションでも、完全に有効なブロックにマイニングされることがあります。

ビットコインのコンセンサスルールはどこに書かれていますか?

仕様書ではなくコードに書かれています。Bitcoin Coreの検証ロジックが事実上のルールブックであり、個々の変更はBIPに記述されています。そのため代替実装は、それを再解釈するのではなく、その挙動を正確にコピーすることを目指しています。

次に読む

関連用語

マイニングとコンセンサスのその他の用語

このページを英語で読む