参考资料

Haber 与 Stornetta 1991:区块链背后的那篇时间戳论文

《How to Time-Stamp a Digital Document》导读——它为什么常被称为区块链的真正起源、当年究竟提出了什么方案,以及它与比特币之间确切的差别。

《How to Time-Stamp a Digital Document》由 Stuart Haber 与 W. Scott Stornetta 撰写,1991 年发表于《Journal of Cryptology》第 3 卷第 2 期第 99-111 页,前一年曾在 CRYPTO '90 上宣读。两位作者当时都在新泽西州莫里斯敦的 Bellcore(贝尔通信研究公司)工作。

比特币白皮书共八条参考文献,其中三条出自这两个人。"区块链发明于 1991 年而非 2008 年"的说法,依据就在这里。这个说法对了一半,本文要说清楚是哪一半。

论文可从 Springer 获取,DOI 为 10.1007/BF00196791,预印本版本在网上广泛流传。全文十四页,没有密码学背景也基本能读。

他们要解决的问题

开篇提出的问题跟钱毫无关系:当文档变成存放在易于修改的介质上的数字文件,你如何证明它是何时创建、何时最后被改动的?他们的表述最为精到——要给数据打时间戳,而不是给介质打时间戳。

纸质记录自带物理年龄证据:墨迹、纤维、磨损。数字文件什么都没有。专利纠纷、实验记录本、合同、作为证据出示的照片,全都依赖一个数字介质自身无法证明的事件顺序。作者们在动机里引用了 1990 年《纽约时报》一篇关于数字照片可被篡改的报道。

设计中有两条不可让步的要求。服务方不得看到文档本身,只能看到它的哈希,以保证机密性;并且服务方不应在通常意义上是"可信的"——即便时间戳服务商本人想帮客户倒填日期,方案也必须成立。

论证的三级台阶

论文用三个递进的设计展开,每一级修补前一级的弱点。这个结构值得跟着走一遍,因为真正有历史意义的是第三级。

第一级:朴素方案

"数字保险箱"。客户把整份文档发给时间戳服务(TSS),服务方记录收到的日期并保存一份副本,日后有争议时拿副本比对。

这方案能用,但没用。它需要巨量存储、破坏机密性、造成带宽瓶颈、还有档案丢失或损坏的风险。更糟的是,它对核心问题毫无办法:没有任何机制阻止服务方与客户串通,给一份文档开出假日期。

第二级:只对哈希签名

客户在本地对文档取哈希,只把哈希发出去。服务方附上当前时间,对这一对数据签名后返回证书。存储、隐私和带宽问题一次性解决,因为服务方既看不到文档,也几乎不需要保存什么。

信任问题原封不动。愿意撒谎的服务方可以签上任何时间。

第三级:让撒谎变得不可能

这才是贡献所在。作者给出了两个彼此独立的方案。

链接(Linking)。 时间戳请求的先后序列本身就是证据。每张证书包含该请求的序号、时间、客户编号和文档哈希,再加上从上一张证书继承来的链接信息——其中含有上一张证书链接数据的哈希值。服务方还会把序列中下一位客户的编号告诉当前客户。

结果就是一条链。服务方无法把文档往后填日期,因为证书必须包含那个时刻之前紧邻请求的比特,而它还没收到这些请求。也无法往前填,因为那意味着要重写此后签发的每一张证书,而它们都在其他客户手里,随时可以被叫来作证。质疑者可以沿着链条向前或向后走,想走多远走多远。

分布式信任。 第二个方案干脆取消了中心服务方。文档的哈希作为种子输入一个安全伪随机生成器,其输出从用户群中选出 k 个客户,由他们为这个时间戳签名。既然见证人由文档自身的哈希决定,伪造者就无法挑选替自己背书的人——他必须找到一个恰好能选中一批可被收买见证人的文档哈希。论文证明,只要 k 取值合理,即便悲观地假设人群中大多数可被收买,这仍然是不可行的计算。

它为什么被称为区块链的起源

把 1991 年的链接方案与今天的链并排放,对应关系是直接的:

Haber 与 Stornetta 1991比特币 2009
记录只以哈希提交,不存原文交易以哈希方式被承诺
每张证书包含上一张证书链接数据的哈希每个区块头包含前一区块哈希
改写一条记录就得改写其后全部改写一个区块就得重做其后全部工作量证明
广泛见证的值锚定整条链最长链,向全网广播
沿链行走完成验证一路验证到创世区块

1993 年与 Dave Bayer 合作的续作《Improving the Efficiency and Reliability of Digital Time-Stamping》补上了剩下的缺口:把请求分批,对每批构建默克尔树,再把树根串联起来。一批由默克尔根承诺、并链向上一批的记录,除了名字之外就是一个区块。Haber 本人在访谈中也这么说:他们当年没管它叫区块链,但"把记录归组成我现在称之为块的东西,构建默克尔根,再把它们链接起来",正是他们描述过的做法。

而且它真的上线了。1994 年两位作者把 Surety 从 Bellcore 分拆出来,从 1995 年起,该服务每周把一个汇总哈希——它取决于服务运行以来收到的每一个请求——以小幅分类广告的形式,登在《纽约时报》周日全国版上。这条哈希链已连续运行三十余年,因此"世界上运行时间最长的区块链"这个名头,合理的归属是 Surety 而不是比特币。最初部署时它并行使用 MD5 与 SHA-1 两个哈希函数以对冲其中之一被攻破的风险,后来迁移到了 SHA-256 与 RIPEMD-160——恰好也是比特币使用的两个函数。

它与比特币的差别

四点,而且都不小。

服务方仍然存在。 链接方案约束了时间戳服务,但没有取消它。总得有人接收请求、分配序号、签发证书。比特币里没有这个角色——任何节点都能产出下一个区块,由谁产出则由一场竞赛决定。

没有工作量证明。 1991 年方案里的顺序来自服务方的序号和客户证书之间的相互咬合;比特币的顺序来自能量消耗。这也是为什么前者需要一个可识别的客户群体,而后者不需要。

没有女巫抵抗,也没有激励。 分布式信任方案假定客户池已知、且被收买的比例有上界。在任何人都能无限造身份的开放网络里,这个假设直接崩塌——而这正是工作量证明所解决的问题。此外也没有东西支付给见证人;Surety 的解法是把它做成一门有客户的生意。

它做时间戳,不做交易。 该方案证明某份文档在某时刻已存在,却对"谁拥有什么"只字不提,也无法阻止双花——因为根本没有可花的东西。比特币的账本是一份关于所有权的陈述,那是一个严格更难的问题。

说白了:Haber 与 Stornetta 发明了数据结构,中本聪发明了在无人主持的情况下、让互不信任的陌生人共同维护这个结构的方法。单把其中任何一个叫作"区块链的发明",都是对历史的压缩。

两位作者自己怎么说

两人都从未声称发明了比特币,在功劳划分上的表述也一直一致。他们的方案假定存在一个可信的公示载体来承载那个被广泛见证的值——一份报纸,以及后来报纸的全球档案。比特币的洞见在于:用一群被激励去承担这两种角色的矿工,同时替换掉时间戳服务和公示载体,并用累积工作量的多少来化解分歧。Stornetta 在多次演讲中把这描述为他们自己的工作始终缺失的那块拼图。

有一段时间,日期上的巧合催生了"他们之一就是中本聪"的猜测。没有任何证据,两人也都已否认。

论文的引用格式

标准引用,与比特币白皮书第 [3] 条一致:

S. Haber, W.S. Stornetta, "How to time-stamp a digital document,"
Journal of Cryptology, vol. 3, no. 2, pp. 99-111, 1991.
DOI: 10.1007/BF00196791

会议版收录于《Advances in Cryptology — CRYPTO '90》,Lecture Notes in Computer Science 第 537 卷。有资料把这项工作标为 1990 年,指的就是会议版。

相关阅读