(BeeCee1の引用投稿)
十分な人数がネットワークを使用しており、分裂が公然とした敵対行為によるものでなければ、2つのネットワーク間で断続的な接続が生じる可能性がある。これはブロックチェーンの再同期に役立つが、トランザクションがランダムに消失し、システムの信頼性を損なう可能性がある。
ケーブルの切断、または一連のケーブル切断によって一群の国々が孤立した状況を想像してほしい。
- Bitcoinを持つ誰かが海外へのダイアルアップ接続を開始するかもしれない
- 衛星接続を持つ人がいるかもしれない
これらはおそらく断続的になるだろう。欲しいものの大部分がそこにあるため、「通常の」インターネットに大半の時間を費やすからだ。接続するたびにブロックが彼らのコンピュータから世界中に流れ始め、通常のサービスに再接続した時には自国の残りの部分にも流れる。
Bitcoinを持つ誰かがそれらの国の1つに飛行機で訪れ、現地のサービスに接続した時、そのコンピュータのブロックが切断された国々に流れ、最長のブロックチェーンが勝つ。帰国した時には、再び切断された国々からのブロックが世界中に流れる。
Quote from: BeeCee1 on August 03, 2010, 01:07:23 PM
十分な数の人がネットワークを使用しており、分裂が公然の敵対行為によるものでなければ、2つのネットワーク間で断続的な接続があり得る。これはブロックチェーンの再同期に役立つが、トランザクションがランダムに消えることでシステムの信頼性を損なう可能性がある。
ケーブルの切断、または一連のケーブル切断が国の一群を孤立させたと想像してほしい。
- Bitcoinを持つ誰かが海外へのダイヤルアップ接続を開始するかもしれない
- 衛星接続を持つ人がいるかもしれない
これらはおそらく断続的だろう。欲しいもののほとんどがある「通常の」インターネットで大半の時間を過ごすからだ。接続するたびにブロックがそのコンピュータから世界の残りの部分に流れ、通常のサービスに再接続するとその国の残りの部分に流れる。
Bitcoinを持つ誰かがそれらの国の一つに飛んで訪問し、ローカルサービスに接続すると、そのコンピュータのブロックが切断された国々に流れ、最長のブロックチェーンが勝つ。帰国すると再び、切断された国々からのブロックが世界の残りの部分に流れる。
そうだ… しかし、あなたが述べていることは、ネットワーク分裂が起きていることを誰かが気づき、証明した後にのみ可能だ。 ネットワーク分裂の始まりを検出する方法を提案しているのか?
Quote from: throughput on August 03, 2010, 01:33:08 PM Quote from: BeeCee1 on August 03, 2010, 01:07:23 PM
十分な人数がネットワークを使用しており、分裂が公然とした敵対行為によるものでなければ、2つのネットワーク間で断続的な接続が生じる可能性がある。これはブロックチェーンの再同期に役立つが、トランザクションがランダムに消失し、システムの信頼性を損なう可能性がある。
ケーブルの切断、または一連のケーブル切断によって一群の国々が孤立した状況を想像してほしい。
- Bitcoinを持つ誰かが海外へのダイアルアップ接続を開始するかもしれない
- 衛星接続を持つ人がいるかもしれない
これらはおそらく断続的になるだろう。欲しいものの大部分がそこにあるため、「通常の」インターネットに大半の時間を費やすからだ。接続するたびにブロックが彼らのコンピュータから世界中に流れ始め、通常のサービスに再接続した時には自国の残りの部分にも流れる。
Bitcoinを持つ誰かがそれらの国の1つに飛行機で訪れ、現地のサービスに接続した時、そのコンピュータのブロックが切断された国々に流れ、最長のブロックチェーンが勝つ。帰国した時には、再び切断された国々からのブロックが世界中に流れる。
そうだが… あなたが説明しているのは、誰かがネットワーク分裂に気づき、証明した後にのみ可能なことだ。 ネットワーク分裂の始まりを検出する方法を提案しているのか?
いいえ、十分な数のBitcoinユーザーがいればこれは自然に起こるだろうと言っているのだ。Bitcoinネットワークの分裂に気づく必要はない。ローカルエリア外のメール確認やウェブサイトアクセスができないことに気づいて「世界の残りの部分」への一時的な代替接続を開始するか、たまたまBitcoinの入ったノートパソコンを飛行機に持ち込むかだ。
これが良いことだとも言っていない。かなり長期間の単一の分裂であれば人々は解決策を考え出せるが、それぞれ数時間続く多数の分裂はトランザクションがランダムに消失することを意味し、システムへの信頼を損なう。
Quote from: BeeCee1 on August 03, 2010, 03:12:42 PM
良いことだと言っているわけでもない。長期間にわたる単一の分裂があれば人々は解決策を考え出せるが、数時間続く分裂が何度もあるとトランザクションがランダムに消え、システムへの信頼が損なわれる。
トランザクションが有効であれば消えることはない。より長いブロックチェーンに移動するだけだ。
無効なトランザクションとは、分裂したチェーン間で二重支払いを試みる誰かのことだ(これは巧妙でなければならない――改変クライアントを実行するか、もう一方のブロックチェーンで作業しているマシンにウォレットをコピーする必要がある)。
あるいは、分裂が十分に長く続いた場合(100ブロック以上)、短い方のチェーンで生成されたコインを含むトランザクションは合流時に無効となる。
より短い分裂の場合、短い方のチェーンの未成熟な生成コインはチェーンの合流時に消えるが、正直なユーザーにとってはそれが最悪の結果だろう(不正を試みる誰かから無効なコインを受け取るほど不運でない限り)。
Quote from: gavinandresen on August 03, 2010, 06:38:44 PM
トランザクションが有効であれば消えることはない。より長いブロックチェーンに移動するだけだ。
無効なトランザクションとは、分裂したチェーン間で二重使用を試みるもので(修正されたクライアントを実行するか、ウォレットを別のチェーンで動作するマシンにコピーする必要があり、手間がかかる)。
あるいは、分裂が十分に長く続いた場合(100ブロック以上)、短い方のチェーンで生成されたコインを含むトランザクションはマージ時に無効になる。
短い分裂の場合、短い方のチェーンの未成熟な生成コインはチェーンのマージ時に消えるが、正直なユーザーにとってはそれが最悪の結果だろう(不正を試みる人から無効なコインを受け取る不運がなければ)。
興味深い情報だ。つまり二重使用の問題以外では、ブロックチェーンが100ブロック以上(16時間以上)分離していない限り、大きな問題なく再マージできるということだ。つまりコイン生成がおそらく唯一の被害者だ(二重使用の不正がなければ)。あるいは技術的に言えば、コイン生成は分裂時に同時に生成していた別の人に割り当てられるということだ。
分裂遅延のハードコードされた制限はあるのか?つまり、小さなネットワークを公開ネットワークから分離し、その中でコインのやり取りをして、数日後に公開ネットワークに同期させた場合(コイン生成があった場合以外は)トランザクションは問題ないのか?
Quote from: throughput on August 03, 2010, 01:33:08 PM
はい…… しかしあなたが述べていることは、誰かがネットワーク分裂の発生に気づき証明した後でしか可能ではない。 ネットワーク分裂の開始を検出する方法を提案しているか?
この方向で別のスレッドを始めたが、個々の販売者にとっては、最後の公式難易度変更以降のブロック間の平均時間を追跡するシンプルなウォッチドッグデーモンが良いだろう。1つのブロックが平均の2倍以上かかった場合に販売者に警告し、販売者が状況を確認するまで新しいコインの受け入れを一時停止する。平均より長いブロックが連続するほど、偽陽性に対する信頼度が上がる。つまり、1ブロックが平均の2倍かかり、その後一連のブロックが平均の75%長くかかれば、もはや多数派ネットワーク上にいないとかなり確信できる。
Quote from: creighto on August 03, 2010, 08:01:22 PM Quote from: throughput on August 03, 2010, 01:33:08 PM
はい…… しかしあなたが述べていることは、誰かがネットワーク分裂の発生に気づき証明した後でしか可能ではない。 ネットワーク分裂の開始を検出する方法を提案しているか?
この方向で別のスレッドを始めたが、個々の販売者にとっては、最後の公式難易度変更以降のブロック間の平均時間を追跡するシンプルなウォッチドッグデーモンが良いだろう。1つのブロックが平均の2倍以上かかった場合に販売者に警告し、販売者が状況を確認するまで新しいコインの受け入れを一時停止する。平均より長いブロックが続くほど、偽陽性に対する信頼度が上がる。
本当に?ネットワークの半分のサイズの全く新しいネットワークがあなたに到達したというよりも、多くの人が離脱/クラッシュした可能性の方が高いように思えるが。
多分、私が誤解しているのだろう。
creighto:そのアイデアに同意する。数時間後には、ブロックの流れが偶然の範囲を超えて減少していないか、クライアントが気づけるようになるはずだ。世界のハム音が聞こえなくなったかどうかがわかるだろう。
Quote from: knightmb on August 03, 2010, 07:02:13 PM Quote from: gavinandresen on August 03, 2010, 06:38:44 PM
あるいは分断が十分長く続いた場合(100ブロック以上)、短い方のチェーンで生成されたコインを含むトランザクションは、マージ時に無効になります。
興味深い情報です。つまり、二重支払いの問題以外は、ブロックチェーンが100ブロック程度(または16時間以上)分離しない限り、
実際には、分断は非常に非対称になりやすい。世界を真っ二つに分けるのは難しいだろう。むしろ一国対それ以外の世界という形になりやすく、例えば1:10の分割とする。その場合、少数派フォークが100ブロック生成するのに10倍の時間がかかり、約7日になる。また、クライアントにとってブロック数が少なすぎて何かがおかしいと気づくのは非常に簡単だろう。
Quote from: knightmb on August 03, 2010, 07:02:13 PM
分断遅延にハードコードされた制限はありますか? つまり、小さなネットワークを公開ネットワークから分離して、コインを使い回し、数日後に公開ネットワークと同期させた場合(コイン生成を除いて)、トランザクションは問題ないですか?
時間制限はない。少数派フォークで生成されたコインを使ったり、受け取った誰かの二重支払いを使ったりしていない限り、あなたのトランザクションはいつでも後からもう一方のチェーンに取り込むことができる。