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