ウェイ・ダイの「b-money」プロトコル — アダム・バックが提案全文を再投稿(1998 年 12 月)

ウェイ・ダイが先ごろ(cypherpunks で)、「仮名のための金銭的交換と契約執行の新しいプロトコル」である b-money を発表した。

以下に彼の提案の本文を載せる。

論評は追って述べる。

Adam

http://www.eskimo.com/~weidai/bmoney.txt

私はティム・メイの暗号アナーキーに魅了されている。「アナーキー」という語に伝統的に結びつけられてきた共同体とは違い、暗号アナーキーにおいて政府は一時的に破壊されるのではなく、恒久的に禁じられ、恒久的に不要となる。それは、暴力の脅しが無力な共同体である。なぜなら暴力が不可能だからであり、暴力が不可能なのは、参加者を本名や物理的な所在地に結びつけられないからである。

これまでは、そのような共同体がどう機能しうるのか、理論上でさえ明らかではなかった。共同体は参加者の協力によって定義され、効率的な協力には交換の媒体(お金)と契約を執行する手段が要る。伝統的に、これらのサービスは政府または政府公認の機関によって、法的主体に対してのみ提供されてきた。本稿では、これらのサービスを追跡不能な主体に対して、また追跡不能な主体によって提供できるようにするプロトコルを述べる。

実際には二つのプロトコルを述べる。一つ目は、同期的で妨害不能な匿名ブロードキャストチャネルを多用するため、実用的でない。しかしそれは、より実用的な二つ目のプロトコルの動機づけとなる。どちらの場合も、送信者と受信者がデジタル仮名(すなわち公開鍵)だけで識別され、すべてのメッセージが送信者によって署名され受信者に対して暗号化される、追跡不能なネットワークの存在を仮定する。

一つ目のプロトコルでは、各参加者が、どの仮名にどれだけのお金が属するかの(別個の)データベースを保持する。これらの口座が集合的にお金の所有を定義し、これらの口座をどう更新するかが本プロトコルの主題である。

  1. お金の創出。誰でも、それまで未解決だった計算問題の解をブロードキャストすることでお金を創出できる。条件は、その問題を解くのにどれだけの計算量を要したかを容易に判定でき、かつその解がそれ以外に、実用的にも知的にも何の価値も持たないことだけである。創出される貨幣単位の数は、標準的な商品バスケットで測った計算量のコストに等しい。たとえば、ある問題を最も経済的に解ける計算機で解くのに 100 時間かかり、その計算機での 100 時間の計算時間を市場で買うのに標準バスケット 3 つ分かかるなら、その問題の解がブロードキャストされたとき、全員がそのブロードキャスト者の口座に 3 単位を計上する。

  2. お金の移転。アリス(仮名 K_A の所有者)がボブ(仮名 K_B の所有者)に X 単位のお金を移したい場合、彼女は K_A で署名した「K_B に X 単位のお金を渡す」というメッセージをブロードキャストする。このメッセージのブロードキャストにより、全員が K_A の口座から X 単位を引き、K_B の口座に X 単位を加える。ただし、これにより K_A の口座が負の残高になる場合は、そのメッセージは無視される。

  3. 契約の発効。有効な契約には、それに参加する各当事者について、債務不履行の場合の賠償上限を含めなければならない。また、紛争が生じた場合に仲裁を行う当事者も含めるべきである。契約のすべての当事者は、仲裁人を含め、それが発効する前にその契約への署名をブロードキャストしなければならない。契約とすべての署名のブロードキャストにより、全参加者は各当事者の口座をその賠償上限の額だけ引き、契約の安全なハッシュで識別される特別な口座に、賠償上限の合計を計上する。すべての当事者について、負の残高を生じることなく引き落としが成功すれば、契約は発効する。さもなければ契約は無視され、口座は巻き戻される。契約の例は次のようになる。

K_A は問題 P の解を 2000/1/1 0:0:0 までに K_B に送ることに同意する。K_B は 100 MU(貨幣単位)を 2000/1/1 0:0:0 までに K_A に支払うことに同意する。K_C は紛争の場合に仲裁を行うことに同意する。K_A は債務不履行の場合に最大 1000 MU を支払うことに同意する。K_B は債務不履行の場合に最大 200 MU を支払うことに同意する。K_C は債務不履行の場合に最大 500 MU を支払うことに同意する。

  1. 契約の終結。契約が紛争なく終結する場合、各当事者は、自ら署名した「SHA-1 ハッシュ H の契約は賠償なく終結する」、あるいは場合によっては「SHA-1 ハッシュ H の契約は以下の賠償をもって終結する:…」というメッセージをブロードキャストする。すべての署名のブロードキャストにより、全参加者は各当事者の口座をその賠償上限の額だけ加え、契約口座を消去し、その後、賠償の予定があればそれに従って各当事者の口座を加減する。

  2. 契約の執行。契約の当事者が、仲裁人の助けを借りても適切な終結に合意できない場合、各当事者は、提案する賠償/罰金の予定と、自分に有利な論拠や証拠をブロードキャストする。各参加者は実際の賠償および/または罰金について判断を下し、それに応じて自分の口座を修正する。

二つ目のプロトコルでは、誰がどれだけのお金を持つかの口座を、全員ではなく参加者の一部(以後サーバーと呼ぶ)が保持する。これらのサーバーは Usenet 方式のブロードキャストチャネルで結ばれる。このチャネルでブロードキャストされるトランザクションメッセージの形式は一つ目のプロトコルと同じだが、各トランザクションの影響を受ける参加者は、そのメッセージがランダムに選ばれたサーバーの一部によって受信され正常に処理されたことを確認すべきである。

サーバーはある程度信頼されなければならないので、それらを正直に保つ何らかの仕組みが必要である。各サーバーは、不正の証明に対する罰金または報酬として使うため、特別な口座に一定額のお金を預けることを求められる。また各サーバーは、現在のお金の創出データベースとお金の所有データベースを定期的に公開し、それにコミットしなければならない。各参加者は、自分自身の口座残高が正しいこと、および口座残高の合計が創出されたお金の総額を超えていないことを確認すべきである。これにより、サーバーは、たとえ完全に結託しても、恒久的かつ無コストで貨幣供給を拡大することができなくなる。新しいサーバーは、公開されたデータベースを使って既存のサーバーと同期することもできる。

本稿で提案したプロトコルは、追跡不能な仮名の主体どうしが、交換の媒体と契約執行の手段を備えることで、より効率的に協力できるようにする。このプロトコルはおそらくもっと効率的かつ安全にできるが、暗号アナーキーを理論上だけでなく実用上も可能にするための一歩になればと思う。