世界でインターネットが分断したら、ビットコインはどうなる?
ビットコインを発明し、未だその正体が分かっていないサトシ・ナカモト。そんなサトシが残した約2年間の文章を、小宮自由氏の解説と共に紹介する連載「サトシ・ナカモトが残した言葉〜ビットコインの歴史をたどる旅」の第42回。
まずサトシのメールの前に、本連載の元になっている書籍『ビットコイン バイブル:サトシナカモトとは何者か?』の著者フィル・シャンパーニュ氏の解説も掲載する。
フィル・シャンパーニュ氏の解説
ネットワークの分割や分裂の可能性について、二つのスレッドで論じられている。
サトシ・ナカモトの投稿
それではサトシの投稿をみていこう。
========================
Re:匿名性!
サトシ・ナカモト 2010年06月08日 午後07時12分00秒
(注:斜体部分は、サトシ以外の者の質問を指す)
インターネットが分割して相互に通信不可能になる事態はイメージしにくいです。そうなるとすれば、国家が意図的に全世界に対して全面的に遮断するケースぐらいです。
両側へのアクセスを維持できるノードがいれば、自動的にブロックチェーンを双方向へ流すでしょう。例えば、ダイアルアップ・モデムや衛星電話で遮断を回避できる人です。その実行には一つのノードがあれば済みます。ビジネスの続行を望む人はそうしようとするでしょう。
ネットワークが分割後に再結合されたら、短いフォーク側の取引で、長いフォーク側に存在しなかったものが、再度、取引プールにリリースされ、将来のブロックへの編入資格を得ます。その数の分の確認作業がスタートします。
分割状態を利用して二重支払をして、両側で同一のコインに対する異なる支払が発生すると、短いフォーク側の二重支払は失敗に終わり、「0/unconfirmed」に変わってその状態が続きます。
分割状態を利用して二重支払をするのは簡単ではありません。両者の間の通信が不可能なら、どうやって両側での支払を実行しますか?その方法があるなら、たぶん、別の誰かも分割状態を利用してブロックチェーンを双方向へ流すでしょう。
普通ならば、自分が小さい分割サイドにいるかどうかは分かるでしょう。例えば、自分の国が全世界に対して遮断したら、全世界の方が長い分割サイドになります。自分が小さい方のサイドにいるなら、どの取引も確認を受けられないと思うべきです。
ここでは特にネットワーク分裂のケースがカバーされている*1。
========================
ネットワークが長期間分裂した後、再接続されたら何が起きるか?
投稿:em3rgentOrdr 2010年08月01日 午前11時07分24秒
ビットコインが世界中で広く使われているとします。二つの国の間で全てのインターネット接続が遮断され(例えば中国と米国が戦争状態に入る)、それぞれのネットワーク内で取引が続行されるとします。それぞれのネットワーク内の取引は全て、自分の側のネットワーク内の全てのノードにブロードキャストされますが、相手側のネットワークには届きません。各ネットワーク内部では、最長のチェーンが有効と判定され、ビットコイン経済はどちらの側でも存続し続けます。
さて、この状態で両者がそれぞれ独立のネットワークとして数年間存続した後、再接続されると何が起きるでしょうか?
Re:ネットワークが長期間分裂した後、再接続されたら何が起きるか?
投稿:kiba 2010年08月02日 午前03時19分08秒
たぶん再接続はされないでしょう。そうなる代わりに、事実上、二つの通貨が存在することになります。東側ビットコイン通貨と西側ビットコイン通貨の交換市場が生まれることになります。
Re:ネットワークが長期間分裂した後、再接続されたら何が起きるか?
投稿:throughput 2010年08月02日 午後06時07分08秒
私が商売人として心配なことがあるとすれば、自分のいるネットワークが多数派のネットワークかどうか、再接続後に私の取引が承認されるかどうかだけです。ですので、私には識別可能なノードの現在数を監視できれば済む話です。グラフに落としてみて、その数が突如半減したら取引の処理を停止します。
これは、ビットコイン・ノードを稼動するウェブサーバーのサービスになるかもしれないです。
でも、その数を監視する方法はありますか?もしなければ、標準の機能に追加して、稼働中の識別可能なノードの数をリアルタイムに測定できるよう、追加の機能を加えるのが賢明でしょう。
Re:ネットワークが長期間分裂した後、再接続されたら何が起きるか?
投稿:creighto 2010年08月03日 午後08時01分22秒
引用:throughput 2010年08月03日 午後01時33分08秒
その通りです。
ですが、想定されている事態が起きるのは、ネットワークの分裂が起きていることに誰かが気づいて証明したときだけです。ネットワークの分裂の開始を検知できる方法を提案できますか?
ここの他に別のスレッドを開始しましたが、個人の売り手に対しては、単純なウォッチドッグ・デーモン*2 が最後の公式の難易度変更後のブロック間の平均時間を追跡し、一ブロックに平均の二倍以上の時間がかかっていると警告し、何が起きているかを売り手がチェックするまで、新規コインの承認を保留するはずです。続けて到着するブロックがどれも平均より時間がかかっていれば、誤検知の確信が増します。ですので、あるブロックに平均の二倍の時間がかかり、その後に続くブロック群が平均より75%長くかかるなら、自分がすでに多数派ネットワークにはつながっていないと、かなりの程度確信できます。
Re:ネットワークが長期間分裂した後、再接続されたら何が起きるか?
投稿:サトシ 2010年08月03日 午後10時45分07秒
creightoへ、その考えには賛成です。数時間後、流入するブロック数が単なる偶然以上に減少しすぎていると、クライアントは気づくことができるはずです。クライアントは世界のざわめきが聞こえてこなくなったと判断できます。
引用:knightmb 2010年08月03日 午後07時02分13秒
引用:gavinandresen 2010年08月03日 午後06時38分44秒
あるいは、分裂が長引けば(百ブロック分以上)、短いチェーンの側で生成されたコインを含む取引は、再結合時に無効になります。
面白い情報ですね。二重支払の問題がなければ、ブロックチェーンが約百ブロック分(または約16時間分)離れていなければ、
実際には、分裂は非対称的に起きそうです。世界を中央で切って真っ二つにするのは困難です。ありうるのは、一ヶ国と全世界、例えば1:10という分裂です。このケースだと、少数派フォークは百ブロックの生成に十倍の時間、つまり、七日かかります。また、受信するブロック数が少なすぎる、何か問題が起きたのだろうとクライアントが認識するのはとても簡単です。
引用:knightmb 2010年08月03日 午後07時02分13秒
分裂の停滞に対し、ハードコードされた制限があるとどうなりますか?自分が公開ネットワークのうち小さい方のネットワーク分裂にいて、いくつかコインを使用し、数日後に戻って公開ネットワークに同期してアップしたら(コイン生成がもし起こるならそれ以外で)、この取引は正常ですか?
時間の制限はありません。少数派フォークで生成されたコインを使用していないか、受領した誰かの二重支払を使用していなければ、その取引は後の時間になればもう片方のチェーンに編入されます。
========================
【訳注】
*1 これはフィル氏の発言。
*2 システムやプロセスの状態を監視し、予期せぬ停止や障害が発生した場合に自動的に復旧処理を行うためのバックグラウンドプログラム。この場合はコイン生成が正常に行われているかどうかを監視して適切な処理を行うプログラムが想定されている。
解説
「戦争などでインターネットが遮断されたら、ビットコインブロックチェーンが分裂するのではないか?」という議論がなされています。これは案外複雑な問題です。
特定国同士(例えば米国と中国)のインターネット遮断であれば(例えば、中国がアメリカのIPを全てブロックする)、分裂は起こりません。第三国(例えばインド)を経由してデータが同期されるからです。本当の意味での分裂は、その国がインターネット上で孤立(例えば、中国が非中国IPを全てブロックする)しなければ起こりません。これは現代においては起こる確率は低そうです。
仮に起こったとしても、本文にある通り、自分が少数派(この場合全世界遮断をした国の居住者)であることはすぐに判明するでしょう。ブロックチェーンのデータを見れば明らかだし、そもそも全世界遮断が起こればその国内でニュースや口コミですぐに知れ渡ります。そのような場合でも、VPN や Tor で遮断を回避したり、USBメモリなどの物理メディアでデータを持ち込んだりすれば、同期は可能です。少数派ネットワークの中での経済圏はおそらくできないか、できてもごく短期間にとどまるでしょう。
遠くの惑星にでも行かない限り、地球上でブロックチェーンの分裂が長期化することは考えにくいです。
小宮自由