約10分で正しく理解する「8/1に何が起こるのか」

こんにちは。暑さで溶けそうな日々を過ごしているヨーロピアンです。

早いもので7月に突入し、感じる日差しは完全に夏のそれになってきました。同時に、きたるXデーの8/1がもうそこまで迫ってきていることを感じさせます。

「ビットコイン分裂騒動」として日経新聞を始めとした大手メディアにも取り上げられるようになった8/1は、最近の暗号通貨界隈でもバズワードの一つとなっています。
とはいえ実際に何が起こるかを正しく理解している方はあまり多くないようです。

人気ブロガーであるヒトデさんの記事を読みました。非常に楽しい記事です。
しかし、残念ながら8/1に対する認識はほとんど全て誤りであると言って良いでしょう。これは仕方がないことです。今回ばかりは状況が複雑で、断片的な情報から問題を正しく理解するのは非常に困難なのです。

そこで、ビットコインの仕組みへの理解も含めて状況をおさらいしようというのがこの記事の趣旨です。


前提記事

まずはこちらの記事を見てください。

BTCNのざきやまさんによる、今回の8/1問題の大テーマを完璧に解説している非常に優れた記事です。決定版と呼んで差し支えないと思います。

しかしながら、この記事は「ある程度ビットコインの技術・前提を理解している人向け」に書かれていますので、前提知識がない状態で読むのは非常に苦しいです。

そこで一旦この記事は開いた状態で横においておき、先にビットコインの理解を行いましょう。できるだけ簡易に理解できるように記述しましたので、まずは5分ほど頑張ってみてください。


ビットコインの仕組み

まずは最初におさらいです。

ビットコインは非中央集権型のコインです。「ノード」と呼ばれる端末が接続しあって、蜘蛛の巣のようにネットワークを構成しています。
このノードには誰でもなることができます。これがビットコインが民主的であると言われる所以ですね。
(ノードにはいくつかの種類が存在し、それぞれ役割が微妙に異なりますがここでは省略します)

送金

さて、AさんがBさんにビットコインを送金したとしましょう。
この時の送金はAさんのノードからBさんのノードへコインが移動した……というわけではありません。

AさんはBさんに1BTC送金したいとき、Aさんのアドレスの署名を添えて「AからB 1BTC送金 手数料0.0001」と書いてどこかのノードに向けて送信します。この時の送信内容を「トランザクション」と呼びます。
ノードはあちこちから送られてきた大量のトランザクションをある程度まとめて「ブロック」にします。そしてこのブロックをノードが共有している「台帳」の最後に付け足すための計算を一生懸命始め、計算が解けたらブロックは無事に台帳の末尾に追記されます。
この台帳が「ブロックチェーン」です。

つまり、我々がビットコインと呼称しているのがこの膨大な台帳そのものなのです。台帳には過去から今までの全ての送金内容が記載されています。

聞きなれない用語が次々出てきたと思いますので、一旦ここまでをまとめます。

  • 「ノード」……ビットコインのネットワークに繋がるコンピュータ1つ1つ
  • 「トランザクション」……「AからBに◯◯BTC送金」という一回の送金の単位
  • 「ブロック」……トランザクションを一定サイズまとめたもの
  • 「ブロックチェーン」……ブロックを順に繋げたもの。台帳。

大丈夫でしょうか。理解できたら次を読み進めてください。

台帳の共有

この台帳はそれぞれのノードが隣のノードにコピーを送信する仕組みになっています。先程の「AさんがBさんに1BTC送金した」という記録も、台帳のバケツリレーにより全ネットワークで共有されるようになるのです。
ここで疑問が出てきます。コピーされた台帳の最後に違う2つのノードがそれぞれ別のブロックを追記してしまうことはないのでしょうか。

はい、しょっちゅう起こります。 ノードは無数に存在するわけですから、台帳のコピーが間に合わないこともよくあるのですね。こうすることで「歴史」が異なる2種類の台帳が発生します。しかしこれは通常、一時的なものです。
ビットコインには「送信されてきたチェーンが自分の持っているチェーンより長ければ、長い方のチェーンを採用する」というルールが敷かれているからです。

こうして2つの異なる台帳は、よりたくさん追記された方だけが残されて、もう片方はネットワーク上から消滅します。
この時消えた台帳の方に記録されている送金履歴は「なかったこと」になります。ごくまれに「ビットコインを受け取ったはずなのに改めて見たら無くなっていた」ということがあります。
これは送金されたという事実そのものが消滅したことによる巻戻りです。

しかし、本来送金を気軽に「なかったこと」にされては困ります。ビットコインはお金ですから、送金時には商品やサービスと交換されていることでしょう。レジで受け取ったつもりのお客さんの代金が1時間後に確認した時「なくなっていた」なんてことが発生しては困ってしまいますね。

このため、自分の送金を記録した台帳が確実に生き残るかしばらく待つという方法が一般的になっています。

トランザクションを送信した状態が「0承認」
台帳に記載されたら「1承認」
さらにその後ろに別のブロックが記載されたら「2承認」

以後、3承認、4承認……と続き、一般的には6承認を待つと、ほぼ間違いなく安全であると言われています。

余談ですが、台帳が長い方が常に生き残るということは計算の速いノードは有利ですよね。これの「計算の速さ」が俗に「ハッシュパワー」と呼ばれます。ハッシュパワーの強いノードは誰よりも速く台帳の記録を伸ばしていけますから、追いつけない他のノードは長い台帳で上書きし続けるしかないのです。

ここまでの説明を理解できたら「俺はビットコインの全てを理解しているぜ」と言っても過言ではないと思います。是非お友達に自慢してください。笑

という冗談は置いておいて、これでようやく前置きが終了です。お疲れ様でした。深呼吸して、もう5分だけ頑張りましょう!

ハードフォークとソフトフォーク

さて、ノードではビットコインの専用プログラムが稼働しています。 このプログラムはある程度自由に変更することができますから、決められたルールを少しだけ変えることもできるのです。

「今までの台帳とは違う方式のブロックを採用する」というルールを敷いた新しいプログラムを作成したとしましょう。そしてこのプログラムを動かしたノードがいくつか稼働しているとします。
すると、その時点から従来の方式のノードと新方式のノードではお互いに台帳をコピーし合うことができなくなります。
こうすることで台帳は「従来の方式のノードが持っているA」「新しい方式のノードが持っているB」がそれぞれどんどん台帳を伸ばしていくことになります。つまり、2つの異なる「歴史」が生まれるのです。これがハードフォーク。

分裂前のアドレスの所有者はどちらの台帳にも問題なくアクセスすることができますから、一般に「コインが2つに分裂する」はこの状態のことを指すことになります。

一方、「ソフトフォーク」は劇的な変更を加えないために、台帳のコピーが問題なく行なえる程度の変更を加えたプログラムを動かすことです。旧バージョン・新バージョンのノードで互換性があるので台帳の分裂は発生しません。これが「ソフトフォークは安全」と言われる理由です。

8/1 UASF

さて、いよいよ8/1の話です。 ビットコインのプログラムに対する方針の違いにより、8/1にもフォークを引き起こすことを宣言した一部陣営が存在しています。

ハードフォークで2つに台帳が分裂したとして、2つの台帳のどちらに価値が生まれるか、というのは誰にも分かりません。
記憶に新しいのは、イーサリアム(ETH)とイーサリアム・クラシック(ETC)です。ハードフォークを行ったETHに対し、従来の台帳に価値がないと誰もが考えれば、古いバージョンの台帳(レガシーチェーン)を所持するノードはそのうち無くなり、従来の台帳は実質的に消滅するはずでした。
しかし実際には取引所で取り扱われることが決定し、価値がついてしまったのです。そのため旧バージョンの台帳もETCと名付けられそのまま稼働しています。
この場合は多少の混乱はありますが、コインが2つに分裂すると言ってもそれで大騒ぎするような内容ではないのは肌感で理解しやすいと思います。

しかし、8/1に行われるフォークは一味違います。 ソフトフォークでもハードフォークでもない、UASF(User-Activated-Soft-Forkの略)という第三のフォーク方式が行われます。
※7/15追記:「第三のフォーク」という表現は簡易ですが、若干不正確です。マイナーによる95%のハッシュレートの同意を得ないという意味でアクティベート方式が異なりますが、プログラムでの解決方法としては通常のソフトフォークと同一です。簡易に捉えるなら「安全なフローを経ないソフトフォーク」という認識で大体大丈夫です。

UASFにおける新プログラムを採用した新しいノードの挙動はこうです。
古い台帳と互換性を持ったプログラムを走らせるために、新プログラムの台帳は問題なく古いバージョンのノードにもコピーされます。しかしながら、従来の台帳のコピーは全て拒否します。
つまり、全ての基本である「送信されてきたチェーンが自分の持っているチェーンより長ければより長い方のチェーンを採用する」というルールを完全無視するのです。

これにより何が起こるか?そうです、「UASFを仕掛けた側の台帳追記速度が少しでも従来の台帳を上回った時点で従来の台帳の敗北が決定する」という敵対的シナリオです。

何故こうなってしまうのか。お互いの台帳の生き残りをかけた勝負であると考えた場合、UASFを仕掛ける側は常に有利であるからです。

ハッシュパワーが拮抗する場合

BTCNの記事の①に該当します。記事を開いて該当の図を見ながらお読みください。

台帳追記速度がほぼ同じだった場合です。このような状態において、台帳を上書きしあうようなシチュエーションが高い頻度で発生することは前述しました。 このような状態では従来の台帳は実質的に使い物になりません。従来の台帳は相手を上書きできないのに対し、相手の台帳は従来の台帳を上書きしてくるからです。

こうして、従来の台帳を支持するノードは降参し、新方式に乗り換えます。

UASF側が圧倒的に遅い場合

BTCNの記事の③に該当します。

台帳追記速度で従来のノードが圧倒的に上回る場合です。想定されるケースとしてはこちらの可能性の方が高いでしょうか。 この場合、新方式のノードは台帳が短いために相手にコピーできない。そして従来のノードは台帳が長いにも係わらず相手に拒否されてしまうためコピーできない。ほとんどハードフォークと同様のことが起こります。

しかしながら、ハードフォークと決定的に違うのは「従来のチェーンはいつ新方式に追い抜かれるか分からないという恐怖と常に戦わなくてはいけない」ということです。 追い抜かれた瞬間にそれまでの歴史は全て無効化され新台帳に上書きされてしまうわけですから、これは当然です。

「一般的には6承認を待つとほぼ間違いなく安全」と前述しました。しかしこの状態では1000承認されようと1年経とうといつまででもその送金が「なかったこと」にされる可能性があります。
これでは旧方式の台帳のビットコインを決済に使うことはできません。商品の代金として受け取ったはずのビットコインが1年後にこつ然と消えてしまう可能性があるからです。取引所の入金も同様です。
これらのビットコインの送金をベースとしたビジネスを営む事業者は、送金が「なかったこと」にされる可能性のない新方式の台帳をしぶしぶにでも採用するほかありません。つまりUASFは事業者やユーザーを人質にとったテロ行為であると言えます。


単純に「2つのコインに分裂するんだ」程度の理解では実態からはほぼ遠いことはお分かりいただけたでしょうか。「一度受け取ったビットコインは消えたりしない」というある種の常識・前提を覆される可能性がある、つまりビットコインの信頼そのものを揺るがす事態が起こるかもしれないのです。

このUASFが予告された8/1に必ず実行されるのか、実はまだ分かっていません。対抗策であるハードフォークの先行きも不透明ですし、両陣営の歩み寄りにより解決する可能性も残されています。

この問題は基本的に、我々一般の利用者にはどうすることもできません。 それでも刻一刻と近づいてくる「Xデー」の正体を正しく理解しておくことで「今何が起こっているか分からない」という根源的な恐怖に立ち向かうことができるのです。


7/19 追記:

この記事には今後も広告やアフィリエイトの類は一切貼らないことにしています。
代わりに、もしこのエントリがお役に立てた時に、お気持ち程度チップをいただけると喜びます。

ビットコイン: 38jM2qrC4cPhPZK1s3ND9pxPtP25tzxHKE

Like what you read? Give 西欧の車窓から a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.