共识协议是区块链系统的核心组成要素,是整个系统稳定性和安全性的保证。比特币引入了第一个区块链共识协议,即工作量证明(PoW)。在这一共识协议下,为获得出块权,矿工需要不断进行哈希计算,直到结果小于某个特定值,而持续的哈希计算耗费大量的能源,这也是 PoW 被人诟病的主要原因。为解决能源浪费的问题,很多新型的共识机制被提出,它们将安全基础由计算能力转为依赖其他资源,其中权益证明(PoS)被广泛研究和认可,作为 PoW 最有利的替代者,我们坚信,PoS 将是区块链共识未来的发展方向。立足深入研究已有优秀共识协议(如 Ouroboros、Dfinity)的基础上,充分借鉴其设计优势,结合多种密码学手段,我们设计出星系共识协议。同时,星系共识引入了全新的委托机制,并在万维链完成了概念验证(POC)。
星系共识的创新点:
1.重新定义了权益并在账户模型下(account model)模拟了币龄(coin age)的概念,保证了共识参与者的稳定性。与其被动地被选择,所有 WAN的持有者需要主动注册去参与到星系共识中,这样保证了参与者在共识过程中是活跃状态,而不是沉睡状态(sleepy)。由此增加的稳定性使得整个协议在现实应用中具有更高的实用性。
2.设计了新型安全的随机数生成算法,可用于出块者的选择以及其他用途,为系统引入熵(entropy)并保证了整个协议的安全性。
3.设计了 ULS(unique leader selection)算法并用于出块者选择。与其他选择算法相比(如VRF),ULS算法在保持出块者匿名的同时,保证了出块者的唯一性,降低了自然分叉的概率。
4.设计了三重 ECDSA 委托签名方案并实现了完整的委托机制,持有较少WAN 的用户也能够参与到共识过程中,从而吸纳更多的权益加入到共识协议中。
5.设计了公平合理的奖励机制,激励共识过程中的诚实行为并对恶意行为进行惩罚,保证权益分布健康,防止权益集中(stake centralization)。
Wanstake 设计
1. 设计概览
所有的 PoS 共识方案都致力于使参与者通过去中心化的方式达成共识,然而往往忽略了影响共识的一些重要因素,如共识参与者的稳定性和活跃度、权益的分布等等。我们的设计通过实现以下目标,保证了共识机制在现实应用中的可行性。
· 高稳定性:共识参与者应保持在线并参与到共识过程中。
· 高活性:与其被动地被选择为出块者,所有参与者需要通过主动注册的方式参与到星系共识中,这样能够保证共识参与者具有很高的活性,从而不会因为掉线等原因而影响共识过程的正常进行。
· 独立性:共识参与者无法通过将持有的 WAN 分布在不同的账户中或与其他参与者合作将 WAN 放在同一账户中而获得额外收益。
· 权益的健康分布:健康的权益分布不能够太集中,同时也不能够太分散。星系共识鼓励 WAN 持有者将尽可能多的币投入到共识协议中,同时也采取方式限制 WAN 的大型持有者(如交易所)对共识过程的影响,防止其控制共识过程。
2. Wanstake
定义:
· WAN:万维链的原生币,通过锁定在一个特定的智能合约(即共识智能合约)中转化为 Wanstake。
· Wanstake:通过锁定 WAN 得到,WAN 的数量越多,锁定时间越长,生成的Wanstake 越多。
· 权益比率:个人持有的 Wanstake 占全部 Wanstake 的比例。
· CSC:共识智能合约(consensus smart contract)的缩写,WAN 持有者通过将WAN 锁定在 CSC 中获取 Wanstake。
· H函数:计算共识参与者 Wanstake 量的函数。
WAN 的持有者通过将一定数量的 WAN 锁定在共识智能合约中去参与万维链星系共识协议。共识智能合约根据锁定的 WAN 的数量和锁定时间计算得到Wanstake 的数量。值得注意的是,考虑到越临近锁定时间结束,参与者的诚实性和稳定性就越高,Wanstake 的数量在锁定时间内并不是固定值,而是根据剩余锁定时间发生变化。Wanstake 的持有者以正比于其权益比率(Wanstake ratio)的概率被选择参与到共识过程中。当参与者的锁定时间结束后,将自动失去参与共识的权利,共识智能合约会在一段时间之后将锁定的 WAN返还到原始账户中。
如上图所示,H函数在计算 Wanstake 的过程中具有重要作用。为达到上文提到的设计目标,H函数应当满足以下几个性质:
w为锁定的 WAN 的数量。
L为锁定时间长度。
t为余下锁定时间占全部锁定时间的比例,锁定开始时为 1,结束时为 0。
攻击抵抗分析
⚫ Double spending attacks
在 double spending attacks 中,攻击者希望令两笔矛盾交易都生效,想实现这种攻击只有两种情况:(i)含有两笔矛盾或一笔与之前生效交易相矛盾交易的区块被确认合法生效;(ii)出现含有矛盾交易的两条合法分叉链。对于(i),协议要求对任何收到的区块进行合法性检查,包含任何矛盾交易的区块将被认定无效。同时我们的 chain-based 共识只接受最长链作为合法连,不会出现两条合法分叉链的情况,进而避免 double spending 发生。
⚫ Grinding attacks
在 grinding attacks 中,攻击者希望影响出块者选择过程以提高自己被选中的几率。我们的共识中,出块者选择基于 random beacon和两阶段的 ULS算法,在随机数生成过程中我们采用了门限签名方案,任何参与者只能决定自己的签名部分,只要有至少一个参与者是诚实的,攻击者就无法决定最终随机数结果,同时只要参与者中攻击者数量低于门限值就无法预知最终随机数结果,所以Epoch Leader 的选择无法通过控制随机数生成进行影响。在两阶段的 ULS 算法的 SMA 生成过程中,被选中的参与者只能选择是否广播他们的数据,如果不公布将失去部分收益。而且 SMA 的生成在 SIGN 阶段之前,而 Epoch Leaders 排序在 SIGN 阶段之后,攻击者没有信息优势来影响 ULS 算法的选择结果。
⚫ Transaction denial attacks
在 transaction denial attacks 中,攻击者希望阻止一笔合法交易被确认,我们强调诚实节点不会拒绝任何合法交易,所以如果要实现 transaction denial attacks,就意味着所有的 Slot Leaders 都是恶意的。由于诚实主体假设和 follow-the-stakerate选择方案,攻击概率是随着时间以小于 1/2 的底数指数下降的,攻击者实现攻击的概率趋近于零。
⚫ Bribery attacks
在 bribery attacks 中,攻击者希望通过腐蚀诚实参与者为其所用来实现某种恶意目的,例如实现 double spending attacks。在我们的共识中,理性的参与者由于两点原因不会接受这样的贿赂腐蚀。一是诚实参与者接受这样的贿赂腐蚀而变成恶意参与者的话,他将失去抵押在智能合约中的权益。二是恶意行为会损害 Wanchain的经济生态系统,进而减低 WAN的价值,参与者的 WAN就会贬值。所以理性参与者不会接受贿赂腐蚀。而且只要保证诚实主体,briberyattacks 也无法影响到共识的安全性。
⚫ Long-range attacks
在 long-range attacks[15]中,攻击者希望从链上一个之前较远的位置开始重构一条合法链,这样就可以使链上数据与当前真实状态不同,进而实现双花攻击等。协议中我们在有效链上设置了一些检测点(check point),随着链不断延长,在最后一个检测点之前的数据将不再改变,即新出现的检测点的区块无效,所以攻击者无法实现 long-range attacks。
⚫ Nothing at stake attacks
在 nothing at stake attacks 中,参与者会在多个分叉上产生新的区块,无论最终哪个分叉被确认有效都将获得收益。由于 PoS 共识中生成区块几乎没有消耗,这种攻击就很容易发生,而在 PoW 共识中,矿工不会浪费算力来在不同分叉上产生区块,这样很可能让他完全得不到收益。同时,这种攻击常发生在某一时间段或某一区块高度有多个合法出块者的情况下,例如通过 VRF 进行出块者选择的时候,然而在我们的共识中,某一时间段内只有唯一合法出块者,几乎不会出现分叉情况,参与者就没有动机发动 nothing at stake attacks。
⚫ Past majority attacks
在 past majority attacks 中,攻击者希望腐化某些之前的参与者以取得在过去某段时间里的权益优势。我们假设当前的诚实权益大多数是合理的,而为了在past majority attacks 中获益,攻击者需要与过去某一时间的大部分权益持有者重新产生区块来代替之前已有的区块,这就类似于前面提到的 long-range attacks,会与检测点(checkpoint)产生冲突,这种新产生的区块会因为位置早于检测点而不被接受,所以我们的共识不会受到 past majority attacks 影响。
⚫ Selfish-mining
在 selfish-mining 中,参与者会私下保留一个合法区块然后提前去构造下一个合法区块,由于可以获得计算时间上的优势,这种情况常发生在 PoW 共识中,然而在PoS中尤其是我们的共识之中无需如此。由于Slot Leaders是在一个epoch开始时由 random beacon 和 Epoch Leaders 产生的秘密信息决定的,无论参与者是否广播新的区块都无法影响下一个 slot 中出块者的选择,所以私下保留当前的合法区块是无利可图的。事实上,如果超出了一个 slot 时间窗口没有广播新的合法区块的话,出块者很可能失去此区块的收益。所以发起 selfish-mining 是不理智的,及时发生也不会影响我们共识的安全性。
星系共识优势
1.可证明安全
星系共识基于 Ouroboros的可证明安全模型设计,在保留其可证明安全共识框架下对核心密码组件进行了设计提升。
2.自然分叉概率低
星系共识采用 ULS(unique leader selection)算法进行出块者选择,与 VRF 算法不同,ULS 算法在保持出块者匿名的同时,保证了出块者的唯一性。
3.安全随机性引入
随机性的引入对于保证共识的安全性有着积极的影响,星系共识利用基于门限签名方案的 random beacon 引入随机性,而 random beacon 的安全性由两方面保证:一是只要至少 1 名参与者是诚实的即可保证安全,降低了诚实主体假设要求;二是保证 G.O.D (Guaranteed Output Delivery)性质,即使部分参与者掉线,只要在线参与者数量高于预设门限值就可以成功执行。
4.合理的权益设计
PoS 共识中合理的权益设计是一个很有意义的考量,为保持参与者的稳定性和活性,我们要求参与者将自身持有的 WAN锁定在一个特殊的智能合约之中以参与共识,锁定 WAN的数量、锁定时间和剩余锁定时间比例都是用于计算参与者权益值的参数,这样的设计在 account model 下模拟了币龄的概念同时保证了星系共识参与者的稳定性。
5.完整的委托机制
星系共识采用我们全新设计的非交互高效 ECDSA委托签名算法,实现了完整的委托机制,限制签名空间且与现有区块链签名体系相兼容,保证了任何WAN 持有者皆可参与共识,提升了 Wanstake 的活性。
6.清晰可信的经济激励模型
星系共识拥有对共识参与者完整的经济激励模型,由于参与者在链上进行信息交互,他们的行为也将被反映在链上,我们引入活性系数的概念来评估参与者的表现,活性越高收益越多,这样的经济激励机制是清晰明确并令人信服的。
评论
查看更多