ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

区块链的工作量证明(Proof of Work)初步解释

2020-04-03 12:38:14  阅读:476  来源: 互联网

标签:SHA256 散列值 Work 证明 工作量 哈希 矿工 区块 Proof


Proof Of Work,顾名思义,直译过来就是工作的证明,也就是证明你,某人做了一定量工作。这就是这种机制的命名来源。如果希望证明某人做了什么工作的话,那显然,最有力的就是目睹,观测他整个工作的过程,然而,这种方式显然是极为不便的而不可取的。所以,我们只需要这个人提供给我们工作的结果即可,也就是我们关注的对象是结果,而不是过程,从计算机的角度来讲,那就是——我们提供给你输入,你只需要给我们一个输出。例如,我们想知道你能够开车,那我们并不需要大费周章找一辆车让你现场开给我们看,而只需要你出示你的驾照即可。
工作量证明系统就是,让发起者进行一定量的运算之后,向接受方出示正确的运算结果作为运算工作,也就是消耗了一定的计算资源的证明。

白皮书里工作量证明其实讲了以下3点:

1.工作量证明的过程就是要解一道数学难题,这道数学难题就是要解一个用SHA256算法运算过的前面带1个或N个0的哈希值。如果矿工能算出这个未被SHA256算法运算过的随机散列值,并向全网广播,就拥有区块的记帐权,从而能获得比特币奖励。其它节点如何知道该矿工找到了这个随机散列值呢?当然是将矿工广播的随机散列值用SHA256算法计算,算出的结果与先前公布的哈希值进行比对,如果与先前哈希值一样,开头也有那么多个0,则验证该矿工计算正确。其它节点于是一致承认该矿工拥记帐权,于是跟随该矿工一起记帐。这里面矿工广播的随机散列值就是矿工向全网提供的工作量证明。而其它节点用SHA256算法计算出结果并比对的过程就是检验矿工是做了一定的工作量。奖励不是白给的,要付出大量劳动的。举个例子:A要向B发一封邮件,但要防止被B误认为是垃圾邮件。系统会根据发件人的发件时间和第几次发邮件出一道难题。这道难题初始信息包括:版本号(可以说是发第几次邮件)+发件日期时间+发件人邮件地址+一串随机散列数值,再将以上信息打包用SHA256算法计算出开头带数个0的hash值。并将这个哈希值公布,从而A和B都知道这个哈希值。那么A现在就要计算这个hash值hash前初始信息中包含有的随机散列值。A如果找到该散列值,就能将散列值与邮件一同发送给B,B只需用SHA256算法将该散列值再HASH计算一遍,得出同样带数个0的哈希值,然后就承认并接收A发的邮件不是垃圾邮件。因为A费了九牛二虎之力计算该难题的目的不仅仅是为了发垃圾邮件。这就是反垃圾邮件算法的形象过程。

2.以上前面数个0的个数可以根据全网挖矿算力灵活进行调整,算力高的时候,减少0的个数,算力低的时侯,增加0的个数,以保证出块数为每10分钟一个,每增加一个0,计算难度将呈指数级增长。

3.解决了一个集体节点中,哪些算是大多数的问题。因为在表决时要少数服从多数嘛!比特币釆用的是一CPU一票,而不是一IP地址一票。IP地址数量容易被操纵,而CPU分布在每个人的电脑里面,所以更加分散,不容易造成中心化,但现在出现了由专业化矿机组成的大型矿池,造成算力越来越中心化,这是中本葱始料未及的。由诚实节点组成的大多数被表现为最长的链。

攻击者想要攻击篡改一个数据除了要与时间戳一致,并完成该区块的工作量证明外,还要完成该区块之后所有区块的工作量证明,这工作量大得惊人,除非攻击者能控制全网51%的算力,否则只能是做梦而矣。

 

标签:SHA256,散列值,Work,证明,工作量,哈希,矿工,区块,Proof
来源: https://blog.csdn.net/qq_32146369/article/details/105266860

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有