ブロックチェーンが分岐する?仮想通貨の「フォーク」とは?
仮想通貨は設計図がオープンソースに公開されており、ブロックチェーンの分岐を前提としています。この分岐を「フォーク」と呼びます。このフォークには日常的な問題から、仮想通貨そのものが増えるようなものもあり、今の仮想通貨市場にもフォークでできた通貨が流通しています。今回はそんなフォークについて解説します。


今回はフォークについて解説するぞ

フォークって、ステーキ食べる時に使うあれじゃないよね?

ブロックチェーンが分岐することをフォークと言うんじゃ。フォークの先のように枝分かれするからそう呼ばれるんじゃよ。色々なパターンがあるが、場合によってはひとつの仮想通貨が2つに分裂してしまうこともある

もし日本円が分裂したら一大事だよね。日本円αと日本円β、みたいに

その通りじゃのう。けれど元々、ブロックチェーンはフォークに対応して設計されておるんじゃよ
仮想通貨のフォークとは何か?
あるブロックチェーンにおいて、同じタイミングで2つのブロックが生成されることでブロックチェーンが2つに分岐することをフォークと言います。
普通、ブロックチェーンはブロックをひとつの鎖のようにつないでいく仕組みです。なので分岐してしまうというのは大きなことのように思えるかもしれません。
ですが仮想通貨の多くはオープンソースであり、簡単にコピーできてしまいます。そもそも分岐してしまう前提で開発されているので、フォーク自体はそう大したことではありません。
フォークの要因としては「偶然同時に2つのブロックが生成されてしまうこと」と「システムの仕様変更」の2つがあります。
ビットコインを例に考えると、マイニングにおいて、ノードはナンスと呼ばれる数値を使ってハッシュを解読します。このとき、まったく同じナンスが2つ見つかると、同時に2つのブロックが生成されてしまいます。
同時に2つのブロックが生成され、チェーンが分岐するとノードは各自の判断でどちらかのチェーンを検証します。すると自然に長いほう、短いほうが生まれ、この差が一定以上に達すると短いほうは長いほうに吸収されてしまいます。
確率的に考えてまったく同じナンスが2つ見つかる確率はごく低く、もし発生しても自然に調整されてしまうので、大きな問題にはなりません。
もうひとつの要因のシステムの仕様変更についてですが、ブロックチェーンもソフトウェアである以上、公開された後であってもルール変更や機能のアップデートなどを繰り返しながら開発を進めます。
ある時点で新しい規則を導入すると新しい規則に適応したブロックと、それ以前の規則を適応させたブロックが生成され、フォークが発生します。
ソフトフォークとハードフォーク
仕様変更によるフォークには「ソフトフォーク」と「ハードフォーク」の2通りがあります。
2017年8月、ビットコインがビットコインとビットコインキャッシュに分裂したときに発生したのは、ハードフォークです。そう聞くと、ハードフォークのほうが文字通り難易度の高い変更のように思われますが、実は反対にソフトフォークのほうが難しい仕様変更です。
ソフトフォークとハードフォークについて、それぞれ実例をあげながら紹介していきます。
一時的な分岐であるソフトフォーク
ソフトフォークは、それまでよりも厳しい規則をブロックへ適応することによるフォークです。分岐は一時的なもので、やがてひとつのチェーンへと収束します。
例えば最大ブロック容量が3メガバイト(ルールA)の仮想通貨の最大ブロック容量を1メガバイト(ルールB)にするソフトチェーンを実施するとします。
分岐後も分散ネットワークではノードを主導する存在がないために、フォーク後もABそれぞれのルールでマイニングが行われます。
ただルールBに従って生成されたブロックは、ルールAにおいても認証されます。上限が1メガバイトのブロックに収められたデータが、上限が3メガバイトのブロックに入らないはずはありません。
古い規則が新しい規則を内包するために、ソフトフォークによって分岐したチェーンはそれ以前のチェーンと共存可能ということです。
そのためフォーク直後は両方が伸び、やがて新しいルールを支持するノードが過半数を越え、ひとつのチェーンへと収束します。
過去のソフトフォークの例としては、2017年8月、ビットコインにSegwit(セグウィット)という技術を導入したケースが挙げられます。
Segwitは「Segregated Witness」の略称で、ブロックに格納するトランザクションを構成するもののうち、電子署名をWitnessと言う、トランザクションから独立した領域に隔離する(Segregate)技術です。
電子署名を隔離するために、同じブロック容量でも多くのトランザクションを格納することが可能になります。ブロック容量が1メガバイトのビットコインの場合には、Segwit導入以前の4メガバイト分に相当するトランザクションが格納できるようになりました。
Segwitの導入はビットコインのトランザクションスクリプトに「電子署名を独立した領域に隔離する」という規則を加える、厳しい仕様変更です。
Segwit導入後のブロックは導入前のノードでも受け入れられたために、一時的に分岐をして、次第に導入後のブロックチェーンが受け入れられるようになりました。
ソフトフォークは一時的な分岐であり、ブロックチェーンに大きな影響を与えません。そのためビットコインでも過去数度にわたってソフトフォークが実施されています。
通貨が分裂してしまうハードフォーク
一方ハードフォークはそれまでよりも規則を緩和するように仕様変更をすることによるフォークです。
ハードフォークには大きく分けてアップデートのためのもの、最初からコインの分裂を目的としたもの、別のアルトコインを作るためのものの3つのパターンがあります。
ただいずれも旧ルールと新ルールとで永続的にチェーンが分岐し、通貨が分裂してしまうことに代わりはありません。
ハードフォークで最も有名な例が、2017年8月のビットコインの例です。利用者の増加に伴って、ブロック容量が足りなくなるスケーラビリティ問題に直面したビットコインが、先に述べたSegwitとブロック容量の増加という別のアプローチを選択したためにハードフォークを経て分裂しました。
分裂して生まれたビットコインキャッシュでは、ブロック容量が1メガバイトから8メガバイトに拡大しています。
ソフトフォークの場合には、古い規則が新しい規則を内包するために分岐が一時的なものに留まります。
ただビットコインキャッシュの場合には、1メガバイトのブロックチェーンに、新しい8メガバイトのブロックに記載されたトランザクションが記録できません。
古い規則が新しい規則を内包できない、言い換えれば互換性が断ち切られてしまうために永続的にチェーンが分岐し、通貨が分裂してしまいます。
ちなみにビットコインが分裂したとき、元のビットコインを持っていた人は、それと同額のビットコインキャッシュを受け取っています。たとえば1ビットコインを持っていた人は、分裂後に1ビットコインキャッシュを受け取っています。
ビットコインキャッシュはある時点まではビットコインと同じブロックチェーンをコピーしているのですが、ある時点から互換性を持たずにルールを変えたものです。
その時点までの送金記録などもまったく同じのため、ビットコインキャッシュが支払われるのです。

仮想通貨はフォークを前提とした設計をしているんだね

その通り。ブロックチェーンの分岐と考えると深刻に思うかもしれんが、フォークは確率的に起こりうるものじゃ。ソフトフォークであれば大きな問題にもならない。ただフォークが非中央集権的なあり方の欠点も示しているんじゃ

どういうこと?

ビットコインの分裂騒動はスケーラビリティ問題への対策もそうじゃが、思想の違いによって引き起こされた部分も大きいんじゃ。中央で方針を決める人がいないために、対策ひとつで話し合いが難航し、通貨が分裂して、投資家を混乱させてしまったんじゃよ

非中央集権的なあり方もいいことばかりじゃないんだね
まとめ
仮想通貨はブロックチェーンの分岐であるフォークを前提として開発されています。確率的にも意図せず発生することがあるうえ、ソフトフォークと言って、既存の規則を厳しくするための仕様変更に伴う一時的な分岐も珍しくありません。
ただ規則を緩くするハードフォークではブロックチェーンが永続的に分岐してしまい、通貨が分裂してしまいます。ときにこのハードフォークが仮想通貨の非中央集権的なあり方のデメリットとなることも覚えておくといいでしょう。