ビットコイン・インスティテュート

トランザクション/スパムフラッド攻撃が現在進行中

何者かがビットコインのメインネットワークを0.01 BTCのトランザクション(A→AおよびB→B、AとBはランダムな公開鍵)で溢れさせることで「テスト」しているらしい。http://theymos.ath.cx:64150/bbeで確認できる。

多くのブロックにわたって無料トランザクションの上限に達している。1ブロックあたり約219件の無料トランザクションと見られる。「実際の」トランザクションは今のところDoS攻撃を受けていないようだが、これはおそらく、トランザクション金額も一部の基準にして優先処理するロジックのおかげだろう。

<soapbox> 無料トランザクションは、スパムが常に出続ける状態を招くだけだ。たとえ0.001 BTCほどでも、各トランザクションにコストを課すべきだ。 </soapbox>

MoonShadow 2010年11月19日20:29 UTC

最近実装された年齢優先ルールに加えて、取引手数料なしの最低年齢ルールがあるべきかもしれない。別の言い方をすれば、無料取引は再び無料で送金される前に3ブロック深くなければならないという生成ルールだ。これでも実際のユーザーは必要に応じて新しい資金をすぐに使えるし、実際のユーザーがニーズに合わせて資金を再シャッフルすることも追加コストなしで許容される。現在進行中のスパム攻撃を大幅に抑制できると思う。

Timo Y 2010年11月19日20:30 UTC

取引手数料の自由市場では、ネットワークのスパムは全員の取引手数料を上昇させる効果がある。

Mr. Burnsは単なる嫌がらせ屋以上かもしれない。より合理的な動機を持つマイナーかもしれない。

マイナーはスパムによって失うものよりも得るものの方が多い。そう、最終的にはスパム均衡に達する。そこでは、自分のスパムによって競合マイナーの取引手数料に失う増分が、自分自身の取引手数料から得る増分に等しくなる。だが、それでもマクロ経済的には最適でない状況だ。

このhttp://en.wikipedia.org/wiki/Social_trap社会的罠から脱出するには、市場以上のものが必要だ。

シンプルだが効果的なルールをBitcoinのプロトコル/仕様自体にハードコードして、スパムの過剰を抑制すべきだ。

このアプローチはこのフォーラムの自由市場愛好者にとっては「トップダウン」すぎると聞こえるかもしれないが、ルールはもちろん完全に自発的で合意に基づくべきであり、すでにある2100万ルールと同様だ。

MoonShadow 2010年11月19日20:43 UTC

[削除済み] Quote from: davidonpda on November 19, 2010, 08:35:15 PM

MoonShadowの投稿(2010年11月19日20:29 UTC)

最近実装された年齢優先ルールに加えて、取引手数料なしの最低年齢ルールがあるべきかもしれない。別の言い方をすれば、無料取引は再び無料で送金される前に3ブロック深くなければならないという生成ルールだ。これでも実際のユーザーは必要に応じて新しい資金をすぐに使えるし、実際のユーザーがニーズに合わせて資金を再シャッフルすることも追加コストなしで許容される。現在進行中のスパム攻撃を大幅に抑制できると思う。

それでは人々が再び資金に拘束されてしまうかもしれない。MtGoxやBitcoin Faucetのことを考えてみてほしい。Faucetは3ブロックごとにしかニッケルを送れない。なぜならニッケルを送るたびにお釣りを新しいアドレスに送り、3ブロック分取引手数料なしでの送金が拘束されるからだ。

少しだけだ。ルールが一般的に知られており、その理由もわかっているなら、Bitcoin Faucetのようなところは調整できると思う。私が言っているのは、可能ならコインの移動に基づいた制限であって、特定のアドレスに対する3ブロック禁止ではない。新しいクライアントには100のアドレスがあるよね? Bitcoin Faucetが各アドレスに0.05 BTC以上持っていて、リクエストが来るたびにアドレスをローテーションすれば、30分で100件のリクエストを遅延なく処理でき、遅延ありならさらに多く処理できる。取引が作成できないと言っているのではなく、手数料なしでは、依存する取引が3ブロック深くなるまで生成者がブロックに入れないということだ。手数料があれば何でもできるし、手数料つきの取引に3ブロックの遅延を守らせる生成者も、おそらくいないだろう。これにより無料取引の可能性は開かれたまま、スパムは抑制される。このルールが機能しない技術的な理由があるなら、私には分からない。

EDIT: 引き出しリクエストを処理しようとしているマーケットは、過去30分間に送信されたリクエスト数を把握しており、このルールによりリクエストが遅延する可能性があると依頼者に警告するか、手数料を支払うかを選択できる。

RHorning 2010年11月19日21:36 UTC
davidonpdaからの引用(2010年11月19日08:10 UTC)

RHorningのコメントのいくつかに対する返答:

トランザクション手数料は常にマイナーが決めるべきだ。誰かが高い上限を設定していても、別の誰かがもっと安くやってくれて、後のブロックに取り込まれる。

GUIからトランザクション手数料を簡単に追加できる方法が必要だし、可能であればマイナーが最低トランザクション手数料を指定できる簡単な方法も必要だ。後者は前者ほど重要ではない。

この仕組みで、どうやってトランザクション手数料を「比較検討」するのかな? 正直、この仕組みがどう動くのかかなり混乱している。

たとえば、マイナーがhashの生成に成功したとして、そのマイナーが95%のトランザクション手数料を「請求」するのを何が止めるのだろう? そのトランザクションがブロックに取り込まれてネットワークに承認されるのを、何が防ぐのだろう?

「この手数料は払いたくない」と言って、単に待つことでもっと安い手数料のマイナーを「探す」方法はあるのかな?

これは興味深いDOS攻撃の可能性も生む。大量のコンピューターを持つマイナーが非常に高いトランザクション手数料を請求し、取引を遅延させたり、場合によっては完全に停止させたりできるかもしれない。それを防ぐには、自分でも大量のコンピューターを用意して、手数料なしで自分のトランザクションをネットワークに入れるためのhash生成に成功することを祈るしかないのだろう(友人や自分のアドレスへの手数料を選択的に設定できると仮定して)。

これはユーザーインターフェースに組み込めるものかな? 支払ってもいい手数料を「選択」できるような仕組みだ。

RHorningの投稿(2010年11月19日21:36 UTC)

これは興味深いDOS攻撃の可能性も生む。大量のコンピューターを持つマイナーが非常に高いトランザクション手数料を請求し、取引を遅延させたり、場合によっては完全に停止させたりできるかもしれない。それを防ぐには、自分でも大量のコンピューターを用意して、手数料なしで自分のトランザクションをネットワークに入れるためのhash生成に成功することを祈るしかないのだろう(友人や自分のアドレスへの手数料を選択的に設定できると仮定して)。

まあ、ネットワークのCPUパワーの50%超を持っていれば、何でもできる。

RHorning 2010年11月19日21:50 UTC
ジェフ・ガージックの投稿(2010年11月19日21:37 UTC)

まあ、ネットワークのCPUパワーの50%超を持っていれば、何でもできる。

これはネットワークのCPUパワーの50%すら必要ない。20%あれば、サービスを大幅に劣化させてネットワークを「減速」させ、残りのネットワークの難易度を大幅に引き上げるのに十分だ。とはいえ、高額な手数料や不可能な手数料を許容するトランザクションだけを受け入れることで、潜在的なトランザクション手数料を見逃すのは愚かなことだろう。

この辺りの理解が本当にごちゃごちゃしていて、手数料がどう決まるのか、アドレスと金額を入力して誰かにビットコインを送ろうとしたときに何が起こるのか、正直よくわかっていない。

MoonShadowの投稿(2010年11月19日20:29 UTC)

最近実装された年齢優先ルールに加えて、取引手数料なしの最低年齢ルールがあるべきかもしれない。別の言い方をすれば、無料取引は再び無料で送金される前に3ブロック深くなければならないという生成ルールだ。これでも実際のユーザーは必要に応じて新しい資金をすぐに使えるし、実際のユーザーがニーズに合わせて資金を再シャッフルすることも追加コストなしで許容される。現在進行中のスパム攻撃を大幅に抑制できると思う。

そのようなことをしている。優先度は、あなたが説明しているコンセプトのより形式化されたバージョンだ。

FreeMoneyの投稿(2010年11月19日17:39 UTC)

現状では、バージョン3.15には無料トランザクション用の領域が多く確保されており、その領域は [age][value]/[size]が最も高いトランザクションから優先的に割り当てられる、という理解で正しいだろうか? 無料領域の一部について、[age][value]/[size] > Cを要求するようにするのは、妥当だろうか?

たとえば、標準的な1BTCのトランザクションが次のブロックでメインの無料領域に入れるようにCを設定する。0.1BTCのトランザクションは約10ブロック待てば入れるようにする。そして [age]*[value]/[size] < Cとなる領域には、十数件程度のトランザクションだけを許可するようにする。

はい、このような感じだ。そして優先度要件なしのエリアは3Kで、1ブロックあたり約12件のトランザクションだ。

SVN rev 185をアップロードした。無料トランザクションに最小優先度要件が含まれている。トランザクションフラッドはコインが何度も再使用されて構成されるため、0承認のトランザクションに繰り返し依存する。0承認のトランザクションは優先度0なので、そのような無料トランザクションは一度に1つずつブロックに入るのを待たなければならない。

バージョン0.3.15は、それしか残っていない場合を除き、0承認の依存関係を使用するトランザクションを書き込まないため、通常のユーザーはこの問題に遭遇しないはずだ。

これはデフォルト手数料を0.01にすることに次ぐ良い妥協案だと思う。無料トランザクションで同じコインをどの程度の頻度で使用できるかに制限があるのは、それほど無理な要求ではない。無料トランザクションを使用しているなら、慈善を受けているのであり、同じコインでの使用頻度に何らかの制限が必要だ。

無料トランザクションはより遅く処理される可能性があることは常に言ってきた。-paytxfee=0.01を追加することで、トランザクションが迅速に処理されることを確保できる。

MoonShadow 2010年11月20日00:06 UTC

見事だ!

サトシ・ナカモトの投稿(2010年11月19日23:50 UTC)

無料トランザクションはより遅く処理される可能性があることは常に言ってきた。-paytxfee=0.01を追加することで、トランザクションが迅速に処理されることを確保できる。

良い解決策だ。 これをGUIで明確に表示するともっと良い! コマンドラインオプションとして隠しておくのではなく 😊

Anonymous 2010年11月20日14:01 UTC
FreeMoneyからの引用(2010年11月19日20:12 UTC)

MrBurnsはおそらく10万コインを買う前に何が起こるか確認しているだけだ。

もしかして、スプリングフィールド原発を買い戻す気なんじゃない?

😛