ネットワークが長期間分断された後に再接続されたらどうなるか?
BitCoin が世界中で広く使われていると仮定する。2 つの国の間のすべてのインターネット接続がブロックされ(例えば中国とアメリカが戦争する)、それでも各ネットワーク内で取引が行われ続けるとする。各ネットワーク内のすべてのトランザクションは、そのネットワーク内のすべてのノードにブロードキャストされるが、もう一方のネットワークには届かない。各ネットワーク内では、最長のチェーンが有効とみなされ、BitCoin 経済は各ネットワーク内で存続し続けるだろう。
さて、数年間独立して存在した後、2 つのネットワークが再接続されたらどうなるだろうか?
十分な人数がネットワークを使用しており、分裂が公然とした敵対行為によるものでなければ、2 つのネットワーク間で断続的な接続が生じる可能性がある。これはブロックチェーンの再同期に役立つが、トランザクションがランダムに消失し、システムの信頼性を損なう可能性がある。
ケーブルの切断、または一連のケーブル切断によって一群の国々が孤立した状況を想像してほしい。
- ビットコインを持つ誰かが海外へのダイアルアップ接続を開始するかもしれない
- 衛星接続を持つ人がいるかもしれない
これらはおそらく断続的になるだろう。欲しいものの大部分がそこにあるため、「通常の」インターネットに大半の時間を費やすからだ。接続するたびにブロックが彼らのコンピューターから世界中に流れ始め、通常のサービスに再接続した時には自国の残りの部分にも流れる。
ビットコインを持つ誰かがそれらの国の 1 つに飛行機で訪れ、現地のサービスに接続した時、そのコンピューターのブロックが切断された国々に流れ、最長のブロックチェーンが勝つ。帰国した時には、再び切断された国々からのブロックが世界中に流れる。
十分な人数がネットワークを使用しており、分裂が公然とした敵対行為によるものでなければ、2つのネットワーク間で断続的な接続が生じる可能性がある。これはブロックチェーンの再同期に役立つが、トランザクションがランダムに消失し、システムの信頼性を損なう可能性がある。
ケーブルの切断、または一連のケーブル切断によって一群の国々が孤立した状況を想像してほしい。
- ビットコインを持つ誰かが海外へのダイアルアップ接続を開始するかもしれない
- 衛星接続を持つ人がいるかもしれない
これらはおそらく断続的になるだろう。欲しいものの大部分がそこにあるため、「通常の」インターネットに大半の時間を費やすからだ。接続するたびにブロックが彼らのコンピューターから世界中に流れ始め、通常のサービスに再接続した時には自国の残りの部分にも流れる。
ビットコインを持つ誰かがそれらの国の1つに飛行機で訪れ、現地のサービスに接続した時、そのコンピューターのブロックが切断された国々に流れ、最長のブロックチェーンが勝つ。帰国した時には、再び切断された国々からのブロックが世界中に流れる。
そうだ… しかし、あなたが述べていることは、ネットワーク分裂が起きていることを誰かが気づき、証明した後にのみ可能だ。 ネットワーク分裂の始まりを検出する方法を提案しているのか?
BeeCee1の投稿(2010年8月3日 04:07 UTC)十分な人数がネットワークを使用しており、分裂が公然とした敵対行為によるものでなければ、2つのネットワーク間で断続的な接続が生じる可能性がある。これはブロックチェーンの再同期に役立つが、トランザクションがランダムに消失し、システムの信頼性を損なう可能性がある。
ケーブルの切断、または一連のケーブル切断によって一群の国々が孤立した状況を想像してほしい。
- ビットコインを持つ誰かが海外へのダイアルアップ接続を開始するかもしれない
- 衛星接続を持つ人がいるかもしれない
これらはおそらく断続的になるだろう。欲しいものの大部分がそこにあるため、「通常の」インターネットに大半の時間を費やすからだ。接続するたびにブロックが彼らのコンピューターから世界中に流れ始め、通常のサービスに再接続した時には自国の残りの部分にも流れる。
ビットコインを持つ誰かがそれらの国の1つに飛行機で訪れ、現地のサービスに接続した時、そのコンピューターのブロックが切断された国々に流れ、最長のブロックチェーンが勝つ。帰国した時には、再び切断された国々からのブロックが世界中に流れる。
そうだ… しかし、あなたが述べていることは、ネットワーク分裂が起きていることを誰かが気づき、証明した後にのみ可能だ。 ネットワーク分裂の始まりを検出する方法を提案しているのか?
いいえ、十分な数のビットコインユーザーがいればこれは自然に起こるだろうと言っているのだ。ビットコインネットワークの分裂に気づく必要はない。ローカルエリア外のメール確認やウェブサイトアクセスができないことに気づいて「世界の残りの部分」への一時的な代替接続を開始するか、たまたまビットコインの入ったノートパソコンを飛行機に持ち込むかだ。
これが良いことだとも言っていない。かなり長期間の単一の分裂であれば人々は解決策を考え出せるが、それぞれ数時間続く多数の分裂はトランザクションがランダムに消失することを意味し、システムへの信頼を損なう。
これが良いことだとも言っていない。かなり長期間の単一の分裂であれば人々は解決策を考え出せるが、それぞれ数時間続く多数の分裂はトランザクションがランダムに消失することを意味し、システムへの信頼を損なう。
トランザクションが有効であれば消えることはない。より長いブロックチェーンに移動するだけだ。
無効なトランザクションとは、分裂したチェーン間で二重支払いを試みる誰かのことだ(これは巧妙でなければならない――改変クライアントを実行するか、もう一方のブロックチェーンで作業しているマシンにウォレットをコピーする必要がある)。
あるいは、分裂が十分に長く続いた場合(100 ブロック以上)、短い方のチェーンで生成されたコインを含むトランザクションは合流時に無効となる。
より短い分裂の場合、短い方のチェーンの未成熟な生成コインはチェーンの合流時に消えるが、正直なユーザーにとってはそれが最悪の結果だろう(不正を試みる誰かから無効なコインを受け取るほど不運でない限り)。
トランザクションが有効であれば消えることはない。より長いブロックチェーンに移動するだけだ。
無効なトランザクションとは、分裂したチェーン間で二重支払いを試みる誰かのことだ(これは巧妙でなければならない――改変クライアントを実行するか、もう一方のブロックチェーンで作業しているマシンにウォレットをコピーする必要がある)。
あるいは、分裂が十分に長く続いた場合(100ブロック以上)、短い方のチェーンで生成されたコインを含むトランザクションは合流時に無効となる。
より短い分裂の場合、短い方のチェーンの未成熟な生成コインはチェーンの合流時に消えるが、正直なユーザーにとってはそれが最悪の結果だろう(不正を試みる誰かから無効なコインを受け取るほど不運でない限り)。
興味深い情報だ。つまり二重支払いの問題以外では、ブロックチェーンが 100 ブロック以上(16時間以上)分離していない限り、大きな問題なく再マージできるということだ。つまりコイン生成がおそらく唯一の被害者だ(二重支払いの不正がなければ)。あるいは技術的に言えば、コイン生成は分裂時に同時に生成していた別の人に割り当てられるということだ。
分裂遅延のハードコードされた制限はあるのか?つまり、小さなネットワークを公開ネットワークから分離し、その中でコインのやり取りをして、数日後に公開ネットワークに同期させた場合(コイン生成があった場合以外は)トランザクションは問題ないのか?
そうだ… しかし、あなたが述べていることは、ネットワーク分裂が起きていることを誰かが気づき、証明した後にのみ可能だ。 ネットワーク分裂の始まりを検出する方法を提案しているのか?
この方向で別のスレッドを始めたが、個々の販売者にとっては、最後の公式難易度変更以降のブロック間の平均時間を追跡するシンプルなウォッチドッグデーモンが良いだろう。1 つのブロックが平均の 2倍以上かかった場合に販売者に警告し、販売者が状況を確認するまで新しいコインの受け入れを一時停止する。平均より長いブロックが連続するほど、偽陽性に対する信頼度が上がる。つまり、1 ブロックが平均の 2倍かかり、その後一連のブロックが平均の 75%長くかかれば、もはや多数派ネットワーク上にいないとかなり確信できる。
throughputの投稿(2010年8月3日 04:33 UTC)はい…… しかし、あなたが説明していることは、誰かがネットワーク分裂が起きていると気づき証明した後でのみ可能だ。 ネットワーク分裂の始まりを検出する方法を提案しているか?
この方向で別のスレッドを始めたが、個々の販売者にとっては、最後の公式難易度変更以降のブロック間の平均時間を追跡するシンプルなウォッチドッグデーモンが良いだろう。1つのブロックが平均の2倍以上かかった場合に販売者に警告し、販売者が状況を確認するまで新しいコインの受け入れを一時停止する。平均より長いブロックが連続するほど、偽陽性に対する信頼度が上がる。つまり、1ブロックが平均の2倍かかり、その後一連のブロックが平均の75%長くかかれば、もはや多数派ネットワーク上にいないとかなり確信できる。
本当に?ネットワークの半分のサイズの全く新しいネットワークがあなたに到達したというよりも、多くの人が離脱/クラッシュした可能性の方が高いように思えるが。
多分、私が誤解しているのだろう。
creighto:そのアイデアに同意する。数時間後には、ブロックの流れが偶然の範囲を超えて減少していないか、クライアントが気づけるようになるはずだ。世界のハム音が聞こえなくなったかどうかがわかるだろう。
knightmbの投稿(2010年8月3日 10:02 UTC)ギャビン・アンドレセンの投稿(2010年8月3日 09:38 UTC)あるいは分断が十分長く続いた場合(100ブロック以上)、短い方のチェーンで生成されたコインを含むトランザクションはマージ時に無効になる。
実際には、分断は非常に非対称になりやすい。世界を真っ二つに分けるのは難しいだろう。むしろ一国対それ以外の世界という形になりやすく、例えば 1:10 の分割とする。その場合、少数派フォークが 100 ブロック生成するのに 10倍の時間がかかり、約 7日になる。また、クライアントにとってブロック数が少なすぎて何かがおかしいと気づくのは非常に簡単だろう。
knightmbの投稿(2010年8月3日 10:02 UTC)分断の遅延にハードコードされた制限はあるのか? つまり、パブリックネットワークから分離された小規模ネットワークがあり、コインを使い回してから数日後にパブリックネットワークと同期させた場合(コイン生成が起きた場合を除いて)、トランザクションは問題ないのか?
時間制限はない。少数派フォークで生成されたコインを使ったり、受け取った誰かの二重支払いを使ったりしていない限り、あなたのトランザクションはいつでも後からもう一方のチェーンに取り込むことができる。
creightoの投稿(2010年8月3日 20:01 UTC)つまり、あるブロックの生成時間が平均の2倍になり、それに続いて平均より75%長い時間がかかるブロックが連続した場合、自分はもう多数派ネットワーク上にはいないとかなり確信を持って言える。
本当か? 正規のネットワークの半分の規模の全く新しいネットワークが君のところに届くより、大勢が抜けたかクラッシュした方がずっとありそうな気がするんだが。
たぶん自分が誤解しているんだろう。
君が誤解しているか、自分が誤解しているか、どちらもあり得る。
事業者のクライアントから見ると、平均ブロック時間が倍になった理由はどうでもよく、倍になったという事実だけが重要だ。ウォッチドッグデーモンは事業者に問題が発生している可能性を通知するだけだ。これはアラームに過ぎず、それが自分にとっての問題かどうかは事業者自身が判断しなければならない。グリッドが復帰したときに無効なコインを抱えるリスクを許容するつもりがあるなら、依然として有効なトランザクションを行うこともできると思う。現実の現金経済にも似たようなリスクがある。レジの引き出しに入っている 20 ドル札が偽札でないことを完全な確信を持って知ることは誰にもできないからだ。リスクにさらされているのは分裂以降に作成されたコインだけだろうと、私はかなり確信している。分裂の向こう側にいる人々が所有するコインは依然として彼らのもので、両側で(正直には)取引できない。とはいえ、どちら側の正直な取引も、グリッドが復帰すればブロックチェーンに反映されるはずだ。少なくとも自分はシステムの機能をそう理解している。間違っているかもしれないが。
それから、ブロック数が増え、ノード数も増え続けるにつれて、リスクが減衰していくケースもある。既存のコインに対して、新しいコインがマネタリーベースに占める割合は時間とともに小さくなっていく。分裂以降に生成された不正コインを掴むリスクも時間とともに増えるとはいえ、相対的には遠い話で、これから 120年のあいだにゼロに近づいていく。だがリスクは線形にではなく、対数的にゼロへ近づいていく。
ここで言いたいのは、ビットコインが普及するころには、ネットワーク障害中に不正コインで取引してしまうリスクは、ビットコインの人気が高まるにつれて低下する、かつブロックチェーンが時間とともに成長することによっても単純に低下する、ということだ。
ありがとう、それは特に有用な結果だ!