Re: Bitcoin の潜在的な弱点に関する専用の議論はどこか

人物: lachesis
ギャビン・アンドレセンの投稿(2010年8月11日 07:40 UTC)

[Deleted] Quote from: davidonpda on August 11, 2010, 04:19:43 PM

ギャビン・アンドレセンの投稿(2010年8月11日 16:10 UTC)
  • クライアント間の接続プロセスの一部として何らかのプルーフ・オブ・ワークを要求する(「シビル」攻撃の防止に役立つ)。

それは素晴らしいアイデアではないか?hashcashのような?

トランザクションの文字列をハッシュすることが要求される。プルーフ・オブ・ワーク付きで、例えば現代のPCで計算に5秒かかるような。bitcoinと同様にPOWのチェックは受信側マシンにとって簡単で非常に高速だが、攻撃者が無限のCPUパワーを持たない限りランダムデータによるフラッド攻撃を阻止できる。

実は初回接続時に1分から3分のプルーフ・オブ・ワークを考えていたのであって、トランザクション送信時ではないが、ネットワークに送信されるすべてのトランザクションに何らかのプルーフ・オブ・ワークを要求するのは非常に興味深いアイデアだ!実装も簡単なはずだ(トランザクションにナンスと完全または部分的なハッシュを追加する)…

残念ながら、実装は簡単だが、効果的であるためには互換性を壊す変更にならざるを得ない。

古いクライアントは知らないのでプルーフ・オブ・ワークを送信しない。だから攻撃者は自分のクライアントバージョンを 308 と偽れる — この保護機能を知らないほど古いバージョンだと。そうするとノードは、古いクライアントのサポートを打ち切ってこの種の攻撃に対して安全になるか、古いクライアントのサポートを続けてこの攻撃に対して脆弱なままでいるかを選ばなければならない。

やるべきでないとは言わないが、互換性を壊す変更を行う前に、重要な互換性を壊す変更のリストをまとめるべきだと思う。ユーザーは毎日のようにアップグレードを求められるのを嫌う。

また、メッセージリレープロトコルがどう動作するか分からない。各ノードが最初のノードが提供したのと同じナンスとハッシュでその Tx をリレーすればいいだろう。重複トランザクションは本質的に無効なのでハッシュの「再利用」の危険はない(ただしノードに嫌がらせはできる)。

検出とブラックリスト機能のコードも有用だろう。ある IP が一定時間内に一定数の無効なトランザクションを送信してきたら、切断してその IP からの接続を一定期間拒否する。再接続後にまたやったら、より長期間ブロックする…といった具合に。