ブロックチェーンはブロックが連鎖的に伸びていて、あるタイミングで分岐(フォーク)することがあります。ブロックチェーンにおいて「フォーク」という言葉はさまざまな文脈で使われることが多く、実際には5種類ほどに分類することが可能です。
特にソフトフォークとハードフォークの違いは分かりにくいことが多く混乱しやすい部分となっています。
そこで、ここではブロックチェーンにおけるフォークの種類について紹介し、ソフトフォークとハードフォークの違い、およびハードフォークの内訳についてもお伝えしていきます。
フォークの分類
ブロックチェーンにおける「フォーク」とは分岐を意味し、本来は一本鎖であったブロックチェーンが分岐して二本鎖になってしまうことを言います。
しかし、上図のようにフォークにもさまざまな種類が存在します。まずは、ブロックの同時生成による「ただのフォーク」とプロトコルのルール変更に伴うソフトフォークとハードフォークに分けられます。さらに、ハードフォークも「計画的なハードフォーク」と「意図しないハードフォーク」、「新コインの派生」に分類することが可能です。
ブロック同時生成によるフォーク
ブロックチェーンは、あるコンセンサスアルゴリズムにしたがって新しいブロックが追加されていき伸びていきます。プルーフ・オブ・ワークでは、膨大な計算により十分に小さいナンスを探し出すことによりブロック生成、つまりマイニングが成功します。
参考:プルーフオブワーク(PoW)の仕組みを知らずにビットコインは語れない
このとき2グループのマイナーが同時にマイニングに成功すると、一時的にブロックチェーンは分岐します。これが上図において「ただのフォーク」と分類しているフォークです。
多くのブロックチェーンにおいては、「最も長いブロックチェーン」や「最も計算が積み重なっているブロックチェーン」をメインチェーンとする、とプロトコルで定めてありますので、分岐した一方のチェーンはデータ的になかったことになります。
なので、マイニングの同時成功によるフォークに関しては問題ありません。ビットコインのブロックチェーンの場合、この類いのフォークはほとんどのケースで1ブロックのみの分岐で終わります。
特にイーサリアムのブロック生成時間は平均15秒なので、ブロック生成時間が早い分、フォークもよく起こります。そのため、イーサリアムではommerという「叔父」にあたるブロックの生成にもマイニング報酬を与えることでブロックチェーンのセキュリティを高めています。
プロトコルのルール変更
仮想通貨では技術的なアップデートのためにプロトコルのルールが変更されることがあります。例えば、ネットワークにおいて新しい機能を追加したり、ブロックのサイズを変更したりすることがあげられます。より分かりやすく言うと、iPhoneでiOS10からiOS11にアップデートされるようなことです。
このようにコードベースのプロトコルでルール変更を行う場合はフォークが必要になります。
前項の「ブロック同時生成によるフォーク」が一時的なフォークであったのに対し、ルール変更によるフォークは永久的なフォークになります。さらに、ルール変更によるフォークはソフトフォークとハードフォークに分けることができます。
ソフトフォークとは
ソフトフォークとはよく前方・後方互換性があるアップデートと言われます。つまり、ソフトフォークによるルール変更では、アップデート前のプロトコルでもアップデート後のプロトコルでも互換性があるということです。
なので、アップデートしていないノードもアップデート後のトランザクションの検証および承認を行うことができます。しかし、アップデート前のブロックはブロックチェーンに追加することはできません。
つまり、ソフトフォークが実施された後、アップデートをしていないマイナーが生成したブロックはブロックチェーンに追加されることはないのです。ソフトフォーク実施後は、最新版のブロックのみが追加されていき、旧版のルールに従っているブロックは追加できません。なので、ソフトフォーク後の新ブロックチェーンだけが伸びていくことになります。
このような仕様を考えると、ソフトフォークは徐々にアップデートされていくメカニズムであると言えます。iPhoneで例えると、最新版のiOS11が登場してもユーザーはiOS10を使い続けることができるけど、アプリ開発者はiOS11に対応させないといけない、みたいな感じです。もちろんiOS11の方が機能的に便利なのでユーザーも徐々にiOS11にアップデートしていきます。
ただ、ソフトフォークにも旧ブロックチェーンが伸びていくなどのリスクがあるので、ビットコインにおいてはマイナーの95%以上の同意がなければソフトフォークは実施されないようになっています。
ソフトフォークの例
代表的なソフトフォークは以下の例があげられます。
- P2SH
- Segwit
これらはどちらもビットコインのソフトフォークで、P2SHは送り手がマルチシグネチャのアドレスが使えるようになるアップデートです。Segwitはトランザクション展性とスケーラビリティ問題の対策のためのアップデートになります。
それぞれについて詳しくは以下の記事で解説しているので参考にしてください。
P2SH:ビットコインおけるトランザクションスクリプトの仕組みとその種類
Segwit:ビットコインにおけるSegwitとは結局何なのか。メリットとデメリットを解説
ハードフォークとは
ハードフォークは、ソフトフォークと違ってフォーク前後のバージョンに互換性がありません。ハードフォーク実施後は、アップデートしていないノードはトランザクションの検証も行うことができず、ネットワークから疎外されてしまいます。もちろん、アップデートしていないマイナーは旧バージョンのブロックを新しいブロックチェーンに追加することはできません。
つまり、ハードフォークを実施するときはネットワークに参加する全てのノードが一斉にフォーク後の新しいブロックチェーンを使用する必要があります。そうしないと、ネットワークが分裂してしまうからです。
またiPhoneの例えを出すと、「新しいiOS11を出したらもう古いiOS10は使えないよ。iPhoneを使いたかったら明日までにiOS11をインストールしてね。」みたいな感じです。
このようにハードフォークはソフトフォークに比べて大きなリスクがあることが分かります。なぜなら、コミュニティの参加者全員が一斉に新ブロックチェーンを使い始めなくてはいけなく、一部の参加者が旧ブロックチェーンを使っていくとコミュニティが分裂してしまいます。
さらに、仮想通貨で言うと旧ブロックチェーンで使われるコインは別物になるので、送金トラブルが多発する可能性もあります。もちろん大きなプロトコル変更も伴うのでバグが生じるリスクもあります。
ハードフォークの必要性
なぜソフトフォークではなくハードフォークを行わなければならないのでしょうか。ソフトフォークの方がリスクが低いならば、プロトコルのルール変更は全てソフトフォークで済ませてしまえば簡単なように感じます。
しかし、ハードフォークは互換性のないアップデートである分、柔軟にコードを変更することができ大規模なアップデートを行うことが可能です。例えば、ブロックのサイズを増やしたり、コインの総発行数を増やしたりと根本的なプロトコルもハードフォークなら変更することができるのです。
それに対し、ソフトフォークは互換性のあるアップデートしか行えないため、制限のあるルール変更しかできないのです。
一概には言えませんが、ブロックチェーンではルールの削除を伴うプロトコルの変更はハードフォークでなければ行うことができないことが多いです。
なぜなら、新しいルールが導入されるだけなら旧バージョンのルールも含まれていることになりますが、ルールが削除されると旧バージョンのルールが適用できないことになるので互換性がなくなってしまうからです。
また、このハードフォークはフォークを行う動機によって以下の3つに分類することができます。
計画的なハードフォーク
計画的なハードフォークとは、あらかじめプロジェクトのロードマップで「どのタイミングでどのようなルール変更を伴うハードフォークを行うか」ということを決めていたハードフォークになります。
上述したようにブロックチェーンは技術的な大規模アップデートを行う場合はどうしてもハードフォークが必要になってしまいます。なので、プロジェクトの構想の段階で、いつ、どのようなハードフォークを行うか計画してしまうのです。
これにより、そのプロジェクトの参加者はハードフォークの内容とタイミングをあらかじめ覚悟しているので、比較的安全にハードフォークを実施することができます。
例えば、イーサリアムでは計画的なハードフォークは多く実施されています。なぜなら、イーサリアムのワールドコンピューターという壮大な構想を実現するためには、段階的なハードフォークが必要であると当初から考えられていたからです。
さらに、イーサリアムではこの計画的なハードフォークを混乱なく実施するために、ディフィカルティボムというプロトコルが導入されています。ディフィカルティボムでは、ハードフォーク前の旧ブロックチェーンのブロック生成難易度が急激に上がることで、コミュニティ全体が新ブロックチェーンに移行することのインセンティブを与えています。
ディフィカルティボムについてはこちらの記事でさらに詳しくお伝えしているのでご覧ください。
計画的なハードフォークの例
計画的なハードフォークの実例は以下のようにイーサリアムとモネロ(Monero)で行われています。
- イーサリアムのビザンチウム
- モネロのRCT(Ring Confidential Transactions)
イーサリアムのビザンチウムは、ロードマップで考えられている第3段階目のハードフォークの前半部分で2017年10月に実施され、トランザクションの匿名性が向上するなどしました。
モネロのRCTは2017年1月にハードフォークで導入されトランザクションのプライバシーおよびセキュリティが向上しました。
意図しないハードフォーク
計画的なハードフォークは、あらかじめロードマップで構想されていたのに対し、「意図しないハードフォーク」は計画されていなかったハードフォークです。このハードフォークは、発見された脆弱性の改善やコミュニティ内で思想が合わないことにより一部参加者がハードフォークにより分裂することなどがあげられます。
脆弱性改善の場合はコミュニティ全体がハードフォークを望んでいることが多いのでスムーズに実施されることが多いです。
しかし、コミュニティ参加者同士で考えが合わないことによるハードフォークは、大きな混乱が生じることが多く、コミュニティも分裂し、仮想通貨の価格にも大きく影響することが多いです。
意図しないハードフォークの例
意図しないハードフォークは、コミュニティの分裂という点で以下の事例があげられます。
- イーサリアム・クラシック
- ビットコインキャッシュ
イーサリアムクラシックでは、DAOというハッキング事件が発端でコミュニティの分裂が起きたハードフォークです。DAOはデータ的になかったことにしようとするハードフォークに対し、一部のコミュニティ参加者は反対しハードフォーク後も旧バージョンのブロックチェーンがマイニングされ続けているのです。この旧バージョンのブロックチェーンを使用している仮想通貨がイーサリアム・クラシックになります。
ビットコインキャッシュは、送金をより早くより少ない手数料で行われるようにビットコインからハードフォークした仮想通貨になります。ビットコインキャッシュは、ブロックサイズを現行の1MBから引き上げる方針であったのでハードフォークが必要となりました。
新コインの派生
ビットコインなどの仮想通貨はほとんどがオープンソースであり、誰でもそのソースを参考にして機能を変えることで新しい仮想通貨を生み出すことが可能です。
このような新しいコインはハードフォークによって生み出されます。例えば、以下の仮想通貨はビットコインから派生したコインです。
- Litecoin
- Namecoin
- Peercoin
- Dogecoin
- Auroracoin
この中では特にライトコインが有名ですが、ビットコインと比べて以下のように機能面で違いがあります。
- ブロックの生成時間が平均2.5分(ビットコインは10分)
- コインの発行上限数は8400万枚(ビットコインは2100万枚)
- コンセンサスアルゴリズムにおけるハッシュ関数がScrypt(ビットコインはSHA-256)
このようにハードフォークであれば根本的な機能を変更することができるので、十分なコミュニティの規模があればビットコインをベースとした派生コインを誕生させることが可能なのです。