ムチョグスト!(お願いします)。エストニアでペルー人に教えてもらいました。
「ソフトフォークって何?」
「ハードフォークって何?」
「食器の話をしているの?」
という人からでも理解できるソフトフォークの解説記事を今回は書きました。
ただし、フォーク系の話の基本は「 ハードフォーク 」です。
ソフトフォークを早く理解したい人で、ハードフォークについてよく知らない人は下の記事から読んでみてください。
理解のしやすさがアップしますよ。
ソフトフォークといえばビットコインのsegwitが有名ですね。
次にイーサリアムクラシックではないでしょうか。
実は、segwit以外にもビットコインでたくさんのソフトフォークが起こっていました。
この記事では、最初にビットコインのソフトフォークに関わる歴史を紹介した後に、ソフトフォークとは一体何かについて順を追って説明します。
草猫店長の目次ノート

簡単にソフトフォークとはなんなのか

結論から話します。
ソフトフォークとはブロックチェーンの仕様を変えないアップデートのことです。
もともとその仮想通貨に残されていた拡張性や可変ができる部分を変更する方法、ブロックチェーンの外から変更を加える方法でアップデートさせるのがソフトフォークです。
仮想通貨を派生させてからは多数決で民主的にアップグレードを認めるかどうかを決めることができます。
過去のビットコインのソフトフォークにおける歴史まとめ

過去に実施されたビットコインのソフトフォークの事例を紹介します。
実はビットコインは執筆じの今まで 15回 のソフトフォークを経験しています。以下の通りです。
2. OP_VERとOP_VERIFの無効化 – 2010年7月31日
3. 約20兆円の水増しした支出バグの修正、OP_CATを無効果させる – 2010年8月15日
4. 不正な方法で20000署名制限の操作の無効化 – 2010年8月15日
5. 36MBのブロックサイズを1MBのブロックサイズへ引き下げ – 2010年9月12日
6. 同一のトランザクションID(TxID)でのやり取りの禁止 – 2012年3月15日
7. ビットコインの受取に一人の署名から複数の署名を必要にするP2SH( peer to script hash)への対応 – 2012年4月1日
8. ブロックの高さを生成ブロックに含める修正 – 2013年3月24日
9. 一時的なTxIDのソフトフォーク – 2013年3月18日
10. OpenSSL署名に依存しないDER署名のアップデート – 2015年7月4日
11. Check Lock Time Verify の実装 – 2015年12月15日
12. Check Sequence Verify の実装 – 2016年7月4日
13. Segwitの実施。ただし少数しかブロックを生成しなかった – 2017年7月23日
14. Segwitのアップグレード、これを基にSegwitへ移行完了- 2017年8月1日
15. Segwitのアップグレード – 2018年8月24日
あまり知られていないものも含めて特に初期の頃は頻繁にソフトフォークが行われました。
5. 36MBのブロックサイズを1MBのブロックサイズへ引き下げ – 2010年9月12日
これはDos攻撃などに備えるために行われました。
他にも一般ユーザーがマイニングに参加できなくなるリスクがあったためと考えられています。
参加できなくなるリスクとは、毎ブロック 36MB あると、マイニング完了の報告を受け取る人達が毎回 36MB のデータを受信しなければなりません。
そうするとデータを受信するスピードが早い環境を保有している組織や個人が有利になってしまうためです。
コンマ数秒でマイニングできる確率は大きく変動します。
ちなみにですが、ビットコインから派生したビットコインキャッシュはビットコインの 36MB の数字を尊重してかハードフォーク後に 36MB に拡張しました。
詳細が気になる人は合わせて読んでみてください。
7. ビットコインの受取に一人の署名から複数の署名を必要にするP2SH( peer to script hash)への対応 – 2012年4月1日
P2SHとは複数署名のハッシュです。
それまでビットコインのアドレス頭文字は「1」から始まる数字だったのですが、P2SHを実施してからアドレス頭文字が「3」から始まる数字に変更しました。
bitFlyerなどの取引所で確認してもわかると思います。
14. Segwitのアップグレード、これを基にSegwitへ移行完了- 2017年8月1日
Segwitとはそもそも何でしょうか。
「 Segregated Witness 」の略称で、日本語に訳すと「分離した署名領域」です。
簡単にいえば、ブロックに載せなくても良いデータを他の領域において処理してデータを節約しようという手法です。
そのため、送金件数を今までの 1.7倍 までさばけるようになりました。
具体的には 3000件 が 5100件 まで1ブロックに保存できるようになりました(データによってデータの大きさが違うので概算です)
仮想通貨の衰えるとき。ソフトフォークの意味合いとは

そもそもソフトフォークとはなんのために行われるのでしょうか。
基本的にソフトフォークは仮想通貨の機能に限界が訪れたときの処置として行われます。
ビットコインであれば処理能力が限界に達してもなお、キャパシティをさらに超える取引件数になってしまいました。
王者と呼ばれていたビットコインだったのですが、機能としては時代遅れというか、現状に対しては衰えてしまっていたんですね。
ビットコインと同様に機能が時代に合わなくなり衰えてしまった仮想通貨は最低でもソフトフォークが実施されます。
それでもなお、ビットコインには一切変化を加えたくない派閥も多かったためなんども議論が繰り返されました。
結果としてSegwitが採用されました。
ですが実際のところ、Segwitを使わずとも、ハードフォークで容易に容量を増やすだけで問題は解決できました。
それなのになぜ、ビットコインがわざわざSegwitなどの小技を用いたのかというと「政治的な派閥」があったからです。
ビットコインの政治争い

有名なところがビットコインコアとビットコインアンリミテッドなのですが、関わっている開発陣はみな「サトシナカモトの開発理念」のようなものを尊重していました。
ですが、尊重していたからこそ、解釈の違いが生じて結果としてお互いの最適な解決策が別々になってしまいました。
Segwitが実施された背景も、ビットコインキャッシュが生まれた背景も政治的な争いが要因です。
キリスト教なども教義の解釈の違いによってたくさん派閥が生まれましたが、同じようなものですね。
詳しくは冒頭で紹介した「ハードフォークとは」にも記載しています。
ソフトフォークとハードフォークの違い

よく、混同してしまいがちなソフトフォークとハードフォークです。
簡単に3つの違いをまとめました。
❷. フォーク後に一つのフォークに収束する
❸. どちらかといえば保守的なフォーク
❶. 仕様を変更しない
ブロックチェーンの仕様自体には変更を施さないのがソフトフォークの特徴です。
全く変更しないコピーフォークも含まれます。
ONとOFFに切り替えられるように残してあったフォークもソフトフォークです。
ハードフォークの場合はブロックチェーンの仕様を変えてしまいます。
1MB を 36MB に変更するのはブロックチェーンの仕様を変更しなければなりません。ハードフォークに当たります。
❷. フォーク後に一つのフォークに収束する
ソフトフォークの場合は、仮想通貨を分裂させます。
するとマイナーたちはアップデートした仮想通貨でマイニングをするか、元の仮想通貨でマイニングするのかを決めることができます。
ほとんどのマイナー達がどちらか一方に偏ります。
偏るとブロックの生成スピードにも偏りが生じて最終的に長い方のブロックを持つ仮想通貨がメインの仮想通貨になります。
❸. どちらかといえば保守的なフォーク
一番保守的な行動は、何もしないです。
ソフトフォークはハードフォークで解決する問題をあえて仮想通貨の元の制限の中でやりくりするためのフォークです。
そのため、「できるだけ元の姿形を変えたくない」という意味合いで行われます。
ソフトフォークの特徴を詳しく

画像はソフトフォーク後の動きを簡略化した図です。
画像のように分裂させてsegwitを実装させました。
ブロックチェーンではブロックが長くなった方が正しいチェーンとして認められる性質があります。
そのためソフトフォークを採用したい場合はソフトフォーク後のブロックを長いチェーンにしないといけません。
画像をみると、途中までは同じペースでブロックが生成されていましたが過半数がsegwitのブロックへ移行したためブロックの数が元のブロックよりも多くなりました。
要するに元のブロックよりも長いチェーンが生成できました。
そして収束することに成功したらソフトフォーク(segwit)の実装が本当の意味で完了となります。
逆に仮に 50 対 50 で別れてしまった場合はずっとフォークしたままになります。
ずっと分裂していつ収束するかわからない仮想通貨というのは危なっかしいのでそうならないように事前に多数決がないと実施できないようになっています。
ソフトフォークとは まとめ

Segwitには反対意見もありましたが結果としてはビットコインの次につながる発展になりました。
具体的にはライトニングネットワークへの対応を可能にしたことが挙げられます。
ライトニングネットワークは、Segwitで実施したブロックチェーンとは別領域で取引の一部を処理することを応用しています。
Segwitを応用することで、クレジットカード以上のコストパフォーマンスのある決済を可能にしようとしています。
ただし、少しリスクを晒しても良いような少額に向いていて、課題もまだまだたくさんあるのが現状です。
ライトニングネットワークについて詳しく知りたい人は現実は厳しい? ライトニングネットワークの仕組み をメリットデメリットと共に図解説を読むとイメージが湧くように湧くようになりますよ。
良かったらシェアしてね♪ /