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

ウェイ・ダイの b-money プロトコル — サイファーパンクでの設計議論(1998 年 12 月)

4件のメッセージ Cypherpunks Mailing List アダム・バック, ウェイ・ダイ 1998年12月5日 — 1998年12月8日

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

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

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

ウェイのb-moneyプロトコルの性質について、いくらか論じる。

b-moneyはhashcashに関連する、帳簿記入方式の電子キャッシュシステムのようだ。ただし「帳簿」は公開され、分散されている。匿名性は、参加者が仮名でいられるという事実から導かれる。hashcashは、ウェイの分散型鋳造のアイデアにとって候補となる関数だろう。価値を創造するにはCPU時間を燃やす — hashcashと同じだ。ただしウェイの分散公開帳簿システムでは、仮名のまま価値をやり取りできる。

問題は (1) インフレ、(2) リソースの借用、(3) トランザクションのリンク可能性、(4) b-moneyには大きな量割引がある点、(5) 資金の入れ方と (6) 出し方、(7) リソースの浪費だ。

(1) インフレ — 所定の衝突を計算するために要するハードウェアのコストは、ムーアの法則に沿って下がる。b-moneyの単位が時間とともにより多くの計算量を要するように定義すれば、これを回避できるかもしれない。たとえば1 b-money単位を、その時点の価格とハードウェア水準で1000ドルで買える最も効率的なハードウェアによる1か月分の計算量と定義する、といった具合だ。

(2) リソースの借用 — キャンパス中のワークステーションにアクセスできる学生は、かなりの量の無料のCPU時間を得られる。

(3) リンク可能性 — 参加者は匿名だが、そのトランザクションはリンク可能であり、したがってb-moneyの参加者は仮名にとどまる(リンク可能な匿名性とは、すなわち仮名性のことだ)。これは、公開帳簿の記入が確実に更新されるようトランザクションをブロードキャストする必要があることに由来する、本質的な性質だ。

(4) 資金を入れることはできる — ハードウェアを買えばよい — が、人によってコストが異なる。既存の汎用ワークステーションを使うなら、カスタムハードウェアを買う場合より単位あたりのコストは高くつく。さほど悪い問題ではなく、規模の経済、あるいは量割引と見なせばよい。

(5) ハードウェアを買って資金を入れる方法は機能するが、人々はカスタムハードウェアを買う手間を嫌い、武力独占に裏付けられた通貨(各国の法定通貨)でb-moneyを買いたがるだろう。最新のカスタムハードウェアを買い集めることを事業とする鋳造所を設けたとしても、仮名の身元が、追跡可能な決済手段(クレジットカード、小切手、電信送金など)の利用によって割れてしまうため、匿名でb-moneyを買うのは難しい。

(6) 資金を出すのも難しい。仮名のb-money利用者が、身元を明かさずに武力独占通貨を得るのは困難だろう。

(7) もしこのようなシステムが普及すれば、流通しているb-moneyの価値に等しいオーバーヘッドが生じ、それは時間とともに、散逸した熱と無用なハードウェアとして実質的に燃やし尽くされていくように見える。だがおそらくそのコストは、追跡可能なトランザクションを強制するために武力独占を維持する莫大なコストよりは、はるかに低い。

これらの領域のいくつかを改善する方法について、少し考えてみる。

(5)(b-moneyの購入)における仮名の身元漏洩の問題を改善するには、私が提案したhashcashではなく、ブラインド化されたコスト関数を定式化できるかもしれない。そうすればhashcashを容易に購入できる。これを実現する一つの方法は、チャウム方式のブラインディングを用いる通常の電子キャッシュ鋳造所を用意しつつ、各電子キャッシュの引き出しに見合うhashcashトークンをその鋳造所が生成していることを監査できるようにすることだ。そうすれば、hashcashに裏付けられたブラインド電子キャッシュ鋳造所ができる。購入する仮名はトークンのブラインドを解いてブロードキャストする。サーバーはそれが以前に出ていないか確認し、その仮名の残高をトークンの価値の分だけ増やす。

定期的に、hashcash鋳造所は不正をしていないことを証明するために、自らのhashcashを公開しなければならない。

ブラインディングと何らかのコスト関数を同時に達成するブラインドコスト関数を見つけられれば、鋳造所が対応するhashcashを公開する段階を省けるかもしれない。

Adam

1998年12月6日0:48:42(UTC)、アダム・バックは次のように書きました:

アダム・バックの投稿(1998年12月6日00:48 UTC)

(1) インフレ — 所定の衝突を計算するために要するハードウェアのコストは、ムーアの法則に沿って下がる。b-moneyの単位が時間とともにより多くの計算量を要するように定義すれば、これを回避できるかもしれない。たとえば1 b-money単位を、その時点の価格とハードウェア水準で1000ドルで買える最も効率的なハードウェアによる1か月分の計算量と定義する、といった具合だ。

実は、この問題はプロトコルですでに考慮済みです。CPU時間を燃やしてb-moneyを作るとき、作られる量は、標準的な財のバスケットに対するCPU時間の相対的なコストに依存します。計算のコストがそのバスケットに対して下がるにつれて、1単位のb-moneyを作るのに必要なCPU時間は自動的に増えます。その結果、b-moneyの経済が縮小するか、b-moneyの流通速度が上がらない限り、b-moneyにインフレは生じないはずです(b-moneyの貨幣供給を減らすことはできないので)。

アダム・バック

(3) リンク可能性 — 参加者は匿名だが、そのトランザクションはリンク可能であり、したがってb-moneyの参加者は仮名にとどまる(リンク可能な匿名性とは、すなわち仮名性のことだ)。これは、公開帳簿の記入が確実に更新されるようトランザクションをブロードキャストする必要があることに由来する、本質的な性質だ。

(4) 資金を入れることはできる — ハードウェアを買えばよい — が、人によってコストが異なる。既存の汎用ワークステーションを使うなら、カスタムハードウェアを買う場合より単位あたりのコストは高くつく。さほど悪い問題ではなく、規模の経済、あるいは量割引と見なせばよい。

(5) ハードウェアを買って資金を入れる方法は機能するが、人々はカスタムハードウェアを買う手間を嫌い、武力独占に裏付けられた通貨(各国の法定通貨)でb-moneyを買いたがるだろう。最新のカスタムハードウェアを買い集めることを事業とする鋳造所を設けたとしても、仮名の身元が、追跡可能な決済手段(クレジットカード、小切手、電信送金など)の利用によって割れてしまうため、匿名でb-moneyを買うのは難しい。

(6) 資金を出すのも難しい。仮名のb-money利用者が、身元を明かさずに武力独占通貨を得るのは困難だろう。

問題の3〜6は、私のペイメントミックスのアイデアで解決できます。これは単純に、人々がb-moneyでブラインド化された電子キャッシュを買い、少し後に別の仮名でそれを売り戻す、チャウム方式の鋳造所です。これであなたのb-moneyはもうリンクできなくなります。この鋳造所の良い点は、いつでも未決済の債務がごくわずかなはずなので、それほど信用しなくてよいことです。負っている債務も、もちろんb-moneyで裏付けられます。

1998年12月6日0:48:42(UTC)、アダム・バックは次のように書きました:

アダム・バックの投稿(1998年12月6日00:48 UTC)

(2) リソースの借用 — キャンパス中のワークステーションにアクセスできる学生は、かなりの量の無料のCPU時間を得られる。

問題がコンピューターのネットワーク上で無料で解けるのなら、定義上、その解をブロードキャストしてもお金は生まれません。b-moneyの鋳造所は、ネットワークのコンピューターの遊休時間を使っていないことを証明するために、低帯域のネットワークではうまく並列化できない問題を解く必要があります。ただ、そのような問題のクラスが存在するかどうかは分かりません。この問題は、人々が遊休コンピューター時間のより生産的な使い道を見つけるにつれて、将来あまり深刻でなくなっていくと思います。

アダム・バック

(7) もしこのようなシステムが普及すれば、流通しているb-moneyの価値に等しいオーバーヘッドが生じ、それは時間とともに、散逸した熱と無用なハードウェアとして実質的に燃やし尽くされていくように見える。だがおそらくそのコストは、追跡可能なトランザクションを強制するために武力独占を維持する莫大なコストよりは、はるかに低い。

今では、政府の暴力独占は差し引きでプラスだと思うようになりました。政府が暴力を独占していない国(ロシアなど)を見ると、状況はかなり厳しく見えます。

それはともかく、本題に戻ります。b-moneyの創出に伴うリソースの浪費は、b-moneyが最初に一度に全部ではなく、b-money経済の拡大に合わせて徐々に作られると考えれば、減らせます。b-moneyにデフレ係数を組み込めば、b-moneyは時間とともに価値が上がり、経済の運営を支えるのに必要なb-moneyはそれほど多くなくて済みます。これは、b-moneyの創出を定義する標準バスケットを、時間とともに一定の率で成長させると定めることで実現できます。ただしもちろん、デフレにもコストがあります。時間をまたいで価格を比較するのが難しくなるからです。

b-moneyはせいぜい、政府公認の仕組みを使いたくない、あるいは使えない人々に向けた、ニッチな通貨/契約執行メカニズムにとどまると思います。ですが、もし主流になったとしたら、ここには興味深いマクロ経済的な問いがいくつもあると思います。価格は設計どおりに本当に安定するのでしょうか。景気循環は起きるのでしょうか。最適なインフレ/デフレ率はどれくらいなのでしょうか。