ブロックチェーンのチェックポイント化
こんにちは
チェーンが大規模に無効化され、より長いチェーンに置き換えられる可能性を決して完全には信頼できないことは問題だと考える。
これはビットコインの最大規模のインスタンスを除くすべてにとっての問題である。グローバルに普及したビットコインシステムであればこの問題は生じないが、それ以外では生じうる。
もし小国、例えばルクセンブルクが自国用のビットコインインスタンスを開始した場合、ドイツやフランス政府が万が一に備えてより長いチェーンを隠していないかどうかを知る術がない。
大手銀行が現在のビットコインシステムを妨害したければ、現行システムより多くのCPUパワーを投入し、ゼロから始めてまったく新しいチェーンを生成すればよい。銀行は開始時点を含むあらゆる時点で介入できる。これまでのすべての作業が無効化されることになる。
もし村が小規模なローカル決済システムを望んだ場合、常に攻撃の危険にさらされることになる。マフィアが大量の二重支払いを実行し、その後突然、すべての支払いを無効化する長いチェーンを持ち込む可能性がある。商人はコインを取得したと思っていたにもかかわらずである。
最大規模で最高の計算能力を持つインスタンス以外のすべてが、この常なる脅威を抱えることになる。
この問題はネットワーク分裂時にも現れる。再結合後、一方が他方を完全に破壊する。特に分裂前に両側に存在していたコインについてはなおさらである。
チェーンが1日、1ヶ月、100ブロック、あるいはそれ以上遡って無効化されないという何らかの保証があるべきだと考える。
この問題は、支払いを受け入れる前に何ブロックの確認を待つかという問題(二重支払い問題)に関連している。サトシはPDFファイルでこの計算を行っている。しかし、可視の誠実な部分に対する他の部分のCPUパワー(pとq)を知る必要がある。問題は、不誠実あるいは不可視な部分がどれほど大きいかを決して知ることができないということである。なぜなら、望む限り隠し続けることができるし、将来形成される可能性もあるからである。決して知ることはできない。
以下の提案はどうだろうか? ノードが一定のしきい値よりも古いブロックをチェックポイントする。しきい値は難易度で重み付けされたブロック数、例えば8ゼロビットの100ブロックとすることができる。ノードがチェックポイントよりも古い変更を要求するブロックチェーンを受信した場合、そのチェーンを拒否する。各ノードは独自のチェックポイントを持つことになるが、誠実なノード間のずれは小さい。そのずれはしきい値(100ブロック)の大きさと比較して小さいだろう。
2つのノードがどちらか一方のしきい値よりも遠い過去について意見が異なった場合はどうなるか。それらはフォークされた通貨として扱われるべきである。1つの通貨が2つになったのである。つまり村やルクセンブルクは、ブロックチェーンの最新部分を除いて、隠された外部世界を無視できることになる。
小さな村は非常に低いしきい値を使用できる。村内のレイテンシーはミリ秒単位である。10秒ごとにブロック生成を行うことができる。例えばしきい値を5ブロックにできる。村内でそれほど長く隠れ続ける正当な理由はない。コンピュータが接続を失った場合、オンラインに戻った際にチェーンをダウンロードすればよい。もし残りの村に長いブロックチェーンを押し付けようとすれば、それは実質的に自分自身のための新しい通貨を作ったことになる。
最大のプルーフ・オブ・ワーク以外に、ソフトウェアがあるチェーンが別のチェーンより優れているかを自動的に判断する方法はない。設計上、どれだけ遡る必要があっても、より長いチェーンに切り替える必要があった。
唯一の例外は、私が追加した手動のチェックポイントだ。それがなければ、最初のブロックまで遡って再編成することが可能だった。
Quote from: NewLibertyStandard on August 16, 2010, 10:42:28 PMチェーンの強度はどのように計算されるのですか? 合計プルーフ・オブ・ワークだ。