美文网首页
HashCash,工作量证明算法

HashCash,工作量证明算法

作者: umicash | 来源:发表于2020-07-05 20:00 被阅读0次

    Adam Back在DigiCash中看到,双花是中心化数据库的大问题,我们需要一种去中心化的、点对点的方法。 

     2008年8月,中本聪发了一份邮件咨询Adam Back关于哈希现金(Hashcash )的信息,Adam Back 向他推荐了戴维(Wei Dai)的B-moeny。HashCash(工作量证明)所提供的比其他任何东西都重要的是,是数字货币领域研究的新基础,通常是通过重复使用工作量证明(RPOW)来实现的。

    Adam Back是一位著名的英国计算机科学家和密码学家。他是加密朋克的重要人物之一,在1990年代,主要研究密码学和计算机科学的交叉领域。他在隐私和加密方面的早期工作是在一家名为Zero Knowledge Systems的公司工作的。他曾担任诺基亚顾问,负责将电子现金用于手机的可行性。

    互联网刚刚兴起,电子邮件作为当时互联网的第一应用,在大众普及。然而,随之而来的便是垃圾邮件的泛滥。为了防止垃圾邮件,不少人开始尝试解决这个问题。

    1992年,微软杰出的科学家Cynthia Dwork和Moni Naor在加利弗里亚的年度国际密码学会议上发表了一遍题为《通过处理或打击垃圾邮件进行定价》的论文,该论文详细的介绍了通过引入定价功能的协议来减少垃圾邮件的系统,主要想法是要求用户计算一个中等难度但不难处理的功能,以获得资源访问权限,从而防止轻率的使用,这是最早的工作量证明系统。

    五年后,1997年3月,Adam Back在密码朋克邮件列表发送了一封主题为《A partial hash collision based postage scheme》的邮件,提出了Hashcash。

    Hashcash使用一种叫做工作量证明(Proof of Work)的技术来防止垃圾邮件。简单来说,就是发送邮件前需要进行一些计算,这对于发送少量邮件来说,并不会有很大计算量,但如果你想大批量发送邮件,计算量就十分巨大。

    谈及Hash算法,我们需要区分普通Hash和密码学中的Hash,普通hash算法属于一种基本的数据结构,像C++标准库中的Hashmap,Java中的Hashmap,Python中的Dict都采用Hash算法。而密码学中的Hash算法,可以用一个公式来描述:

    摘要|散列值|指纹 = hash(消息)

    算法的输入是消息或者一堆二进制内容,最终输出的是固定长度的一个二进制串,可成为摘要,散列值,指纹等。密码学的Hash算法有五大重要特征:

    1.消息是输入,输出值相同,而且所有的输出都是等长; 

    2.不管输入多长,运算速度快; 

    3.算法具备单向性,极难通过输出值获取输入值; 

    4.输入信息一旦被修改,即使很轻微的修改,输出值也不一样; 

    5.不存在Hash碰撞,也就是很难找到两个不同的消息,他们的输出值是一样的;

    HashCash为了解决垃圾邮件泛滥的问题,提供的思路也很简单,就是在发邮件前先干点小活,这个活不能太重但至少要占用发送方的一些资源,做对了我才接收你的邮件。

    举个简单的例子来说,我们每年春节过年买火车票的时候,登陆12306网站的时候会出现很变态的验证,早先的验证让你做一道题目1+1=?,升级后看字识图的验证,这是在消耗我们的眼力。只不过Hashcash消耗的是CPU的算力,它的方式如下:

    1.在电子邮件的消息头中,增加了一个HashCash戳记(hashcash stamp)散列值; 

    2.该散列值中包含收件人地址,发送时间,SALT,特别之处在于它至少前20位必须是0才是一个合法的hashcash戳记。 

    3.为了得到合法的散列值,发送者必须经过多次尝试(改变SLAT值)才能获得。

    HashCash的设计就是希望基于数学难题,希望你做一些工作,也就是付出CPU的计算代价(算力),得到正确的结果后才能获得某些资源。

    Hash算法速度相对快速,输入数据相差一点点都会导致散列值的千差万别,Cash代表付出算力之后的资源回报(获得发送垃圾邮件或奖励比特币)。HashCash使用的是SHA-1(160位),前20个字符为0。比特币使用的是SHA-256(256位),前32个字符为0(难度增加后为前72个字符为0)。在HashCash中,算法的难度被设计为增加或减少一半,在比特币中难度设计是动态响应当前条件的。

    互联网数字产品最强大的功能之一就是易于复制,但HashCash本身并不能完全用作现金。与金钱不同,它无法在其他地方重新使用,最重要的是,随着计算机每年的增长,Hashcash会遭受(超级)膨胀(现实美元体系中的最大问题)。

    1990年代和2000年代初期的研究人员也在考虑数字对等货币。在此期间,Nick Szabo提出了Bit Gold,Back提出了他自己的B-money解决方案,两者都使用了计算能力来防止重复支出。但是,它们都不能有效地解决通货膨胀问题,尤其是在奖励用户创建新区块和新硬币的系统中。

    “与其他人不同,虽然中本聪在正式发布比特币软件之前就发给了我,但我一直没有运行,在比特币发布后不久,Hal Finney就尝试使用比特币,并在邮件列表中写了一篇关于比特币工作原理的总结文章,之后我又重新去分析比特币。当时我就觉得,比特币与Chaum在1981年提出的协议相比,它有严重的隐私限制。”

    随后比特币的发展势头越来越大,它不在是一个提议,而是一个真正去中心化的数字货币,为了解决未实现的隐私问题,在2013年提议创建Liquid等侧链, Adam Back与Greg Maxwell、Pieter Wulile(比特核心开发人员)等人于2014年创建Blockstream来开发这项技术。

    Adam Back在比特币领域拥有悠久的历史,他对中本聪产生了影响,并且他作Blockstream的领导者,在当今的比特币社区中仍然具有非常重要的影响力。

    相关文章

      网友评论

          本文标题:HashCash,工作量证明算法

          本文链接:https://www.haomeiwen.com/subject/btcbqktx.html