1. POS
出块不再由算力说了算,由节点持有的stake说了算,解决了POW算力资源被大量无用消耗,但由于无条件信任代表,节点作恶非常容易 , 比如nothing at stake攻击
2. 原理
step1. 全网持有代币的人可以通过投票系统选举出一定数量的节点作为区块生产者(根据其持有的EOS的数量1:1获得选票)
投票选出21个区块生产者
- 区块产生是以21个区块为一个周期。
- 在每个出块周期开始时,21个区块生产者会被投票选出。
- 前20名出块者首选自动选出,第21个出块者按所得投票数目对应概率选出。
step2. 被选举的节点相互协作,按照一定的顺序,轮流进行记账。 所选择的生产者会根据从块时间导出的伪随机数进行混合。以便保证出块者之间的连接尽量平衡。
step3. 记账 21个区块生产者,不仅记账,还需要提供EOS全链所需要的计算和网络资源(包括CPU、内存、存储容量等等)。
2.1 最长链原则
在正常情况下,DPOS块链不会经历任何叉,因为块生产者合作生产区块而不是竞争。
2.2 优势 : 解决了POW耗电
- 节点由竞争改为协作,并且只有21个节点,更加容易迅速的达成共识,有利于提升主链的性能(TPS)。
- 不会产生硬分叉,因为节点也会遵循最长链原则,并且每个节点不能同时参与两条链。所以,当产生分叉之后,最多过一半见证人节点总数的高度之后(在EOS里是11个区块高度),就只会保留一条链了。每次系统大升级也不会导致硬分叉,只需要让所有见证人节点同时升级即可。
- 安全性更强,要控制超过2/3的节点才能够将错误的区块定为不可逆状态。
- 确认速度非常快
2.3 问题
-
弱中心化 -
随着这些见证人节点存在的时间的推移,由于参与记账的奖励,会使得中心化程度越来越高。这对整个社群可能是潜在的风险。(根据以往基于DPOS模式的项目,例如BitShares和Steemit来看,确实最终的中心化程度非常高,有一段时间绝大部分的见证人实际上是BM自己或受BM控制的节点) -
DPoS挖矿需要抵押代币来完成挖矿,这种“矿机”就是网络不可分割的一部分。如果挖矿节点被攻击,比如被恶意控制,那全网能充当“矿机”的币也会被恶意控制,如果要恢复,只能硬分叉换一条链 (PoW 挖矿的矿机本身是和网络完全分离的,也就是说矿机可以不算是网络的一部分,矿机提供的算力才是网络的一部分,而若矿机全部毁了,那么只要能另行找到提供算力的东西就可以)
2.4 EOS.IO优化
预计每3秒生产一个区块,任何时刻,只有一个生产者被授权产生区块。如果在某个时间内没有成功出块,会发生跳块,下一个记账节点仍会跟上继续记账。
|