前比特币数字现金文献:Chaum、b-money、Bit Gold、Hashcash、RPOW 对照导读
比特币之前五份原始文献的注释对比——Chaum 盲签名、Adam Back 的 hashcash、戴伟的 b-money、Nick Szabo 的 Bit Gold、Hal Finney 的 RPOW,附设计对比表。
比特币不是凭空出现的。1982 年到 2004 年间,有五个设计向"没有银行的数字货币"这个问题发起过冲击,每一个都走完了一段路。本文把它们并排来读:各自提出了什么、解决了什么,以及卡住它们的那道具体障碍是什么。
五份文献都很短。两篇博客文章、一个文本文件、一篇会议论文、一封邮件列表公告外加一台真的跑起来过的服务器。加起来大约四十页,里面几乎包含了比特币的每一个想法——除了让它真正跑通的那一个。
一、David Chaum:盲签名与不可追踪支付(1982)
文献: 于 CRYPTO '82 宣读,1983 年由 Plenum Press 出版的论文集收录,第 199-203 页。见 Chaum 的论文列表。
Chaum 关心的是隐私,不是去中心化。他接受由银行发行货币,只问一个问题:能不能让银行无法追踪这些钱去了哪里。
机制就是盲签名,Chaum 用一个类比来解释:把一张空白纸条和一张复写纸装进密封信封交给银行,银行在信封外面盖章,印记透过复写纸落到纸条上。银行确认了这是一张价值一美元的票据,却从未看到它的序列号。日后这张票据被存入时,银行能验证自己的签名,却无法把它与当初的取款对应起来。
1989 年 Chaum 在阿姆斯特丹创办 DigiCash 来实现它。1994 年,第一笔通过计算机网络的数字现金支付完成;1995 年圣路易斯的 Mark Twain 银行取得授权上线该系统。DigiCash 于 1998 年破产。
解决了: 用数学而非承诺来保障的支付隐私。 留下了: 关于发行方的一切。银行仍然靠逐笔核对数据库来阻止双花,因此它可以超发、审查,或者倒闭——而 DigiCash 确实倒闭了。
二、Adam Back:Hashcash(1997/2002)
文献: 1997 年 3 月发布于密码朋克邮件列表;参考性论文 Hashcash — A Denial of Service Counter-Measure 于 2002 年成文。
Hashcash 本来不是为货币设计的,而是一种反垃圾邮件机制:要发一封邮件,就得算出一个带若干前导零比特的哈希,且与收件地址和日期绑定。算出来需要可度量的 CPU 工作,验证只需一次哈希。正常发信人付出的成本感觉不到,群发者则要付一百万次。
Back 的论文既描述了由服务器发出挑战的交互式变体,也描述了适用于邮件这类存储转发场景的非交互式变体。真正影响深远的是它的经济学表述:一种不可伪造、且任何人都能验证的成本。Cynthia Dwork 与 Moni Naor 在 CRYPTO '92 的 Pricing via Processing 中提出过同一原理;Back 是独立想到的,而且关键在于,他写出了能跑的代码。
解决了: 无需发行方就制造稀缺。一枚 hashcash 凭证证明了真实资源已被消耗。 留下了: hashcash 凭证一次性、不可转让,且成本固定,硬件变快就会悄悄贬值。它是一张邮票,不是一种货币。
三、戴伟:b-money(1998)
文献: b-money,1998 年 11 月发布于密码朋克邮件列表。比特币白皮书第 [1] 条引用——中本聪列出的第一条。
戴伟开篇即言明自己受 Tim May 密码朋克无政府主义的影响,随后提出一个方案:不可追踪的化名之间互相支付,并在无外部帮助的情况下履行合约。
第一个协议与比特币惊人地接近。每个参与者各自保存一份数据库,记录每个化名拥有多少钱。货币通过广播一个此前未解决的计算难题的解来创造,创造者获得的金额等于该计算的成本。转账经签名后广播,每个参与者更新自己那份副本。
戴伟立刻看到了它的不实用,于是给出第二个协议:只由一部分服务器维护账本,客户通过抽样服务器来验证,服务器则缴纳保证金,作恶即被没收。
解决了: 一个加密货币应有的形态。分布式账本、工作量证明发行、化名账户、广播交易。 留下了: 这些副本如何保持一致。戴伟假定存在一个同步且不可阻塞的广播信道,并且承认"计算价值"的定价问题——用一篮子商品为工作定价,需要一个他并不具备的预言机。方案里没有共识规则,没有链,也没有解答广播冲突时该听谁的。
四、Nick Szabo:Bit Gold(2005)
文献: Bit gold,2005 年 12 月发布于 Szabo 的博客 Unenumerated。存档页面显示的日期被后来置顶改成了 2008 年 12 月;想法本身比这篇博文更早,1990 年代末就在密码朋克列表上讨论过。
Szabo 的出发点不是密码学而是贵金属。黄金的价值建立在"不可伪造的昂贵"之上——获取成本高、验证成本低——正是这一属性而非任何政府法令让它成为货币。Bit gold 要在比特世界里复制它。
流程把工作量证明串成链:一个公开的挑战字符串用客户端谜题函数求解,解被打上时间戳并公开,随后成为下一轮的挑战字符串。归属记录在一个分布式产权登记表中,Szabo 提议用一组拜占庭容错的服务器仲裁团来维护它。他明确提到 Hal Finney 的 RPOW 是这一思路已实现的变体。
他也指出了最终会拖垮它的缺陷:工作量证明的解不可互换,因为随着硬件进步,2005 年解出的谜题比 2008 年解出的同一谜题成本更高。他给出的补救——由做市商把不同年份的解打包成标准价值单位——是权宜之计,不是解答。
解决了: 链式工作量证明,以及把数字稀缺表述为"不可伪造的成本"。 留下了: 产权登记表。判定哪个服务器仲裁团才是真的,是同一个女巫问题换了个位置,而 bit gold 没有回答它的机制。
五、Hal Finney:RPOW 可重用工作量证明(2004)
文献: 2004 年 8 月 15 日发布于 Cryptography 邮件列表。原站点保存在互联网档案馆。
Finney 直接冲着 hashcash 的一次性限制去。把一枚 hashcash 凭证发给 RPOW 服务器,服务器返回一枚 RSA 签名的 RPOW 凭证;把这枚凭证交给别人,对方可以换一枚新的。每枚凭证只用一次,但每次使用都生出一枚后继,于是价值可以在人与人之间流动,同时始终由最初那份工作量证明背书。
有意思的是它的信任模型。Finney 把服务器跑在 IBM 4758 安全密码协处理器上,该硬件能对自己正在运行的软件产出一份签名证明。任何人都可以对公开的源代码取哈希,与该证明比对,从而确认服务器没有后门、也无法在没有等值工作量证明的情况下铸币。Finney 称之为"透明服务器",并打算把它做成一个系列的第一个。
解决了: 可转让性,以及在不信任运营者的前提下验证服务器的诚实。 留下了: 服务器本身。它是一台机器、在一个地方、依赖一家厂商的密钥。硬件被攻破或者插头被拔掉,系统就停了。Finney 后来写道这个概念始终没吸引到用户;四年后,他运行了第二个比特币节点。
对照表
| ecash (1982) | Hashcash (1997) | b-money (1998) | Bit Gold (2005) | RPOW (2004) | |
|---|---|---|---|---|---|
| 发行方式 | 银行铸造 | 发送方计算 | 工作量证明 | 链式工作量证明 | 由 hashcash 背书 |
| 双花防御 | 银行数据库 | 不适用 | 每个节点的副本 | 产权登记仲裁团 | 服务器数据库 |
| 所需信任 | 完全信任银行 | 无 | 服务器诚实多数 | 仲裁团诚实 | 防篡改硬件 |
| 可转让 | 是 | 否 | 是 | 是 | 是,顺序转让 |
| 隐私 | 强,设计使然 | 不适用 | 化名 | 化名 | 化名 |
| 是否运行过 | 是,1994-1998 | 是 | 否 | 否 | 是,2004 |
| 缺失的一块 | 去中心化 | 可重用性 | 共识 | 登记表共识 | 去中心化 |
横着读最后一行:五个里有三个栽在同一件事上。不是密码学,不是激励,也不是隐私,而是达成一致。互不信任、又无法清点身份的陌生人,如何就"谁拥有什么"的唯一版本达成共识?
比特币补上了什么
中本聪的白皮书取用了 hashcash 的工作量证明、b-money 的广播账本,以及 Haber 与 Stornetta 的哈希串联,然后加了一条规则:有效历史是累积工作量最多的那条链,节点通过在其上继续构建来表达认同。
这条规则做到了五个设计都缺的那件事。它让"达成一致"成为经济结果而不是前提假设;让女巫攻击失去意义,因为选票是用哈希而不是身份买的;还把难度目标变成了一套能扛住硬件进步的发行节奏——顺带解决了 Szabo 无解的那个可互换性问题。
白皮书把 b-money 列为 [1]、hashcash 列为 [6]。Bit Gold 和 RPOW 未被引用,中本聪后来在通信和论坛帖子里提到过两者。Chaum 完全没有出现,这一点很能说明白皮书的取向:它不是隐私那条研究脉络的后代,而是时间戳与工作量证明这两条脉络的后代。
延伸阅读
- 比特币白皮书注释导读 —— 逐节解析
- 《密码朋克宣言》解读 —— 孕育这些设计的那个社群
- 原始文献档案索引 —— 完整的编年清单