ブロックチェーン技術では、ハードフォーク(Hard Fork)とソフトフォーク(Soft Fork)は、ネットワークプロトコルをアップグレードおよび更新するための2つの異なる方法です。これらは実装においていくつかの顕著な違いがあり、ブロックチェーンネットワークの構造と操作に影響を与えます。
ハードフォーク 「ハードフォーク」とは、ルール変更後、新しいバージョンのネットワークが旧バージョンのネットワークと互換性がなくなることを指します。これにより、ブロックチェーンは2つの分岐(互いに影響しない平行なチェーン)を形成します。
ソフトフォーク 「ソフトフォーク」とは、ルール変更後、新しいルールが導入されたノードが、古いルールのノードとも互換性を保ちながら相互作用できることを指します。これにより、新しいバージョンのネットワークは旧バージョンと互換性があります。
簡単な比較
ハードフォーク | ソフトフォーク |
---|---|
新しいブロックと古いブロックはそれぞれのプロトコルに従います。 | 古いブロックと新しいブロックはプロトコルを共有します |
古いものと新しいものは相容れない | 新旧互換性あり |
e.g. 2016 DAO | e.g. 2017 Segwit |
状況分析
例えば、ネットワークノードの半数がブロック容量を2MBから3MBに拡大したいと考えているとします。3MBのブロックが旧バージョンのノードに送信されると、ブロックは拒否されます。旧バージョンのノードのルールでは、2MBが有効なブロックの上限とされているからです。この場合、ネットワークプロトコルは2つに分かれ、それぞれ異なる通貨を使用します。すべてのアカウントの残高は元の記録から新しいチェーンにクローンされます。ユーザーがフォーク前に20BTCを持っていた場合、2つのチェーンそれぞれに20BTCと20新BTCのアカウントが存在します。
例えば、元のブロック容量が2MBで、半数のネットワークノードがブロック容量を1MBに制限し、大きすぎるブロックを無効とする新しい制限を実施するとします。旧バージョンのノードは引き続きブロックを受信またはブロードキャストできます。この場合、新しいネットワークはすべてのノードを対象にし、ルールのバージョンに制限されません。ビットコインの隔離証明(SegWit)はソフトフォークの一例です。このフォークは、ブロックとトランザクションの新しい形式を巧妙に導入しました。更新されていないノードは引き続きブロック情報を受信できますが、新しいトランザクションの検証には参加しません。