ブロックチェーンの分岐「ソフトフォークとハードフォーク」

はじめに

ブロックチェーンという技術」でブロックチェーンについて説明しましたが、今回は、そのブロックチェーンのチェーンが分岐することについて過去の事例を交えて紹介したいと思います。

「ソフトフォーク」と「ハードフォーク」

ブロックチェーンのチェーンが分岐することを「フォーク」と呼びますが、そのうち分岐したブロックが「新旧バージョンで互換性を持ち、新バージョンのブロックが旧バージョンでも有効なもの」を「ソフトフォーク」と呼びます。ソフトフォークはあくまで互換性のある仕様変更のため、分岐はいずれ収束することになります。

一方、あるブロックを起点に、ブロックチェーン自体の仕様変更により互換性のない分岐を起こすのが「ハードフォーク」です。この場合、分岐したチェーンは以前のチェーンとの互換性はありません。ハードフォークは、旧バージョンと新バージョンとで互換性がない為、ブロックチェーンが再び合流することがなく、永続的な分岐となります。旧バージョンでのルールが新バージョンで無効になってしまうので、この変更は慎重に行う必要があります。

基本的に分岐は開発コミュニティーを中心として該当ブロックチェーンの問題解決を目指すために行われますが、コミュニティー内で分裂が起こることでもハードフォークが実行され場合があります。イーサリアムなどではそのような動きが実際に起っており、旧バージョンのブロックチェーンを利用した仮想通貨とは別の仮想通貨を作る、すなわち2つの通貨に分裂する現象が起こります。

旧バージョンから新バージョンに移行することで以前のバージョンとは互換性がなくなり、以前までの残高を共有することもできなくなることを意味するので、分岐後にどちらのブロックチェーンを使用していくのかという選択を当該仮想通貨の全利用者が意識しなくてはならなくなります。

イーサリアムのハードフォーク事例

イーサリアムは2016年にハードフォークを行い、イーサリアム(Ethereum:ETH)とイーサリアムクラシック(Ethereum Classic:ETC)に分岐しました。このハードフォークの原因はThe DAOと呼ばれるハッキング事件です。

The DAO事件とは、2016年6月にイーサリアム上でスマートコントラクトとして実装されたシステムの問題点を突いて、約50億円分のイーサリアム(ETH)が盗まれた事件です。

本事件の対応として、ソフトフォーク、ハードフォークいずれも検討されましたが、結果としてハードフォークが実施されました。

まずソフトフォークとしてETHを盗み出したWalletを凍結して引き出せなくする方法が検討されました。もちろんソフトフォークなので分岐の前後でチェーンの互換性がありますが、凍結をしてしまう為、盗まれたETHを取り戻すこともできなくなってしまいます。

一方、あるブロックを起点にブロックチェーン自体の仕様変更により互換性のない分岐を起こすハードフォークを用いて、本事件の対応として「ETHが盗まれる以前の状態に戻してしまう」つまり「盗まれた以前の状態から別のブロックチェーンを作ることで、ETHが盗まれたこと自体をなかったことにしてしまう」方法が検討されました。

結果的にはこのハードフォークが選択されたのですが、イーサリアムに参加している人々の中にはハードフォークに反対する立場の人たちも当然存在し、その結果として、以前の状態を継続する「イーサリアム・クラシック(ETC)」と新しくフォークした側である「イーサリアム(ETH)」の2つが存在することになりました。

ちなみに、本事件はソフトウェアの脆弱性を突かれたことが原因ですが、イーサリアム自体の脆弱性ではなく、イーサリアムのスマートコントラクトとして実装された「The DAO」というブログラムの実装ミスによる脆弱性があった事が原因です。

「スマートコントラクト」とは、ブロックチェーンにおける契約の自動化のことで、契約条件の確認から契約の履行までの処理をプログラムで自動的に実行することです。詳細は別の機会に説明します。

このようにブロックチェーンの仕様を大きく変更するために利用されるハードフォーク・ソフトフォークは、ブロックチェーンにおいて大きな出来事となるターニングポイントです。ブロックチェーンの歴史を学ぶ上では避けて通れない概念であり、今後もフォークに関する話題は登場すると思われるので、上記で述べた概念は理解しておく事が重要です。

Cardano/ADA(カルダノエイダ)のステーキング方法はこちら