昨日、最近頻繁に行わているEthereumネットワークへの攻撃対策のため、イーサリアムが再びハードフォークを行ったようです。The DAOの件とは違い、理由が理由であるため今回は前回ほど大きな反対意見が出ることなく無事に実行されたと思われます。

そこで今日はハードフォークについて改めて考えてみます。

ハードフォークって何？

以前このブログでも多少書いたと思いますが、ハードフォークとは元々はソフトウェア開発関係の用語で、後方互換性・前方互換性のないアップデートのことです。ビットコインを例にすれば、ハードフォーク後の新バージョンでは、旧バージョンにより送信されたトランザクションを無効と見なし、旧バージョン側でも新バージョンにより送信されたトランザクションを無効と見なすということになります。

ここで少し混乱しやすいのが「フォーク」という言葉です。フォークには分岐するという意味があり、ブロックチェーンの分岐自体のことも「フォーク」と呼ぶことがあります。ハードフォークが行われる際には、新バージョンと旧バージョンで互換性がないので、ブロックチェーンの「フォーク」が発生することになります。（Ethereum Classicのように旧バージョンを使い続ける人がいない限り、旧バージョンは分岐せず実質的に消滅することになります。）

仮想通貨の世界では、フォークという言葉はさらに転じて、ハードフォーク（バージョンアップ）した際に発生する永続的なブロックチェーンの分岐状態のことを「ハードフォーク」と呼ぶこともあります。これに対して「ソフトフォーク」は一時的な分岐状態という意味で使われます。

過去、ビットコインにハードフォークはあったのか

ビットコインでは過去ハードフォークが行われたと言う人も行われていないと言う人もいます。

第一にハードフォークが行われたとされるのは、2010年8月に脆弱性を突いて総発行予定数を超える大量のビットコインが生み出された事件です。一時的に実質的な偽造がされてしまったいう点とロールバック的な対処が行われたという点ではビットコイン史上最大の事件といえますが、この対処はソフトフォークによりなされたので、ハードフォークであるというのは勘違いです。

第二は、2013年3月にバージョン0.8.0へのアップデート後にバグにより発生したブロックチェーンの分岐です。発生当時はハードフォークではないかと思われたようですが、その後の調査により、前のバージョンにすでに含まれていたバグであり、理論的には0.8.0へのバージョンアップがなされていなくても発生していた可能性があるという話もあるので、ハードフォークではなかったというのが一般的ではないかと思います。ただし、ハードフォークをブロックチェーンの分岐状態という意味で使うのであれば、ハードフォーク的な分岐は実際に発生していたので、ハードフォークが発生したとも言えるでしょう。

いずれにしてもビットコインでは意図してハードフォークが行われたことは過去にはないとは確実に言えるでしょう。

ハードフォークの何が悪いのか

では、しばしば悪者扱いされるハードフォークですが、何が問題とされるのでしょうか？

①ハードフォークの内容

まず問題とされるのがハードフォークで何が変わるのか、ということです。ハードフォークとは互換性のないアップデートなので、理論的に言えばどんな変更も可能となってしまいます。

例えば、ビットコインの総発行数は2100万BTCと決定されている、といろんなところに書かれていますが、ハードフォークを行えば総発行数を増やすことも減らすことも自由にできてしまいます。決められているというのは、仮に変えるようなアップデートを行っても誰も賛同しないだろうという前提のもとでしかないのです。実際にアルトコインの一つであるDogecoinなどでは、スタート時は発行枚数が有限の通貨であったのものの、その後しばらくしてハードフォークが行われ総発行数が無限に変更されたことがあります。

The DAO事件の際に実行したハードフォークではこの内容に大きな問題があると考える人が多かったためにEthereum Classicのようなフォーク版が誕生してしまったのだと思われます。一方で今回のイーサリアムのハードフォークは、セキュリティ対策という誰もが納得しやすい大義名分があるため、少なくとも前回ほどは反対意見が少ないなか実行されました。そのため、ゼロではありませんが、今回をきっかけに第二のEthereum Classicが生まれるような可能性は低いと言えるでしょう。

②ハードフォーク自体の問題

そもそもハードフォーク自体にも問題はあります。互換性が失われるので、ウェブウォレットやサーバークライアント型のウォレットの利用者を除き、その他のビットコインネットワークの参加者全てはアップデートをしないと使い物にならなくなってしまいます。全利用者にアップデート情報がいきわたるのは難しく、一時的なマイナーやノードの集中化などが発生する可能性があります。また、単純に送金トラブルが多発する可能性もあります。タイミングを見計らって単発でハードフォークを行う場合はそこまで問題とならないかもしれませんが、頻繁にハードフォークを行うと懸念が大きくなると言えるでしょう。

また、ブロックチェーンが完全分岐するというハードフォークの性質が①の内容の問題と合わさって、問題となる可能性もあります。特にビットコインやイーサリアムなどのようにコミュニティが大きい場合、Bitcoin Classicのように分裂する動きが出てきたり、Ethereum Classicのように実際に分裂してしまうこともあります。逆にコミュニティが小さい場合はそこまで問題とならず、大事件のように伝えられるビットコインやイーサリアムでのハードフォークとは対照的に、その他のアルトコインの世界ではハードフォークは日常茶飯事に行われており、むしろアップデートを頻繁に行う開発力のある通貨ということで評価されることもあります。

ビットコインにハードフォークは必要か

イーサリアムの現状を見ていたり、ビットコインコミュニティの分裂具合を見ていると、ハードフォークは（特にコミュニティがある程度大きい規模の場合）軽々しく行うものではないと思いますが、やはり自由に仕様変更できるというのは魅力的ですし、将来的には全く行わないという訳にはいかないでしょう。

今回はハードフォークについて書きましたが、ハードフォークより安全だと思われているソフトフォークの危険性についてもいずれ書いてみようと思います。