Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第二章:比特币之前——数字货币的探索

一个被遗忘的起点

上一章描绘了今天的区块链行业:碎片化的网络、相互隔离的账本、让普通用户望而生畏的技术复杂性。整个行业看起来越来越像一台精密但失控的机器——零件越来越多,却似乎没有人记得这台机器最初是用来干什么的。

要理解这台机器为什么会走到今天这一步,我们需要回到起点。不是2009年比特币上线的那个起点,而是更早——早到1980年代,早到一个名叫David Chaum的密码学家第一次提出这样一个问题:

能不能在数字世界里创造真正的现金?

这个问题看似简单,却困住了一代又一代最聪明的头脑长达二十余年。序章中我们用一段话概述了这段历史——从Chaum的DigiCash到Finney的RPOW。但那只是一个轮廓。本章将深入每一个关键节点,展示每一次尝试解决了什么、遗留了什么、以及后来者如何从前人的失败中汲取养分。

在中本聪之前,至少有五个重要的尝试先后出现,每一个都比前一个更接近答案,每一个都在同一个地方功亏一篑。理解这段历史,你才能真正理解比特币到底解决了什么问题——以及为什么那个解决方案如此特殊。

David Chaum与DigiCash:密码学的优雅与商业的脆弱

1982年,还在加州大学伯克利分校攻读博士学位的David Chaum发表了一篇论文——《Blind Signatures for Untraceable Payments》(用于不可追踪支付的盲签名)。这篇论文提出了一项密码学创新:盲签名。

盲签名的原理,可以用一个生动的比喻来理解。想象你在一个信封里放了一张支票,信封里衬有一层复写纸。你把这个封好的信封递给银行。银行在信封外面签了字——签名透过复写纸印到了里面的支票上——然后把信封还给你。你打开信封,取出支票。现在这张支票上有了银行的签名,但银行从未看到过支票的内容。

这意味着什么?意味着银行可以证明“这张支票是合法的“(因为有银行的签名),但银行可以验证这枚 eCash 的真伪,但无法把后续支付记录对应回某次取款记录或具体付款人。付款行为和付款人之间的联系被密码学彻底切断了。

这是人类历史上第一次在数学层面解决了数字支付的匿名性问题。在此之前,所有的电子支付都像银行转账一样——每一笔交易都有完整的记录,谁给谁付了多少钱,一清二楚。Chaum的盲签名技术,第一次让数字支付拥有了类似于现金的匿名属性:你把一张百元钞票递给咖啡店老板,没有人知道这张钞票是你给的,也没有人能追踪这张钞票的流向。

1989年,Chaum在荷兰阿姆斯特丹创立了DigiCash公司,开始将盲签名理论变成实际产品——eCash。eCash是人类历史上第一个实际运行的匿名数字支付系统。它的运作流程是这样的:用户从银行取出一笔eCash(类似于从ATM取现金),获得一组经过盲签名处理的数字令牌;用户把这些令牌发给商家完成支付;商家把令牌交回银行验证,银行确认签名有效后入账。整个过程中,银行可以验证令牌的真伪,但无法将令牌和取款人关联起来。

1994年5月,在日内瓦举行的第一届万维网大会上,David Chaum展示了eCash的威力,第一笔匿名数字现金支付在此期间完成。1995年,美国密苏里州的马克吐温银行(Mark Twain Bank)成为全球第一家商业化运营eCash的银行,允许储户用eCash进行在线支付。

从技术角度看,eCash是一件精致的作品。匿名性、不可追踪性、密码学安全——它在理论上几乎无懈可击。

但它有一个致命的结构性缺陷。

eCash的整个运行逻辑依赖于一个不可或缺的角色:银行。用户从银行取出eCash,商家把eCash交回银行验证。银行是发行者,银行是验证者,银行是整个系统的枢纽。没有银行,eCash就是一堆没有意义的数字。

回忆序章中的逻辑:双花问题的传统解法是引入一个可信第三方。eCash正是如此——它用密码学保护了用户的隐私,但解决双花的方式仍然是最古老的那一种:让银行来检查每一枚令牌是否已经被花过。匿名性是新的,但信任模型是旧的。

这个结构性缺陷在商业层面暴露得淋漓尽致。马克吐温银行的eCash试验只吸引了大约5000名用户和300多个商家。据多方转述,Chaum拒绝了与ING等大型银行以及微软、网景等科技巨头的合作机会。据他后来回忆,“随着互联网的发展,用户的平均技术水平下降了。很难向他们解释隐私的重要性。”

1998年,DigiCash申请破产。

DigiCash的失败有多重原因——商业策略的失误、时机的不成熟、用户对隐私的冷漠。其架构决定了它难以获得后来比特币那种抗审查与抗单点失效的能力,但商业失败还受网络效应、推广策略和时代条件共同影响。Mark Twain/Mercantile试验结束后,eCash在美国失去了唯一的重要银行落地;全球其他试点也未形成网络效应,并随DigiCash破产而逐步式微。中心化的单点依赖,既是eCash的运行前提,也是它的致命弱点。

Chaum解决了匿名支付的密码学问题,但他没有解决——甚至没有试图解决——去除可信第三方的问题。他的系统需要你信任银行不会跑路、不会审查你、不会把你的取款记录和消费记录关联起来。换言之,他保护了你付钱时的隐私,但整个系统的存在仍然依赖于一个你必须信任的机构。

DigiCash的故事给后来者留下了两个教训。第一,密码学可以解决隐私问题,但不能解决信任问题——至少不能单独解决。第二,一个依赖于商业合作关系才能存活的货币系统,本质上和依赖银行没有区别——你只是把对银行的信任,替换成了对另一种商业安排的信任。

这是第一次尝试。优雅,但不够。

Hashcash:工作量证明的曙光

DigiCash破产的同一时期,另一个重要的拼图碎片在完全不同的领域出现了。

1997年,英国密码学家Adam Back提出了Hashcash。Hashcash要解决的不是数字货币问题,而是一个看似毫不相关的问题:垃圾邮件。

1990年代中后期,电子邮件正在被垃圾邮件淹没。这个问题在今天看来可能已经不那么紧迫了(多数邮件服务已经有了成熟的过滤系统),但在当时它是互联网面临的最严重的基础设施问题之一。问题的根源很简单:发送一封电子邮件的成本几乎为零。一个正常人一天发十几封邮件,一个垃圾邮件发送者一天可以发数百万封。当做某件事没有代价时,滥用就是必然结果。

Back的思路直截了当:让发送每一封邮件都有一个微小但不可避免的计算代价。具体来说,发件人在发送邮件之前,需要找到一个特定的数值,使得这个数值与邮件头信息一起经过SHA-1哈希运算后,产生一个以若干个零开头的哈希值。这个过程没有捷径,只能一个一个地尝试不同的数值——本质上就是“猜密码“。

对一个正常用户来说,为每封邮件花几秒钟的计算时间,几乎没有感觉。但对垃圾邮件发送者来说,如果每封邮件都需要几秒钟的计算,那么发送一百万封垃圾邮件就需要几十天的CPU时间。发送垃圾邮件从“几乎免费“变成了“昂贵到不划算“。

这个想法不是完全原创的。1992年,密码学家Cynthia Dwork和Moni Naor在一篇名为《Pricing via Processing, or Combatting Junk Mail》的论文中就提出了类似的概念——通过计算成本来对抗垃圾邮件。但Back的Hashcash方案有一个关键的改进:它基于哈希函数,具有天然的随机性。Hashcash的关键改进在于采用哈希型、可公开验证、无trapdoor的成本函数,使其更简单、更适合开放网络。由于哈希运算结果本质上是随机的,即使算力较弱的参与者也有机会率先找到合格值——这种随机性保证了竞争不会被算力最强者绝对垄断,为后来的去中心化共识提供了公平的博弈基础。

更关键的是,Hashcash确立了一个核心原则:生产困难,验证容易。 找到一个合格的哈希值可能需要几秒甚至几分钟的穷举计算,但验证这个值是否合格只需要执行一次哈希运算——毫秒级完成。这种不对称性意味着,你不需要信任任何人来确认“这个工作确实被做了“——你自己就能验证。

这就是工作量证明(Proof of Work)的原型。

Hashcash本身从未成为一个广泛使用的反垃圾邮件工具——电子邮件行业最终选择了其他方案来对付垃圾邮件。但它提出的核心机制——通过消耗计算资源来证明付出了真实代价,并且这个证明可以被任何人独立验证——成为了通向比特币之路上最重要的技术基石之一。

十一年后,中本聪在比特币白皮书中明确引用了Hashcash。白皮书第四节写道:

“To implement a distributed timestamp server on a peer-to-peer basis, we will need to use a proof-of-work system similar to Adam Back’s Hashcash.”

“要在点对点的基础上实现分布式时间戳服务器,我们需要使用类似于Adam Back的Hashcash的工作量证明系统。”

Back给了比特币一台发动机。但在1997年,这台发动机还没有找到它的车。Hashcash解决了“如何证明你付出了计算代价“的问题,但它不是货币——它没有总量限制,没有转移机制,没有账本。它是一个验证工具,不是一个价值系统。

从反垃圾邮件到数字货币,这一步看起来不远,实际上跨越了一个巨大的概念鸿沟。Hashcash的工作量证明是一次性的——你算出一个合格的哈希值,附在邮件上发出去,对方验证通过,然后这个证明就废了。它不能被转让,不能被积累,不能充当价值储存手段。它更像是一次性入场券,而非可以流通的货币。把工作量证明从“发邮件的门票“变成“数字世界的黄金“,需要一个完全不同层次的设计。

b-money:去中心化货币的第一张蓝图

1998年底,一个叫Wei Dai的密码学家在cypherpunks邮件列表上发表了一篇简短的提案——《b-money, an anonymous, distributed electronic cash system》(b-money:一种匿名的分布式电子现金系统)。

Wei Dai不是学术界的知名人物。他是一个密码学爱好者和软件工程师(他开发的Crypto++密码学库至今仍在广泛使用),活跃在cypherpunks(密码朋克)社区——这是一群相信密码学技术可以保护个人自由的技术极客。他们通过加密邮件列表交流想法,讨论隐私保护工具、匿名通信协议,以及——如何创造不受政府控制的数字货币。这个社区后来催生了许多改变世界的项目,而它对数字货币的执着追求贯穿了整个1990年代。

b-money的开篇就清晰地表达了它的目标。Dai写道,他对Tim May描述的“加密无政府主义“概念深感兴趣——一个政府不是被暴力推翻而是因为不再被需要而变得不相关的社区。在这样的社区中,需要一种不依赖政府的货币来完成交易。

Dai提出了两个版本的协议。

第一个版本描述了一个完全去中心化的方案。所有参与者各自维护一份账本,记录每个用户拥有多少钱。创造新货币的方式是解决计算难题——与Hashcash的思路一脉相承。当某人解决了一个公开宣布的计算问题,网络中的每个人都独立验证这个解的正确性和所消耗的计算量,然后在各自的账本上为解题者记入相应金额。转账则通过广播一条经过数字签名的消息来完成:我把X元转给某个公钥地址。

这个方案的革命性在于:它第一次系统性地描述了去中心化数字货币的完整构想——没有银行,没有中心服务器,所有人平等地维护同一套账本。在Chaum还在依赖银行来运行eCash的时候,Dai已经在思考一个根本不需要银行的世界。

但Dai自己也意识到了第一个方案的致命问题:它需要一个“同步且不可拦截的广播通道“。在现实的互联网中,消息有延迟,网络可能分区,参与者可能离线。如果两个人几乎同时广播了两笔相互矛盾的交易,不同的参与者可能看到不同的顺序。每个人维护自己的账本,但没有一个机制来确保所有人的账本最终一致。

换言之,b-money的第一个方案缺少一个共识机制。 它描述了去中心化货币应该是什么样子,但没有解决最关键的工程问题:在没有中心裁判的情况下,当不同参与者对交易顺序产生分歧时,谁说了算?

Dai显然意识到了这一点,所以他提出了第二个版本。在这个版本中,不是所有人都维护账本,而是由一组特定的“服务者“来负责记账。普通用户只需要检查服务者之间的账本是否一致。为了防止服务者作恶,每个服务者需要存入一笔保证金——如果被发现篡改账本,保证金就会被没收。

但这个“改进“本质上是一种妥协——它重新引入了一个需要被信任的群体。虽然服务者之间存在互相制衡,但系统的安全性仍然依赖于“大多数服务者是诚实的“这个假设。更深层地说,第二个方案的保证金机制面临一个循环问题:保证金是用b-money本身来质押的,而b-money的价值依赖于系统的安全性,系统的安全性又依赖于保证金的威慑力。用系统内部的资产来保障系统自身的安全——这是一个自指的逻辑环。

b-money从未被实现。它始终停留在邮件列表里的一篇提案。但它的历史地位不容忽视——它第一次画出了去中心化数字货币的完整蓝图,定义了这个领域的基本问题:如何在没有中心权威的情况下创造、分配和转移数字货币。十年后,中本聪在比特币白皮书的参考文献中将b-money列为第一条引用。

Dai看到了正确的方向,但他手里的工具不够。工作量证明在b-money中只被用来创造新货币,而没有被用来解决共识问题。那个关键的跳跃——用工作量证明来驱动交易排序——还需要再等十年。

Bit Gold:距离终点最近的一步

就在Wei Dai发表b-money的同一年——1998年——另一个人也在思考几乎完全相同的问题,而且走得更远。

Nick Szabo是一个极为罕见的跨界思考者。他既是计算机科学家,也是法律学者,还是经济学和博弈论的深度研究者。他提出的“智能合约“概念(Smart Contracts)比以太坊早了将近二十年。而他在1998年构思、2005年正式发表的Bit Gold方案,是所有比特币前身中最接近终点的一个——接近到许多人至今仍然猜测Szabo就是中本聪本人。

Szabo的思考起点是黄金。

黄金之所以能在数千年里充当货币,不是因为某个国王下令,而是因为它的物理属性恰好满足货币的需求:稀缺(地球上只有那么多,开采需要消耗大量劳动和资源)、耐久(不会腐烂、不会生锈)、可分割(可以切割成任意大小的碎片)、可验证(通过密度和化学测试可以辨别真伪)。更关键的是,黄金的价值不依赖于任何第三方的信用——一块金子就是一块金子,不管发行它的政府是否还存在。

Szabo的问题是:能否在数字世界中创造出具有黄金般属性的东西?

他的方案是这样的:

第一步,通过计算难题创造“数字黄金“。 参与者需要解决一个计算难题(类似于Hashcash),找到一个满足特定条件的哈希值。这个过程消耗真实的计算资源和电力,就像开采黄金需要消耗体力和工具。找到的合格哈希值就是一单位的Bit Gold。

第二步,给每一单位Bit Gold打上时间戳。 找到的哈希值会被发送到一个分布式的时间戳服务中,记录它被创造的时间和顺序。

第三步,将Bit Gold的所有权记录在一个分布式的产权登记簿上。 这个登记簿类似于今天的区块链,记录每一单位Bit Gold属于谁,以及每一次所有权的转移。

第四步,下一个计算难题的输入包含上一个难题的解。 这使得Bit Gold的生成具有了时间上的不可逆性,形成了一种早期的链式依赖结构——尽管它还未能实现对交易账本的整体锚定。

看看这个设计:工作量证明创造货币、时间戳记录顺序、链式结构连接区块、分布式登记簿追踪所有权。如果你对比特币的结构稍有了解,你会发现Bit Gold与比特币的相似程度令人震惊。难怪有人说,Szabo“距离发明比特币只差了一步“。

但就是这“一步“,跨不过去。

Bit Gold本身只概述了timestamp service与distributed property title registry的需要。按Szabo在另一篇关于secure property titles的文章中的设想,这类registry会采用拜占庭容错(Byzantine Fault Tolerant)投票机制——但投票是基于“网络地址“而非“算力“。这意味着一个攻击者只需要伪造大量的虚假身份(即女巫攻击/Sybil Attack——单个节点通过伪造大量身份来控制整个网络),就可以在投票中占据多数,从而篡改账本。Szabo意识到了这个问题,但始终没有找到一个令人满意的解决方案。

更深层地说,Bit Gold缺少一个将工作量证明和共识机制融为一体的设计。在Bit Gold中,工作量证明用于创造货币,而共识(即大家对账本内容的一致同意)依赖于另一套独立的投票机制。这两个功能是分开的。Szabo没有看到——或者说没有找到工程方法来实现——一个让工作量证明同时解决货币发行和交易排序的统一框架。

Bit Gold还有一个实际的经济问题:不同时期创造的Bit Gold,其计算难度不同。随着计算能力的提升,后期创造的Bit Gold消耗的“真实成本“可能远低于早期的。这意味着不同时期的Bit Gold并非同质的——早期开采的和后期开采的“含金量“不同,这给交易和定价带来了巨大的复杂性。

比特币后来用一种优雅的方式解决了同质性问题:区块奖励的数量由协议统一规定(每个区块50个比特币,每21万个区块减半),与矿工实际消耗的算力无关。无论你用了多少电力挖出一个区块,奖励都是一样的。这把“劳动价值“和“货币面值“彻底脱钩了——比特币的价值不再直接锚定于挖掘它所消耗的单笔劳动量,而是成为了一个基于全局规则发行的、同质化的记账单位。Szabo在1998年还无法看到这一步。

Bit Gold从未被实现。它在1998年被构思,2005年被正式撰文发表,但始终停留在理论阶段。Szabo已经画出了几乎完整的蓝图,但蓝图上有一个他无法填补的空白——去中心化环境下的共识收敛。

RPOW:最后的中继站

2004年,另一位密码朋克接过了接力棒。

Hal Finney是加密领域的传奇人物。他是PGP(Pretty Good Privacy)加密软件的早期核心开发者之一,是cypherpunks邮件列表上最活跃的技术贡献者之一。他后来会成为比特币网络上第一笔转账的接收者——2009年1月12日,中本聪向他发送了10个比特币。

但在那之前的五年,Finney做了自己的尝试。

他的项目叫RPOW——Reusable Proofs of Work(可复用的工作量证明)。RPOW的灵感直接来自两个前辈:Adam Back的Hashcash和Nick Szabo的收藏品理论。Finney想解决的是Hashcash的一个根本局限:Hashcash生成的工作量证明是一次性的,用过就废了。就像一张电影票,看完一场电影后就变成了一张废纸。但如果工作量证明要充当货币,它就必须像现金一样可以被反复转手——你把它给我,我再把它给别人。

RPOW的解决方案是:用户用Hashcash生成一个工作量证明令牌,然后把它发送到RPOW服务器。服务器验证这个令牌确实代表了一定量的计算工作,然后签发一个等值的RPOW令牌。这个RPOW令牌可以被转让给其他人。接收者可以把它再次发送到RPOW服务器,兑换成一个新的RPOW令牌。每一步都由服务器检查,确保同一个令牌没有被花过两次——即防止双花。

Finney为了解决“凭什么信任这个服务器“的问题,采用了一个巧妙的技术方案。RPOW服务器运行在IBM 4758安全加密协处理器上——这是一种经过最高安全级别认证(FIPS-140 Level 4)的硬件模块。这块芯片有一个关键特性:其设备密钥在协处理器内部生成,且不会离开设备边界,甚至连硬件的所有者(Finney本人)都无法获取。更重要的是,IBM 4758支持“远程证明“——任何人都可以在线验证服务器上运行的软件确实是公开发布的那个版本,没有被篡改过。

这是一个工程上非常精巧的设计。Finney本质上是在说:你不需要信任我这个人,你只需要信任IBM的硬件和公开的源代码。通过将信任从人转移到硬件,RPOW在当时可能是最接近“最小化信任“的工作量证明货币系统。

但它仍然没有跨过那条线。

无论IBM 4758的安全等级有多高,RPOW系统的核心仍然是一台服务器。这台服务器可能被物理摧毁,可能被政府扣押,可能因为Finney个人的原因停止运行。更本质的问题是:系统的安全性不是由数学保证的,而是由一家硬件公司的制造质量保证的。你需要信任IBM的芯片没有后门,需要信任硬件不会被破解,需要信任服务器的物理安全。这些都是合理的信任——但它们仍然是信任,而非证明。

RPOW是一个可以工作的系统——Finney确实实现了它并让它上线运行。在那个年代,这已经是了不起的成就。在此之前,所有的去中心化数字货币方案都停留在纸面上——b-money是一篇短文,Bit Gold是一个构想。Finney是第一个把工作量证明货币从理论变成可运行代码的人。

但它本质上是一个“可信服务器模式的工作量证明货币“。它证明了工作量证明可以作为货币的基础,但没有回答那个终极问题:如何在不依赖任何服务器的情况下防止双花?

一条未完成的弧线

让我们退后一步,回顾这二十年探索画出的轨迹。

1982-1998年,Chaum的盲签名思想与DigiCash/eCash实践。 贡献:盲签名实现了匿名数字支付。瓶颈:依赖银行作为可信第三方来验证交易、防止双花。

1997年,Back的Hashcash。 贡献:工作量证明——通过消耗计算资源来产生可独立验证的证明。瓶颈:不是货币系统,只是一个反垃圾邮件工具。

1998年,Dai的b-money。 贡献:第一次完整描述了去中心化数字货币的概念框架。瓶颈:没有可行的共识机制来解决参与者之间的分歧。

1998年,Szabo的Bit Gold。 贡献:将工作量证明、时间戳链和分布式产权登记结合在一起,最接近比特币的前身。瓶颈:基于网络地址投票的共识机制无法抵御女巫攻击,未能实现去中心化共识收敛。

2004年,Finney的RPOW。 贡献:第一个实际运行的、以工作量证明为基础的货币原型。瓶颈:依赖可信硬件和单一服务器来防止双花。

你看到了这条弧线吗?

Chaum证明了密码学可以保护数字支付的隐私——但他的系统需要银行。Back证明了计算成本可以被密码学化——但他没有做货币。Dai画出了去中心化货币的蓝图——但他找不到共识机制。Szabo几乎拼完了整张拼图——但最关键的一块缺失了。Finney让工作量证明真正作为货币运行起来——但他退回到了可信服务器。

每一步都比前一步更近。每一步都在同一个地方卡住。

那个地方就是:可信第三方。

不管是银行、服务者群体、网络地址投票、还是可信硬件——每一个方案在面对“如何在不信任任何人的情况下防止双花“这个核心问题时,最终都不得不在某个地方引入一个需要被信任的环节。有些方案把这个“信任“藏得很深(比如RPOW的可信硬件),有些方案几乎把它消除了(比如Bit Gold的分布式架构),但没有一个方案真正做到了无需依赖中心化可信第三方。

白皮书摘要中的那句话,是对这二十年探索最精确的总结:

“Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending.”

“数字签名提供了部分解决方案,但如果仍需一个可信的第三方来防止双重支付,那么其主要优势就丧失了。”

数字签名、盲签名、工作量证明、分布式账本——所有这些密码学工具都提供了“部分解决方案“。但只要防止双花这个最核心的功能仍然依赖于某个可信方,整个系统的安全上限就被这个可信方的可靠程度所限制。DigiCash的银行可以破产,RPOW的服务器可以被关停,Bit Gold的投票可以被女巫攻击。每一种形式的“信任“都是一种脆弱性。任何需要信任的环节,都是系统安全链条中最薄弱的一环——不是因为被信任的对象一定会作恶,而是因为它有能力作恶。从“不会作恶“(won’t be evil)到“不能作恶“(can’t be evil),这个转变是所有先驱们共同追求的目标,但没有人完成了最后一步。

缺失的那一块

这些先驱们拥有的拼图碎片,加在一起几乎已经是完整的。

密码学签名——解决了身份和授权的问题(你证明这笔交易确实是你发起的)。盲签名——解决了隐私问题(付款行为无法被追踪)。工作量证明——解决了“代价必须是真实的“问题(你不可能凭空声称自己做了计算)。分布式账本——解决了单点故障问题(数据不存储在任何一个地方)。时间戳链——解决了排序问题的一半(每个事件都被记录了时间)。

缺失的那一块是什么?

是将工作量证明与交易排序直接绑定的机制。

在之前的所有方案中,工作量证明和交易排序是两件分开的事。在Hashcash中,工作量证明用于发邮件,和货币无关。在b-money中,工作量证明用于创造货币,但共识问题没有解决。在Bit Gold中,工作量证明用于创造货币,共识通过独立的投票机制来实现。在RPOW中,工作量证明用于创造和转移货币,但双花检测交给了可信服务器。

没有人想到——或者说没有人找到工程方法来实现——这样一个设计:让矿工通过消耗能量来竞争交易的排序权,让工作量证明本身成为共识机制。

这正是中本聪的突破。

中本聪没有发明新的密码学原语。他没有发明数字签名(那是几十年前的密码学成就),没有发明工作量证明(那是Back的Hashcash),没有发明去中心化货币的概念(那是Dai的b-money和Szabo的Bit Gold)。他做的事情,是把所有这些碎片以一种前所未有的方式组合在一起,并加入了一个关键的新元素:经济激励。

在比特币中,工作量证明不仅仅是创造货币的方式,更是——甚至首先是——确定交易顺序的方式。矿工消耗电力来竞争“谁来写下一页账本“的权利。赢得竞争的矿工获得区块奖励——新铸造的比特币。这个奖励是经济激励,它让矿工有理由持续参与竞争。而竞争的过程本身,就是在为全网的交易确定顺序。

更精妙的是,这个机制让作弊的代价变成了外部的、物理的、不可逆的。矿工消耗的电力付给了电网,这些支出发生在比特币系统之外,无论链上发生什么,花掉的电不会回来。没有任何多数派可以投票取消已经散逸的热量。这不是用系统内部的代币来惩罚作弊者——那种惩罚可以被同一群人修改规则来取消——而是用物理定律来惩罚作弊者。热力学第二定律不接受上诉。

这就是为什么前面所有方案都在同一个地方失败——它们要么用中心化的机构来强制规则(eCash的银行、RPOW的服务器),要么用系统内部的机制来维持共识(Bit Gold的网络地址投票、b-money第二方案的保证金),但没有一个把作弊的代价锚定在系统外部不可逆的物理世界里。

被遗忘的教训

二十年的探索画出了一条清晰的弧线:每一个方案都在朝着“消除可信第三方“的方向前进,每一个方案都因为在某个环节保留了可信第三方而受限。比特币是这条弧线的终点——它第一次把对特定主体的信任降到最低,将安全性转化为对公开规则、密码学和算力多数的依赖,从而在无需中心化中介的条件下解决了双花问题。

这不是一个天才灵光一闪的结果。这是二十年积累的必然产物。没有Chaum的盲签名,就没有密码学隐私的基础。没有Back的Hashcash,就没有工作量证明的工具。没有Dai的b-money,就没有去中心化货币的概念框架。没有Szabo的Bit Gold,就没有将工作量证明与时间戳链结合的思路。没有Finney的RPOW,就没有工作量证明货币的实际验证。中本聪站在这些巨人的肩膀上,看到了他们每个人因为位置所限而看不到的全景。

这段历史之所以重要,不仅因为它记录了通向比特币的技术演进,更因为今天很多方案又回到了这些老问题上。历史的讽刺在于,比特币出现之后,行业的发展方向反而开始偏离这条弧线。

人们开始说“区块链“而不是“比特币“。“区块链“被从比特币中抽离出来,变成了一个独立的概念——好像那个链式数据结构本身就是革命性的,好像把数据放进区块再连成链就自动获得了某种魔力。人们开始在“区块链“上构建各种各样的系统,但很多人从未真正理解比特币解决了什么问题——也从未理解为什么那个解决方案需要消耗能量。

“PoW太浪费了”,他们说。我们可以用更“环保“的方式来达成共识。

于是PoS(权益证明)出现了。验证者质押系统内部的代币,作弊时没收质押物。对于双签等客观可证明的违规行为,PoS协议可以自动执行slashing惩罚。但PoS更核心的争议在于弱主观性(weak subjectivity)和长程攻击——新节点或长期离线的节点如何确定哪条链才是规范链?这个问题最终需要某种形式的社会共识或检查点来解决。

这个问题,Dai在1998年的b-money第二方案中就已经遇到了。那个方案用保证金来约束服务者的行为——而保证金是用系统内部的货币来质押的。Szabo在1998年的Bit Gold中也遇到了类似的问题——基于网络地址的投票机制无法抵御身份伪造。Finney在2004年选择了可信硬件作为折中方案——本质上是用硬件信任替代了人的信任。

这些都是二十年前的教训。从比特币PoW的设计哲学看,更稳健的做法是把攻击成本锚定到系统外部且已沉没的物理成本;相比之下,依赖内部质押的机制在长程攻击与社会恢复上面临不同的权衡。

这些教训都被记录在案——Chaum的论文、Dai的提案、Szabo的文章、Finney的代码——都可以在网上找到。但行业选择性地遗忘了它们。

为什么?也许是因为比特币的成功来得太快,价格的上涨掩盖了技术的意义。人们看到比特币从一文不值涨到几万美元一枚,他们想要复制这个“成功“——但他们复制的是代币和涨幅,而不是那个花了二十年才被找到的、解决可信第三方问题的工程方案。

结果就是我们在上一章看到的景象:数以千计的“区块链项目“,其中大多数在技术层面退回到了比特币之前的状态——要么依赖一组已知的验证者来维持共识(类似于b-money的第二方案),要么依赖内部代币质押来保障安全(类似于Bit Gold未能解决的循环依赖),要么在极端情况下需要基金会在社交媒体上协调恢复(本质上就是一个可信第三方)。

二十年的探索解决了一个问题。然后行业用了十余年时间,把那个问题重新制造了出来。

这不是技术进步的必然代价。这是对历史的遗忘。

而遗忘的代价,就是我们在第一章看到的那个碎片化的、混乱的、让用户在转账前需要先选择网络拓扑的世界。

如果Chaum、Back、Dai、Szabo和Finney能在某个平行宇宙中坐到一起,回顾他们各自的成果,他们大概会惊讶地发现:答案就在他们的工作之间——在盲签名和工作量证明的交叉点,在去中心化账本和经济激励的交汇处。但在这个宇宙中,最先看到完整图景的人,署名中本聪。

下一章,我们将回到2008年,回到中本聪的白皮书本身,逐字逐句地看清楚他到底说了什么——以及,更重要的,他没说什么。