read概要フォークが起きるのは?ハードフォークとソフトフォークの違いフォークにおける各シナリオと結果フォークの事例チェーンのスプリットのデメリットまとめ2019年の1月16日にイーサリアムのコンスタンティノープルというバージョンへのアップデートのハードフォークが予定されています。そこで今回はハードフォークが行われる前に、ハードフォークとソフトフォークの違いやそれぞれに起因するブロックチェーンの分裂、そのメリットやデメリットを実例とともに探っていきます。注意:本記事でのフォークという言葉はブロックが同時に生成され、一時的に複数のチェーンに分岐してしまう現象のことは含まず、ハードフォークとソフトフォークを総称したものです。この現象に関しての詳細はこちらから。フォークが起きるのは?ブロックチェーンでフォークが起きる場合は大きく分けて以下の二つの状況です。コンセンサスの相違プロトコルのルール変更ブロックチェーンのフォークとは、本質的に、合意に基づいたソフトウェアアップデートです。ブロックチェーンの運営は、基本的に、フルノードと呼ばれる個々のコンピューターに依存し、フルノードが多ければ多いほどネットワークはセキュアになります。ブロックチェーンという共有台帳にアクセスするには基本的に同じルールに則ったソフトウェアを利用する必要があります。ビットコインのソフトウェアはイーサリアムのソフトウェアと異なるため、ビットコインのソフトウェアではイーサリアムのブロックの検証・承認はできません。ソフトウェアのバージョンに関しても基本的に同一のバージョンを利用する必要があります。ビットコインの開発者がフルノードの合意を十分に得た上でソフトウェアに新たな特徴を追加したり変更を加えたりするとします。アップデートされたソフトウェアと古いバージョンのソフトウェアとの間に互換性がない場合があります。このような場合にブロックチェーンでフォークが起こり、チェーンが分裂する可能性もあります。ハードフォークとソフトフォークの違いハードフォーク:旧バージョンのソフトウェアでは新バージョンのトランザクション・ブロックを扱うことができないが、新バージョンのソフトウェアでは旧バージョンのトランザクション・ブロックを扱うことができる。ソフトフォーク:旧バージョンのソフトウェアでも新バージョンのトランザクション・ブロックを扱うことができるが、新バージョンのソフトウェアは旧バージョンのトランザクション・ブロックを扱うことはできない。ハードフォークは検証規則を緩和すること、ソフトフォークは検証規則を強化することというイメージが適切です。旧バージョンと互換性のないアップデートというのは例えばブロックサイズの変更などです。これまでブロックの最大サイズが1MBだったものが8MBに変更されたとします。この場合8MBのブロックはアップデート以前のソフトウェアでは承認することはできません。来たるEthereumのコンセンサスアルゴリズムのPoWからPoSへのアップデートもハードフォークです。実装には至っていませんが、将来的にこれが適応されればイーサリアムはハードフォークし、アップデートをしなかったノードはアップデートしたノードと互換性がなくなります。いったアップデートが起きると、ハードフォークが起こります。これに対して、ソフトフォークは旧バージョンと互換性のあるアップデートであり、ビットコインのSegWit実装がその一例です。SegWitがアクティベートされた際、新しいバージョンのアドレスが作られました。古いバージョンのアドレスを使用しているノードに影響は特にありませんでした。旧P2SHアドレスを使っているノードはSegWitでないトランザクションを送信することができ、そのトランザクションは認証を通過します。フォークにおける各シナリオと結果オフチェーンガバナンスにおいてソフトフォークとハードフォークが発生した時に起こりうる各シナリオとその結果であるチェーンのスプリット(分裂)の有無を説明していきます。ソフトフォークの場合ここで注意すべきことは、旧バージョンのソフトウェアでも新しいバージョンのトランザクション・ブロックを扱うことができるということです。全てのフルノードがアップデート全てのノードが新しいルールを受け入れ、新しいルールに基づいてブロックを生成するようになります。そのためソフトフォークによって発生した新たなチェーンのみが存続し、チェーンのスプリットはありません。51%以上のハッシュパワーを持つ数のフルノードがアップデートこのシナリオでは49%以下のハッシュパワーを持つ数のフルノードがアップデートに応じないことになります。新たなルール下で生成されたブロックは旧ルールと互換性があるため、フルノードがアップデートしなくても新ルールに基づいたトランザクション・ブロックの承認をすることができます。基本的に新チェーンのみが存続し、スプリットはありません。49%以下のハッシュパワーを持つ数のフルノードがアップデートこのシナリオでは、51%以上のハッシュパワーを持つ数のフルノードがアップデートに応じないことになります。旧バージョンのソフトウェアで新バージョンのトランザクション・ブロックを承認できるため、チェーンは一旦スプリットします。旧チェーンに多くのハッシュパワーが残り、新チェーンのノードのハッシュパワーが少ないため新チェーンの進行は遅くなります。最終的には以下の3つ状態のいずれかに収束します。新チェーンのノードがダウングレードし、旧チェーンのみが存続する状態ソフトフォークでは基本的にこのような結果になることはありませんが、理論上発生しうると言えます。全てのフルノードがアップデートしないこのシナリオでは、なんの変化も発生せず、全てのノードがそれまで通り旧ルールに則ってトランザクション・ブロックの承認を行います。チェーンのスプリットも発生しません。旧バージョンのソフトウェアでは新しいバージョンのトランザクション・ブロックを扱うことができません。そのため、ハードフォークのアップデートが受け入れられると、それまでの旧ルールでは無効だったトランザクション・ブロックも有効だと判断され承認されますが、新ルールでのみ有効なトランザクション・ブロックは旧ルールでは無効だと判断されます。全てのフルノードがアップデートこのシナリオの場合、全てのフルノードが新しいルールに従ってブロックを生成・承認するのでハードフォークによって誕生した新たなチェーンのみが存続し、スプリットはありません。51%以上のハッシュパワーを持つ数のフルノードがアップデートこのシナリオでは、49%以下のハッシュパワーを持つ数のフルノードがアップデートに応じないことになります。旧バージョンのソフトウェアでは新しいバージョンのトランザクション・ブロックを扱うことができないため、チェーンは一旦スプリットします。新チェーンに多くのハッシュパワーが移り、旧チェーンのノードのハッシュパワーが少ないため旧チェーンの進行は遅くなります。最終的には以下の状態のいずれかに収束します。49%以下のハッシュパワーを持つフルノードがアップデートこのシナリオでは51%以上のハッシュパワーを持つ数のフルノードがアップデートに応じないことになります。旧ルール下で生成されたブロックは新ルールと互換性があるため、アップデートを行ったフルノードも旧ルールに基づいたトランザクション・ブロックの承認をすることができます。したがって、基本的に旧チェーンのみが存続し、スプリットはありません。全てのフルノードがアップデートしないこのシナリオでは、ソフトフォーク時と同様なんの変化も発生せず、全てのノードがそれまで通り旧ルールに則ってトランザクション・ブロックの承認を行います。チェーンのスプリットも発生しません。フォークの事例ソフトフォークの事例ソフトウェアをアップデートしていない参加者もトランザクションの検証と承認に参加でき、大部分の参加者がアップデートしていればネットワークは続行します。アップデートしてない人の機能には影響が出ます。ブロックサイズが1MBから800KBに変更された場合アップデートしていないマイナーは、トランザクションを見ることは可能ですが、新しいブロックを生成しようとする際に不適切と見なされてしまう可能性があるといった様にです。実際の大規模はソフトフォークの例は、以下のものがあります。66:ビットコインの署名検証の厳格化。P2SH:ビットコインネットワークで複数署名が可能にし、セキュリティを高めるためのソフトフォーク以前はフラグデイ方式といって予告された日にソフトフォークをアクティベートをする手法が取られていましたが、これではアップデートを忘れたマイナーや告知が行き届かなかったマイナーによってチェーンが分裂し、旧バージョンのマイナーによって承認されたトランザクションが新チェーンで承認されておらずユーザーが財産を失うトラブルがありました。現在は徐々に新ルールに移行するような手法が用いられており、この問題は解決されています。ハードフォークの事例ソフトフォークと違ってソフトウェアをアップデートしていない参加者は参加できないため、今後一つのチェーンに収束することはありません。ハッシュパワーの少ないチェーンにも参加者がいる限り二つのチェーンが存在し続けます。ハードフォークにはコンセンサスの取れた計画的なハードフォークとコンセンサスの取れていない意図しないハードフォークがあります。Byzantiumなどが例となります。Classicという例があります。Classicのハードフォークなどは上記のハードフォークの2の例です。Classicが生まれた件では、ハードフォークにネガティブなイメージを植え付けられましたが、一方で、BTCからBCHが生まれたことには、お金を自由にすることであると好意的な声も多くあります。チェーンスプリットのデメリットには以下のようなものがあります。・チェーンのブランド価値が下がる多くのスプリットを繰り返すと、どのチェーンが”本物”であるか混乱を生み、チェーンの社会的な価値が下がることがあります。・意見が画一的になるスプリットが起きるたびにコミュニティ内で多数派でない意見をもつメンバーが新しいコミュニティに引き抜かれていけば、コミュニティ内に多様性がなくなり、意見が画一化されていき、各チェーンが中央集権的になっていってしまいます。・セキュリティが下がるスプリットによってハッシュパワーも分裂します。ハッシュパワーの減少は51%攻撃を容易にし、セキュリティを下げます。・開発キャパシティが減るあらゆるプロジェクトにはコア開発者が必要です。ブロックチェーン界隈では開発者がそもそも足りておらず貴重な存在です。そのため、開発キャパシティが別ブロジェクトに分裂することはプロジェクトの発展を阻害します。まとめこのように、チェーンの分裂は危険性を孕むものではありますが、技術のアップデートはブロックチェーンの進化のために避けては通れません。チェーンの分裂をなるべく避けられるようなコミュニティでの意思決定の手段として、オフチェーンガバナンスが注目されています。オフチェーンガバナンスについてはまた別の機会に解説します。5月お問い合わせ事例の紹介や、事業に合わせた提案など承っております。こちらのフォームからお申し込みください。2018特定業界や地域に特化した調査レポートの作成や、ブロックチェーンを活用したビジネスのプランニング等も承っております。