火星链 火星链
Ctrl+D收藏火星链
首页 > 以太坊 > 正文

ASH:Hashcash算法:从你最熟悉的“验证码”来解释区块链的意义

作者:

时间:1900/1/1 0:00:00

编者按:本文来自:橙皮书,原作者:orangefans。星球日报经授权转载。比特币并不是一种新技术,但绝对是一款创新的产品。比特币借鉴了很多现有技术。其中,POW代表的共识机制,借鉴的是Hashcash算法。Hashcash是一种很有趣的设计,从Hashcash本身的设计结构来看,我们还可以瞥见比特币很多的思想和理念。在这篇文章里,橙皮书会先稍微介绍下Hashcash的原理,然后从技术的角度来讨论下Hashcash代表了比特币之于传统互联网的意义。从验证码开始谈起在解释Hashcash是什么东西之前,我们先来聊点群众们比较熟悉的东西,一个你每天上网都会碰到的、有时还挺招人烦的——验证码。在我们进行一些安全性比较高的操作时,比如账号登陆、移动支付、购买车票,系统会通过手机短信等验证方式,确认当前操作者的真实身份。而在另一些安全性不那么高的操作时,比如在贴吧里发个帖子、查询某个数据,有时候也会出现一个验证码。这个验证码通常是一个模糊的图片,让你识别图片里的字母或者汉字,也有技术复杂一点的,可以通过鼠标横滑、鼠标单击的方式来验证。这种验证码最主要的目的,是判定你是人还是机器。虽然发帖、查询这些操作本身不具备高安全性要求,但是系统不希望这些操作被不怀好意的人利用,通过大量机器代理账号进行批量操作,发动DDoS攻击,或者爬虫等等。通过验证码,你把每次操作的成本都往上增加了1%,这对单个用户来说虽然有点不方便,但总体上还是可以忍受的,但对机器来说,想要进行批量操作,每次识别验证码都要浪费一些时间,这样每次操作叠加起来,想在短时间内批量完成就不可能了。但读到这里,你可能会跟我有同一种想法:有人会利用机器批量干坏事,但那是他们的问题,为什么我作为一个遵守规则的用户要为此支付额外的成本?为什么人们需要因为机器的原因承担验证码的操作成本呢?即使这个操作成本对用户体验的影响很小,但本质上,这还是一个系统设计的问题。再换个方式想,如果直接让机器像人一样,在每次操作前都进行验证码识别,判断它自己是合法的机器还是非法的机器,这样一来,机器产生的问题不就由机器自己解决了吗?人们完全可以省去验证码的烦恼。Hashcash的设计原理,简单点说就是这样干的为了判断进行操作的机器究竟是合法的还是非法的,最直接的做法,就是让机器自己证明自己的身份。机器要怎么证明自己呢?很简单,通过付出一定的成本,来表示自己的“可信度”。我们可以认为,如果一个机器愿意付出多少级别的成本,那么它就是“真心”想进行多少级别的操作。不怀好意的攻击者则会因为机器进行这项操作的成本与收益不合算,从而放弃利用机器进行批量操作的意图。这个想法应该是可行的。但可行还不够,这套验明机器真身的系统,它的运作效率还应该尽可能更高一些。所以,如果我们让每台机器在进行操作前都需要计算一个非常复杂的数学问题,通过算力作为机器付出的成本,算出答案的就可以证明自己,那么,系统检验这台机器提交的答案是不是正确答案,这个验证的过程应该尽可能高效。有什么数学问题是“计算的时候非常麻烦、但是验证的时候非常简单”的?因数分解算一个。如果你要因数分解一个很大的数字,你可能要花上不少时间去找到它的一组因数。但如果你想知道这组因数是不是正确的答案,把这组数字相乘一下就行了。hashhash函数的作用,跟因数分解是差不多的。hash是一种映射函数,简单来说,它把输入转换成一串特定ID输出,这个过程是不可逆的。比如,如果你用的是比特币的SHA-256哈希函数,输入“dog”这个单词,就会输出:cd6357efdd966de8c0cb2f876cc89ec74ce35f0968e11743987084bd42fb8944但如果你把这个单词稍微改成“doge”,那么哈希的结果就会变成:c4e793c81ee40370d827d0cbe748d246cffca2cbe959383edf0976d041ece9e5输入数据即使只改变一个字节,它的hash值也会大不相同。对于一个数据来说,它的hash值是唯一的,最重要的是,你没有办法从输出的这串数字里面推导破解出原始的输入值。这样一来,如果给定一台机器一串哈希值,让这台机器去找出符合某些特点的哈希值的原始输入值,你手工计算的话估计找一辈子也找不出来,机器也只能一个值一个值反复去试。如果机器不断穷举,最终碰运气试到了正确答案,那么,机器提交答案时,我想知道你这个答案是不是正确的,只要把这个答案hash一下,看输出值是不是和要求的一样就行了。也就是说,检验的过程是很简单的。Hashcash就利用了hahs函数的这些特点,让机器不断地尝试不同的数字,找出题目要求的那个值。在实际应用中,我们不需要机器找出某一个特定的哈希值,因为这是不可能的事情,我们只要求机器找出符合某些条件的哈希值就行,比如,这个条件可以是:哈希值的前二十位都是零。在比特币里,这个条件则是不断动态变化的,随着时间和矿工的增多,算力要求也越来越多,通过调整题目的难度,我们可以控制机器找到答案的速度,最终保持平均每10分钟产出一个区块的速度。HashcashHashcash的基本原理,抽象出来就是上面所说的那套做法。在比特币之前,Hashcash最广泛的应用是反垃圾邮件。我们希望,如果需要的话,每个人只要知道emial地址,就可以直接方便地给我们发邮件。但同时,我们又不希望,一旦自己的email地址暴露出去,会被坏人拿去群发垃圾邮件和广告邮件。如果能让机器在发邮件之前,都需要付出一定的算力来找到正确的哈希数字,那么,每个人依然可以自由的通过email发邮件,但那些想用机器批量发垃圾广告的人,就得付出不少代价了。你可能会问,如果一旦找到正确的哈希数字,机器不就可以一直使用这个数字来群发邮件了?为了防止这个问题,Hashcash要求哈希数字必须包含一个时间戳。时间戳就像邮戳一样,它代表了这个答案是在什么时候被计算出来的,如果超过一定的时限,这个答案将过期作废。Hashcash让机器在发邮件的时候,需要在发送邮件的数据头部里加入一个字符串“X-Hashcash”,这个字符串长这个样子:1:bits:date:resource:ext:salt:suffix“X-Hashcash”其实就是提交答案的戳记,它包括7个域:版本号。声明的比特值。如果戳记没有真正地使用声明的前导零比特进行散列,那么它就是非法的。生成戳记的日期。可以认为当前时间之后的戳记以及那些在很久以前的戳记是非法的。戳记为哪个资源而生成。可能是一个电子邮件地址,但是也可能是一个URI或者其他命名的资源。特定应用程序可能需要的扩展。任何附加的数据都可以放置在这里,但是,在到目前为止的使用中,这个域通常是空的。将该戳记与其他所有人为相同的资源在同一日期生成的戳记区别开来的随机因子。例如,两个不同的人可以合情合理地在同一天向我的同一个地址发送电子邮件。他们不应该由于我使用了doublespend数据库而无法发送成功。但是,如果他们每个人都使用一个随机因子,那么完整戳记将是不同的。后缀是算法真正起作用的部分。假定给出了前6个域,为了生成一个通过期望数目的前导零进行散列的的戳记,minter必须尝试很多连续的后缀值。我们让邮件加上了证明机器合法性的戳记,这样别人想给你发邮件,他只要像以前那样正常写邮件就行了,机器会自动在后台生成一个戳记附在邮件上,对方接收时只要检查这个戳记是不是合法的,就能决定要不要接收这封邮件了。Hashcash的意义Hashcash能让我们知道发送邮件的是一个真实的用户、还是一个群发邮件的广告营销机器。这套方法扩展开来,不止可以应用在反垃圾邮件里,同样,它也可以用在服务器的应答机制里。我们知道,你通过浏览器输入一串地址,之所以能返回一个固定的网页,得益于http通信协议的设计。http规定,浏览器发起一个请求,那么服务器就响应这个请求,返回浏览器指定的内容。这个协议本质上非常简单,它不做太多的额外的状态判断,只遵循简单的“一问一答”。因为http协议设计太简单,服务器就像一个email地址一样,一旦我们知道输入一个网址就可以返回某个资源或者对服务器进行某项操作,我们就可以利用机器批量地给一台服务器连续不断地“写信”。服务器对每个请求都做出回应,最终会消耗大量的服务器资源,从而影响正常用户的访问。这就是DDoS攻击。在现实生活中,我们花费了大量的力气来修补类似DDoS攻击这样的安全问题。我们发明了各种各样的服务器防御机制来判断请求的合法性。但这些方法,都是通过封装一些其他层面的数据和函数来保护服务器,比如反爬虫可能会通过判断短时间内连续访问的IP是不是同一个、每次请求的时间是不是小于人们肉身可以操作的速度,从而判定是不是有人借助机器进行批量操作。这些方法,相当于额外在http这层协议上再造了一个“安检通道”,http协议本身并不具备“安检”的能力。如果我们能通过Hashcash,让http请求本身自带机器自我证明的信息,这样一来,我们就可以在协议本身的设计上避免类似DDoS这样的漏洞和攻击。而这也是区块链技术相比于传统互联网技术最重要的不同点之一。通过区块链、通过Hashcash、通过比特币的共识机制,我们让机器在底层传输协议上活动时都附带上了一些额外的信息,这些额外的信息将被用来证明机器自身的合法性,从而在协议层创造出一个机器与机器之间可以彼此信任的网络环境。一旦机器与机器之间是可信的,我们就将创造出一个新的互联网。在这个新的互联网里,机器可以判断其他机器进行请求是否合法,从而使得服务器懂得如何更合理地分配资源。在这个新的互联网里,我们可以编写新的应用,也就是智能合约,然后把智能合约放心地交给机器自动执行。这套智能合约可以稳定地运作下去,而不必担心网络中有机器不执行智能合约、或者对智能合约进行篡改、出现机器叛徒。这是以太坊诞生的基础。总结:区块链的本质总而言之,从Hashcash的设计原理出发,我们拥有了另一种对区块链的见解:比特币和区块链本质上是为了解决机器与机器之间的信任问题。通过保证机器是可信的,从而保证网络的可信度;通过保证网络的可信度,从而使得加入网络的人们能在互信的环境里共同遵守规则,借助token和激励机制的设计,最终让人们的个人利益与群体共同利益贴合在一起,最终使得网络的群体都往同一个方向发展。参考:https://zhangli1.gitbooks.io/dummies-for-blockchain/content/chapter1/gong-zuo-liang-zheng-ming/hashcashsuan-fa.htmlhttps://www.ibm.com/developerworks/cn/linux/l-hashcash.htmlhttp://www.hashcash.org/https://cloud.tencent.com/developer/article/1061358https://legacy.gitbook.com/book/zhangli1/dummies-for-blockchain/detailshttps://www.jianshu.com/p/1971c474ecef

Hashed联创Alex Shin和资深投资者Sandeep Ramesh将加入Mysten Labs CEO的新基金:金色财经报道,筹款文件显示,Hashed联合创始人Alex Shin和资深对冲基金投资者Sandeep Ramesh将加入Mysten Labs首席执行官Evan Cheng的新风险基金,Shin和Ramesh都将作为普通合伙人加入。

据此前消息,Cheng正在寻求为其Web3基金筹集超过1亿美元的资金。消息人士称,Cheng将继续担任Mysten Labs的首席执行官,他目前正在与新基金的潜在普通合伙人和有限合伙人进行对话。Cheng随后在The Scoop播客上证实,他正在寻求改进Web3风险投资的运作方式。[2023/3/2 12:37:18]

Hashkey董事长肖风:未来2-3年行业将从Web3基础设施建设进入应用层大爆发阶段:1月12日消息,在MetaEra年度峰会上,Hashkey董事长肖风发言称,未来2-3年行业将从Web3基础设施、基础协议建设,进入应用层大爆发的阶段,Web3更多探索的是基于区块链基础设施之上的应用创新,这些创新有的是基于线下商业场景在数字世界做数字孪生,也有一些是数字原生,从零到一,我更期待数字原生的创新创业,无可限量。

尤其现在区块链+AIGC,区块链为AIGC创作的数字化产品的交换、交易提供了很好的产权登记、结算的系统。这些数字化技术融合在一起,真的可能创造出我们没有见到过、想象过的场景出来,而那些场景一定是Tokenization的(代币化)。[2023/1/12 11:08:12]

Filecoin联合Hedera Hashgraph为推进Web3互操作性提供20万美元资助:Filecoin和分布式账本平台Hedera Hashgraph宣布推出一项推进Web3互操作性的合作,将为针对 NFT用例进行初步实施的团队资助总共20万美元。该合作的长期愿景是结合两个网络的优势,提供全方位的分布式账本解决方案,包括分布式共识、存储和智能数据类应用。该资助项目将包含两个赛道,分别是为Hedera设计去中心化存储SDK并开发演示应用,以及真实世界中的应用场景。[2021/7/28 1:21:05]

HashQuark宣布作为节点加入Celer状态守卫者网络:4月14日消息,HashQuark今日宣布作为节点加入Celer状态守卫者网络,与Celer共同维护其二层扩容网络的可用性和安全性。

加入Celer状态守卫者网络后,HashQuark将作为专业的基础设施服务商,为其提供高标准的安全和节点服务。与此同时,HashQuark会将Celer Network引入其宣传网络和社区,深化双方的合作与发展,并基于在全球范围内的影响力与丰富的节点服务经验,推动Celer网络与生态发展。

Celer的状态守卫者网络(State Guardian Network,SGN)是一个可扩展的、去中心化的“瞭望塔”侧链,通过一个分布式状态监控网络的架构,保证二层网络在用户离线时状态的持续保存,确保了二层状态通道网络的可用性和安全性。[2021/4/14 20:20:19]

陈昊芝:NHAS-1808 NFT 标准是同时兼容复数主流公链和标准的协议:2020年8月21日晚,Cocos-BCX 发起人陈昊芝受邀做客 Gate.io 直播间--酒局币赴,分享到相对传统以太坊非同质数字资产标准,NHAS-1808 在技术层面进行了更深层次的革新,在 NFT 领域上有更全面的理解与设计。与以往协议的最大不同在于,NHAS-1808 NFT并非基于某项公链的协议,而是同时兼容复数主流公链和标准的协议。[2020/8/21]

标签:ASHHASHHCACASMETASHIBHash PotHCA价格Goat Cash

以太坊热门资讯
ONE:EOS主网投票率超过15%,已正式上线

北京时间6月15日凌晨1:50,EOS投票率超过15%,主网激活,已正式上线,据传原因是数字资产交易所BIG.ONE出手。Odaily星球日报获悉,EOSCannon为第一个出块的社区.

1900/1/1 0:00:00
NFT:星球图说 | 一张图看懂“主流比特币矿机哪家强”

文:郝方舟赵欢鑫组装中的阿瓦隆A841我不信,你没想过自己挖比特币。我刚听说比特币时,第一个问题就是“比特币是怎么来的”,之后才想到“它有啥用”和“多少钱一个”.

1900/1/1 0:00:00
ING:微软和安永会计师事务所合作推出版权区块链工具

据fortune报道,周二,微软宣布与安永会计师事务所推出版权区块链工具,旨在为使用区块链技术的作者、软件开发人员和其他创作者收取版税.

1900/1/1 0:00:00
稳定币:“稳赚不赔”的庄家不好坐,两年间80%顶级数字货币交易所已洗牌

在快速更迭的加密货币世界,2016年已恍如隔世。当时很多顶级加密货币交易所的交易量已大幅下跌,80%的顶级数字货币交易所已被替换.

1900/1/1 0:00:00
NAM:让电子病历更安全,「NAM」通过“区块链+AI”进行医疗数据管理

IBM在2017年发布了一份医疗保健与区块链的报告,称国外医疗保健组织已经采用区块链技术,甚至比金融行业更为领先。该报告显示,区块链技术将会在临床试验记录、医疗/健康监控记录领域产生巨大的价值.

1900/1/1 0:00:00
EOS:集权还是分权,21个超级节点会执行EOS紧急措施保护令吗?

EOS主网上线已经过去一周,但现在,他们非传统的治理方法再次引起了人们的关注。昨天,作为一个解决社区争议的机构,EOS核心仲裁论坛发布了一条“紧急措施保护令”,要求维护EOS分类账本的区块生产者.

1900/1/1 0:00:00