
Vitalik:ハードフォーク、ソフトフォーク、デフォルト、強制
TechFlow厳選深潮セレクト

Vitalik:ハードフォーク、ソフトフォーク、デフォルト、強制
ソフトフォークとハードフォークのどちらがプロトコルアップグレードメカニズムとして好ましいか?
著者:Vitalik Buterin
掲載日:2017年3月14日
ブロックチェーンに関する議論の中で、非常に重要なテーマの一つは、プロトコルのアップグレードメカニズムにおいて、ソフトフォークとハードフォークのどちらを優先すべきかという点です。ソフトフォークとハードフォークの基本的な違いは、ソフトフォークが有効な取引の数を厳密に減らすことでプロトコルルールを変更するため、旧プロトコルに従うノードでも(ほとんどのマイナー/バリデータがフォークを実装している限り)新しいチェーン上に留まることができるのに対し、ハードフォークはそれまで無効だった取引やブロックを有効にするため、ユーザーはクライアントをアップグレードしなければ新しいチェーンに残ることができないという点にあります。
ハードフォークには二つのサブタイプがあります:
1. 完全拡張型ハードフォーク(strictly expanding hard forks):有効な取引セットを完全に拡張し、旧ルールが新ルールと互換性を持つように設計されるもの。
2. 双方向ハードフォーク(bilateral hard forks):両方のルールセットが互いに非互換であるもの。
以下は、フォークの種類を示すベン図です:

通常、以下の利点が挙げられます:
- ハードフォークでは、開発者は新しいルールが古いルールに適合するかどうかを気にせずに済むため、プロトコルのアップグレードに柔軟性がある。
- ソフトフォークはユーザーにとってより便利であり、特別なアップグレードを行わなくても新しいチェーンに留まることが可能である。
- ソフトフォークはチェーンの分岐を引き起こす可能性が低い。
- ソフトフォークは、事実上マイナー/バリデータの同意さえあれば実施できる(たとえユーザーが古いルールを使用していても、ノードが新しいルールに基づくチェーンを採用すれば、新しいルールでしか有効でないトランザクションだけがチェーンに取り込まれるため、ユーザーの行動は本質的に不要になる)。一方、ハードフォークはユーザーによる明示的な同意が必要となる。
また、ハードフォークに対する主な批判として、「強制的」であるという点が挙げられる。ここでいう「強制的」とは物理的な力ではなく、ネットワーク効果による強制を意味する。つまり、ネットワーク全体のルールがAからBに変更された場合、個人的にAを好んでいたとしても、大多数のユーザーがBを好みかつBに移行してしまえば、他の人と同じネットワークに留まるために、自分もBに移行せざるを得なくなるということだ。
ハードフォーク支持者はしばしば「悪意ある乗っ取り」を試み、ユーザーを無理やり同行させようとしていると揶揄される。また、チェーンの分裂リスクも、ハードフォークが安全ではないとされる理由の一つである。
しかし私の見解では、こうした批判は誤っている。多くの状況下では、まさにその逆が真実である。この主張は特定のブロックチェーン(イーサリアムやビットコインなど)に限定されるものではなく、こうしたシステム一般に共通する特性から導き出され、すべてのチェーンに適用できる。さらに言えば、以下の議論は「賛成しないユーザーまたはマイナーが多数存在する」といった、対立を伴う変更にのみ当てはまる。もし変更に大きな反対がなければ、どのようなフォーク形式であっても安全に実施できる。
まず、「強制性」について考察しよう。ソフトフォークもハードフォークも、プロトコルを変更することで一部のユーザーを不快にさせるという点では同じである。特に、変更が100%の支持を得られない限り、何らかの形で誰かの不満を生じる。そしてほぼ避けられないのは、異議を唱える人々でさえ、自らのプロトコル上の好みよりも、大多数の人々との同期に伴うネットワーク効果を重視することである。この意味で、両方のフォークはネットワーク効果の観点から見ればいずれも「強制的」である。
しかし、ソフトフォークとハードフォークの間に本質的な違いがある。ハードフォークは「選択参加型」であるのに対し、ソフトフォークはユーザーに選択肢を与えない。ユーザーがハードフォーク後のチェーンに参加するには、自らソフトウェアをインストールして新しいルールを採用する必要がある。つまり、ルール変更に反対するグループは、ネットワーク効果よりも強く自分の信念を重視すれば、理論上は旧チェーンに留まることができる――実際、そうした事例は実際に存在する。
これは完全拡張型ハードフォークにも双方向ハードフォークにも当てはまる。一方、ソフトフォークの場合、フォークが成功すれば、フォークしない元のチェーンは存在しなくなる。したがって、制度的にはソフトフォークの方が強制的であり、分離を促進しない。一方でハードフォークはその逆の傾向を持つ。 私自身の倫理観としては、強制よりも分離を支持するが、他者が異なる考えを持つのも当然である(最も一般的な主張は「ネットワーク効果は極めて重要であり、『一つの通貨』ルールは不可欠だ」というものだが、より穏健な立場もある)。
おそらく、私が上で述べたことを踏まえてもなお、ソフトフォークが「より非強制的」と見なされている理由は、ハードフォークがユーザーに「ソフトウェアの更新を強制する」と感じさせ、一方ソフトフォークではユーザーは何もしなくてよいという印象を与えるからだろう。しかし私は、この直感は誤りだと考える。重要なのは、個々のユーザーが「ダウンロード」ボタンをクリックするという単純な官僚的手続きを行うかどうかではなく、ユーザーが望まないプロトコル変更を強制的に受け入れなければならないかどうかである。この観点から見ると、両方のフォークは最終的に強制的だが、ユーザーの自由度という点では、ハードフォークの方がソフトフォークよりやや優れている。
次に、特にマイナー/バリデータとユーザーの意向が衝突するような、極めて対立を伴うフォークについて考えてみよう。ここでは三つのケースを考える:(i) 双方向ハードフォーク、(ii) 完全拡張型ハードフォーク、(iii) 所謂「ユーザー主導ソフトフォーク(UASF)」。第四のケースとして、ユーザーの同意なしにマイナーがソフトフォークを活性化するパターンもあるが、それは後ほど触れる。
まず、双方向ハードフォークについて説明する。理想的な状況下では、このシナリオは非常にシンプルである。二つの通貨が市場で取引され、トレーダーがその相対価値を決定する。ETH/ETCの事例から明らかなように、大多数のマイナーは歴史的背景よりも価格比に基づいてハッシュパワーを分配し、利益を最大化しようとすることが証拠として多い。

一部のマイナーが思想的にどちらか一方を支持する場合でも、価格比とハッシュレートの乖離を利用して裁定取引を行い、両者を一致させる十分なマイナーが存在する可能性が高い。もし一団のマイナーが特定のチェーンでの採掘を拒否しようとすれば、そのギャップを埋めるインセンティブが生まれる。
ただし、二つのエッジケースが存在する。第一の可能性は、非効率な難易度調整アルゴリズムにより、通貨価値の低下に伴って採掘価値が下がるものの、採掘難易度は下がらないため、採掘が非収益的になるという状況だ。これにより、損失を被りながらチェーンを推進するマイナーはおらず、難易度が均衡に戻るまで動きが止まる。これはイーサリアムでは問題にならないが、ビットコインでは非常に起こり得る。そのため、少数派の算力を持つチェーンは立ち上がることなく消滅する可能性がある。これは良いことか悪いことかは、強制と分離に対するあなたの立場による。前述の私の見解からは、少数派チェーンが難易度調整アルゴリズムによって排除されるのは好ましくないと考える。
第二のエッジケースは、差が極端に大きい場合、大規模な算力を有するチェーンが小規模チェーンに対して51%攻撃を行う可能性がある点だ。しかし、ETH/ETCで10:1の比率であったときでさえ、このような攻撃は起きなかった。したがって、これは確実な結果ではない。ただ、支配的なチェーンのマイナーが強制を好み、分岐を許容しないのであれば、彼らは常にそれを達成する手段を持つ。
次に、完全拡張型ハードフォーク(SEHF)について考える。SEHFでは、フォーク前のチェーンがフォークルール下でも有効であるため、フォーク後のチェーンの価格が低ければ、その採掘価値も低くなり、結果として非フォークチェーンが元クライアントとフォーククライアントの両方で最長チェーンとして受け入れられてしまう。すると、徐々にフォークチェーンは「溺れ」てしまう。
この場合、フォーク成功には強い内在的バイアスがあるという主張がある。つまり、価格低迷によりフォークチェーンが「溺れる」可能性が高まるため、成功しやすくなる。この主張は私には納得できるものであり、だからこそ完全拡張ではなく、あえて双方向ハードフォークを選ぶべきだという良い理由になる。
ビットコインの多くの開発者は、ハードフォーク後に手動で双方向性を確保する提案をしている。しかし、より良い選択肢は、内蔵された双方向ハードフォークを設計することだ。例えばビットコインの場合、未使用のOPコードを禁止するルールを追加し、非フォークチェーン上でそのOPコードを使った取引を行うことで、フォークルール下では非フォークチェーンが永久に無効になるようにできる。イーサリアムの場合、ステート計算の詳細に関するさまざまな点から、ほとんどすべての双方向ハードフォークが自動的に成立する。他のチェーンも、基盤構造に応じて異なる特性を持つだろう。
最後に、前述した「ユーザー主導ソフトフォーク(UASF)」について。UASFでは、ユーザーが直接ソフトフォークルールを活性化でき、マイナーの合意を必要としない。その結果、マイナーは経済的利益から排除される可能性がある。多くのユーザーがUASFに追随しなければ、通貨は分割され、完全拡張型ハードフォークと同様の状況になる。UASFが「選択的」であるとしても、経済的非対称性を利用して成功しやすいように仕向けている(ただし、これが絶対ではなく、UASFが好まれないと思われれば失敗し、単にチェーン分裂を招くだけになる)。
しかし、ユーザー主導ソフトフォークは危険なゲームである。例えば、プロジェクトの開発者が、以前はすべての取引を受け入れていた未使用のOPコードを、新しいルールに合致する取引だけに制限するUASFパッチを作成するとしよう。これは技術的にも政治的にも議論を呼び、マイナーはおそらくその機能を好まない。そこでマイナーは巧妙な方法で抵抗できる:独自に「マイナー主導ソフトフォーク(miner-activated soft fork)」を実装し、その新機能を使った取引を常に失敗させるようにするのだ。
この時点で、三つのルールが存在する:
- OPコードXが常に有効な元のルール。
- OPコードXが、他の取引が新ルールに合致する場合にのみ有効になるルール。
- OPコードXが常に無効になるルール。
注意すべきは、2は1に対するソフトフォークであり、3は2に対するソフトフォークである点だ。この場合、3には強い経済的圧力が働くため、ソフトフォークの目的は達成されない。
結論として、ソフトフォークは、特に対立がある場合には危険なゲームである。マイナーが反撃を始めれば、さらに危険さが増す。完全拡張型ハードフォークもまた危険なゲームである。マイナー主導のソフトフォークは強制的であり、ユーザー主導のソフトフォークはそれほど強制的ではないが、経済的圧力によって多少の強制性を持ち、やはり危険性がある。本当に議論を呼ぶ変更をしたいなら、社会的コストが正当だと信じているのなら、潔くきれいな双方向ハードフォークを行い、リプレイ攻撃防止策を追加して時間をかけ、市場の見えざる手に任せるべきである。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














