基于高效科学安全的实用型的星系共识介绍
扫描二维码
随时随地手机看文章
星系共识(Galaxy Consensus)是万维链理论研发团队全新提出的高效、科学、安全的实用型PoS共识协议,旨在替代原本高能耗的PPoW(permission proof-of-work),也将万维链的共识系统正式开放给广大社区,迈出完全去中心化的关键一步。在当前众多区块链系统百家争鸣的形势下,安全高效的共识协议已经成为大家主要的研究方向之一,PoS、PoA、PoI等等众多共识模型被相继提出,而在众多共识模型中,经过谨慎的思考,万维链认为权益才是左右链上治理和发展的根本因素,也就研发了PoS星系共识协议,在群星璀璨的共识节点运转下,打造属于万维链的共识星系。
一、整体框架设计
对于共识协议的设计来讲,主要解决的就是两个核心问题:出块者选择(Leader selection)和合法链选择(Chain selecTIon)。在传统的PoW中,出块者的选择是通过挖矿进行的,借助的是哈希函数的随机性,矿工依赖自身的计算能力参与出块者竞争,而这里的公平性就体现在任何节点对哈希函数结果的不可预测性,任何节点都没有优势可言,只能通过简单粗暴的穷举运算来解决问题。合法链的选择上往往也是采取最长链的规则,也就是让算力最大的分支成为主流。这样挖矿+最长链规则的框架设置下就导致了大量的能源浪费,也是其他共识协议被提出的根本原因之一。那么当前主流的PoS协议又是通过怎样的框架设计来解决这一问题的呢?
经过长期的调研学习,我们以三种知名的共识协议来简单介绍PoS共识的主流框架:
Cardano的Ouroboros是发表在美密会上的顶尖学术论文,也是第一个被工业界采用的可证明安全PoS算法,其卓越的贡献就在于提出了可证明安全的共识模型框架,并在其中设计了实用的算法模块。在其多个系列版本中,出块者选择上也有不同的方式,由最初利用随机数的确定性选择到采用VRF算法的匿名选择,Ouroboros逐渐将选择的过程隐私化安全化,而有效链的选择上一直是最长链规则,也就是chain based方式,保证了链的安全性。所以Ouroboros的整体框架就是VRF selecTIon + Chain based模式。
Algorand是由图灵奖得主、MIT教授Sivio Micali提出的PoS共识协议,其突出贡献在于设计了BFT的升级协议BA*协议,利用投票的方式解决了区块合法性的选择,在出块者和验证者的选择上Algorand也采用了VRF算法,保证了随机性和匿名性,经过BA*协议的运行,保证每一个高度的区块都是被确认的,即使最终是空区块,也是经过投票认证的。所以Algorand的整体框架就是VRF + BA*投票模式。
Casper是以太坊当前研究开发的PoS共识协议,秉持着实用性的特点,Casper采用了投注式共识,完成保证金质押的验证者可以投注自己相信会被确认的区块,在投注规则的限制下保证了最终胜出区块的唯一性,而胜出的验证人也将得到收益。Casper将帮助以太坊由PoW转型为PoS,也是大家十分期待的共识协议。所以Casper的整体框架就是验证人 + 投注的模式。
简单介绍了几种主流PoS共识协议之后,我们回归到星系共识,经过深入的思考研究,星系共识坚持学术派的发展路线,借鉴了Ouroboros可证明安全的模型框架,全新设计更加高效安全的随机数生成算法,并创新性设计Unique Leader SelecTIon算法替代VRF算法,用于出块者选择,保证了合法出块者的唯一性,大大降低了自然分叉概率,所以星系共识的整体框架就是ULS + Chain based,在保证安全性的前提下极大地提升了实用性。
二、两类星体,代表两种共识节点角色
在星系共识之中,所有在智能合约中质押了WAN的用户都将成为整个星系中的一个节点,而这些节点由于能力的大小被分为两种星体:恒星(star)和行星(planet)。
为区分两种星体,这里就不得不说星系共识中的委托机制,为了给仅持有少量WAN或权益较小的用户提供参与共识的机会,在星系共识中我们设计了完整的委托机制。委托机制的实现是基于三重ECDSA委托签名算法,对当前的区块链系统有着天然的兼容性,通过委托机制,持有少量WAN的用户可以将自身权益委托给代理节点,由代理节点参与共识的运行,同时由于签名消息空间的限制,代理节点只能代为出块,无法进行其他操作,保证了用户权益的安全性。
了解了委托机制,就可以介绍两种星体的不同。在星系共识中的两类星体:
恒星节点:是可以接受委托的共识节点,其自身持有一定量的权益,而且其自身权益值将影响其接受委托的权益上限;
行星节点:是不可以接受委托的共识节点,其参与共识完全依赖于自身持有的权益值。
虽然两种星体能力大小有所区分,但在参与共识的过程中是相同的,并不做区分。希望成为恒星节点,一方面需要更多的权益质押,另一方面也取决于节点的信誉程度,最终方法后续将有详细说明。
三、两类星群,负责构建链上随机数和收集交易、打包出块
星系共识之中,参与节点由于任务分工被划分为两个星群:RNP星群和EL星群。这两个星群都是在所有星系共识节点中,按照自身持有权益比例选择出来的。但是承担的任务不同,主要解决了共识中的两个关键问题:
RNP星群是负责构建链上随机数的群体。RNP星群中的节点通过DKG1、DKG2、SIGN三个阶段的工作完成随机数的更新,保证了链上随机数的安全性。正如上面介绍的主流PoS框架所说,如何维护一个公平的随机数是保证协议安全的重中之重,RNP星群正是承担着这一关键性工作,其每一轮产生的随机数将作为星群构建、出块者选择和其他随机源应用的重要种子,维持着共识的健康运转。
EL星群是负责收集交易、打包出块的群体。EL星群需要完成两个周期的工作,第一个周期通过SMA1、SMA2两个阶段完成秘密信息序列(secret message array)的协商,完成EL星群内部秘密数据的共享,第二个周期通过秘密信息序列和链上随机数确定出块权归属,并在自身负责出块的时间段内打包区块并广播,完成链的生长发展,其作用毋庸置疑,是保证共识安全运行的基础。
四、星系共识运行流程
介绍了两种星体和两类星群之后,我们从一个较高的视角整体的描述星系共识的运行流程,给大家一个直观的展现,看看星系共识是如何运行的。首先我们介绍两个时间上的概念:slot和epoch。相信了解过Ouroboros的读者对这两个概念应该并不陌生,slot是一个区块的生成时间,即每个slot内产生一个新的区块;epoch是由大量连续slot构成的时间周期,是协议完整运行的一个循环。下面分四个步骤讲述协议运行流程:
1. 构建星系
这是协议运行的准备阶段,在这一阶段,所有想要参与星系共识的节点通过在共识智能合约中质押一定量的WAN成为星系节点,质押时会选择锁定时间,这一时间将影响节点的权益值,锁定时间越长,权益值则相应略高,同时权益值随着锁定时间的流逝也将呈增长趋势,这一设计很好的模拟了币龄的概念,确保了权益设计的合理性和节点参与的公平性。经过这一阶段的准备,星系中就出现了大量的节点,这些节点将正式运转星系共识。
2. 组建星群
在每次协议运行周期(epoch)的起始,星系中会选择出两大星群,即RNP星群和EL星群,这两大星群的选择是基于节点持有权益值的比例,利用链上随机数进行的随机选择过程,类似于follow-the-satoshi,这里我们使用follow-the-stake-raTIo,保证了星系节点参与组建星群的公平性,权益占比越高,被选入星群的概率越大,参与共识进而获得收益的可能性就越大,这也是PoS共识的核心思想之一。
3. RNP星群运转
RNP星群被选择组建之后,星群中的节点完成DKG1、DKG2和SIGN三个阶段的工作,在DKG1阶段,各节点提出自身对随机数碎片选择的承诺,保证了碎片选择的不可更改性,在DKG2阶段,各节点将自身选择的随机数碎片通过门限秘密分享的方式分享给星群中的其他节点,最终在SIGN阶段,各节点公布自身收集的随机数碎片数据,完成随机数的生成,更新链上随机数数据。整个过程由于门限秘密分享的特点,保证了只要在线节点数超过门限值就将顺利完成随机数的更新,确保了随机数生成的可靠性,同时只要星群中至少一个节点在随机数碎片的选择上是随机的,那么最终随机数结果就是随机的,保证了随机数生成的安全性。
4. EL星群运转
EL星群被选择组建后,将参与两个周期(epoch)的工作。在第一个周期中,EL星群节点参与SMA1和SMA2两个阶段工作。在SMA1阶段,各节点提出自身秘密信息的承诺数据,保证了秘密信息的不可更改性,在SMA2阶段,各节点将自己的秘密信息加密共享给其他节点,完成秘密信息序列(secret message array)的生成。在第二个周期起始时,EL星群中的节点会依据RNP星群产生的随机数进行排序,这一排序在整个周期中有效,同时依据秘密信息序列执行出块者选择算法,确定整个周期内各时间段(slot)的出块权归属,这一过程是在EL星群内部秘密执行的,其他节点无法获知结果,而EL星群中节点就依据出块权的归属完成整个周期内新区块的生成。当新区块被提出时,EL星群中的节点要添加自身合法性的凭证,这一凭证可被全网验证,确保了链的正常安全发展。通过以上的介绍了PoS星系共识的整体框架和运行流程。其中更详细的内容,可以在星系共识论文中找到具体的描述。