哈希现金(Hashcash)是什么:比特币工作量证明的邮件反垃圾前身 图 1
哈希现金(Hashcash)是什么:比特币工作量证明的邮件反垃圾前身 · 图 1

很多人第一次听说“工作量证明”,是从比特币挖矿开始的:一堆机器疯狂试错,谁能碰出一个足够小的区块哈希谁就出块。但比特币白皮书在讲这件事时,特意写了一句“类似 Adam Back 的 Hashcash”——也就是说,这套“用计算换发言权”的思路,比比特币早了十来年。哈希现金最初要对付的甚至不是钱,而是垃圾邮件。

它最初要解决的问题

1997 年 3 月,密码朋克邮件列表上出现了一封题为“hash cash postage implementation”的通告,作者 Adam Back 描述了一个基于部分哈希碰撞的“邮资”方案。背景很朴素:发一封邮件几乎不花钱,所以垃圾邮件发送者的成本几乎为零。Hashcash 的想法是给每封邮件贴一枚“邮票”——发送前,你必须先找一个随机数,把它和收件人、日期等信息拼在一起算哈希,直到哈希值的前若干位是零。找这个数平均要试很多次,而收信方验证只需要算一次哈希。发送成本被人为抬高,验证成本不变,批量群发的经济账就算不过来了。同一思路也被用于匿名转发器的滥用防护:往转发网络里塞消息也要先“付费算力”。论文里还坦诚地提到,Dwork 和 Naor 在 1992 年就提出过用计算定价对抗垃圾邮件的构想,属于同一脉络的更早学术源头。

一枚“邮票”长什么样

哈希现金的令牌串里包含版本、算力位数、日期、资源字符串(通常是收件人邮箱)、随机数挑战等字段。发送方不断更换随机数重算 SHA-1 哈希,直到输出满足要求的零前缀位数;位数每加一位,平均计算量翻倍,这就是“可调节的成本旋钮”。收信方拿到令牌后做三件事:重算一次哈希确认零前缀达标、检查日期没有过期、核对该令牌没有在自己这里用过第二次——所以收信方需要维护一个短期已用令牌库,过期条目定期丢弃以防无限膨胀。注意“日期参与哈希”这个细节:它让邮票天然过期,也让提前批量囤邮票的预计算攻击失去意义,这一点和后来比特币里“每个区块重新出题”是同一个逻辑。

和比特币挖矿的相同与不同

相同点是核心原语:都是“暴力找随机数使哈希满足难度目标”,验证都只需一次哈希运算,成本对发送方指数增长、对验证方恒定。比特币白皮书引用的正是这一结构,把“对收件人承诺工作量”换成了“对全网区块历史承诺工作量”,随机数换成了区块头里的 nonce。不同点在于目的与范围:哈希现金是点对点的费用抑制机制,成本旋钮由收款方设定,不需要全局难度调整,也不需要代币激励;比特币的工作量证明是全局共识机制,难度由协议按周期自动调整,出块还伴随区块奖励和手续费。另一个常被忽略的差别:比特币用的是 SHA-256,哈希现金的邮件工具同样用 SHA-1——算法选型随时代不同,但“部分碰撞”的骨架一致。

今天还能在哪里见到它

比特币之后,哈希现金并没有退场。它长期被用作邮件系统的白名单提示:带邮票的邮件在一些反垃圾网关里可以被放行,属于温和的“软性计费”。一些注册接口、论坛发帖和 API 防洪水方案也采用类似的“算力拼图”(常被称为 computational proof-of-work captcha):与其让人类做图形题,不如让脚本多花几秒 CPU。这些场景和挖矿一样,本质都是把滥用行为的边际成本从近乎零抬到有感知的水平。

常见误区

一是把哈希现金说成“比特币的发明”,不准确:白皮书明确引用它为先驱,中本聪把它从“反垃圾工具”推广成了“分布式账本的共识层”。二是把它理解为“发邮件要交钱”,实际上交的是电费级别的算力,没有转移任何资产。三是认为防滥用靠的是保密,恰恰相反,整枚令牌公开可验证,任何人都能审计你确实用了那份计算——“公开可审计的成本”才是这套方案的精髓。

风险提示:本文只做技术与历史科普,不构成任何投资建议;涉及的具体参数(难度位数、协议字段)以相关原始论文与当期实现文档为准。