分散型 BitCoin エスクローサービスの作り方

要約:BitCoin に分散型エスクローを持たせれば、他のすべての交換手段に対する優位性が生まれ、普及率が高まるかもしれない。詳細は以下の通り。

分散型通貨に対して、中央集権型のエスクローが現在の BitCoin の標準となっているようだ。例を挙げる:

アリスはボブから$5分の BitCoin を買いたいが、アリスもボブもお互いを完全には信頼していないので、両者が信頼するサイト——例えば Mt. Gox に行く。そこにそれぞれの資金を預け、Mt. Gox に交換を行ってもらう。

Mt. Gox に悪意はないが(好きなサイトだ)、そのエスクローサービスなしでやれないだろうか?

ほぼ分散型の代替案:

  • チャーリー(信頼できる第三者)が BitCoin の秘密鍵を生成する。
  • チャーリーは UNIX の split コマンドで秘密鍵を半分に分割し、半分をアリスに、半分をボブに渡す。
  • ボブは$5分の BitCoin を分割された BitCoin アカウントに入金する。
  • アリスは公開ブロックを使って取引を確認する。
  • アリスは PayPal でボブに$5 を送る。
  • ボブは PayPal の取引を確認する。
  • ボブは自分の半分の秘密鍵をアリスに送り、アリスが先に入金された BitCoin にアクセスできるようにする。

(簡略化のため、取引手数料を誰が払うかや、チャージバック詐欺を避けるためにどのくらい待つべきかなどの PayPal の詳細は省略する。また、ボブが最後のステップを実行するインセンティブも省略する。)

UNIX の split コマンドの代わりにもっと洗練されたものを使えば、より高度なほぼ分散型の例が作れる。例えば:ssss[1]のようなシャミアの秘密分散法の実装だ。ssss のようなユーティリティを使えば、アリスとボブは意見が食い違った場合に仲裁人を指名できる。

もちろん、これらすべての問題は、チャーリーが作成する秘密鍵の完全なコピーを悪用しないとチャーリーを信頼しなければならないことだ。

理想的な解決策は、アリスとボブがそれぞれ独自に秘密鍵の半分を生成することだろう。現代の鍵ペアに使われる数学を完全には理解していないが、現在のアルゴリズムではこれは不可能だと思う。

鍵全体をどの当事者にも渡さずに、アリスとボブがそれぞれ秘密鍵の半分を取得する代替方法はあるだろうか?

-Dave

[1] 参照:http://en.wikipedia.org/wiki/Shamir’s_Secret_Sharing (http://en.wikipedia.org/wiki/Shamir's_Secret_Sharing)