用語集 / プロトコルとアップグレード
ハードフォーク
- ハードフォークとは?
- ハードフォークはビットコインのルールを緩和または変更し、旧ソフトウェアが拒否するブロックが有効になるものです。つまり、すべてのノードはアップグレードしなければならず、そうしなければ別のチェーンに取り残されます。
後方互換性は一方向にしか働かず、ハードフォークはその逆向きに進みます。旧ソフトウェアは新しいブロックを不正なものとして扱い、自らのチェーンを構築し続けるため、採用がほぼ全会一致に近くならない限り、結果は1つだったコインが2つになることです。Bitcoin Cashはこうして、2017年8月1日のブロック478,558で誕生しました。
仕組み
ハードフォークはノードが受け入れるブロックの集合を広げますが、広げる方向は隠しようのない方向です。
8メガバイトのブロックを許可する変更を考えてみます。アップグレード済みのノードは小さいブロックも大きいブロックも受け入れます。未アップグレードのノードは小さいブロックだけを受け入れます。誰も大きいブロックをマイニングしない限り、この2つのグループは区別できず、分裂は紙の上にしか存在しません。マイナーが1つを公開した瞬間、両グループのチェーンの先端は異なり、プロトコルの中の何ものも両者を再び結びつけることはありません。どちらの側も、自らが完全に有効とみなすブロックを取り消す気はないからです。
だからこそハードフォークには、ソフトフォークにはない調整が必要です。変更はブロック高または暦の日付で予定され、はるか前に告知され、誰もがそれまでにアップグレードを済ませていることが期待されます。期限に間に合わなければ、あなたのノードは単に旧ソフトウェアを動かしているだけでなく、取引相手がすでに放棄したチェーンを追いかけることになります。
永続する第2のチェーンを生み出すことを目的とするハードフォークには、リプレイ保護も必要です。これがなければ、署名済みのトランザクションは両方のチェーンで有効なので、一方での支出が他方でも再ブロードキャストされ、対応するコインがそちらでも使われてしまいます。Bitcoin Cashは新しい署名ハッシュタイプであるSIGHASH_FORKIDを要求することでこれを解決しました。これにより、Bitcoin Cashのトランザクションはビットコイン上で構造的に無効となり、ビットコインのトランザクションはBitcoin Cash上で無効となります。この手順を省いた分裂では、偶発的なリプレイによってユーザーがコインを失いました。
ビットコイン自体がこの方法でルールを変えたのは、苦境の下での初期の数年間だけです。2010年8月15日の値のオーバーフロー事件は、算術上のバグから1,840億枚のコインを生成するブロックを生み出し、その修復にはパッチを当てたクライアントと、そのブロックより前まで戻す意図的な再編成が必要でした。2013年3月のチェーン分裂は、BIP-50に記録された予定された切り替えによって解決されました。それ以降、これに近い出来事は起きておらず、強制的に起こす仕組みも存在しません。ビットコインにおけるハードフォークは、経済全体がそれに従うことを選んだ場合にのみ成功する提案です。
ビットコインを購入する際にこれが重要な理由
ハードフォークが告知されるたびに2つの実務的な疑問が生じますが、そのうちあなたのコインに関わるのは1つだけです。
1つ目はカストディです。鍵を自分で保有するウォレット内のコインは、どの分裂でも自動的に両側に存在します。両方のチェーンがフォークのブロックまでの同じ台帳を引き継ぐからです。あなたがそれらを請求したり、登録したり、何かをウェブサイトに接続したりする必要はありません。2つ目の資産にアクセスしたい場合は、同じシードフレーズを2つ目のチェーンに従うソフトウェアにインポートしますが、それは他に何も保持していない端末で行います。そのソフトウェアは、あなたが信頼する理由のない人々によって書かれているからです。
2つ目は取引所です。プラットフォーム上に保有されるコインは、あなたではなくプラットフォームの判断です。2017年には、当サイトがレビューする取引所の一部がBitcoin Cashを顧客の残高に付与し、一部は数週間後に取引を可能にし、一部はまったく上場させませんでしたが、いずれも入金と出金は停止されていました。そのいずれもどこにも契約として定められていません。分裂があなたにとって重要なら、コインは事前にプラットフォームの外に置く必要があります。
詐欺の層はプロトコルのリスクより悪質です。偽のフォークエアドロップは、当サイトの詐欺ガイドで最も古い手口の1つです。新しいチェーンを告知するサイト、請求フォーム、そしてリカバリーフレーズを入力する欄です。分裂がそれらを必要としたことは一度もありません。フォークしたコインを受け取るためにシードフレーズを求めるものは、元のコインを盗んでいます。
Bitcoin Cash、実際に起きたハードフォーク
Bitcoin Cashは明快な事例研究です。行ったことのすべてが事前に公表され、必要としたことのすべてがどこか別の場所で先にうまくいかなかったからです。
仕様は2017年8月1日にアクティベーション時刻を定め、その後の最初のブロックが1メガバイトを超えなければならないというルールを設け、分裂を偶然に任せず確実なものとしました。ブロック478,558がそのブロックでした。新しいルールは基本上限を8メガバイトに引き上げ、SegWitを採用せず、2つのチェーンが互いのトランザクションをリプレイできないようSIGHASH_FORKIDを追加しました。
長く残る教訓は、その後に起きたことです。グループが台帳のコピーを持って離脱できることが示されると、Bitcoin Cash自体がその方向性に反対する一派によって再びハードフォークされ、後継チェーンはそれ以来分裂を続けています。ハードフォークはプロジェクトの生涯における一度きりの出来事ではなく、次の意見の相違が呼び出すことのできる前例です。
ハードフォークvsアルトコイン
ハードフォークは台帳を引き継ぎ、アルトコインは空の台帳から始まります。Litecoinは残高がまったくない独自のチェーンとして開始したため、目覚めたときに何かを保有していた人はいませんでした。Bitcoin Cashは、ブロック478,558時点のすべてのビットコイン残高がすでにそのチェーン上で付与された状態で開始したため、保有者たちは突然何かを所有していると告げられました。分裂後は、両者が別々のルールと別々の価格を持つ別個の資産であるため、技術的にはこの区別は問題にならなくなりますが、コインがどのように分配されたかについては完全に重要です。
ハードフォークvsソフトフォーク
違いは方向であり、方向が誰に行動を強いるかを決めます。ハードフォークは以前は無効だったブロックを有効にするため、すべてのノードがアップグレードするか、経済の残りがいるチェーンから外れるかのどちらかになります。ソフトフォークは以前は有効だったブロックを無効にするため、未アップグレードのノードは何も変わっていないことに気づかず同じチェーンを追い続けます。一方は期限内に全員の行動を要求し、他方はマイニングしていない誰にも何も要求しません。