本文将简要的介绍关于 PoS 协议里,大家公认最大的一朵乌云——长程攻击( long range attack )。
内容还涵盖了两种目前现行的或预想的解决办法:弱主观性( weak subjectivity )和前向安全密钥( forward-secure keys )。
最后,我们提出了一种新的分叉选择规则,使得长程攻击成本更加高昂;这种分叉选择可以结合现有的几种方案,作为预防长程攻击的额外举措。
长程攻击
在 PoW 中,使用最长链选择规则可以获得令人非常满意的属性:除非恶意攻击者控制了全网超过 50% 的算力,不然无法逆转已确认一段时间的区块。
但是在 PoS 中没有这种特性。
当区块生产者建完块且拿回质押的代币后,对他们来说,用于创建区块的密钥再也没有价值了;这时候攻击者可以尝试以远低于创建区块时质押的代币金额去购买这些密钥。
与 PoW 不同,因为 PoS 没有出块之间强制延时的机制,所以买到密钥后,攻击者能够在数分钟内造出一条长于主链的伪链,并被分叉选择规则所接受。
有两种方法能够避免上述问题:
弱主观性( Weak subjectivity )
要求全网节点周期性地检查最新的区块,并拒收那些 “重组了过分久远的记录” 的区块。
只要足够频繁地检查区块,使得在释放质押代币的时间段中,肯定包含一次以上的检查,那么节点就永远不会选择攻击者创建的最长链,因为敌手从取出保证金的验证者处购买的私钥,必定只能从 “过于久远” 处开始创建区块(因此节点会拒绝掉这些区块)。
弱主观性方法的不足之处在于,虽然已经存在于网络中的节点不会被攻击者欺骗,但是对于首次加入网络的节点来说,他们没有足够的信息来判断哪条链是先被创建的,因此新节点会倾向选择攻击者创建的较长链。
为了避免这种情况,新节点需要以某种方式在链下了解关于主链的知识,这在本质上就是要求他们选择信任网络中的某个主体。
点击关注币海启行微信公众号,了解更多。