今週は質問特集に加えまして、UASFとSegwit2xの動きについての続報を解説します。
基礎から時系列に辿って解説しますので、これで、わからなかった方も分かっていただけると思います。
そもそもソフトフォークとは?
まず、そもそものソフトフォークについて、簡単に理解をしましょう。
ビットコインは日々改善されているのはご存知のとおりです。バグが取れたり、新しい機能が追加されたりと。その中でも、大きな改修や、アップデートになる機能が追加されることがあります。
たとえば、過去で見ると、「マルチシグ機能」です。大きなアップデートですよね。
最近でいうと、CHECK LOCKTIME VERIFYとCSVと呼ばれる機能。これはマニアックな機能ですが、有る特定の日やブロックが訪れると有効になるといった時限トランザクションを作ることができる機能です。
とりわけ、マルチシグや、CHECK LOCKTIME VERIFYとCSVというのは、新しいルールの追加になります。これらを「コンセンサスレイヤーの改修」と呼びます。コンセンサスというのは、つまり、ブロックチェーンの根本の部分に関わる改修で、これをミスしてしまうと、チェーンが分岐してしまうことがあるので、慎重にしないといけません。
これらの改修の方法には、ハードフォークとソフトフォークがあります。ハードフォークは、前の仕様と互換性がなく言ってみれば何でも出来てしまう改修です。たとえばイーサリアムのDAO事件後のハードフォークでは、盗まれたコインを、盗みがなかったことにしました。そういう巻き戻しみたいなこともハードフォークをやればできます。コインの発行上限を変えたり、ブロックタイムを変えたり、ハードフォークではどのようなルールでも変えることができます。
一方で、ハードフォークは新コインを作るのと同義です。新コインをつくり、過去のコインは放棄し、全員が新しいコインをつかうという約束をしてはじめてハードフォークによる移行が可能になります。
しかしながら、旧コインを使い続ける人が居ると、2つのコインにわかれてしまいます。
ユーザー全員にとってメリットしか無いハードフォークならば旧コインをつかいつづける理由がないので、成功します。モネロなどは頻繁にハードフォークを繰り返してアップデートしています。
しかし、イーサリアムのように、DAOの救済に反対する人がいる状態でのハードフォークといった、意見が割れているハードフォークは、確実に2つのコインへの分岐を意味します。
ですので、ハードフォークが危険か危険でないかは、そのアップデートをめぐってのコミュニティの意見によるところが大きいと思います。
ソフトフォーク
ソフトフォークは、互換性をたもったままアップデートする方法です。下の図をみてください。
この図で、緑の部分がソフトフォーク前のルール、赤い部分がソフトフォーク後のルールです。たとえば、マルチシグの導入ということであれば、緑の部分はマルチシグが使えないルール、赤い部分はマルチシグのトランザクションが作れるようにしたルールです。
これは、ルールの追加または厳格化になっています。マルチシグのトランザクションを許すというのは、旧来のルールから見ると条件がより増えたことになります。いままでは、普通のトランザクションだけチェックすればよかったのに、マルチシグの仕様に関しても追加でチェックをして、それを処理しないといけないからです。
このように、ルールを追加、厳格化する方向でのアップデートを、ソフトフォークといいます。
新旧ルールが混在してはいけないため、ソフトフォークでは、新ルールに対応するノードやマイナーが大多数に達してからでないと、新しいルールを使うということはしません。なので、マイナーの95%とかそういう高いハードルをもうけていて全員がアップデートしたら、新ルールがつかえるようにするということにしています。そうでないと、ブロックチェーンが分岐してしまうわけです(まさにハッシュレートが少ない場合のUASFで起こることです)
ソフトフォークのデプロイメント方法?
では、このソフトフォークは、どのようにして適用するのがよいのでしょうか?適用をデプロイといいます。アクティベートもほぼ同義語です。
あるソフトフォークをデプロイするとき(ある新機能をアクティベートさせるとき)、の方法には代表的に2つあります。