ブロックチェーンのフォーク解説:ソフトフォーク、ハードフォーク、コンテニオウスフォーク | Quicknodeターミナル、コード、またはAIエージェントからQuicknodeを管理できます。CLI、Admin API、MCP、SDKが利用可能になりました。
作成を開始する 回答>ブロックチェーンのセキュリティの基礎について学ぶ>チェーンフォークとは何ですか? // Tags
チェーンフォークハードフォークソフトフォーク
要約:チェーンフォークは、ブロックチェーンのプロトコル規則が分岐し、チェーンがたどる可能性のある経路が2つ以上生じたときに発生します。ソフトフォークは、既存の規則を厳格化する下位互換性のある規則変更を導入するものであり、アップグレードしていないノードも新しいブロックを受け入れ続けるため、ネットワークは統一された状態を維持します。 ハードフォークは下位互換性のない変更を導入するものであり、アップグレード済みのノードと未アップグレードのノードが異なるルールに従うことになる。全員がアップグレードしない場合、チェーンは恒久的に2つの別々のネットワークに分裂する。フォークは、ブロックチェーンが進化・アップグレードし、コミュニティ内の意見の相違を解決するための主要なメカニズムであるが、資産の重複、リプレイ攻撃、エコシステムの分断といったリスクも生じさせる。
わかりやすい説明
ブロックチェーンのフォークを、道路の分岐点のようなものと考えてみてください。これまで、誰もが同じルールの下で同じ道を歩いてきました。その分岐点で、新しいルールが提案されます。その変更が下位互換性がある場合(ソフトフォーク)、新しいルールを採用するかどうかにかかわらず、誰もが同じ道を歩き続けることができます。 道はわずかに狭くなります(ルールが厳しくなります)が、すべての旅行者は依然としてその道を利用できます。変更が下位互換性を持たない場合(ハードフォーク)、道は2つの別々の道に分岐します。旅行者はどちらの道を進むかを選択しなければならず、異なる道を進む者同士はもはや相互にやり取りできなくなります。
ブロックチェーンの用語において、「ルール」とはコンセンサスプロトコルを指します。具体的には、どのトランザクションが有効か、ブロックがどのように構成されるか、ブロックの最大サイズはどれくらいか、ガスはどのように計算されるか、報酬はどのように分配されるかといった事項です。 ネットワーク上のすべてのノードは、ブロックを検証する際にこれらのルールを適用します。ルールが変更された場合、新しいルールを採用したノードと、依然として古いルールを実行しているノードの間で、どのブロックが有効かについて意見が分かれる可能性があります。この意見の相違がどのように解決されるかによって、そのフォークがソフトフォーク(ネットワークが統合されたまま)になるか、ハードフォーク(ネットワークが分裂する)になるかが決まります。
ソフトフォーク
ソフトフォークは、既存のルールを厳格化します。新しいルール下で有効なブロックは、古いルール下でも有効ですが、古いルール下で有効だったブロックの中には、新しいルール下では無効となるものもあります。つまり、アップグレード済みのノードはより厳格な検証を行う一方、アップグレードされていないノードは、新しいブロックが古いルールに違反していないため、引き続きそれらを受け入れます。
SOC 2 タイプ II 認証取得 · ISO 27001
2017年に実施されたビットコインのセグレゲート・ウィットネス(SegWit)アップグレードは、ソフトフォークの典型的な例です。SegWitは取引の署名の保存方法を変更し、取引の実効サイズを縮小するとともに、ライトニングネットワークの実現を可能にしました。アップグレードされていないノードも、SegWitブロックが従来のサイズ制限ルール下で有効であったため、引き続きSegWitブロックを受け入れました。アップグレードされたノードは、署名データの構成に関する追加のルールを適用しましたが、これは古いノードからは認識されませんでした。
ソフトフォークは、チェーンが分岐するリスクがないため、一般的にハードフォークよりも安全であると考えられています。マイナーやバリデーターの過半数が新しいルールを採用する限り、チェーンは統一された状態を維持します。 アップグレードされていないノードは、新機能を理解したり検証したりできない場合がありますが、ブロックを拒否することはないため、ネットワークは単一のチェーンとして維持されます。
ソフトフォークの欠点は、実現できることに制限があることです。新しいルールは下位互換性を保たなければならないため、ブロック構造の変更、アカウントモデルの修正、コンセンサスメカニズムの変更といった根本的なプロトコルの変更は、通常、ソフトフォークとして実装することが不可能です。
ハードフォーク
ハードフォークはルールを緩和したり根本的に変更したりするため、新しいブロックは旧ルール下では無効となります。アップグレードされていないノードは新しいブロックを拒否し、ネットワークは2つのチェーンに分岐します。1つは新しいルールに従い、もう1つは旧ルールに従います。両方のチェーンは、分岐点までは同じ履歴を共有していますが、その分岐点以降では分岐していきます。
ハードフォークの多くは、コミュニティ全体が新しいルールへの移行に合意した、計画的かつ調整されたアップグレードです。イーサリアムがプルーフ・オブ・ワーク(PoW)からプルーフ・オブ・ステーク(PoS)へ移行した際(「ザ・マージ」、2022年9月)も、ハードフォークでした。 すべてのノード運営者、ステーキングプロバイダー、取引所、アプリケーション開発者が連携し、指定されたブロック番号より前にソフトウェアのアップグレードを完了させました。コミュニティが一致団結していたため、旧来のプルーフ・オブ・ワーク(PoW)チェーン(一時的に「EthereumPoW」として宣伝されていた)への支持はごくわずかにとどまり、すぐに存在意義を失いました。
イーサリアムの定期的なネットワークアップグレード(上海、デンクンなど)もハードフォークであり、あらかじめ決められたブロック番号またはタイムスタンプで有効化されます。エコシステム全体が事前にアップグレードされ、旧ルールは廃止されます。こうした協調的なハードフォークは、日常的なメンテナンスであり、論争を招くような出来事ではありません。
論争を呼ぶハードフォーク
最も劇的なフォークは、コミュニティがプロトコルの方向性について合意に至らず、双方とも独立したチェーンを維持するのに十分な支持を得ている場合に発生します。こうした対立を伴うハードフォークの結果、2つの稼働中のブロックチェーンが生まれ、それぞれが独自のコミュニティ、マイナー/バリデーター、トークンの価値、開発チームを持つことになります。
最も有名な論争を呼んだフォークは、イーサリアム・クラシック(Ethereum Classic)です。2016年、The DAOのスマートコントラクトに存在するバグが悪用され、数百万ドル相当のETHが流出した事件がありました。イーサリアム・コミュニティでは、この盗難を元に戻すためにハードフォークを行うべきかどうかについて議論が交わされました。過半数がフォークを支持し、盗まれた資金が返還された新しいチェーン(現在のイーサリアム)が誕生しました。 一方、少数派は哲学的な理由からこのフォークを拒否し(「コードは法である」とし、ブロックチェーンを遡及的に変更すべきではないと主張した)、元のチェーンの運用を継続しました。これがイーサリアム・クラシック(ETC)となりました。現在も両方のチェーンは存続していますが、イーサリアムの方が規模も価値も圧倒的に大きくなっています。
ビットコインキャッシュも、大きな論争を巻き起こしたフォークの一つです。2017年、ビットコインコミュニティでは、取引処理能力をどのように向上させるかについて議論が交わされました。ある派閥は、ブロックサイズを1MBから8MBに拡大することを支持しました。一方、別の派閥はブロックサイズの拡大に反対し、SegWitによるソフトフォークや、ライトニングネットワークのようなオフチェーンのスケーリングソリューションを支持しました。 意見の相違は埋めがたく、2017年8月、大ブロック派はビットコインからフォークを行い、ビットコインキャッシュ(BCH)を誕生させました。その後、BCHは2018年に再びフォークし、ビットコインキャッシュとビットコインSVに分裂しました。
フォークの際には何が起こるのか
ハードフォークが発生すると、元の仮想通貨の保有者は全員、両方のチェーン上で突然同量の資産を保有することになります。例えば、イーサリアムとイーサリアムクラシックの分岐前に10 ETHを保有していた場合、新しいチェーン上で10 ETHを、古いチェーン上で10 ETCを保有することになります。このような資産の重複は、あるチェーンで有効な取引が別のチェーンで再送信される「リプレイ攻撃」など、経済的な複雑さを生み出す可能性があります。
開発者にとって、フォークとは、どのチェーンをサポートするか(あるいは両方をサポートするか)を決定し、ノードソフトウェアを更新し、新しいルール下でスマートコントラクトが正しく動作することを確認し、変更内容をユーザーに周知することを意味します。ノード運営者にとって、フォークが発生するブロック以前にクライアントソフトウェアをアップグレードし、意図したチェーンに追従する必要があります。アップグレードに失敗したノードは旧チェーンに残され、古いデータを提供し続けることになり、アプリケーションが動作しなくなる可能性があります。
ソフトフォークとハードフォークの違いは何ですか?
両者の根本的な違いは、下位互換性にあります。ソフトフォークは、古いソフトウェアでも受け入れられる形でルールを厳格化するため、ネットワークは1つのチェーンとして維持されます。一方、ハードフォークは、古いソフトウェアが受け入れられない形でルールを変更するため、ネットワークが2つのチェーンに分裂する可能性があります。以下の表では、この2つを並べて比較しています。
属性 | ソフトフォーク | ハードフォーク |
|---|
規則の変更 | 既存の規則を厳格化する | ルールを緩和または再定義する |
下位互換性がある | はい | いいえ |
アップグレードされていないノード | 引き続き新しいブロックを受け付けています | 新しいブロックを拒否する |
連鎖的な結果 | ネットワークは統合された状態を維持する | ネットワークは2つのチェーンに分岐する可能性がある |
新しい資産が作成されました | いいえ | はい、保有者は両方のチェーンでコインを受け取ることができます |
例 | ビットコインのSegWit(2017年) | 「The Merge」、イーサリアム・クラシックの分岐 |
これら2種類のフォークは、ブロックチェーンが時間の経過とともにアップグレードしていく仕組みです。ソフトフォークはリスクが低い反面、その範囲は限定的ですが、ハードフォークは、すべての参加者が一斉にアップグレードすることを条件として、より根本的なプロトコルの変更を可能にします。
偶発的または一時的なフォークとは何ですか?
すべてのフォークが意図的なプロトコル変更であるわけではありません。偶発的なフォークは、2人のバリデーターがほぼ同時に競合するブロックを生成し、どのブロックがチェーンを延長するかについてネットワークが一時的に分裂した際に発生します。ネットワークは1~2ブロック以内に、最も重い有効なチェーンに収束することでこの問題を解決し、孤立したブロックは破棄されます。この一時的な分裂は、ブロックチェーンの再編成と密接に関連しています。
こうした一時的な分岐は正常な現象であり、通常はユーザーには見えませんが、未確認ブロックを確定済みとして扱うアプリケーションでは、後で消えてしまうトランザクションが表示されることがあります。資金を確定扱いとする前にファイナリティを待つことは、リオーガナイゼーションによってブロックから除外されてしまうブロックに基づいて処理を行ってしまうことに対する、標準的な対策です。
フォーク時のリプレイ攻撃とは何ですか?
ハードフォークによって履歴を共有する2つのチェーンが生成された場合、分岐時点ではアカウント、残高、署名方式が同一であるため、一方のチェーン向けに署名されたトランザクションが、もう一方のチェーンでも有効となる可能性があります。 攻撃者は、2つ目のチェーン上であなたのトランザクションを再送信(リプレイ)することで、あなたが意図していなかった資金を移動させることが可能です。適切に管理されたフォークでは、一意のチェーンIDなどのリプレイ保護機能が追加されるため、トランザクションは意図したネットワーク上でのみ有効となります。ウォレットやノードの運営者は、意見の分かれる分岐が発生した後、トランザクションを行う前に、リプレイ保護が適切に実装されていることを確認する必要があります。
開発者はブロックチェーンのフォークにどのように備えるべきでしょうか?
計画的なフォークへの準備は、主にタイミングとテストが鍵となります。以下のチェックリストは、予定されているハードフォークに先立ち、ほとんどのチームが実施する手順をまとめたものです。
ステップ | どうすればいいか | その重要性 |
|---|
スケジュールを確認する | フォークブロックまたはタイムスタンプに注意してください | これを逃すと、古いチェーンのままになってしまう |
クライアントのアップグレード | 事前にノードのソフトウェアを更新してください | 既存クライアントは新しいブロックを拒否する |
テストネットでのテスト | 新しい規則に基づいて契約内容を検証する | 互換性の変更を早期に検出する |
リプレイ防止機能の確認 | 一意のチェーンIDがあるか確認する | クロスチェーンのリプレイを防止する |
マネージドインフラストラクチャを利用する | アップグレード作業をプロバイダーに委託する | 単一障害点を排除する |
マネージド RPC を活用しているチームは、プロバイダーがアクティベーション前にノードをアップグレードするため、こうした作業のほとんどを回避できます。イベント駆動型アプリの場合、WebhooksやStreamsを利用すれば、クライアントを手動で管理することなく、フォーク後のデータを配信できます。
よくある質問
ハードフォークで無料のコインはもらえるのですか?
ハードフォークによって2つ目の永続的なチェーンが生成された場合、元の資産の保有者は、フォーク発生時点での残高と同額の残高を新しいチェーン上で保有することになります。イーサリアム・クラシックやビットコイン・キャッシュの保有者がコインを受け取ったのも、この仕組みによるものです。新しい資産に価値が生まれるのは、フォークされたチェーンがコミュニティや市場から真の支持を集めた場合に限られますが、ほとんどのフォークではそれが実現することはありません。
ソフトフォークとハードフォーク、どちらがより安全なのでしょうか?
ソフトフォークは、ネットワークの統一性を維持し、すべての参加者が同時にアップグレードする必要がないため、一般的にリスクが低い。一方、ハードフォークはより強力だが、リスクも高い。アップグレードに失敗したノードは旧チェーンに取り残されてしまう上、意見の対立による分岐がコミュニティの分裂を招く可能性があるからだ。
フォークとリオーガナイゼーションの違いは何ですか?
フォークとは、プロトコルのルールやチェーンの履歴に分岐が生じることを指し、一方、リオーガナイゼーションとは、ネットワークが最近追加されたブロックを競合するブランチのブロックに置き換えることを指します。偶発的に発生した短期間のフォークはリオーガナイゼーションによって解決されますが、ハードフォークは恒久的なルール変更であり、2つの永続的なチェーンが生成される可能性があります。
ブロックチェーンのフォークは元に戻せるのか?
計画的なハードフォークや論争の的となっているハードフォークは、両方のチェーンが独立したサポートを得た時点で恒久的なものとなります。これは、それぞれのネットワークが独自のルールに基づいてブロックを生成し続けるためです。対照的に、偶発的なフォークは、ネットワークが単一の正規チェーンに収束するにつれて、1~2ブロック以内に自動的に解消されます。
フォークは私のアプリケーションにどのような影響を与えますか?
計画的なフォークが発生した際、ノードは正規のチェーンに追従し続けるために、アップグレードされたソフトウェアを実行する必要があります。そうしないと、古いデータを提供することになってしまいます。フォークの移行を処理するマネージドRPCプロバイダーを利用すれば、ユーザー側で特別な操作を行うことなく、アップグレード期間中もエンドポイントが正規のデータを返し続けることができます。
Quicknodeによるフォークの処理方法
Quicknodeのインフラチームは、サポート対象の80以上のネットワークにおいて、予定されているすべてのハードフォークを監視し、フォークの発動前にノードが確実にアップグレードされるよう確保しています。これにより、Quicknodeを利用する開発者は、クライアントのアップグレードを自ら管理する必要がなく、アプリケーションがフォークの「間違った側」に残ってしまうリスクを回避できます。チェーンで予定されたハードフォークが行われる際、Quicknodeがシームレスに移行を処理するため、お客様のRPCエンドポイントは、正規のアップグレード済みチェーンから引き続きデータを提供し続けます。
両方のチェーンが引き続き稼働している論争の的となっているフォークについては、Quicknodeはコミュニティの支持、セキュリティ、開発者の需要を評価した上で、新しいチェーンをサポート対象ネットワークとして追加するかどうかを決定します。Quicknodeのマルチチェーンインフラストラクチャにより、新たにフォークされたチェーンのサポート追加はインフラ上の決定事項であり、顧客にとっての開発上の負担にはなりません。
QuicknodeStreams は、データをファイナリティ順に配信することでフォークの遷移を円滑に処理し、フォークのアクティベーション期間中に一時的にチェーンの不整合が生じた場合でも、パイプラインに誤ったデータが配信されることがないよう保証します。組み込みの再編成処理機能により、フォークのアクティベーションブロック中に発生しうるエッジケースにも対応しています。
参考資料