用語集 / プロトコルとアップグレード
マイナー起動型ソフトフォーク
別名はMASFです。
- マイナー起動型ソフトフォークとは?
- マイナー起動型ソフトフォークは、マイニングされたブロックの過半数を大きく超える割合が賛成をシグナリングしたときに有効になり、ブロックのバージョンフィールドを、すべてのノードが自動的に数える投票として用います。
BIP-9で規定されています。
マイナーは、あるルールが良いかどうかを決めているのではありません。十分な数のマイナーがそのルールを適用する準備ができたと宣言し、それによってルールの厳格化が正直な作業を孤立させないようにする、その時期を表明しているのです。BIP-9では、基準は1つの難易度期間の2,016ブロックのうち1,916ブロック、すなわち95%であり、基準を満たすまでカウントは各期間ごとにゼロからやり直されます。
仕組み
シグナリングは、すべてのブロックヘッダーにすでに存在するフィールドを再利用するため、新しいメッセージ種別やレジストリは必要ありません。
2013年にBIP-34とともに導入された当初の方式は、単純にブロックのバージョン番号を引き上げて後ろ向きに数えるものでした。ルールは、直近1,000ブロックのうち950ブロックがより高いバージョンを持てば必須となり、その前段階として1,000ブロックのうち750ブロックの期間中は、そのルールを宣言したブロックだけに拘束力を持ちました。これは機能しましたが、バージョンは厳密に順番に展開しなければならず、2つの提案を同時に進行させることはできませんでした。
BIP-9はカウンターを29個の独立したビットに置き換えました。各提案は1つのビットと開始時刻を確保し、マイナーは自分が採掘するブロックでそのビットを立て、すべてのノードが2,016ブロックの難易度期間全体にわたってそのビットを集計します。しきい値に達すると展開はロックインに移り、適用は1期間全体の後に始まるため、更新していない人にはおよそさらに2週間の猶予が与えられます。しきい値に一度も達しなかった展開はタイムアウトで失効し、そのビットは再利用のために解放されます。
歴史的に重要な2つの変種があります。BIP-91はプロセス全体を336ブロックの80%に圧縮し、SegWitのシグナリングを迅速に必須にできるようにしました。これは2017年7月20日のブロック476,768でロックインし、2017年7月23日のブロック477,120で適用が始まりました。2021年5月1日にBitcoin Core 0.21.1で提供されたSpeedy Trialは、BIP-9のカウントを維持しつつ、基準を2,016ブロックのうち1,815ブロックに引き下げ、試行をおよそ3か月に制限し、最小の有効化高をあらかじめ固定することでロックインと有効化を分離しました。
どこで見られるか
ブロックエクスプローラーはバージョンフィールドを、通常は8文字の16進数の値として表示し、展開が進行中であればどのビットが立っているかを示します。0x20で始まるバージョンは、そのブロックがバージョンビットを使用していることを意味し、下位のビットが個々のシグナルです。
シグナリングはまた、プールが自由記述を書き込むコインベース取引に、より分かりやすい痕跡を残します。文字列"/P2SH/"は2012年にpay to script hashへの対応を示し、"NYA"は2017年にNew York Agreementを示しました。このフィールドはプロトコルではなく飾りですが、しばしば議論が最初に可視化される場所です。
ビットコインを保有する人にとって、シグナリングの割合から読み取るべきことは、それが何ではないかという点です。それは住民投票ではなく、保有量で重み付けされているわけでもなく、あるビットをシグナリングするプールは、他の人がそのプールに貸し出したハッシュパワーを代弁しているにすぎません。ルールは95%に達してもなお不人気であり得ますし、ルールはマイナーの対応がまったくなくてもユーザーによって適用され得ます。
マイナー起動型ソフトフォークvsユーザー起動型ソフトフォーク
両者は異なる問いに答えます。マイナー起動型ソフトフォークは、適用をいつ開始すべきかを問い、ハッシュパワーにその日付を決めさせます。ユーザー起動型ソフトフォークは、まず日付を確定し、マイナーには従うか、さもなくばブロックを拒否されるかを委ねます。2017年には両方が同時に俎上に載っており、重要なのはその順序です。マイナーの道筋は何か月も停滞しており、ユーザーが適用する期限が予定され、その期限が現実味を帯びてから数週間以内にマイナーの道筋が完了しました。