POS共识机制的安全隐患到底在哪?
首先需要澄清一点,无论是工作量证明、权益证明还是任何别的什么证明(PoX),它们本身都是用于抵抗女巫攻击,并不等同于共识机制。形象一点来说,它们只用于决定谁拥有投票权,而最终的共识则要通过统计得票数量才能确定。
基于工作量证明的 PoW 共识最大优点就是安全性高。
这个安全性来源于两个方面:一是投票本身的边际成本比较高,因为每次成功投票都需要完成大量计算,在此过程中要消耗很多电力;二是投出的票和投票权是强绑定的,因为工作量证明所需解决的计算难题是根据要投给的区块计算得出的,对于一个区块 A 所做的工作量证明无法用于给另一个区块 B 投票。
其中第二点对于安全性尤为重要,因为它保证了通过工作量证明作出的选择是无法撤销、无法修改的,即便是想要修改自己过去投出的票也不行——除非对别的竞争选项重新做出工作量证明,而这需要再次消耗大量时间和电力等资源,作为之前的投票者本人并不比攻击者享有任何优势。
PoW 共识机制的另一个优点在于结构简单,易于分析和实现。例如比特币所用的最长链机制就很容易从博弈论的角度分析普通矿工的行为,从而对其安全性有一个比较客观的判断;另外比特币判定最长链的逻辑也是相当简单的,实现起来不易出错。
但是 PoW 的缺点也很明显:首先是能耗较高,这也是 PoW 最被人批评和诟病的一点。例如发改委就拟将虚拟货币挖矿列入淘汰类产业。尽管有人辩解说现在的挖坑产业使用的多是因为种种原因难以并入电网、不用就会被浪费掉的廉价电,并且通过 PoW 达成的共识物有所值,但是这些说法仍难扭转主流观点认为 PoW 挖矿浪费能源的态度。
第二个缺点是,由 PoW 共识控制孤块率以保障安全性的设计带来的延迟高、确认速度慢、吞吐量低的问题。实际上这个缺点可以通过其他基于 PoW 的共识协议(例如基于 DAG 的 GHOST 协议和基于树图的 Conflux 协议等)在一定程度上缓解,但是相关技术还需要经过实践和时间的考验。
最后还有一点是PoW 共识机制造成的治理难题,特别是当矿工的利益和开发者、用户的利益相冲突的时候。现有的治理方式很难在三者之间平衡,处理方式稍有不当就有可能导致社区分裂、公链硬分叉。
基于权益证明的 PoS 共识最大的优点就是几乎完美地解决了 PoW 共识的所有缺点:首先,PoS 对于能耗的需求很低;其次,PoS 的确认延迟和吞吐量的主要瓶颈是网络通信,不需要像采用最长链规则的 PoW 共识那样刻意降低出块速度和吞吐量,通过合理的设计就可以把交易确认速度和系统吞吐量都提高到比较理想的程度;最后,由于 PoS 共识(DPoS 除外)不需要专门做工作量证明的矿工,只有开发者和用户两种角色,所以社区的治理相对更为简单。
然而另一方面,PoS 共识也几乎失去了前面所说的 PoW 共识的所有优点。
在安全性方面,PoS 共识的本质要求确定投票权和行使投票权是相互分离的,因此可以用同一份投票权产生两份不同内容的投票,且两份投票单独看上去都是合法的。
这直接导致了”无利害攻击”(Nothing-at-stake attack)和”长程攻击”(Long-range attack)两种在 PoW 共识中不曾有过的攻击方式。
“无利害攻击”指的是一个投票者可以同时给分叉的两个分支投票,从而在两个分支上都获得投票收益的问题;
”长程攻击”指的是攻击者可以通过购买其他用户私钥的方式获得一段时间以前某次投票的投票权,如果对应于这份投票权的资产早已被转移,那么攻击者购买相应私钥的成本将远低于实际持有相同份额资产投票权的成本。
另外,因为 PoS 共识中总是先确定投票权后再决定如何投票,而且受限于通信量,每一轮投票只能选取一部分用户参加,所以攻击者也可以定向购买或者以 DDoS 等方式阻塞即将生效的投票权,从而在特定的轮次获得远高于其持有资产份额的投票权利,这就是所谓的贿赂攻击(Bribing attack)。