第二节 以太坊Casper—PoS
权益证明(PoS)所蕴含的概念是区块链应该由那些在其中具有经济利益的参与者进行保障。本节介绍一种新的方法——通过每一笔交易销毁的币天数(Coindays)来实现权益证明,以替代目前由工作量证明(Proof-of-Work)提供绝大部分保障的方式,权益证明与工作量证明的最大区别在于区块链网络不再需要依靠电力输出所支撑起的算力来维持全网络的共识,而基于所持有的代币数量和持有时间来争夺区块链分布式账本的记账权。
一、基础原理
权益证明是一种基于验证人(Validator)在区块链网络中的经济权属进行记账权分配的公有区块链共识算法。在类似于以太坊Casper的权益证明机制区块链当中,每一段时间会有一组验证人根据自身所持有的储蓄量(权益)被选定为记账人,并由这些被选定的记账人根据其他验证人的储蓄量投票选出下一轮的记账人。在以太坊当中,任何一个以太坊源生代币即以太币(ETH)的持有人都可通过发送一笔特殊的交易来将自身的代币进行储蓄,从而成为验证人。生成新区块的过程就会根据共识算法,由所有验证人参与确定。
PoS的共识算法分为多种,并且有许多方式来激励验证人。从算法的角度一般分为基于链的PoS和BFT(拜占庭容错)式两种。基于链的PoS中的验证人是基于伪随机数算法被选举出来的,每过一个时间区间,都会有一个验证人被选举为创建下一个区块的验证者。同PoW一样,每一个区块也同样会与前一个区块相关联,并且最终以收敛为一条统一的最长链的形式,形成唯一性共识。
BFT式的PoS则是随机向验证人分配生成新区块的权利,但在认同哪一个区块才是合法区块的问题上,BFT式的PoS是通过多轮投票来确定的。也就是每一个验证人都会在每一轮中对一个特定的区块进行投票,并且最终由在线的诚实节点永久地确认某一个区块是否应该被放到链上。区块仍旧是以链的形式先后相连的,唯一重要的不同就是对于区块合法性的共识是在一个区块生成的时候就确定了的,而不是通过区块链的长度或容量来确定某一条链的合法性。
PoS的共识机制除了相比于PoW更节约能源以外,也被认为减少了PoW因为算力集中所引起的中心化风险。由于整体的记账权权重与激励分配机制完全来自区块链内部,而不像PoW可以由物理世界的外部资源投入进行“军备竞赛”来争夺记账权,因此将变得更为公平。对于51%攻击隐患的防御,PoS通过将非法验证人的储蓄没收并降低此后的投票权重的方式来进行和威慑惩罚。做一个PoW挖矿机制中的简单类比,就好比你一旦被发现参与了51%攻击,你的矿机就会瞬间“爆炸”。
二、共识问题的解决
由于PoS对于发起51%的作恶节点的惩罚机制是基于验证人所抵押的资产所执行的,因此会出现在区块链初期,没有基础资产被抵押的验证人能够实现无风险作恶从而影响共识的形成。
不同于PoW,算力的输出每次仅能够基于单个前序区块的区块头哈希进行运算,PoS的链延长基于验证人的投票进行,因此当两个区块同时形成时,各验证人可能会出现同时对两个区块进行投票,从而导致链上总得票比率超过100%。
图2.9中所表示的是验证人在投票过程中的收益价值指标。假设左边分叉被其他验证人确认为有效区块的概率是90%,右边分叉被其他验证人确认为有效区块的概率是10%,那同时投票就能获得100%的有效回报。由于在诸如Peercoin等早期的PoS机制区块链中对同时投票并没有惩罚机制,因此假设有80%的节点对左右两侧的区块链进行了重复投票,那全网的投票比就将高达180%,超出了正常的比例。也就是说即使没有51%攻击,在所有节点都执行理性经济学决策的时候,全网也会难以达成共识。
图2.10中则为在PoW中的情况,由于算力的分配必然导致投票权的降低,因此对于分散了算力投票权的节点来说,综合收益实际上降低了。对于这种问题,主要有两种解决方案,其中一种叫作“Slasher”,即通过对同时创造分叉的节点进行惩罚。当在两个区块头上发现了相同的签名,即对该验证人的押金进行惩罚。
图2.11即表达了使用Slasher控制后的激励结构,即当验证人的签名同时出现在两个区块头上时,通过罚没定金,其收入成了-4。当然,这种解决方式由于会对验证人进行审查,因此需要提前得知验证人的身份,并且需要验证人持续在线。这种方式除了会导致网络容错性下降之外,也会产生验证人合谋作恶的隐患。另一种解决方式则是直接对“错误链”的验证人进行惩罚。
在图2.12中,若验证人投票给了A链进行延长,则会获得相应的奖励R;但若对B进行了延长(在Casper中被叫作Dunkle),由于B链事后将被大多数人(90%的人)抛弃,因此会造成验证人的损失,一般会损害R的利益。而同时投票的损失则与Slasher方案的结果相同。在这种方案当中,实际上Casper在PoS中对PoW进行了模拟,只是相较于基于算力输出的可知性,对于验证人来说在这种PoS当中被惩罚的风险会更大,因为预先并不能很好地知道自身所投票的区块被大多数人接受的概率。当然,这种做法相较于Slasher的好处在于不需要事先确认验证人身份也能维持区块链的共识持续运行。
本书评论