区块链/等级 I · 货币/1.2 密码朋克之路/课程 4
Hashcash:比特币之前的工作量证明(PoW)
以计算成本为封印:从垃圾邮件到数字稀缺性
材料在线 SHA-256 哈希生成器用于记录计数器数值及十六进制输出结果的电子表格比特币白皮书,第4节
好奇
- 是什么让一枚戳记生成成本高昂,验证却几乎免费?
- 为什么一个只需几微秒即可验证的哈希谜题,求解却需要数小时?
- 一个用于对抗垃圾邮件的工具,是如何成为一种货币的引擎的?
探索
- 1992年,辛西娅·德沃克和莫尼·纳奥尔提出了“通过计算来定价”(Pricing via Processing),用以对抗垃圾邮件。他们的洞见是:计算可以充当收费站——强制发件人解开一道密码学谜题,会使群发邮件在经济上不可行,而偶尔发信的用户则不受影响。这一想法在之后的五年里基本停留在纸面上。
- 1997年3月,亚当·巴克提出了Hashcash,当时他并不知道德沃克和纳奥尔的论文。该机制要求发件人找到一个nonce(一个可变字符串),使得邮件头与该nonce组合后的SHA-1哈希值以特定数量的零比特开头。这是一种部分碰撞搜索:找到解的难度比验证高出指数级。每个有效的解都充当一枚“戳记”,证明发件人确实付出了真实的计算成本。
- Hashcash的威力在于不对称性。生成一枚有效的戳记可能需要数千乃至数百万次哈希尝试,耗费时间和电力;而验证它只需一次哈希计算,耗时以微秒计。这种单向函数在通常可以免费复制的媒介中创造了稀缺性。发送一百万封邮件的垃圾邮件发送者必须付出一百万倍的工作量,而接收方验证每封邮件的开销几乎可以忽略不计。
- Hashcash并不是货币,因为每枚戳记都绑定了特定的接收者和时间戳,因此不可转让,且只能使用一次。随着硬件进步,它的价值也会被侵蚀,因为更便宜的计算降低了生成新戳记的成本。它解决了垃圾邮件问题,却未能具备持久的价值储藏属性。“工作量证明”这一术语本身直到1999年才由马库斯·雅各布松和阿里·尤尔斯提出,用以形式化这种计算承诺。
- 在2008年10月发布的比特币白皮书第4节中,中本聪直接引用了亚当·巴克的Hashcash,并将其改造用于分布式时间戳。Hashcash使用固定难度的SHA-1,而比特币使用双重SHA-256,并以一个可调整的目标值为准,该目标值每2016个区块(约两周)重新调整一次。这样无论全网算力如何增长,出块间隔都能稳定在约10分钟,从而稳定发行节奏,并通过累积的计算成本保障账本安全。
- 体验这种不对称性:打开任意一个在线SHA-256工具,对字符串“hello”进行哈希。然后在后面附加一个计数器(0、1、2……),直到十六进制输出以“0”开头,再到以“00”开头。注意尝试次数是如何呈指数级增长的。这种暴力搜索正是挖矿的写照。比特币的难度调整确保随着更多矿工加入、硬件不断进步,目标会随之收紧,使出块速度保持恒定,维持协议的经济节奏。
关键事实
- 1992年,德沃克和纳奥尔提出了“通过计算来定价”,以提高发送电子邮件的成本。
- 1997年3月,亚当·巴克利用SHA-1的部分碰撞现象提出了Hashcash算法。
- Hashcash的验证只需一次哈希计算;而生成则需要约2^k次尝试,其中k为所需的零比特数。
- “工作量证明”这一术语是由雅各布松和尤尔斯在1999年提出的。
- 比特币使用双SHA-256算法,每2016个区块就会调整一次难度目标。
- 与比特币单位不同,Hashcash戳记不可转让,并绑定特定的接收者。
练习 九、六、三、一
9收集列出9个来自密码学的计算难题或基于哈希的承诺机制。说明它们的最初用途(垃圾信息过滤、签名、挖矿等)以及验证成本。
6归类按照设计目的是安全性、稀缺性还是两者兼有,以及是否可转让或仅限一次性使用,将这9项分为6类。
3提炼将这6类归纳为3个特性,用以区分工作量证明代币与普通的数字签名。
1凝结用一句话说明,在复制本来免费的环境中,计算成本为何能创造稀缺性。
事实核查
日期、数字及数据均依据下方列出的已发表资料进行核实。