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

アダム・バックが​サイファーパンクの​メーリングリストで​Hashcashを​公開 — デジタルキャッシュを​補う​ものと​して​示した​プルーフ・オブ・ワーク方​式

定義: Hashcash (46)

濃紺の背景の図。昔ふうのメールの告知を描いたカードと封筒のアイコンから矢印が伸び、回路模様のスタンプを収めた枠へと集まる。そこから点線でアーチ形のアイコンと丸いバッジまで続き、下には2つの点を結ぶ横長の年表が添えられている。配色はオレンジとクリーム、青緑でまとめられている。

1997年3月28日、当時エクセター大学の博士研究員だったアダム・バックは、サイファーパンクのメーリングリストに件名「[ANNOUNCE] hash cash postage implementation」のメールを送信した。告知の全文は、このサイトに一次資料として収めてあり、バック自身のサイトhashcash.orgにも写しが残っている。

Hashcash自体は通貨ではない。台帳もなく、送金もなく、合意形成もなく、通貨供給もない。スパムやDoS攻撃を防ぐための、切手のような単独の仕組みである。しかし1997年のアナウンスは、「これはdigicashとどう関係するか」という節をわざわざ立て、Hashcashをデジタルキャッシュの議論の中にはっきり置いている。

アナウンスが貨幣について述べた内容

告知はまず、技術の提案から始まる。「部分ハッシュ衝突に基づく郵便料金方式」で、作るのに要る計算はいくらでも重くできるのに、確かめるのは一瞬で済む。リメーラーの利用料や、スパムの抑止に使うことを考えた案である。実装の解説と使い道の例のあと、アナウンスはデジタルキャッシュとの関係に話題を移す。

「これはdigicashとどう関係するか」節より:

アダム・バック(サイファーパンクメーリングリストへの投稿、1997年3月28日16:52 UTC)

リメーラーやメールにdigicashの郵便料金を使えれば便利だが、digicashには問題がいくつかある。

  • アカウントを作るのが面倒だ(書類の記入など)
  • アカウントを持っている人が少ない
  • 匿名になるのは支払う側だけで、売り手は匿名にならない

そこで提案したいのは、ハッシュ衝突の郵便料金とdigicashの郵便料金のどちらでも受け付けるリメーラーだ。このやり方には次の利点がある。

  • digicashがもっと広く使われるようになるまで、Hashcashがつなぎの役を果たせる
  • Hashcashは無料で、自分のPCで少し計算するだけで使える。誰もが自由に意見を言い合うネットの文化にも合っている。その文化の中では、お金のない者でも、百万長者や引退した役人などと、互角に渡り合える。
  • digicashがだめになったとき(違法にされたり、利用者の身元を第三者に預けるよう義務づけられたりしたとき)にも、Hashcashがあればスパムを抑える予備の手段が残る。

公開したその日から、バックはHashcashを、当時もっとも進んでいたデジタルキャッシュのシステムであるデビッド・チャウムのDigiCash/Ecashと、はっきり比べていた。Hashcashは、デジタルキャッシュと張り合うものではなく、それを補うものだというのである。

最初の返信

バックは告知の末尾の署名欄に、「あなたは今日、RSAを輸出したか?」という一行と、Perlのコードを2行添えていた。この2行のPerlは、それだけで実際に動くRSAの実装だった。バックはこれを、「暗号システムを輸出しよう」という意味の「export-a-crypto-system sig」と呼び、メールの署名欄に入れて広めていた。バックがこの署名のために作ったページによると、ある米国の法学教授が米国商務省から、このプログラムを国外に輸出してはならないという判断を書面で得たという。

告知から10時間たたないうちに、アニル・ダスは、ビッグエンディアンのMIPS R10KでHashcashを動かして、毎秒70921回のハッシュ計算ができると報告し、22ビットの部分衝突を見つけるには30秒ほどかかると見積もった。あわせて、ダン・バーンスタインが報告したMD5の56ビットの衝突がこの方式にどう影響するかを尋ねた。バックは翌日答えた。部分ハッシュ衝突を匿名のスパム対策の郵便料金に使うことを考え始めたのは、バーンスタインのsci.cryptへの投稿がきっかけだった。リベストとシャミアのMicroMintも知っていて、MicroMintについては、数日前にハル・フィニーがメーリングリストで概略を説明していた。バックは、Hashcashに何がないのかも書いている。「匿名で通信するときの料金としてHashcashを使えば、間には銀行も仲介業者も入らない。だから当局は、法律で潰すことも、利用者の身元を記録して差し出すよう迫ることもできない」。

バックが読んでいなかった先行研究

サービスを使う人に、代金の代わりに計算をさせるという発想は、バックが最初に考えたものではない。バック自身が2002年の論文の第1節でそう書いている。「[1]を発表した時点で、著者は、迷惑メールを防ぐために、送り手にCPUで計算させ、それを料金の代わりにする関数を提案したドゥワークとナオールの先行研究[2]を知らなかった」。[1]は1997年5月のバック自身のHashcashのページである。[2]は「Pricing via Processing or Combatting Junk Mail」で、シンシア・ドゥワークとモニ・ナオールが、主にIBMのアルマデン研究所で進めた研究を、Crypto ‘92で発表したものである。この論文は、著者の一人が短い休暇から戻ると241通のメールがたまっていた、という話から始まる。中心の案は「資源を使わせる前に、利用者に、ある程度難しいが解けないほどではない関数を計算させる」ことだった。

1992年の論文は、解決できずに残った課題を挙げて終わっている。「最後に、料金代わりの関数の計算は、抑止として働く以外に何の役にも立たない。料金代わりの関数の計算が、ほかの目的にも役立つ方式を考え出せたら面白いだろう」。1999年、マーカス・ヤコブソンとアリ・ジュエルスは「プルーフ・オブ・ワークの概念を定式化する」と書き、研究者たちはそれを「まちまちの用語」で呼んできたと述べた。そのうえで、払わせた計算を役に立つ別の計算にも使える方式を、「ブレッドプディング」(残り物のパンを生かす菓子)のプロトコルと名づけて提案した。バックの2002年の論文は、計算に二つの役を兼ねさせるこの考えについて、ヤコブソンとジュエルスの論文を引いている。ビットコインのホワイトペーパーの参考文献に、この二つの論文は入っていない。入っているのは、バックの2002年の論文である。

鋳造のメタファー:1997年実装と2002年論文

アナウンスは実装の解説でも、貨幣を鋳造するという言葉を使っている。コスト・トークンを作るプログラムのコマンドはhashcash mintで、実装の説明には「二重支払いの防止」という項目もある。1997年のhashcash mint/mintという言い方は、バックの2002年のHashcash論文で、関数の名前にまで正式に取り入れられる。同論文 §2 Cost-Functionsより:

アダム・バック(Hashcash論文、2002年)

コストのかかるトークンを作るのは、硬貨を鋳造するのに似ている。そこで、コスト関数をmint(鋳造)と呼ぶ。

コスト関数はMINT() と命名され、検証関数はVALUE() と命名されている。この名づけは偶然ではない。バックは最初から、CPU時間を費やすHashcashの手順を、トークンを作る手続きと見て、物理的な貨幣の鋳造になぞらえていた。

§7 Applications:Hashcashをb-moneyの鋳造の仕組みにする案

2002年論文 §7 Applicationsでは、DoS抑止やスパム対策と並んで次が列挙される:

アダム・バック(Hashcash論文、2002年)

ウェイ・ダイのb-money電子キャッシュ提案 — 銀行との接点を持たない電子キャッシュ方式 — の鋳造機構としてのhashcash。

論文中の参考文献 [19] はウェイ・ダイのb-money(1998年)である。のちにビットコインが実現する組み合わせは、査読を経た論文のこの一節に、すでにはっきり書かれていた。Hashcashのプルーフ・オブ・ワークを、分散型のデジタルキャッシュで新しい貨幣を生み出す仕組みに使うことである。バックは応用候補として提案したが、実装はしていない。

1997年と2002年のあいだには、バックが1998年12月6日にサイファーパンクのメーリングリストに書いたb-moneyの批評がある。この一次資料は別のページに収めた。批評は、b-moneyの貨幣の設計に7つの問題を挙げ、新しい貨幣をどう作るかについて「価値を作るには、CPUを回せばいい。hashcashと同じだ」と、はっきり提案している。

Hashcashと貨幣の11年、1997〜2008年

下の表で、その11年をたどる。

日付一次資料バックがHashcashと貨幣について述べた内容
1997-03-28Hashcashアナウンス(サイファーパンクのメーリングリスト)Hashcashを、digicashが「もっと広く使われるようになるまで」の「つなぎ」と位置づけ、節「これはdigicashとどう関係するか」を含む。実装にhashcash mintコマンドと二重支払い保護
1998-12-06サイファーパンクのメーリングリストでのb-money批評b-moneyの貨幣の設計について7つの問題点を挙げ、「価値を作るには、CPUを回せばいい。hashcashと同じだ」を提案
2002-08-01Hashcash論文 §2 + §7「コストのかかるトークンを作るのは、硬貨を鋳造するのに似ている。そこで、コスト関数をmint(鋳造)と呼ぶ」。§7がウェイ・ダイのb-money鋳造機構としての応用を列挙
2008-08-20サトシからアダム・バックへサトシが、ビットコインのホワイトペーパーでHashcashをどう引用すればよいかをバックに尋ねる
2008-08-21サトシのb-moneyへの返信サトシが「私のアイデアの出発点は、まさにそこだ」と書く。2002年の論文の§7は、Hashcashでb-moneyの貨幣を作る、という使い方を挙げるだけだったが、サトシはそれを自分の出発点だと認めたことになる

バックをサトシ候補と名指ししたNew York Timesの調査報道を受けて、バック自身が振り返った言葉。

アダム・バック(ツイート、2026年4月8日)

私は早くから、暗号学、オンラインのプライバシー、電子現金が社会にもたらす良い面に、ひたすら関心を注いでいた。だから1992年ごろから、ecashの応用研究にずっと積極的に取り組んできた。

バックのビットコイン以前の記録についてはアダム・バック伝記を、この告知を詳しく読み解いた内容についてはアダム・バック同定仮説を参照。同定仮説の§1.2では、バックがHashcashの作者だという点を、v0.1のコードと照らして検討した。§1.4では、Hashcashを貨幣の一種と見る見方が、この1997年の投稿から2009年1月のビットコインの公開までの11年でどう変わっていったかをたどった。同定仮説で取り上げた先行技術(Hashcash、b-money、MicroMint、ビットゴールド、DigiCash、RPOW)のうち、コードを書いていたころのサトシが読んでいたと記録で確かめられるのは、Hashcashだけである。Hashcashをほかの先行技術と並べた比較は、「コードが仕上がる前にサトシが何を知っていたか」にまとめた。

ビットコインがのちに組み合わせた要素、つまり最長のチェーンを正しいとする合意の規則、UTXOモデル、マイニング報酬による発行、2,100万枚の上限、難易度調整のアルゴリズムは、ビットコイン設計系譜で扱われている。ビットコインのマイニングの競争が、同じプルーフ・オブ・ワークの発想からどう生まれたのかをやさしく知りたい場合は、マイナーたちは実際、何を競っているのかを参照。マイニングで解く、SHA-256dの計算問題の細かい仕様はコンセンサスの設計のページにある。

原典の外部ソース

http://www.hashcash.org/papers/announce.txt

他の外部ソース

他1件を表示