创世文档:Hashcash或Adam Back是如何设计了比特币的原动力区块的
[公告] hash cash邮资计划实施
”那天是1997年3月28日,Cypherpunks 邮件订阅名单中的两千多名订阅者在他们的收件箱中收到了标题为以上这行字的邮件。这封邮件的发送者是一位在埃克塞特大学工作的26岁的英国博士后,他是一位年轻的密码学家,为该邮件订阅写作了大量文章,他就是Adam Back博士。邮件的内容是Adam Back所形容的一个“基于部分哈希对撞的邮寄系统”的资料和初步实施,这个系统使用一个巧妙的密码学方法,为电子邮件创造了和纸质信件一样的邮戳机制。
“使用部分哈希的好处是可以任意设置计算这些哈希时需要的资金,” Back在邮件中这样写道,向读者解释他设计的系统的优点,“但同时又能迅速地被验证。”
写下这个提案的密码学家后来成为了Blockstream的首席执行官,但他的那封邮件当时并没有得到订阅名单读者的太多关注,只有一名读者写了回信,询问有关如何选择哈希算法的技术问题。但是Hashcash的基本技术原理,即工作证明,将在未来的十几年里深刻地影响数字货币的相关研究。
“通过处理或打击垃圾邮件来定价”
Back发明的Hashcash其实并不是第一个为了解决这类问题而提出的方案。
到了上世纪九十年代初,互联网的无限潜能,尤其是电子邮件的优势,开始吸引酷爱技术的极客们的注意。然而互联网的先驱们同时也开始注意到电子邮件也有自身所面临的问题和挑战。
“尤其是发送电子邮件之简单及廉价,以及向许多人发送相同信息是如此简单,这就会导致有人滥用这个系统。” IBM研究院Cynthia Dwork博士以及Moni Naor博士在他们1992发表的题为《通过处理或打击垃圾邮件来定价》的白皮书中写道。
确实如此,随着电子邮件普及开来,垃圾邮件也成为了令人头痛的问题。
互联网的早期用户们一致认为需要给这个问题找个解决方案,而Dwork和Naor的论文则提出了一个解决方案。
他们提出的方案是建立一个系统,使得邮件发送方要在每一封发出的邮件中附上一些数据,这些数据是一个数学问题的解答,每封邮件的数据都是独一无二的。更详细一点地说, Dwork和Naor提出了三个备选方案,这三个方案都基于公钥密码学和签名方案。
向一封邮件添加一个解决方案并不难,理论上只需要一台普通电脑几秒钟的处理能力,而且收件方可以很轻易地检验其有效性。尽管每封邮件只需要一点点处理能力,但如果要同时发送几千甚至几百万封邮件时所需的处理能力就非常巨大了。那么理论上讲就能够阻止广告商、骗子和黑客大量地发送垃圾邮件了,因为成本很高,没有利润可赚。
“基本原理就是要求用户计算一个具有一定难度的方程,然后才能获得需要的东西,这样人们就不会滥用了。”
Dwork和Naor解释道。
尽管Dwork和Naor并没有发明这个词,但是他们所发明的这个方案正是所谓的“工作证明”系统。用户需要证明他们的计算机确实进行了工作,进而证明他们确实使用了真实世界里的资源。
这个方案非常巧妙,甚至超越了其所处的时代,因而只在一个计算机科学家的小圈子里流传,并没有引起世人重视。
Adam Back和Cypherpunks
就在Dwork和Naor发表他们的白皮书的同一时期,一批持自由意志主义思想的隐私保护活动家也意识到了互联网背后的巨大潜力。这批活动家在其哲学思想的鼓舞下,通过订阅邮件的方式形成了一个组织,主要关注推动隐私保护的技术。和Dwork及Naor一样,这些自称“Cypherpunks(密码朋克)”的活动家们通过密码学这门当时还相对新颖的科学技术来推动隐私保护。
这些年来,Adam Back(他于1996年取得博士学位)成为了该邮件订阅名单中的一名活跃用户,每个月都贡献大量文章。和大多数Cypherpunks成员一样,密码学家Adam Back对关于隐私、言论自由和自由意志主义等话题非常感兴趣,并且参与了关于匿名回邮器、加密文档系统以及由David Chaum介绍的电子现金等话题的讨论。
但当时Back最为人知的事情大概是印刷并兜售“军需品”T恤:这些T恤上印有一份加密的文档,旨在嘲讽美国出口规定将Phil Zimmermann的PGP(优良保密协定)加密项目认定为“军需品”的决定。如果你穿着Back制作的T恤从美国处境的话,理论上讲你就成了一名“军火出口商”。
和很多人一样,Back当时并没听说过Dwork和Naor的工作证明方案。但到了九十年代中期时,他也想到了类似的方法来对付垃圾邮件,并把这些想法写进了Cypherpunks的订阅邮件中。
“使用PGP的另一个好处就是PGP加密会给垃圾邮件发送方增加成本——他每秒能够加密的邮件甚至比能够通过T3链接发送出去的垃圾邮件还少。”
Back 评论道,比如说在向回邮器添加更多隐私的情况下,这个想法和Dwork及Naor的方案有点相似。
Cypherpunks订阅邮件在大约五年内迅速地发展壮大,这原本由一小群人在他们位于旧金山湾区的办公室里捣鼓出来的在线论坛,变成了一个小规模的互联网风潮,拥有几千名订阅者,每天发送好几封电子邮件,一般人看都看不过来。
大约也就在1997年这个时候,Cypherpunks的发展达到巅峰,Back发表了他的Hashcash论文。
Hashcash
Hashcah和Dwork及Naor所提出的的打击垃圾邮件的解决方案相似,目的也一样,而Back在此基础之上还提出了其他的使用场景,如打击滥用匿名回邮器。但正如其名所示,Hashcash的工作原理并不是Dwork和Naor提出的密码学谜题,而是哈希。
哈希是一个密码学方法,将任何数据——不论是一个字母还是一整本书——转换成一串长度一定的随机字符组合。
比如说,对“This is a sentence (这是一句话)”这句话进行SHA-256哈希之后得到了这串十六进制字符组合:
上面这串字符可以“翻译”为普通的十进制数字组合:
或者也可以“翻译”为二进制数字组合:
而对“This, is a sentence(这,是一个句子)”这句话进行SHA-256哈希得到的十六进制字符组合则为:
可以看得出来,仅仅是向句子中添加了一个逗号都会导致哈希值完全改变。更重要的是,这两个句子的哈希值是完全不可预测的,哪怕已经计算出第一个句子的哈希值了,也没有办法从中计算出第二个句子的哈希值。唯一的办法只能是老老实实地算出两个句子的哈希值。
Hashcash则巧妙地应用了这个数学原理。
Hashcash将邮件的元数据(发送方地址,接收方地址,时间等)转化为各式固定的协议。此外,邮件的发送方必须向这个元数据中添加一个随机数字,即一个“nonce”。接着对包含着nonce的元数据进行哈希,得到的结果和上面列举的那串随机字符组合差不多。
重点来了:并不是每一个哈希值都是“有效的”。哈希值的二进制必须以一定数量的零开头。比如说20个零,那么邮件发送方就可以添加一个随机加和之后能使得生成的哈希值以20个零开头的nonce,但是发送方无法预先知道该nonce到底是什么。
要生成一个有效的哈希值,发送方只有一个办法:试错(暴风算法)。发送方只能不停地尝试不同的nonce,直到找到那个有效的组合,否则接收方就会把他的邮件退回。和Dwork及Naor的解决方案一样,这个方法需要计算能力资源,也就是说这是一个工作证明系统。
“如果没有20位的哈希[…]那么会有一个程序将其返回,并附上一则通知,说明所需的邮资以及到哪里去下载软件,” Back在Cypherpunks的订阅邮件中解释道,“这会使得垃圾邮件发送方一夜之间破产,因为1,000,000 x 20 = 100每百万指令年,这将完全超过他们所有的计算能力。”
值得注意的是,Back的工作证明系统比Dwork和Naor的工作证明系统更加随机。Dwork和Naor的解决方案要求发送方解一道数学题,这就意味着速度快的计算机每一次都能比速度慢的计算机要更快解出来。但在Hashcash中,速度慢的计算机仍然在一些时候有机会更快找到解。
(比如说,甲比乙跑得快,那么每次比赛甲肯定会赢。但是如果甲比乙买更多的彩票,统计学上讲,乙仍然有中奖的可能,只不过没有甲中奖那么频繁。)
数字稀缺性
Back于2002年发表了一篇白皮书,详细介绍了Hashcash,但就像Dwork和Naor的论文一样也没有引起太大的反响。Hashcash被安装到了Apache的开源SpamAssassin平台上,微软也用不兼容的“电子邮件邮戳”的方式应用了工作证明的原理。此后多年里,Back以及其他学者也提出过许多不同的解决方案,但大多数都石沉大海,应者寥寥。对于大多数潜在的应用,缺乏网络效应大概是最大的问题。
不管怎样,Dwork和Naor以及Back确实提出了新的概念。数字产品最强大的一个特点就是可以轻易复制,而工作证明则是第一个被提出来的、和虚拟资源稀缺性相关的概念,并且不需要第三方来判定其稀缺性,这个概念将电子数据和真实世界里有限的计算能力资源联系起来。
而稀缺性正是货币的属性之一。而Back在其所写的白皮书和Cypherpunks 订阅邮件中,明确地将Hashcash归类为货币,和当时世界上唯一一个数字货币相似——即Chaum创立的DigiCash公司所发行的Ecash。
“Hashcash可以作为一个替代品,直到digicash在全球开始流通起来,” Back在订阅邮件中写道,“Hashcash是免费的,你只需要让你的计算机跑一下就行了。这和言论自由的网络文化是一致的,哪怕是贫民也能和百万富翁、退休的政府官员等平起平坐。如果digicash失败了(法律禁止或者要求托管用户身份),那么Hashcash还可以作为替补队员。”
尽管名字里有“cash(现金)”两字,Hashcash自身并不能像一种成熟的货币那样行驶功能(Dwork和Naor的方案也不行)。也许最重要的是,任何“接收到的”工作证明对于接收方来说都是没有用的。和货币不同,工作证明不能拿到别的地方去再进行消费。此外,计算机的速度每年不断增快,也就能够以更低的成本产生更多的工作证明,这就导致Hashcash产生(恶性)通货膨胀。
工作证明最重要的贡献是为数字货币领域的探索提供了新的基础。此后出现的几个最著名的数字货币提案都是基于Hashcash的,主要探索如何使得工作证明能够被重复使用。(最明显的例子就是Hal Finney的可重复使用的工作证明,Reusable Proof of Work — RPOW。)
比特币
当然,工作证明最终成为了比特币的基石,在比特币白皮书仅有的几条引注中, Hashcash就是其中一条。
比特币利用Hashcash(或者说是它的一个版本)的方法和许多人设想的完全不同。和Hashcash或其他基于Hashcash的方案不同,它所提供稀缺性的方法并不是将其自身当做货币来使用。Hashcash举行一场比赛,最先产生有效的工作证明(即一个比特币区块的哈希)的矿工有权决定那些交易可以通过。至少在理论上讲,每个人都能平等地参加比赛,就像买彩票一样,即使是小矿工在统计学上也有机会时不时能够最先产生有效的工作证明。
每当挖出一个新的区块、确认一组交易后,这些交易便不可撤销了。如果黑客要进行攻击的话,他就必须投入和寻找这个区块所需的工作一样大量的工作,此外还要算上和这个区块连着的每一个区块的工作量,这在通常情况下会随着时间的推移成倍地变得困难。作弊所需要使用的真实世界的资源往往比作弊获得的好处还多,因而比特币交易的接收方可以放心地认为这些交易已经完成了。
这就是比特币如何利用Hashcash进行一石二鸟的,一方面以去中心化的方式解决了双重花费问题,另一方面又提供了一个机制让新的比特币进入流通而不需要一个中心化的发行者。
Hashcash并不是第一个被创建出来的电子现金系统,Ecash才是,并且工作证明并不能像货币一样行使它的功能。但如果没有Hashcash,也就不会有去中心化的电子现金系统了。
要查看更多工作证明的历史故事,可以前往hashcash.org,尤其要读一读hashcash.org/papers/。
原文:https://bitcoinmagazine.com/articles/genesis-files-hashcash-or-how-adam-back-designed-bitcoins-motor-block/
作者:Aaron van Wirdum