Elea Notes.

词条 · 加密与分布式 · 核心

Hashcash

1997 年为拦垃圾邮件设计的机制:发信前先算一个耗时的哈希,让群发变贵而单发几乎无感。

也称:Hashcash、hashcash、哈希现金

先看一个麻烦

垃圾邮件为什么治不住?因为发一封邮件的成本几乎是零。发一封和发一千万封,对发送方的差别只是多跑几秒程序。

任何”举报—封禁”的办法都在打地鼠:账号封了再注册一个,成本还是零。

朴素办法:收邮票钱

最直接的想法是给每封邮件收一分钱。群发一千万封要十万块,垃圾邮件立刻不划算。

但这要求一套支付系统、一个收款方、跨国结算,还得让全世界的邮件服务器都接入。这个方案在 1997 年(今天也一样)根本落不了地——它需要一个所有人都同意的中心

机制:把成本换成算力,收款方是物理定律

Adam Back 的做法是:不收钱,收计算

发信前,发送方必须找到一个数,使得”收件人地址 + 日期 + 这个数”的哈希值开头有若干个零。因为哈希不可反推(见哈希函数),只能一个个试。设定难度让这个搜索平均花几秒钟。

关键在于不对称

  • 发一封信:几秒钟,用户几乎无感。
  • 发一千万封:几秒 × 一千万,成本变得真实。
  • 验证一封信:接收方算一次哈希,微秒级。

难做、易验,而且不需要任何人收款。成本付给了物理世界(电费和时间),没有第三方参与。

回访:中本聪拿走了什么,改了什么

比特币白皮书参考文献第 6 条就是它:

[6] A. Back, "Hashcash - a denial of service counter-measure,"
    http://www.hashcash.org/papers/hashcash.pdf, 2002.

工作量证明的机制几乎是照搬的:找一个 nonce 使哈希前导零达标。

但用途被彻底换掉了。Hashcash 的成本是一次性的、扔掉的——邮件收到就完了,那几秒算力没有留下任何痕迹。中本聪让这些算力累积:每个区块的工作量叠在前一个之上,于是”谁投入的算力多”变成了一个可以被任何人事后验证的历史记录。

一句话概括这个改动:Hashcash 用算力买一次通行,比特币用算力买一段历史的可信度

边界

Hashcash 从未真正解决垃圾邮件,因为它需要所有邮件系统同时采纳(典型的协调失败)。它的历史地位来自被比特币借走的那部分。

另外它不是”第一个工作量证明”——Dwork 和 Naor 1992 年就提出过类似构想。Back 的贡献在于用哈希前导零这个极简形式把它做成了可部署的东西。

来源

  1. Hashcash - a denial of service counter-measure