こんにちは。管理人です。

今回は仮想通貨をやっているとよく見かけるワード

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

について話していきたいと思います。

ネコくんネコくん

確かに、取引所のチャットやツイッターなんかでよく見かけるけど、よく分からないからいつもスルーしてるんだよね。

確かに、仮想通貨を始めたばかりであれば何のことかよくわからないですよね。
仮想通貨をやっていてこのワードについて理解している人は正直それほど多くないんじゃないかなと思っています。

ただ、この2つのワードは仮想通貨の価格に大きく影響を与える大切なモノになるので、仮想通貨をやっている人はぜひ理解しておきたい内容です。

では、早速いきましょう。

ハードフォークとソフトフォーク、その違いは?

ハードフォークとソフトフォークの共通点

前提としてハードフォークとソフトフォーク、そもそもの共通の説明として言えるのはどちらも

「仮想通貨のアップデート」

だということです。(正しく言えば仮想通貨の仕様の変更ですが、分かりにくくなるため、今回はとりあえずアップデートで理解しておいていいです。)

アップデートというのは、日常的に良く見るワードでもありますが、簡単に言えばシステムを最新のものにして性能を向上させることですね。

なので例えばビットコインのアップデートであれば、ビットコインをより性能の良い仕様にバージョンアップさせるという意味になります。

そしてそういった仮想通貨のアップデートのための方法として

ソフトフォーク
ハードフォーク

という2つの方法がある、ということです。

ネコくんネコくん

なるほどね。ソフトフォークとハードフォークってのは、仮想通貨をアップデートするための方法のことを言うんだね。

ソフトフォークって何?

ではまず、ソフトフォークから話しますね
ソフトフォークっていうのは、色んな言い方をされますが、よく言われるのは

「互換性のあるアップデート」

です。

互換性(ごかんせい、英語: Compatibility)とは、ある部品やコンポーネント(構成要素)などを置き換えても同様に動作させることができる性質のこと。

(引用:wikipedia

互換性というのは、変更前のモノの機能・仕組みが、変更後のモノでも問題なく使えることです。
また、先ほど話したようにアップデートというのは、システムを最新のものにして性能を向上させることですね。

つまり、ソフトフォークで言われる互換性のあるアップデートとは、前の機能・仕組みを問題なく使えるように引き継いだまま、より性能のよい新しいものへとアップデートさせることです。


イメージとしては、ゲームボーイとゲームボーイポケットです。

ネコくんネコくん

ゲームボーイとゲームボーイポケット!?(笑)

分からない人もいるかもしれませんが、昔、任天堂から発売された携帯ゲーム機として、

ゲームボーイゲームボーイポケット

がありました。

ネコくんネコくん

懐かしいな~。よく夢中になって遊んだなあ。

ゲームボーイの場合、遊ぶためには単三電池が4個も必要でした。また、大きさもあるため携帯ゲーム機とはいえ持ち運びに不便でした。

これに対して後から発売されたゲームボーイポケットは、単三電池よりも小さい単四電池2個で、ゲームボーイと同じように遊ぶことができました。また、ゲームボーイよりもコンパクトで持ち運びに便利でした。



このようにゲームボーイポケットは、前バージョンのゲームボーイの機能(ゲームボーイでできること)を引き継いだまま、性能を向上させています。

あくまでゲーム機の例ですが、仮想通貨におけるソフトフォークはこのように、前の機能・仕組みを持った通貨を問題なく使えるように引き継いだまま、より性能のよい通貨へとアップデートさせることです。


以上を踏まえて、実際にビットコインで話をされるソフトフォークについて見てみましょう。
ここからブロックチェーンについて簡単にでも知識があるとさらに理解が深まります。
参考はこちら(参考:誰でも分かるビットコインのブロックチェーンのお話


ビットコインの場合、現時点で、1つのブロックに入る取引データ(トランザクションと言います)の上限は、
1MB(メガバイト)と決まっています。


「ブロック」というのはデータが入る箱です。

このデータが入る箱、すなわちブロックに、マイナーと呼ばれる人たちが、皆がビットコイン取引をしたデータを詰め込んでいきます。(AさんがBさんに1ビットコインを送りました!といったようなデータです。)


取引データが次々とブロックに詰め込まれ、1MB分の取引データがブロックに入れば1つのブロックが完成して、次の新しいブロックが作られます。


1つめのブロックの中の取引データが正しいこと(改ざんされたりしていないこと)を、マイナーと呼ばれる人たちが確認できれば、1つめのブロックと2つめのブロックはつながることができます。
このように、1MBのブロックが次々とチェーンのようにつながっていくので、ブロックチェーンと言います。


1つのブロックができるまでには10分間(600秒)かかります。これはビットコインの仕様です。


今話したことを簡単に図にまとめてみました。




ソフトフォークは、「前の機能・仕組みを持った通貨を問題なく使えるように引き継いだまま、より性能のよい通貨へとアップデートさせること」だと話しました。

もっと具体的に言えば、ソフトフォークが行うことは、ブロック自体の大きさは変えずに、ブロックに入る取引データの大きさを小さく圧縮するようなことです。

こうすることで、互換性を維持したまま、よりたくさんの処理を少ない時間でできるようになります。


簡単に図で表すとこんな感じです。




これがソフトフォークです。

ネコくんネコくん

なるほどなあ。ソフトフォークは互換性のあるアップデートっと。。メモメモ

ソフトフォークの良い点

互換性があるので混乱が起きにくい

ソフトフォークの良い点として挙げられるのは、互換性があるのでソフトフォークが行われた際の問題も起きにくく、そのためソフトフォークが行われる際に大きな混乱も起きにくい点です。

ソフトフォークの悪い点

ソフトフォークが導入された後に撤回されると強制的にハードフォークが行われる

ソフトフォークは、ブロックの大きさはそのままで、ブロックに入る取引データのルールを変更し、より多くのデータが1ブロックに入るような仕様に変更するものです。
これは互換性があるアップデートです。


しかし、もし万が一ソフトフォークが上手くいかず、このソフトフォークにより適用されているルールを撤廃しようとなった時、強制的にハードフォーク(互換性のないアップデート)が行われることになります。
この仕組みについては詳しく話すとややこしくなるので割愛しますが、そういうもんかと思っててもらったらいいです。


もしソフトフォークの撤回によるハードフォークが行われるとなった際には間違いなく大きな混乱が起こると考えられます。


ソフトフォークの実装には通常長期間にわたってテストが行われるので、なかなかある事ではないでしょうが、考えられる話なので頭に入れておきたいところです。

ハードフォークって何?

次に、ハードフォークについて話しますね。


ハードフォークっていうのは、

「互換性のないアップデート」

のことです。


ソフトフォークの逆で、互換性のないアップデートとは、前の機能・仕組みは引き継がずに、より性能のよい新しいものへとアップデートさせることです。


イメージとしては、ファミコンスーパーファミコンです。

ネコくんネコくん

例えが古いけど言いたいことはもう分かったよ!


ネコくんネコくん

スーパーファミコンはファミコンよりも性能が良いゲーム機だけど、ファミコンのゲームソフトはプレイできない!つまり、互換性はないけどバージョンアップはしてるってことだね!

その通りです。
今ネコくんが言ったように、ファミコンのソフトはスーパーファミコンでは遊べないし、スーパーファミコンのソフトをファミコンで遊ぶこともできないけど、スーパーファミコンはファミコンに比べて性能は向上しています。


このようにハードフォークは、前のバージョンとの互換性を持たせずに、性能を向上させるアップデートです。


先ほどソフトフォークの時に話したように、ビットコインを例に話をすると、ビットコインのブロックチェーンでは現時点で、1つのブロックに入る取引データ(トランザクションと言います)の上限は、1MB(メガバイト)と決まっています。


ソフトフォークの場合、この容量1MB上限のブロック中に入る取引データの大きさを小さくして、たくさんのデータを処理できるようにするようなものだと話しました。

これに対してハードフォークは、ブロック自体の容量を大きくするようなものです。
ブロック自体を大きくすればそれだけたくさんの取引データを詰め込むことができます。

図に表すとこんな感じです。




ビットコインの場合、ブロック自体の容量が大きくなれば、10分間で1つのブロックを作るという仕様は変わらなくとも、単純に10分間でそれまでよりたくさんの取引データを処理できるようになります。


しかし、ブロックの互換性は無いので、それまでのビットコインから分裂してしまい、旧ビットコインと新ビットコインはそれぞれのブロックチェーンを作っていくことになります(どちらも存在し続けることになります)。


分かりやすいようにブロックサイズを大きくするような仕様の変更を、今回ハードフォークの例に挙げましたが、ブロックサイズの変更に限らず、それまでのブロックチェーンと互換性のない仕様の変更でもハードフォークは行われます。

実際に仮想通貨のイーサリアムが以前ハードフォークが行われ、現在イーサリアムとイーサリアムクラシックに分かれたのもこういった互換性のない仕様の変更があったからです。

ハードフォークの良い点

ソフトフォークに比べてより柔軟に、大きくバージョンアップすることが可能

ハードフォークの良さは、ソフトフォークに比べてより柔軟に、大きくパワーアップできる点です。


ビットコインのソフトフォークの場合、1MBのブロックの容量は変えずに取引データを小さくすると先ほど話しました。

ハードフォークの場合、1MBのブロックの容量を10MB、20MBと大きくすることもできますし、それに加えてソフトフォークのようにブロックに詰め込む取引データを小さくすることもできます。

簡単に言えば、ソフトフォークに比べてハードフォークは理論上色んなカタチのバージョンアップが可能だということです。

ハードフォークの悪い点

分裂により市場に大きな混乱が起こりやすい

一方で、ハードフォークは互換性が無く、それまでのものと全くの別物になるので、通貨の分裂が起こります。
この分裂は市場に大きな不安を呼び、混乱を招きやすく、これはハードフォークの大きな問題点になります。

ブロックチェーンの処理性能はこうやって計算します

今回、話したことを具体的に数字で理解しておきましょう。


よく「この仮想通貨は1秒間に~取引ができる」といった話を聞くことがあると思いますが、ブロックチェーンの処理性能は以下の簡単な計算式で導き出せます。


処理性能(取引/秒)=1ブロックの上限容量÷(取引データの平均サイズ×1ブロックの作成時間)


ビットコインの場合を例にとって計算してみましょう。
ビットコインの現在の処理性能は1秒あたり7取引を処理できる性能だとよく言われます。

上の式を使って実際に計算してみると

【ビットコインの現在の仕様】

1ブロックの上限容量は1MBです。
また、取引データの平均サイズは250バイトです。
そして、1ブロックの作成時間は10分(600秒)です。

1MB=1,000,000バイトになるので

1,000,000÷(250×600)
=6.6666…..

1秒あたり6.6666…の取引、

すなわち1秒あたり約7取引を処理することができるという話です。

上の計算式を見て考える限り、1秒あたりの処理性能をあげるには次の2つの方法が考えられます。


①1ブロックの上限容量を増やす
②取引データの平均サイズを削減する



「①1ブロックの上限容量を増やす」というのは、ブロックの大きさを大きくするという話、つまりハードフォークによって行われるバージョンアップのことです。
実際に計算してみましょう。

もしハードフォークによって、ビットコインの1ブロックの上限容量が1MBから20MB(20,000,000バイト)に増えたとします。
先ほどの計算式に当てはめると、

20,000,000÷(250×600)
=133.333…..

1秒あたり約133取引が処理できることになります。

今のビットコインの処理性能が1秒あたり約7件なので単純に計算して処理性能が20倍近くになります。

これがハードフォークで1ブロックの上限容量を増やすことで、処理性能が上がるということの根拠になります。



次に「②取引データの平均サイズを削減する」というのは、ブロックに詰め込む取引データを小さくするという話、つまりソフトフォークによって行われるバージョンアップのことになります。

仮にソフトフォークによって、ビットコインの取引データの平均サイズが250バイトから50バイトまで圧縮できたとします。
同じように計算すると

1,000,000÷(50×600)
=33.333….

1秒あたり約33取引が処理できることになります。

今のビットコイン(1秒あたり7取引)に対して約5倍の処理性能になることがわかります。


あくまでこれらの計算は例ですが、これがソフトフォークやハードフォークにより処理性能が向上することの根拠です。

そもそもなんでバージョンアップが必要なの?

ネコくんネコくん

難しい話だったけど、そもそもなんでこういったバージョンアップが必要なの?


ソフトフォークにしてもハードフォークにしても、仮想通貨の仕様を変更することは必ずリスクがつきものです。
それによって市場が混乱する場合もあります。


それでもバージョンアップをするのは、ひとことで言えば来るべき将来に備えるためです。


確かに全くリスクを取らずに、ビットコインの仕様を今のままにしておくこともできます。


しかし、将来的にさらにビットコインを始め仮想通貨が世界でたくさんの人に使われることを想定した時、今の処理性能では不十分という問題が発生してしまうんですよね。

そのため、こういったバージョンアップが試みられることになるんです。


特にハードフォークはリスクもそこそこに大きく市場に大きな不安と混乱を招きすいと言えるため、マイナスに捉えられがちですが、実際のところはハードフォークにしろソフトフォークにしろ根本的には前向きなイベントであって、無事上手くアップデートでき処理性能が向上すれば、長期的に見てその通貨にとってはプラスになっていくと考えられます。(もちろん必ずしもこの限りでないですが)

ネコくんネコくん

なるほどなあ。仮想通貨がこれからさらに盛り上がっていくだろうから、今のうちに仮想通貨をパワーアップさせてそういった未来に対応できるようにしておこう!っていう話なんだね。

そういうことですね。

長くなりましたし多少分かりづらいところもあったと思いますが、以上がハードフォークとソフトフォークのザックリとした話になります。

ぜひ参考にしてみてください。