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

ウェイ・ダイの​「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方式のブロードキャストチャネルで結ばれます。このチャネルでブロードキャストされるトランザクションメッセージの形式は一つ目のプロトコルと同じですが、各トランザクションの影響を受ける参加者は、そのメッセージがランダムに選ばれたサーバーの一部によって受信され正常に処理されたことを確認すべきです。

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

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