区块链技术1.0是PoW共识机制、加密算法、数字签名的结合,代表是比特币系统;2.0是在1.0基础上增加智能合约,代表为以太坊系统,共识机制从PoW转向PoS;3.0是在2.0基础上更加切近商业化应用,代表为EOS系统,共识机制为DPOS。
DPOS(Delegated Proof of Stake):委托股权证明,由持股人投票选出N位代表(EOS=21/Bitshares=101)来进行打包交易生产区块,形成共识。很多人质疑DPOS的去中心化不够明显,尤其是与比特币系统的所有人都可参与生产区块的去中心化相差甚远。从“技术上”看比特币的确允许所有人参与挖矿,实际不超过10个矿池几乎垄断哈希算力(90%以上),普通人不加入矿池很难对结果产生影响,矿池拥有者通常需要卖出BTC来维持电力费用,比特币拥有者与生产者是两个团体(有些时候会出现利益不相关);而EOS的DPOS通过持股/代币成为利益相关者,采用“同意投票”(approval vote)机制使 拥有50%的股份也不能独立选出委托人,使得小股东也有机会通过投票来表达自己的意愿,且生产者与持有者是利益相关(如果生产者违反利益,可以被投票投出)。在去中心化和发展的互相平衡上,DPOS相比POW是一种进步。
本片接下来以EOS的DPOS系统为例,从共识过程、委托人的进入和退出机制、常见风险的应对来说明。
共识过程
由持股人选出的N位代表来生成N个区块,生成顺序随机(每生成N个区块后顺序被随机生成),每个代表在特定的时间段内生成一个区块,前后直接相关的代表会产生特殊连接,防止被攻击或前一区块的异常而直接拒绝,所有人基于最长的链达成共识。
因为每个代表在指定的时间内只能生成一个区块,如果少数代表想生成支链(假设1/3想做恶),则生成的时间间隔必定大于3秒(3秒*3=9秒,因为在2/3的时间内不该他们生成区块),导致链条长度一定没有主链长,所以支链无效,且因为不诚信可能会在下一轮投票中被投出。
代表的进出机制
同意投票/Approval Voting:不同于一人一票的投票系统,“同意投票”对于每个候选人都可投赞成或反对票(对候选人可多选),DPOS根据持股比例统计选票,但即使拥有50%投票权,也不能独自选出代表(如果剩下50%都投另一些代表的话,可能就出现势均力敌),对于小股东还有发言的机会。
很多人将投票权利设置为自动autovote,且对于不诚信的代表会投反对票,使其总选票<=0(赞成票+反对票总和为负),且这些自动投票在一个有效期内保持不变,则有作恶倾向的持股人将会利用这点来田忌赛马,使得自己的支持代表胜出。基于emski提出的该问题,BM取消反对票的功能,只能投赞成票。
退出:对于在规定时间内未产生区块、或在规定时间产生多个区块的行为,这样被列为不诚信行为,在下次投票中会被投出。
常见风险的处理
拒绝服务攻击:代表彼此之间是通过公钥地址来标识,而不是通过IP,所以DDOS可能会有些困难。
双重支付攻击:双重支付一般是由于网络连接不畅导致,在生成区块的前后顺序的代表会有直接关联,可以拒绝其他地址的数据包,从而减少双重支付的可能性。
总结
在共识过程/速度上,BTC是基于不信任的网络而达成共识,需要长时间的确认和大量资源的消耗;EOS是基于利益相关者的投票建立信任网络,从而可以TPS 100,000笔且确认时间在1.5秒以内(99%的可能性),从而接近商业环境中的性能要求。在代表进出机制上,利益相关者的投票决定了代表是在监督下行使交易打包、区块生成、费率调整提案以及规则修正提案等工作并获得收益,且“同意投票”机制一定程度上平衡小股东的权益。在常见风险处理上,基于steem和bitshares的运行验证,DPOS在去中心化上可行(甚至BM自己在bitshare是否提升交易费率的问题上也被投票置否,去中心化效应明显)。基于此论述,DPOS是有机会比POW更接近商业化应用以及鲁棒性。
参考资料:
1.emski关于Approval vote的反对票问题https://bitsharestalk.org/index.php/topic,5164.0.html
2.授权股权证明机制白皮书http://www.eos.top/?/article/29
3.DPOS共识算法-by BMhttp://me.tryblockchain.org/blockchain-dpos-bm-eos.html
4.授权证明共识 - 比特股https://bitshares.org/technology/delegated-proof-of-stake-consensus/
5.同意投票 wiki百科https://zh.wikipedia.org/wiki/%E5%90%8C%E6%84%8F%E6%8A%95%E7%A5%A8
6.Voting Theory: Approval Voting - YouTubehttps://www.youtube.com/watch?v=vv1pquvAIDI