トランザクション過負荷の解決策
別のスレッドで以下のコメントを投稿したが、大量の自動化された非マイクロ支払いに bitcoin が圧倒される前に、できるだけ早く対処すべき重要な欠陥だと感じた。
本当の問題は、正当な自動支払い交渉システムでさえ、クレジットカードシステムが現在使用しているよりも多くのトランザクションを導入して bitcoin を過負荷にする可能性があることだ。その結果、ブロックサイズが巨大になる可能性がある。
私のユースケースでは、P2P システムで匿名ユーザーに優先ダウンロードの対価を支払う。1 つの「torrent」 ファイルに 100,000 人全員がシードとダウンロードをしていると仮定する。簡単に 1 分あたり 0.01 を超える 100,000 の支払いが発生し得る。もちろん、2 つのクライアント間でアップロード != ダウンロードの場合にのみ BTC を使用する形にすればよい。しかし、人々がいずれどんな突飛なアイデアを思いつくかは予測がつかない。
そのようなシステムは分散型であり、「スパム」 と正当な利用とを簡単に区別する方法はない。1 回あたり 1 BTC 以上を転送し、残高が 0.01 を超えたら釣り銭を返すという私の解さえ、大規模なトランザクション膨張を引き起こし得る。
個々のトランザクション処理の「コスト」 は低い (0.00001 BTC 程度) かもしれないが、自動支払いの交渉/入札システムを使う数百万のユーザーから来るすべてのトランザクションを処理するコストは、すべての着信トランザクションを listen することすら不可能にしてしまう。
この問題への唯一の解は、トランザクションのブロードキャストを「無料」 でなくすることだ。つまり、含めることを試みるためにも、最初に取り込めるかどうかとは無関係に、私への支払いを要求する。結果として (ネットワーク的にも文字通りも) 、各クライアントはトランザクションをブロックに取り込んだ者だけでなく、トランザクションを送った相手のクライアントにも支払う必要が出てくる。こうして経済の原理が働き、誰もトランザクションのブロードキャストシステムにただ乗りできなくなる。
これが意味するのは、あなたが支払いをしてトランザクションを受け取らせ、ブロックへの取り込みを試みさせたノードがそれに成功するまでは、支払いの通知すら受け取れないかもしれないということだ。つまり 0/未確認の表示すら出ず、ブロックに入って初めて、取り込みを試みるよう支払いを受けていない者にもそのトランザクションの存在が知られることになる。あなたは、支払いを取りながら取り込みを試みすらしない者からも守られる。なぜなら彼らは、自分の取った支払いを取り込んでもらう手段を見つけない限り、報酬を受け取れないからだ。生成のトランザクション手数料を別ノードに「転送」 しても、そのトランザクションを通すよりも余計にコストがかかってしまう。
この構造は pay-to-ip 型のシステムを助長する。受取人側が、その取引を取り込んでもらうための支払いを負担する形になるからだ。受取人は自分でビットコイン生成を回すか、自分の代わりに回してくれる相手にトランザクションを送るための支払いをするかのどちらかになる。
「勝者総取り」 のトランザクション手数料モデルでは、私は受信と取り込みの試行のコストを負担しながら、運良くインターネット接続が全トランザクションを受け取れていたとしても、報酬は数週間に 1 回しか得られない。
生成が最初にブロックへトランザクションを取り込めたかどうかにかかわらず、人々は生成者に支払うべきだ。これを実装する上での技術的課題は何だろうか。
「ブロードキャスト」でないシステムの欠点は、二重支払いがより容易になることだ。実際、生成への支払い自体が二重支払いの格好の標的となる。
ブロードキャストシステムにそのような遅延を許容できるか確信がない。二重支払いを心配する人は、より多くのノードにトランザクションを「審査」してもらうために支払い、損失を受け入れられる人はリスクを取ればよいだろう。
それを実装する方法が思いつかない。すべてのトランザクション手数料が追加のトランザクションになる。トランザクション手数料のトランザクションに対するトランザクション手数料はどうなるのだろうか?