共识和执行的分离是状态机复制系统的基本架构设计之一(可参见 Base 20013)。分离的好处可参见 Yin et al 2003。在传统的状态机复制系统(SMR)中,命令不仅要复制并传播到所有副本,还得在所有副本上执行。
在很多系统中,可拓展性的瓶颈是 执行 指令的成本。对 SMR 系统的一种主要拒绝服务攻击工段是发出合法的命令,让整个系统浪费时间在执行上(详情请参阅:例 1 和例 2)。很多系统通过设计领域专用语言来(Domain Specific Language)避免攻击。
比特币用比特币脚本,小心翼翼地限制每笔交易的计算复杂性。
以太坊用 gas 机制来限制执行的复杂性,并用效率来激励人们对 Gas 的使用。
并行化执行
让状态机并行化执行也是一种提高执行能力的方法。当在区块中的大部分命令无状态竞用(相互独立,或者说可互换顺序)的情况下,这个方法是有效的。它的主要思想是设想一种在无竞用的条件下并行执行、在有竞用时维护安全性的协议,用该协议模拟出连续执行的结果。详情请参看 Eve 2012、 Dickerson、 Gazzillo、 Herlihy、 Koskinen 2017 和 Saraph 和 Herlihy 2019。
不在 SMR 内执行,使用经济激励和错误性证明来验证
(optimistic rollups 类型)
在这类解决方案中,指令作为数据提交到 SMR 内,但是执行不是由验证状态机副本完成的。状态机副本仅充当 数据可用性层。
不用副本来执行指令,而用经济激励机制——玩家可以通过 发布债券 来成为执行者。锁定了保证金的执行者都可以提交执行结果,而其他人可以通过提交错误性证明来举报执行人提交了不正确的执行结果。如果这份错误性证明是正确的,执行者将受到 惩罚,而提交者将得到部分奖励。如果挑战者在错误性证明上说谎,那他的保证金就会大幅罚没。
实现高效挑战的协议起源于 Feige Kilian 2000,而 Canetti, Riva, Rothblum 2011 沿着这条道路推进,最终演化成采用链上激励的 TrueBit Teutsch, Reitwießner 2017 和 Buterin’s Off-Chain Oracles 。如今,这种方法在名为 optimistic rollups 的方案中中得到进一步发扬(详情可参看 merged consensus、Adler, Mikerah、Quintyne-Collins、Al-Bassam、Sonnino、Buterin 和 LazyLedger)。
不在 SMR 内执行、用简洁的证明来验证
(zk rollups 类型)
在本方案中,指令同样作为 数据 提交到 SMR 中,执行同样不关验证状态机副本的事。副本只是作为指令的数据可用性层。
不同于用挑战游戏和错误性证明来验证执行结果,利用 简洁的非交互式证明 也是可以的(PCP、Groth 10、Groth 16、 Ben-Sasson、Chiesa、Tromer、Virza 2013-2019 和 survey)。这些密码学技术允许验证者生成非常短的证明,同时对这些证明的验证在密码学上具有高度的可靠性和完整性。执行(和证明生成)只能由同一实体完成。有了简洁证明后,验证状态机副本只需要验证简洁证明,而不需要重新执行长交易。Zexe 用这个方法来建构了基于 nano-kernel 的证明系统,人们因此可以在 UTXO 中实现隐私交易。
Buterin 论述 zk-roll-up 的文章和 Ben-Sasson 的 podcast 强调了这种拓展交易处理量的方法。详情请查看 Buterin 的视频,进一步去了解如何将隐私(零知识)添加到简洁的证明中(zk zk rollups)中。
这种简洁的证明有很多好处:验证证据正确性的成本非常低。而短处在于构造指令执行的证明通常比单单去执行指令的成本要高得多。还有一个坏处在于这些协议增加了大量的复杂性。此外,某些协议还需要繁复的受信任初始设置仪式。
需要注意的是,以上介绍的方法意在克服执行可拓展性的瓶颈,而不在改变数据可拓展性的瓶颈。
感谢
我们想借此机会感谢 Ling Ren、Kartik Nayak、 Alin Tomescu、 Pratyush Mishra、Louis Guthmann 和 John Adler。感谢他们给本文提供了富有教益的反馈。
(完)
版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。