您现在的位置是:首页 > 区块链 > 区块链技术区块链技术

PoS:如何设计理想的PoS共识协议

2019-07-17 18:11:16来源:作者:云泽财富栏目:区块链技术人已围观

简介PoS:如何设计理想的PoS共识协议 在诸多研究方向中,基于权益证明(PoS)的共识协议 是最具活力也最有可能得到广泛应用的新型区块链共识协议。

工作量证明(PoW)的共识协议是比特币、以太坊1.0等密码数字货币的基础,通过工作量证明实现了无中心化的共识。

在过去将近十年的时间里,工作量证明共识协议安全地支撑着区块链系统的稳定运行取得了巨大的成功。另一方面,PoW共识协议的安全性依赖于大量的能源消耗以及芯片的运算,造成了巨大的能源浪费问题,同时也面临着算力的集中问题。

因此社区以及研究者在追求设计更加环保、安全的新型区块链共识协议,在诸多研究方向中,基于权益证明(PoS)的共识协议 是最具活力也最有可能得到广泛应用的新型区块链共识协议。

作为密码货币世界中的领袖项目,以太坊也将共识协议由PoW转变为PoS纳入了长期规划中,并且在近期实施的君士坦丁堡硬分叉中已经引入了PoW+PoS的混合共识协议,为最终转为PoS协议进行探索。

01.PoS协议设计的难点

PoS共识协议虽然有显而易见的优势,但是其设计并不容易。存在失效节点乃至恶意节点的分布式系统的一致性问题早在比特币出现之前已经得到了充分的研究,这方面的研究表明,在去中心化并且存在恶意节点的分布式系统中实现数据一致性是非常困难的。在PoW共识协议中,由于工作量证明需要耗费额外的资源,因此限制了恶意节点的恶意行为的频率,而在PoS系统中,由于不存在物理资源的限制,恶意节点的行为与传统的分布式计算系统类似,因此PoS共识协议设计的难度等效于传统分布式系统数据一致性协议设计。对PoS共识协议的设计自然就转向借助研究已久的分布式系统一致性协议设计。

分布式系统的一致性问题也就是著名的拜占庭将军问题。

拜占庭将军问题

Lamport 等人证明了,在分布式系统中,f为恶意节点数量m是参与者的节点总数,当m≥3f+1时诚实节点可以达成一致。这里的默认条件是,诚实节点间可以互相传递消息并且不会被篡改。实用拜占庭容错算法(PBFT)是解决拜占庭将军问题的一种效率较高的算法,其算法的时间复杂度为,其中为节点的数量。可以看到算法复杂度与节点数量是平方关系,当节点数量增加时,算法的复杂度将会以更快的速度增加。简单的说,当节点数量为1000时,其算法复杂度是节点数量为10时的10000倍。PBFT可以在节点数量较少的环境中运行良好,因此在节点数量受限的联盟链环境中得到了广泛的应用。公有链的节点数量将会达到上万个甚至更多,在这种环境下由于PBFT协议的复杂性已经无法顺利运行。

02.PoS协议的折中设计方案

针对这种情况,一个最直接的做法是限制参与共识的节点数量,当节点数量较少时,就可以直接使用PBFT作为共识协议。如何限制参与共识节点的数量大致而言分为两类做法,一是静态代表制,二是动态委员会制。

静态代表制的的典型做法是EOS的DPoS协议。EOS将共识协议的运行限制在21个超级节点之间,并且超级节点具有高性能的计算与通信能力,因此PBFT协议可以直接执行。但是这种做法带来的直接后果是系统的集中化。系统的安全性完全依赖于21个超级节点,当这些超级节点被少数人控制后,整个系统相当于一个集中式的信息系统,违背了区块链去中心化的基本原则。这也是DPoS协议被诟病的主要原因。

PoS共识协议

针对系统过于集中化的问题,一个改进的做法是动态选择委员会完成共识协议,避免少数静态节点控制整个系统。这种做法的典型代表是Algorand、Dfinity等。系统通过已经运行的状态,通过随机算法从所有共识节点中筛选少量节点组成委员会,共识算法由委员会代替全部节点完成。委员会的成员随着时间推移迭代更新,从而避免少数节点垄断委员会。这种做法的主要问题在于委员会成员的选择。即便委员会成员的选择是纯随机的,其中诚实节点的比例也无法得到完全的保证。在诚实节点占全部节点数量超过2/3的假设条件下,如果委员会成员人数较少,恶意节点也有一定概率在委员会中占多数。为了减少这种概率,唯一的做法是增加委员会成员数量。因此此类协议通常要求委员会成员数量为数百至数千。在如此规模下执行PBFT类协议(包括各种改进版本)效率均会受到限制。尤其在真实的互联网环境下,存在较大的网络延迟并且存在恶意节点假消息的干扰,其运行效率值得怀疑。目前为止,尚未见到在真实互联网环境下运行的实际项目。

此外还有一些借助经典密码协议所设计的PoS共识协议,如Cardano(ADA)的共识算法Ouroboros采用了可验证秘密分享协议(VSS)实现了一个公平的随机数生成过程,从而实现对共识节点的选择。但是这里用到的VSS与PBFT协议类似,本质上也是一个交互式的多方协议,因此其计算复杂度以及对节点数量的要求与PBFT类似。由此可见,基于传统的交互式密码协议所设计的PoS共识算法均面临无法兼顾效率与安全性的两难问题。为了提高效率需要减少参与共识的节点的数量,而为了保证诚实节点占优势满足安全性要求又必须增加参与共识节点的数量。

03.如何设计理想的PoS共识协议

在公有链中,我们到底需要什么样的PoS共识协议?

回答这个问题我们不妨参照已经稳定运行多年的PoW共识协议。

首先,区块链系统最吸引人的特性是其去中心化的性质,如果不考虑去中心化的特点,已有的中心化的信息系统完全可以提供更高的效率、更高的安全性以及更丰富的功能以及实现数据的一致性存储。因此当PoS共识协议的设计遇到困难时,不应牺牲去中心化特点去实现其他特性。

其次,PoS系统应满足高可扩展性。区块链系统的扩展性包括两个方面,一是参与共识节点的数量应满足高扩展性,二是交易数据的吞吐率应满足高扩展性。基于PoW的共识协议解决了共识节点的高扩展性,比特币系统可以容纳数以万计的共识节点。所以PoS系统不应该牺牲共识节点的可扩展性,这一特性也与去中心化特性密切相关。同时作为新一代区块链共识协议,PoS也应改进PoW共识系统交易数据吞吐率低的弱点。

最后,区块链系统的安全性应得到的保证。对于共识协议而言,安全性主要是指系统数据的一致性。基于PoW的共识协议可以保证数据最终的一致性,而不能保障数据的实时一致性。相对于传统的交互式密码协议,PoW共识协议的安全性做了一定的牺牲。但对于大量的应用场景,数据确认的短时延时是可接受,并且可能通过叠加上层应用协议来优化确认延迟时间。

区块链不可能三角

上述三个特性也是大家已知的区块链不可能三角,同时实现区块链系统的安全性、高可扩展性和去中心化是非常困难的。

在我们看来,去中心化与高可扩展性是区块链系统的本质特征。如果牺牲了去中心化,那么可以使用更加高效的中心化系统来代替。如果牺牲了高可扩展性,区块链系统必然会带来中心化趋势,同时也会牺牲其可用性。相比较而言,安全性可能有弱化的定义版本,通过可接受的安全性弱化而实现三个特性的均衡。具体来说,安全性的牺牲体现在确认时间的延长,而这个弱化可能通过叠加上层协议加以改善。

正是基于上述特性的选取原则,基于PoW的共识协议在过去十年中取得了巨大的成功,实现了传统密码学无法实现的全球范围的去中心化共识。其本质在于,通过概率性的竞争机制,避免了确定性的交互式密码协议,从而实现了高效的共识系统。因此在PoS共识协议的设计中也应遵循同样的原则,从而最大限度保证共识协议的去中心化与高可扩展性特征。

Tags:PoS   共识协议

很赞哦! ()