POA全称是proof of activity。他不是一种独立的共识算法,而是POW和POS混合的算法,目前有唯链,欧链等采用了POA共识机制。
POA的算法大致流程是这样的,每个活跃节点不断的进行哈希计算,寻找哈希值小于特定值的区块头,区块头中包括前区块哈希值,本地节点的地址,区块序号以及nonce值。当节点找到满足条件的区块头后,就会向全网广播这个区块头,所有的活跃节点收到广播进行验证。若验证通过,则以广播中的区块头作为数据源,导出N个随机的股权所有者,所有的活跃节点判断自己是否是哪个幸运的股权人。如果自己是前面N-1个幸运股权人中的一个,也一度用私钥对上述的区块头进行签名。并且将这个签名在全网广播。如果自己是第N个幸运股权持有者,则用这个区块头来构建一个新的区块,区块中包含了自己选出的尽可能多的交易,前N-1个幸运股权人的签名还有自己对完整区块链的哈希值的签名。然后将这个签名后的完整节点在全网广播。所有的活跃节点在收到完整节点之后进行验证。验证通过则认为该节点是一个合法的新区块。将其加入区块链当中去。
倘若这个区块属于最长链,则以他为前区块,转回到最初的步骤,否则就做丢弃处理。不难发现,POA算法要求N个幸运者全部在线,任意一个幸运股权人不在线都将导致该区块丢弃。
这也是活跃证明的由来,POA算法会周期性的统计被丢弃的区块数量。并且按照这个来调整N的数值。如果丢弃的区块数量比较多,那么就减少N,否则就增大N.
POA算法的区块丢失是一种算力损失。POA算法中。区块中的交易费由区块的发布者与n个幸运股权人共享。
POA算法最重要的是它可以防止非厉害攻击者。所谓的非厉害攻击是指具有强大的算法,但是仅仅持有少量的股权的攻击者。POA算法中POS部分使得非厉害者得到构建区块机会是非常少的。应该我们无法有效的进行攻击。
POA算法中,幸运股权人依靠资本获利,这个想当持有股篇而获得股息,这种机制会估计持股人长期持续这个股权有利于数字资产的保值以及减少波动。
POAstay大众的pow部分,通过哈希算法难度控制了新区块头生成的速度。起到稳定网络,避免分叉的作用。
然而上述优点的获得也是有代价的,pow部分带来的电力的损耗。而pos部分导致新区块头以及比较大的概率丢失,形成了算力的浪费。
网友评论