上一篇对区块链的基本工作流程进行了小结,其中执行共识算法的环节中以PoW机制为例进行了说明,PoW为最初的区块链比特币采用的共识机制,该机制要求挖矿取得新区块的记账权,而挖矿会消耗电力资源和计算资源,当区块链上的节点规模增大以后,这样消耗的电力资源和计算资源非常巨大,这是其最大的缺点。于是后续的区块链对共识算法做了各种各样的改进。其中PoS为最重要的,其他的DPoS,PoW+PoS都是对PoS的改进或者将PoS与PoW结合。
1.PoS
在PoW当中,是要找到一个随机数nonce,使得公式成立:
Hash (block_header ) < Target
block_header = X0+content+X
从公式中我们可以看到,PoW 下所有矿工的目标值是一样的,只要计算结果哈希小于目标值即可,简化来看就是前导 0 的个数。
而在 PoS 系统中,这个公式变更为:
Hash (block_header) < Target * CoinAge
我们可以看出多引入了一个变量叫做 CoinAge,也就是币龄或者币天。
这个变量为会造成每个矿工看到的目标值不一样,如果你的币龄越大,也就意味着你的获得答案越容易。这里的 Target 与 PoW 一致,与全网难度成反比,用来控制出块速度的。
对于币天越大的节点来说,其目标值越大,因而计算出满足条件的随机数的概率就越大。这样就会导致币天越大的节点约有机会取得区块的记账权。
PoW和PoS各自有各自的优缺点
DPoS是PoS的改进算法,其要解决的是PoS中如何及时高效的达成共识。其采用的方式是从所有节点中选择部分节点作为代表来竞争记账权,而不是在所有节点中竞争记账权,这样可以用更短的时间来达成共识,提高交易的速度。
PoS+PoW混合的共识机制还有待补充。
参考资料:
https://blog.csdn.net/yjjnls/article/details/81380786