Bitcoin Faucetの変更
Bitcoin Faucet(https://freebitcoins.appspot.com/)から5 Bitcoinを無料で受け取った人々のIPアドレスを観察していた。
すると……えーと、いくつか興味深いパターンが見えてきた。例えばこのようなコイン取得リクエスト:
79.117.152.158 - - [21/Jun/2010:12:17:02 -0700] "POST / HTTP/1.1" 200 1234
79.117.159.197 - - [21/Jun/2010:12:16:24 -0700] "POST / HTTP/1.1" 200 1234
79.117.135.236 - - [21/Jun/2010:12:10:23 -0700] "POST / HTTP/1.1" 200 1234
79.117.163.238 - - [21/Jun/2010:12:08:50 -0700] "POST / HTTP/1.1" 200 1234
79.117.155.23 - - [21/Jun/2010:12:08:07 -0700] "POST / HTTP/1.1" 200 1234
79.117の範囲のIPアドレスを使っている新しいBitcoinユーザーが実際にたくさんいるなら申し訳ないが……おそらく誰かがそこから自分の分以上の無料Bitcoinを得ていると推測している。
192.38.95.*のアドレスブロックからの怪しいリクエストもいくつかある。
そこでFaucetにいくつかの変更を加えた。不正行為をしようとしない限り気づかないだろうが、不正行為をしようとすると、コインを得るためにCAPTCHAを解く必要がある。
それでも不正行為が収まらない場合は、不正行為の疑いがある場合にCAPTCHAを要求し、ビットニッケル(0.05 Bitcoin)しか配布しないようにコードを修正する……
ギャビン、配布するBitcoinアドレスを全部ブロックすればいいんじゃないか? 自動生成は簡単だろうか?
ギャビン、配布するBitcoinアドレスを全部ブロックすればいいんじゃないか? 自動生成は簡単だろうか?
自動生成は簡単だ(Bitcoinプログラムに新しいアドレスを生成して返すよう要求するコードを書くのは簡単だ)。
おもしろいことに、このフォーラムでは同じ人たちが両方の立場でプレーしている――一方では完全な匿名性を維持する方法を考え出そうとしていて(例えばヘロインストアのスレッド)、そしてここではBTC Faucetを保護するためにある意味正反対のことをしようとしている。
気に入った 😄
多くの大手ISPは接続するたびに新しいIPを付与するが、通常は同じクラスB(a.b.?.?)内だ。クラスBごとの支払い最小間隔を設けるべきかもしれない。
問題が解決できない場合は、管理可能になるまで付与するビットコインの量を下げ続け、常にCAPTCHAを要求することもできる。
全員に対してCAPTCHAを有効にしたことで、Faucetから流出するコインの量は十分に管理可能な細い流れにまで減速した。
それから、匿名性と非匿名性の話だが、Bitcoin Faucetを実装する際、IPアドレスとビットコインアドレスを結びつけないように注意した。だから、IPアドレス96.240.216.119の誰かが今日の12時30分にビットコインを受け取った、ということは記録に残っている。そしてビットコインアドレス1P3rpbSybuGgeL1bRwCJFWbn4yBjRNQrbYを持つ誰かが