POS机测评网

iChing 一种新型的PoS区块链共识协议

刷卡机测评员

上一期,我们以PoW共识协议为参照,探讨了“我们需要什么样的PoS共识协议?”。今天就为大家介绍一下Fractal Platform设计的一种全新的基于概率竞争的PoS共识协议---iChing。此协议完全保留了PoW共识协议的运行特性,在去中心化与高扩展性方面与PoW协议保持一致,其安全性也得到了严格的证明分析。

01

提出的背景

 在去中心化的分布式系统中,由于存在恶意的节点,节点间实现共识并不容易。恶意节点可以通过发送伪造的消息,给不同的节点发送不一致的消息等行为破坏诚实节点的一致性。在基于PoW共识协议的区块链系统中,通过工作量证明的竞争,*了恶意节点发送消息的频率和比例,因此可以在诚实节点之间达成共识。在基于PoS共识协议的区块链系统中,由于Stake是可重复使用的资源,缺少了硬件资源对恶意节点的*功能。这意味着,恶意节点可以利用掌握的Stake资源重复发送不同的恶意信息,从而实现对诚实节点之间共识的干扰。因此基于PoS的共识协议设计更加困难。

事实上,在去掉硬件资源竞争后,区块链协议的设计已经等价于传统的分布式计算所研究的范围。分布式计算研究领域经过多年的研究,其安全特性及运行效率均已经有严格的证明和结论。其中最著名的是实用拜占庭容错算法(PBFT)。简单而言,在PBFT协议中如果恶意节点不超过节点总数的1/3,诚实节点之间可以实现共识。但是这里存在的困难是,PBFT尽管相对于原始的BFT协议已经大大提高了效率,其通信的复杂性仍然达到了,即通信的复杂性随着节点数的增长而成平方增长。可以想象,当节点规模达到类似比特币系统的节点数量后,该协议的通信量非常巨大。实际的测试表明,PBFT协议一般只能支持几十个节点,更大规模的网络无法有效运行,因此去掉物理资源竞争的区块链共识协议设计非常困难。

PBFT算法流程图

 解决这个问题,最直接的方法是减少参与共识节点的数量。仅运行有限的节点参与共识,这在私有链或者联盟链中是很正常的做法,并且也得到了广泛的应用。对于公有链而言,需要保持足够的开放性,因此*参与共识节点的数量与公有链的设计思想相矛盾。一个折中的办法是,在所有节点中选择代表参加共识。实时上,当前绝大多数PoS共识协议均是依赖这个思想而设计的,其中的区别仅在于代表的选择方法以及代表的更新机制。主要的代表性做法包括DPoS协议、Algorand协议以及Difinity等。

  

 为了保证协议的安全运行,参加共识的代表中诚实节点数量需超过2/3。在所有节点中诚实节点占比达到2/3的条件下,要想达到这一目标,如果随机选取代表,则代表的数量必须足够多。理论分析表明,代表数量至少达到数百乃至上千才能保证诚实节点占优。而代表数量的增加又会影响共识协议的运行效率,这是一个两难问题。因此此类协议如果要高效运行,通常需要做如下的取舍:

    1).提高安全假设,例如假设在所有节点中,诚实节点比例极高,随机选取少量节点也可保证诚实节点数量达到要求。

    2).增加部分中心化假设,例如参与共识的代表是通过某种额外的筛选机制而来,并不是随机选择,可保证诚实节点的数量达到要求。

    3).降低代表更新频率,减少代表选取算法的运行开销。

02

iChing的思想与构造

 以上的PoS协议构造中,其核心思想是通过*协议避免诚实节点间的数据不一致性。为了达到这一目标,当出现新的数据(区块)的时候,通过BFT类协议实现数据的确认与共识。正如上一节所述,这种构造方式直接来源于已知的协议以及各种改进和变形,同时也继承了已有协议的缺点及问题。现对于以比特币为代表的PoW共识协议而言,此类协议难以在完全去中心化的条件下实现全球规模的部署与运行。因此,iChing的设计方法完全放弃了BFT类协议的选择,最大程度遵循了PoW协议的设计思想。

    回顾比特币所设计的PoW共识协议,其核心思想是通过硬件资源*了参与者发送信息的频率与数量,以此保证系统中的输入噪音足够少,进而所有诚实节点可以达成一致。同时,这种一致的达成并不依赖交互式的*协议,而是通过竞争的方式自然实现,从而避免了复杂的通信开销。因此为了实现新的PoS共识协议,也应遵循这两个做法。

1).用户输入

在比特币的共识协议中,矿工使用计算资源尝试不同的随机输入计算哈希函数的输出,当找到满足预设条件的有效输出则意味着寻找输入成功并得到奖励。当矿工拥有的算力越多,其单位时间尝试的输入次数越多,找到有效输出的概率也就越大,因此PoW的竞争最终是算力的竞争。为了避免陷入算力竞争,我们对计算量证明算法做了如下修改:

与PoW算法类似,在这个式子中第一项是上一个区块的哈希值,因此所有的有效输出形成了一个哈希值相连接的链条也就是区块链。

在PoW算法中,需要尝试不同的随机数并检验输出是否满足输出要求。为了避免陷入算力竞争,我们在输入中取消了,并引入了当前的时间戳作为输入,时间戳每秒钟增长1。

在PoS中,拥有Stake的人才能参与共识,因此执行此算法的节点应输入代表自身身份的公钥PK以供其他用户检验其拥有的Stake。

为了防止他人冒用身份,同时应附上该公钥所对应私钥对本次尝试的签名。此处所使用的签名算法是确定性签名,也就是输入确定后,签名结果唯一确定。

 根据算法描述可知,对一个合法共识节点而言,该算法的输入在每个都是确定的,不能通过尝试不同的输入而得到更多的满足不等式的机会,也就是避免了计算力的竞争。而如果一个节点拥有更多的Stake,则该节点可以注册更多的PK,从而得到更多的尝试机会。因此计算力的竞争就转换成为了Stake的竞争。

  2).竞争机制

      iChing采用与PoW类似的竞争机制实现数据的一致性,从而避免交互式*协议的运行。在PoW共识协议中,由于区块蕴含了矿工的算力,因此越长的区块链蕴含的算力越多,也就是得到的矿工支持越多。在诚实矿工算力占优的假设下,诚实矿工仅需选择最长链作为共识的基准就可以实现大多数区块的共识。所不能确定仅仅是头部的少量新生成区块。

 在上节的输入介绍部分可以看到,在相同的时间内(数量相同),iChing区块链的长度也蕴含了对该区块链支持的Stake的数量。某一条链支持的Stake数量越多,其单位时间产生的有效输出也就是生成的区块越多,区块链的增长也就越快。因此iChing的共识节点也是通过选择最长的区块链作为共识基准。在诚实Stake比例占优的假设下,诚实节点选择最长链就可以实现一致性共识。

小结:

 本文简单介绍了iChing协议的主要思想与核心的算法设计以及基本共识协议设计。但是对于PoS协议而言,此基本设计是不安全的。例如攻击者可能采用在PoS系统中常见的Nothing at Stake攻击在不同的位置均尝试区块的产生。同时此设计中也无法将交易数据嵌入到区块链中。如果采用类似PoW协议将交易数据直接放入区块的方法,则攻击者可以通过尝试不同的交易数据组合获得更多的哈希算法尝试机会,从而将协议转换成为另外一种形式的PoW系统。

   这些问题均可通过协议的设计与改进得到完美的解决,我们将在下次的更新中给出具体的分析。

END

扫码关注

Fractal Platform

http://fractalblock.com/ 

标签: