ブロックチェーンのチェックポイント化

10 件のメッセージ BitcoinTalk mkrogh, サトシ・ナカモト, aceat64, MoonShadow, NewLibertyStandard 2010年8月16日 — 2010年8月16日
mkrogh 2010年8月16日 原文 · 個別ページ

こんにちは

チェーンが大規模に無効化され、より長いチェーンに置き換えられる可能性を決して完全には信頼できないことは問題だと考える。

これはビットコインの最大規模のインスタンスを除くすべてにとっての問題である。グローバルに普及したビットコインシステムであればこの問題は生じないが、それ以外では生じうる。

もし小国、例えばルクセンブルクが自国用のビットコインインスタンスを開始した場合、ドイツやフランス政府が万が一に備えてより長いチェーンを隠していないかどうかを知る術がない。

大手銀行が現在のビットコインシステムを妨害したければ、現行システムより多くのCPUパワーを投入し、ゼロから始めてまったく新しいチェーンを生成すればよい。銀行は開始時点を含むあらゆる時点で介入できる。これまでのすべての作業が無効化されることになる。

もし村が小規模なローカル決済システムを望んだ場合、常に攻撃の危険にさらされることになる。マフィアが大量の二重支払いを実行し、その後突然、すべての支払いを無効化する長いチェーンを持ち込む可能性がある。商人はコインを取得したと思っていたにもかかわらずである。

最大規模で最高の計算能力を持つインスタンス以外のすべてが、この常なる脅威を抱えることになる。

この問題はネットワーク分裂時にも現れる。再結合後、一方が他方を完全に破壊する。特に分裂前に両側に存在していたコインについてはなおさらである。

チェーンが1日、1ヶ月、100ブロック、あるいはそれ以上遡って無効化されないという何らかの保証があるべきだと考える。

この問題は、支払いを受け入れる前に何ブロックの確認を待つかという問題(二重支払い問題)に関連している。サトシはPDFファイルでこの計算を行っている。しかし、可視の誠実な部分に対する他の部分のCPUパワー(pとq)を知る必要がある。問題は、不誠実あるいは不可視な部分がどれほど大きいかを決して知ることができないということである。なぜなら、望む限り隠し続けることができるし、将来形成される可能性もあるからである。決して知ることはできない。

以下の提案はどうだろうか? ノードが一定のしきい値よりも古いブロックをチェックポイントする。しきい値は難易度で重み付けされたブロック数、例えば8ゼロビットの100ブロックとすることができる。ノードがチェックポイントよりも古い変更を要求するブロックチェーンを受信した場合、そのチェーンを拒否する。各ノードは独自のチェックポイントを持つことになるが、誠実なノード間のずれは小さい。そのずれはしきい値(100ブロック)の大きさと比較して小さいだろう。

2つのノードがどちらか一方のしきい値よりも遠い過去について意見が異なった場合はどうなるか。それらはフォークされた通貨として扱われるべきである。1つの通貨が2つになったのである。つまり村やルクセンブルクは、ブロックチェーンの最新部分を除いて、隠された外部世界を無視できることになる。

小さな村は非常に低いしきい値を使用できる。村内のレイテンシーはミリ秒単位である。10秒ごとにブロック生成を行うことができる。例えばしきい値を5ブロックにできる。村内でそれほど長く隠れ続ける正当な理由はない。コンピュータが接続を失った場合、オンラインに戻った際にチェーンをダウンロードすればよい。もし残りの村に長いブロックチェーンを押し付けようとすれば、それは実質的に自分自身のための新しい通貨を作ったことになる。

aceat64 2010年8月16日 原文 · 個別ページ
  1. Bitcoinのポイントはグローバル通貨であることで、国家通貨の代替としてBitcoinを使うのは意味がない
  2. ブロックチェーンのチェックポイントはクライアントソフトウェアの各リリースで既に行われている
  3. より長いチェーンをゼロから生成するには、ネットワークが現在持っている以上の計算力ではなく、開始以来チェーンに投入された以上の計算力が必要だ。現在のチェーンには信じられないほどのCPU時間が投入されている。
mkrogh 2010年8月16日 原文 · 個別ページ

Quote from: aceat64 on August 16, 2010, 04:14:11 PM

  1. Bitcoinのポイントはグローバル通貨であることで、国家通貨の代替としてBitcoinを使うのは意味がない
  2. ブロックチェーンのチェックポイントはクライアントソフトウェアの各リリースで既に行われている
  3. より長いチェーンをゼロから生成するには、ネットワークが現在持っている以上の計算力ではなく、開始以来チェーンに投入された以上の計算力が必要だ。現在のチェーンには信じられないほどのCPU時間が投入されている。

そう言えるが、小規模で使えると良いだろう。システムを脆弱にしすぎずにこれを達成する方法を考えるのは興味深い。 チェックポイントは一つの可能性かもしれない。他にもあるかもしれない。

もちろん時間は重要だ。しかし、隠れた部分がどれだけ長く作業していたかは分からない。そしてより多くのパワーがあれば、最終的にはより多くの作業をしたことになる。しかし同意する。一つの巨大なグローバルシステムにとっては大きな問題ではないかもしれない。

もしいくつかの政府がこのシステムを好まないと宣言し、現在のすべてのコインを無価値にするために独自のチェーンを開始すると言ったら、人々はどう反応するだろうか。それ自体がパニックを引き起こし、システムを破壊する可能性がある。より新しいチェックポイントがあれば、システムはより投機的でなくなるだろう。

逆に考えてみよう。グローバルなBitcoinシステムにおいて、ノードが例えば10時間分の累積難易度より古いすべてのブロックを凍結できない正当な理由は何か。デメリットはどこにあるのか。ネットワークの一部が何時間も隠れていて長いチェーンと共に戻ってくることが望ましい機能と考えられているのか。それともシステムがまだ新しいからチェックポイントが実装されていないだけなのか。

乾杯。

aceat64 2010年8月16日 原文 · 個別ページ

Quote from: mkrogh on August 16, 2010, 05:33:14 PM

Quote from: aceat64 on August 16, 2010, 04:14:11 PM

  1. Bitcoinのポイントはグローバル通貨であることで、国家通貨の代替としてBitcoinを使うのは意味がない
  2. ブロックチェーンのチェックポイントはクライアントソフトウェアの各リリースで既に行われている
  3. より長いチェーンをゼロから生成するには、ネットワークが現在持っている以上の計算力ではなく、開始以来チェーンに投入された以上の計算力が必要だ。現在のチェーンには信じられないほどのCPU時間が投入されている。

そう言えるが、小規模で使えると良いだろう。システムを脆弱にしすぎずにこれを達成する方法を考えるのは興味深い。 チェックポイントは一つの可能性かもしれない。他にもあるかもしれない。

もちろん時間は重要だ。しかし、隠れた部分がどれだけ長く作業していたかは分からない。そしてより多くのパワーがあれば、最終的にはより多くの作業をしたことになる。しかし同意する。一つの巨大なグローバルシステムにとっては大きな問題ではないかもしれない。

もしいくつかの政府がこのシステムを好まないと宣言し、現在のすべてのコインを無価値にするために独自のチェーンを開始すると言ったら、人々はどう反応するだろうか。それ自体がパニックを引き起こし、システムを破壊する可能性がある。より新しいチェックポイントがあれば、システムはより投機的でなくなるだろう。

逆に考えてみよう。グローバルなBitcoinシステムにおいて、ノードが例えば10時間分の累積難易度より古いすべてのブロックを凍結できない正当な理由は何か。デメリットはどこにあるのか。ネットワークの一部が何時間も隠れていて長いチェーンと共に戻ってくることが望ましい機能と考えられているのか。それともシステムがまだ新しいからチェックポイントが実装されていないだけなのか。

乾杯。

このようなシステムでは、昨日修正した不正チェーンのような悪いチェーンが10時間以上続くと固定されてしまう。申し訳ないが、自動チェックポイントは悪いアイデアだ。

mkrogh 2010年8月16日 原文 · 個別ページ

悪いチェーンとは何か?

チェックポイントがなぜ悪いのかもう少し詳しく説明してくれないか?

最大のプルーフ・オブ・ワーク以外に、ソフトウェアがあるチェーンが別のチェーンより優れているかを自動的に判断する方法はない。設計上、どれだけ遡る必要があっても、より長いチェーンに切り替える必要があった。

唯一の例外は、私が追加した手動のチェックポイントだ。それがなければ、最初のブロックまで遡って再編成することが可能だった。

mkrogh 2010年8月16日 原文 · 個別ページ

サトシ、チェックポイントはどちらのチェーンが良いかを判断するために使われるのではなく、非常に古いコインがネットワークの「オープン」な部分で無効にされないようにするためのものだ。

ソフトウェアは1000ブロック前にチェックポイントがあると宣言するだけだ。これは各ノードの個別のチェックポイントであり、新しいブロックが到着するたびに前進する。チェックポイントは決して後退しない。

チェックポイントより前の長いチェーンが到着した場合、ノードはそれを拒否する。これは実質的に通貨をフォークさせるが、それがどうした。実際には隠れた部分を排除するだけだ。「正直な」部分はそのまま続く。長い隠しチェーンを持つ者にとっては残念なことだ。しかし彼らは長すぎる間オフラインでいることを選んだのだ。

私が見るネットワークは、誰が見たくても見える多くのオンラインノードのものだ。これがネットワークの核心だ。彼らは非常に頻繁に通信するので、誰も他者より1000ブロック先行することはない。彼らは結果を継続的に送信し、1000ブロックのバッチで集めることはしない。

そして潜在的なオフラインノード、不正なノードなどがある。彼らが突然非常に長いチェーンと共に現れても、拒否しない理由はない。少なくとも私にはその理由が見えない。

公共のインターネットは何日間も大規模に断片化されることはない。そしてBitcoinはそのような状況には適していない。たとえ技術的には、再接続後に断片化されたコンポーネントの1つを除くすべてでブロックを消去することで対応できるとしても。

あなたは手動チェックポイントがあると言う。それこそチェックポイントが可能であることを示している。

MoonShadow 2010年8月16日 原文 · 個別ページ

Quote from: mkrogh on August 16, 2010, 08:54:47 PM

サトシ、チェックポイントはどちらのチェーンが良いかを判断するために使われるのではなく、非常に古いコインがネットワークの「オープン」な部分で無効にされないようにするためのものだ。

ソフトウェアは1000ブロック前にチェックポイントがあると宣言するだけだ。これは各ノードの個別のチェックポイントであり、新しいブロックが到着するたびに前進する。チェックポイントは決して後退しない。

チェックポイントより前の長いチェーンが到着した場合、ノードはそれを拒否する。これは実質的に通貨をフォークさせるが、それがどうした。実際には隠れた部分を排除するだけだ。「正直な」部分はそのまま続く。長い隠しチェーンを持つ者にとっては残念なことだ。しかし彼らは長すぎる間オフラインでいることを選んだのだ。

私が見るネットワークは、誰が見たくても見える多くのオンラインノードのものだ。これがネットワークの核心だ。彼らは非常に頻繁に通信するので、誰も他者より1000ブロック先行することはない。彼らは結果を継続的に送信し、1000ブロックのバッチで集めることはしない。

そして潜在的なオフラインノード、不正なノードなどがある。彼らが突然非常に長いチェーンと共に現れても、拒否しない理由はない。少なくとも私にはその理由が見えない。

公共のインターネットは何日間も大規模に断片化されることはない。そしてBitcoinはそのような状況には適していない。たとえ技術的には、再接続後に断片化されたコンポーネントの1つを除くすべてでブロックを消去することで対応できるとしても。

あなたは手動チェックポイントがあると言う。それこそチェックポイントが可能であることを示している。

拒否するのではなく、2週間以上遡るようなら元のブロックチェーンのバックアップを保存し、新しいチェーンを仮に受け入れることができる。そしてこれほど過去に遡る運勢の逆転を報告する新しいブロックチェーンがあることをユーザーに通知し、新しいブロックチェーンを受け入れる前にユーザーが調べる機会を与えることもできる。ユーザーが何が起きているか分からなくても、注意を払っているすべてのユーザーも調べるべきことがあると知るので、すぐに分かるだろう。Bitcoinは非常にうまく自動化されたシステムだが、絶対的な自動化が常に賢明とは限らない。有能なサポートは何かが壊れていることをできるだけ早く知る必要がある。これは「監視」プロセスや機能のもう一つの例であり、ネットワークにセキュリティを追加できる。この不正なトランザクションのリリースは、テストネットワークに提出されるべきだったが、Bitcoinの寿命のかなり早い段階で問題を浮き彫りにしたと思う。小さなコミュニティが迅速かつ効果的に対応できたのはそのおかげだ。多くの人が使い始めると、ほとんどがプログラマーではなく、ベータシステムが現在必要としているレベルの注意をクライアントに払う人も少ないので、将来はもっと難しくなるだろう。

チェックサムは、新しいチェーンを開始して成長させることができるように、特定の単一ブロックのハッシュにすぎない。ただし、チェックサムが含まれたクライアントがそのブロック番号に到達すると、チェックサム以外のハッシュは受け入れない。

正しいか?

したがって、同じジェネシスブロックで代替チェーンを作成したい場合、ライブネットワークに接続する前にジェネシスの後のブロックを異なるハッシュでチェックサムする必要がある。公式クライアントのチェックサムに到達した場合、そのチェックサムが自分のBitcoinクライアントに含まれていないことを確認する必要がある。

チェーンの強度はどのように計算されるのか?長さとチェックサムだけか、それとも難易度500の単一ブロックを難易度1の10ブロックより有効と見なすのか?おそらく長さとチェックサムのみだと推測する。つまり、チェックサム以前のすべてのトランザクションはほぼ永久に安全だが、チェックサム以降のブロックは次のチェックサムが来るまでネットワークの現在の強度に依存する。

Quote from: NewLibertyStandard on August 16, 2010, 10:42:28 PM

チェックサムは、新しいチェーンを開始して成長させることができるように、特定の単一ブロックのハッシュにすぎない。ただし、チェックサムが含まれたクライアントがそのブロック番号に到達すると、チェックサム以外のハッシュは受け入れない。

正しいか?

したがって、同じジェネシスブロックで代替チェーンを作成したい場合、ライブネットワークに接続する前にジェネシスの後のブロックを異なるハッシュでチェックサムする必要がある。公式クライアントのチェックサムに到達した場合、そのチェックサムが自分のBitcoinクライアントに含まれていないことを確認する必要がある。

チェーンの強度はどのように計算されるのか?長さとチェックサムだけか、それとも難易度500の単一ブロックを難易度1の10ブロックより有効と見なすのか?おそらく長さとチェックサムのみだと推測する。つまり、チェックサム以前のすべてのトランザクションはほぼ永久に安全だが、チェックサム以降のブロックは次のチェックサムが来るまでネットワークの現在の強度に依存する。

合計プルーフ・オブ・ワークだ。