Re: (context post by Red)

参加者: Red

Quote from: gavinandresen on August 11, 2010, 04:10:56 PM

  • クライアント同士が、単位時間あたりいくつのトランザクションを受け入れるかを相互に伝える。クライアントがそれ以上送ってきたら(多少の誤差範囲内で)、切断する。一般的なユーザーの推定トランザクション数と現在のユーザー数の推定に基づいたデフォルト値をコンパイル時に設定する。

  • クライアント間の接続プロセスの一部としてある程度のプルーフ・オブ・ワークを要求する(「シビル」攻撃の防止に役立つ)。

最終的には後者を実施しなければならないだろうということに同意する。あなたが指摘した理由が、私のDHTソリューションに欠陥がある原因だ。興味深いことに、これはすべて前者の制約を実装できないことの副作用だ。

検証ノードが任意にトランザクションを無視することを許可すると、すべての検証ノードがすべてのトランザクションを受信し記録するという重要な要件を破る危険がある。現在の前提は、すべての検証者がすべてのトランザクションを受信し記録しようとすることだ。トランザクションが不均一に遅延し、ブロックを完成させたノードに見逃された場合、統計的にそのトランザクションは後続のブロックに記録されると推定される。ただし、それにはトランザクションを継続的に再ブロードキャストして通過を確実にする必要がある。

仮にthroughputが正しく、ノードが「10ブロック期間に5トランザクションしか受け付けない」と言うことにメリットがあるとしよう。その場合でも他のノードから拒否できないブロックを生成するが、最小限のブロックごとに未記録トランザクションのバックログが増加する。これにより追加の再送信が発生し、帯域幅の問題を悪化させる。

実質的に、制限されたノードが引き起こした問題を補償するために、制限のないノードに頼ることになる。制限されたノードが問題を引き起こし、他のノードより少ない検証と記録作業しかしていないなら、なぜブロック生成に対して同等に報酬を受けるべきなのか?それは非生産的だ。

むしろ「すべてのトランザクションを記録するか、検証者になれない!」と言う方がいい。検証者が減れば全体の帯域幅使用量が減る。不正者の発見も容易になる。

----追伸----

ゼロ知識による完全性の証明とは、競合する検証者が、既知の未処理トランザクションの99%を含まないプルーフ・オブ・ワークブロックを拒否することだ。