工作量证明(Proof of Work,简称PoW)由
比特币引入,可以保证恶意节点不超过51%即可达成共识,是目前
区块链最经典、也是最久经考验的共识机制。其基本流程如下:
1)当节点进行数据传输时,传输的信息不会被各节点立即储存,而是被标记为“未确认的”存入内存池。
2)区块链系统中每隔一段时间产生一个新的区块,不同的区块链协议产生的时间不同(例如比特币区块链中是10分钟产生一个区块)。各节点在内存池将收集所有未确认的信息,打包在新的区块中,构造出候选区块。由于我们上述提到的问题,对于给定的信息集合,各节点区块中打包的信息可能不一致。
3)区块打包信息后会设置一个“密码谜题”,即在信息后添加一个随机数,然后对整个信息列表(包括随机数)使用哈希函数转换成一个哈希值。
4)各节点需要利用所得到的哈希值计算出该随机数。根据上文所提到的哈希函数的性质,逆向计算不可行,只能使用穷举法,因此,要计算出这个特殊数字需要进行海量的计算,这个过程就叫做工作量证明,可以简单理解为解“数学谜题”的过程。
5)当网络中某个节点率先找出随机数时,该节点会向全网广播,其他节点进行有效性进行验证,当51%的节点验证通过后,则区块会被自动链接到区块链的后面,无法通过验证的将重新进行计算。率先完成工作量证明的可以获得一定的奖励,既能激励全网各节点进行主动存储信息,又能避免节点存储错误信息——因为验证失败后的收益远远小于其成本。
例如在比特币区块链中,区块中包含一定量的币基,既率先找出随机数的节点通过验证后,即可获得区块中的新币奖励。由于这个过程与挖金矿有相似之处,因此使用PoW机制的
数字货币的产生过程被称形象地称为“挖矿”。
PoW的意义在于增加了各节点广播信息的成本,且该成本远大于发布虚假信息的收益,各节点就不会有做“叛徒”的动机。因为如果节点对信息有任何的修改,就会完全改变哈希值,哈希函数虽不易逆解但容易验证,当无法通过51%节点的验证时,该节点必须重做工作量证明,既会花费大量成本,又会降低率先完成的概率从而降低获得奖励的概率。其次,由于率先算出谜题的节点是随机的,所以我们无法得知下一个争得记录权的节点,各节点也无法掌控自己将获得哪个区块的记录权。
以上过程通过PoW机制解决了单个区块内信息储存的共识问题,但不能保证系统(整个区块链)的最终一致性。因为两个不同节点同时挖出区块(解出谜底)的情况也可能出现(由于网络通信问题,每个节点的区块信息可能不一致),这时区块链会出现分叉,网络各节点需要对哪条区块链上的交易能够得到确认形成共识。
整条区块链的共识遵循最长链原则,只有最长链上的交易能够得到确认,也就是包含的工作量最大的那条区块链。“分叉链”不可持续,在下一次区块竞争时,每个节点会选择在某条分叉链上进行下一次记账权的竞争,由于存在巨大的工作量证明,同一时间内两个节点同时挖出区块的概率将呈指数级下降,因此,很快就会有“最长链”出现,最长链上的交易将获得确认,同时,较短链上的交易信息也会随之释放,重新标记为“未确认”,打包在下一个区块中。
但PoW机制并非完美,它有以下三个缺点:
1)51%攻击:当攻击者掌握了全网51%的算力时,其攻击总能成功,因为他总可以让自己的链成为最长的链。因此,全网节点越多,抗攻击能力越强,安全性越好。
2)高延迟:区块出现时间的间隔不能太短,出块时间过短意味着挖矿难度降低,会增加多个节点同时算出答案的概率,导致频繁分叉。但出块慢意味着确认时间长、高延迟。
3)资源浪费:计算机计算密码谜题需要大量的算力,需要高性能的计算机设备、消耗大量电力等资源。根据dig
iconomist的评估,比特币2018年度排放的二氧化碳达34.73百万吨,相当于丹麦的
碳排放量;耗电量达73.12兆千瓦时,相当于奥地利的耗电量;产生电子废物9.8克拉,相当于卢森堡产生的电子废物。
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。