一、什么是PoW共识机制
在之前我们已经讲过共识机制是区块链网络中所有节点都要遵守的一种规则,当前主流的共识机制分为两种。一种是pow共识机制,另一种则是POS共识机制,今天我们就来介绍一下什么是pow共识机制。所谓pow机制全称是ProofofWork,也就是工作量证明。
最开始这个技术是被用来解决垃圾邮件的问题,不过后来中本聪发现这个技术能有效解决拜占庭将军问题,于是便把它引进了比特币区块链网络中,慢慢的pow机制就变成当今区块链中的主流之一,简单来说,PoW机制主要是通过竞争记账的方式来解决区块链网络中各个节点的一致性问题,它的原理是这样的,我们都知道区块链中的每个节点都能自由的参与数据处理,也就是打包区块,
为了保证网络中的各个节点能达成一致,Pow规定,当一笔交易产生后,每一个想要记账的节点都需要依靠自己的计算能力与他人竞争争夺记账的权力,竞争的方式就是每过大约十分钟的时间就会进行一轮算力竞赛参与的节点,通过算力不断寻找一个随机数Nonce,谁先找到满足一定条件的Nonce值,且通知全网获得认可,谁就能获得记账的权利。最终获得记账权的人,她所打包的区块会连接到区块链的链上同时它处理的数据也会被全网的其它节点进入各自的小账本中。
pow机制在比特币网络中,就是比特币的挖矿原理,它会给获得记账权的接点一定的比特币作为奖励,从而激励更多的人加入进来,pow机制的优势在于,它让每个节点的算例都加入进了网络的交易认证中,使得网络的去中心化性更强,节点的作恶成本更高。
理论上,除非有人能掌握全网51%以上的算力,否则整个网络的任何东西都是无法被篡改的,所以加入的人越多,全网算力就越大,也就越难被人掌握超过51%的算力,整个网络也就越安全,当然pow机制不是完美的,他为了保障网络的强去中心化,付出了很多的代价。像比如被大家诟病的浪费大量资源,性能效率较低等等,但他也确实去中心化的互联网落地成为可能。或许未来随着技术进步,共识机制能够打破去中心化,效率,安全的不可能三角,让我们拭目以待吧。
二、区块链中PoW是指什么
区块链PoW就是区块链上的一种共识机制,目前区块链上的共识机制的种类是有很多的,PoW只是其中的一种,它的意思是工作量证明机制,其它的共识机制还有POS(权益证明机制)、DPOS(股份授权证明机制)、DAG(有向无环图)、PBFT(实用拜占庭容错)等很多种。
POW的全称为ProofofWork,翻译过来就是“工作证明”或者“工作量证明”。
比特币、狗狗币和莱特币等都是基于POW模式的数字货币。就是说挖矿获得多少货币奖励,取决于挖矿贡献的有效工作,也就是说,矿机的性能越好、挖矿时间越长,所获得的货币奖励就越多。
工作量证明的重要意义在于:它迫使货币的产生,需要付出一定的工作量和成本,这就赋予了货币一定的商品属性,使得自由市场这只无形的手能够通过“价格机制”自发地调节货币供应,保证了货币具有稳定的价值,从而使得货币能够获得人们的信任。
三、PoW共识机制的原理
比特币的共识机制就是PoW共识,借鉴了HashCash的处理方法,下面就来说说比特币如何进行PoW共识的。
从区块头的结构中可以看到一个4 bytes的Nonce值,Nonce值的变动会影响整个区块头的哈希值,挖矿节点即是通过尝试不同的Nonce值(通常从0开始每次加1),寻找一个哈希值小于Difficulty Target指定的难度值。
PoW证明过程,这也就是俗称的挖矿过程,找到合适的哈希值。
这里不详细说明区块打包过程,区块通过一定的算法被生成,当然生成是需要一定的代价的。
区块头里的各个值并不是随机的,而是由固定的算法得出, Merkle根哈希值就是把交易打包变成一颗Merkle树,最后得出根的哈希值,难度值是根据算法不断调整,要维持出块速率是10分钟出一个块。
首先我们把所有交易打包生成Merkle树,计算Merkle根的哈希值,然后组装区块头,把区块头不断进行SHA256(SHA256(区块头))双重哈希操作,然后判断是否小于网络目标值,这里其实就是把它变成2进制,二进制前面有多少位是没有0的,因为有1的话,这个十进制的值肯定是很大的,就不会符合条件。如果大于这个目标值,说明前面的位数没有满足前多少位为0的条件哈希不成功,那么就改变随机数值,组成新的区块头,继续哈希。
这是就是是挖到矿了,其他节点验证的话也简单,只要做一次SHA256(SHA256(验证区块头))来判断。
比特币挖矿难度调整方式非常简单,难度目标调整即不断将256位的难度值减小,如277315号区块的难度值十六进制表示为:0x0000000000000003A30C00000000000000000000000000000000000000000000
这个数字在二进制表示下前60位均是0,如果要增加难度只需要减小这个值,随着难度值的减小,起始0的个数增多,可寻找的哈希值范围减小,挖矿难度就越大。
难度的调整是在每个完整节点中独立自动发生的。每2016个区块,所有节点都会按统一的公式自动调整难度。如果区块产生的速率比10分钟快则增加难度,比10分钟慢则降低难度。
公式可以总结为:新难度值=旧难度值×(过去2016个区块花费时长/20160分钟)
优点
缺点
1:挖矿过程为什么要计算两次哈希值?
中本聪在设计比特币的挖矿算法的时候,考虑到SHA2-256算法存在被破解的可能,虽然在理论上并未出现对SHA2-256算法的攻击。为了减弱攻击的威胁,区块头数据要对SHA2-256算法运算两次。
2:如果所有节点都从0开始尝试Nonce值,那不就永远都是算力高的节点先计算出有效的结果,算力低的节点永远没希望挖矿成功?
区块头大部分信息都是一样的,但是Merkle Root对于每个节点必然是不同的,因为每个节点都会有自己的Coinbase交易,该交易中存在节点矿工的地址,此地址对于每个独立挖矿节点都是不同的,根据哈希函数的雪崩效应可知每个独立节点的Merkle Root必定有显著的区别。
3:如何解决拜占庭问题?
通过工作量证明就增加了发送信息的成本,降低节点发送消息速率,这样就以保证在一个时间只有一个节点在进行广播,同时在广播时会附上自己的签名。工作量证明其实相当于提高了做叛徒(发布虚假区块)的成本,只有第一个完成证明的节点才能广播区块,竞争难度非常大,需要很高的算力,如果不成功其算力就白白的耗费了,整个系统也因此而更稳定。
四、什么是工作量证明机制(POW)
工作量证明机制(POW)不难理解,很多情况下我们都使用POW,只是不自知而已。在不考虑验证的情况下(无论是中心化还是非中心化的验证),我们可以认为任何具有概率性事件的累计都是工作量证明,如淘金。假设矿石含金量为p%质量,当你得到一定量黄金时,我们可以认为你一定挖掘了1/p质量的矿石。而且得到黄金数量越多,这个证明越可靠。
在一个简单的钓鱼游戏里,如果钓到鱼的概率是较小的,我们可以认为玩家持有一定数量的鱼就相当于完成了一定量的钓鱼工作,从而可以认为玩家完成了钓鱼任务。
一个人具有的一些技能如外语口语,乐器或是运动技巧,通常也是一种工作量证明。不用检查四六级证书,一个人能流利的说外语或者演奏乐器,那么TA一定在这些技能上投入了足够的工作量,而且这个工作量与技能的熟练程度是正相关的。数字货币交易平台“币汇”。
再说这四六级证书,一般认为在不能作弊的考试里采用足够多的客观题,也可以做到工作量证明的效果,因为一个人从概率上不可能连续蒙对大量的客观题。因此一般认为文凭也是有说服力的。同样的,飞行员的飞行小时数也说明问题,如果你飞了一万小时还活着,大概率就不是靠运气。
在一些其他场合我们也可以见到POW的踪影,比如电子游戏里的胜率、K/D比率,在大量的交战中一定的胜率能说明玩家的实力。同样有些游戏里的成就系统、装备体系也是POW,一般认为成就点数高的玩家在游戏里投入更多,更不容易诈骗,有时候交易点卡要求装备等级或者成就点数也是这个道理。
因此,POW要求出示一定的证明表明工作量,证明可以是直接记录也可以是以概率表示,其中对于由小概率事件累计的工作,出示结果等同于证明了工作量(因为不太可能直接得到小概率结果)
在比特币和其他类比特币的系统中,POW系统是以合乎要求的HASH作为工作结果。由于矿工要取得合法的计算结果需要一定量的计算,因此得到合法的计算结果就可以证明完成了一定量的计算。
本站所有软件信息均由用户上传发布,版权归原著所有。如有侵权/违规内容,敬请来信告知邮箱:764327034@qq.com,我们将及时撤销! 转载请注明出处:https://www.ssyg068.com/biquanzx/4827.html
发表回复
评论列表(0条)