
ハードフォークとソフトフォーク:ブロックチェーンはどのようにルールを変えるのか
ブロックチェーンのルールは固定されたものではありません。Bitcoin は新しいアドレスタイプを追加し、Ethereum はマイニングからステーキングへと移行し、小規模なチェーンも定期的にアップグレードしています。しかし、更新すべき中央サーバーは存在しません。各ノードがそれぞれルールのコピーを実行しており、ルールを変えるには何千もの独立した運営者の合意を得る必要があります。
その方法は二つあり、ソフトフォークとハードフォークと呼ばれます。両者の違いによって、古いソフトウェアが動作し続けるかどうか、そして時には一つのコインが二つになるかどうかが決まります。
ルール、ノード、合意
すべてのフルノードは、すべてのブロックを自らのルールに照らして検証します。ルールに違反したブロックは、誰がマイニングしたかに関係なく拒否されます。これこそがブロックチェーンを不正しにくくしている仕組みであり、同時にその変更を繊細なものにしている理由でもあります。一部のノードが新しいルールを、別のノードが古いルールを実行していると、どのブロックが有効かについて意見が分かれる可能性があります。
ソフトフォーク:ルールを厳しくし、古いノードも追従できる
ソフトフォークはルールをより厳格にします。新しいルールで有効なブロックは古いルールでも有効なため、アップグレードしないノードもチェーンに追従し続けます。ただ、新しい制約を自ら適用しないだけです。
Bitcoin の大型アップグレードはソフトフォークで行われてきました。2017 年の SegWit は署名の保存方法を変え、2021 年の Taproot は Schnorr 署名と、スクリプトにコミットする新しい方法を追加しました。古いノードはこれらの新しいトランザクションを理解できなくても有効と見なしました。だからこそ Taproot はネットワークを分裂させることなく導入できたのです。
ソフトフォークは一般的に安全性が高いと考えられています。アップグレードしない人にとって何も壊れないからです。その代わり、新機能は古いルールの範囲内に収まるように設計しなければならず、それが機能を複雑にすることがあります。
ハードフォーク:新しいルールで、古いノードは取り残される
ハードフォークはルールを緩和または変更するため、新しいルールで有効なブロックが古いルールでは無効になることがあります。アップグレードしないノードは新しいブロックを拒否し、チェーンへの追従をやめてしまいます。
ほぼ全員がアップグレードするなら、ハードフォークは単なる協調的なアップグレードにすぎません。多くのチェーンはスケジュールに沿ってハードフォークを実施しています。Ethereum の大型アップグレード、Zcash のネットワークアップグレード、Kaspa のプロトコルアップグレードは、いずれもエコシステム全体がそろって移行する計画的なハードフォークです。
一定規模のグループがアップグレードを拒否した場合、結果はチェーン分裂となります。フォーク時点までは同じ履歴を共有し、その後は別々の道を歩む二つのチェーンが生まれます。
フォークが新しいコインを生むとき
チェーン分裂からは、よく知られたコインがいくつも生まれています。
- Ethereum と Ethereum Classic は、DAO ハッキングの影響を巻き戻すかどうかをめぐる対立の末、2016 年に分裂しました。
- Bitcoin と Bitcoin Cash は、スケーリングの方法、つまりより大きなブロックか、SegWit をはじめとする別のアプローチかをめぐって 2017 年に分裂しました。Bitcoin Cash は独立したチェーンとして存続しています。
分裂後、フォーク時点でコインを保有していた人は、同じ鍵で管理されたコインを両方のチェーン上に持つことになります。タダでお金がもらえるように聞こえますし、実際そうなることもありますが、リスクも伴います。リプレイ攻撃では、チェーン側が保護策を加えない限り、一方のチェーンのトランザクションがもう一方で再ブロードキャストされる可能性があります。また、秘密鍵を求める詐欺的な「請求」ツールも存在します。さらに、フォークが引き継ぐのは残高だけではありません。同じバグでも結末がそれぞれ異なることがあります。
フォークがあなたにとって意味すること
- ほとんどのフォークでは何もする必要はありません。 コインはそのままの場所にあり、鍵も引き続きそれを管理しています。
- ウォレットの更新が必要なこともあります。 トランザクションや署名の形式を変えるハードフォークでは、古いウォレットソフトウェアがネットワークに拒否されるトランザクションを作成してしまう可能性があります。告知されたアップグレードの前後は、ウォレットを最新の状態に保ちましょう。
- 取引所はフォークの前後に入出金を一時停止することがあります。 これは通常の慎重な対応です。
- 「フォーク請求」サイトにリカバリーフレーズを入力してはいけません。 新しいチェーン上のコインが欲しい場合は、まず主な資金を新しい鍵に移し、その後で信頼できるウォレットソフトウェアを使って古い鍵にアクセスしてください。
- 争いのある分裂の後は焦らないこと。 リプレイ保護と取引所の対応が明確になるまで待ちましょう。
フォークと SSP
SSP は、アップグレードのスタイルが大きく異なるチェーンをサポートしています。Bitcoin のソフトフォーク、Zcash などのチェーンで予定されたハードフォーク、そして EVM チェーンの定期的なアップグレードです。アップグレードによってトランザクションの作成方法や署名方法が変わる場合、SSP Wallet と SSP Key はそれに合わせて更新されます。
Zcash がよい例です。Zcash のネットワークアップグレードのたびに、すべてのトランザクション署名がコミットする値が変わるため、古いルール向けに作られたウォレットはネットワークに拒否される署名を生成してしまいます。SSP は二つの署名を必要とするため、SSP Wallet と SSP Key の両方を新しいルールに合わせて更新する必要があり、両方が更新されるまでネットワークはトランザクションを受け付けません。
実践的なポイント:特に告知されたネットワークアップグレードの前後は、両方のアプリを最新の状態に保ちましょう。
率直なまとめ
ソフトフォークはルールを厳しくすることで古いノードも追従できるようにし、ハードフォークはルールを変更するため全員がアップグレードしなければなりません。ほとんどのハードフォークは、計画どおりに何事もなく終わるアップグレードです。ごく一部がチェーン分裂となり、一つのコインを二つに変えます。
保有者にとって、フォークで対応が必要になることはまれです。ウォレットを最新に保ち、フォークしたコインを「請求」するためにリカバリーフレーズを求めてくるものには警戒し、争いのある分裂の際には状況が落ち着くまで資金の移動を控えましょう。


