区块链---PoW 共识机制的原理与认识

PoW 共识机制原理

  • PoW,全称为 Proof-of-Work,也就是工作量证明。其技术原理是散列函数,在进行散列值运算时,散列函数对于任意一个输入的值 n,都会得到一个相应的 h(n)结果,但是当 n 发生一个小小的变动时,就会引起雪崩效应,也就是 h(n)的变化会十分巨大,所以几乎无法进行反推。因此如果要算出一个给定的 h(n)所对应的 n 时,则用户只能进行大量的穷举运算,这就是工作量证明。
  • 另外,工作量证明还解决了在集体进行投票表决时分配份额的机制问题。PoW 的本质是一个 CPU 一票,采用的是公有链证明,也就是最长的链,这是因为最长的链包含了最大的工作量,基于大多数的 CPU 为诚实的节点所控制的假设,诚实的链增长速度会是最快的。而上面的机制也有效地防止了“巫女攻击”的黑客攻击。工作量证明的难度采用移动平均目标的方法来确定,即令难度达到使得运算的时间趋于一个恒定值。也就是难度与解决的速度成反比。

PoW 优点

  1. 有效可靠:因为散列函数具有免碰撞、隐匿性以及不存在比穷举更好地方法来使得散列值落在特定的范围。利用时间戳、非对称加密、散列函数以及共识机制解决了拜占庭将军的问题。
  2. 实现了去中心化:POW 的共识机制解决了去中心化结构中各个节点间数据不一致的问题。同时这一机制保证了在这个系统中每一个节点的公平性,即每一个节点都有可能得到记账权,并且记账权不会一直停留,而是通过算力竞争之后随机获得,实现某种意义上的公平以及去中心化,投入的精力越大获得记账权的概率越大。
  3. 安全性较高:由于要获得大多数节点的认可,则攻击者必须投入超过总体一半的运算量,这使得攻击者的难度变得巨大。

PoW 缺点

  1. 浪费能源:因为 PoW 是依赖散列运算从而得到记账权的。因此投入其资源消耗比其他的共识机制往往要高,性能效率低下。
  2. 自私挖矿:在挖矿之外,存在另外一种收益更大的算法,同时这个算法不利于整个网络的利益,这证明了 PoW 不是激励相容的。自私矿池挖出新块之后,暂时不发布这个区块,而是继续挖下一个区块,当发现网络上其他的别人也挖出新区块时再发布这个区块,这样可以获得更高的收益,因为在下一个区块发布到别人公布自己挖过的区块之间的这一段时间自己已经在挖第二个区块了,这意味着在同等算力之下省掉了一部分时间,某种意义上也就是算力得到了提高,而这就能够使得自己获得的奖励越多,也更有利于吸引其他矿工加入自私矿池。
  3. 中心化现象日趋严重:后期开发出了针对抗 ASIC 的算法,有技术以及富有者,能够获得开发出更精良的设备来进行挖矿,而这在某种意义上相当于垄断算力,这与区块链的去中心化背道而驰了。同时因为自私矿池的存在,使得区块链的中心化现象越来越严重。

解决方法

  1. PoW 十分浪费能源,一部分原因是其计算的散列函数没有任何意义,所以可以将其计算的对象换为国防以及科研领域中的难题,如此则能源的利用有了其价值。
  2. 对于自私挖矿的的问题,可以在发生分叉的时候,可做出的选择有如下两种:
    • 重新产生新的难度较低的块(虚拟块)单独由这些导致分叉的矿工进行运算,最先算出来的则获得作为主链的后续块的权利,另一个矿池则被认定无效。
    • 根据导致分叉的各方所持有的币的数目(类似于 PoS 的机制)计算出各方的权益值或者其他的可以考虑的相关因素(根据加权平均),另外类似退火算法中一样定义一个允许的处于 0-1 之间的数值 a,代表着接受权益值较小的为主链的概率(可以根据经验来确定,也可以在挖矿的过程中随着节点的算力变化而根据某种规则进行运算)。然后产生一个随机值,若小于 a,这选择较小权益值的作为主链的后续块,相反,则选择权益值较大的作为主链的后续块。
  3. 对于针对 ASIC 而产生的中心化问题,可以参照以太坊的 Ethash 算法。该算法的特点是挖矿的效率基本与 CPU 无关,而与内存大小、带宽正相关。

猜你喜欢

转载自blog.csdn.net/qq_36347365/article/details/87013251