本文来源:MystenLabs
编译:Sui World
自十年前比特币诞生以来,区块链技术已经取得了长足的进步。随着游戏和NFT等新用例的出现,区块链社区正在不断探索提高技术效率的方法,特别是在处理高负载和提供实时延迟方面。L1 区块链面临两大挑战,一是需要在保持低延迟的同时实现高吞吐量,二是确保共识协议长期稳定。在解决这些挑战的同时,应该通过验证节点的动态参与和验证节点的重新配置来保持去中心化。
实现高吞吐量的一种方法是使用基于 DAG 的共识协议,例如Sui使用的narwhale / Bullshark。这些共识协议使区块链能够同时处理大量交易,使其成为游戏和nft等用例的理想选择。然而,基于 DAG 的协议会导致几秒钟的延迟,这对于普通的转账或游戏操作来说时间成本较高。
另一方面,无共识协议,例如 FastPay,在减少延迟和扩展方面显示出巨大的希望。这些协议消除了对共识的需求,允许快速处理交易,而无需对并行处理的独立交易进行总排序。但是,它们仅限于一类受限的简单区块链操作,这限制了他们可以表现的智能合约,并且重新配置动态变化的验证者集可能具有挑战性。
尽管它们具有潜力,但这些方法目前都没有用于生产级区块链,它们目前只在学术会议上发表,并没有被区块链社区广泛使用。Sui Lutris 是支持 Sui 的协议,它结合了基于 DAG 的共识和无共识的方法,以实现两全其美:亚秒级延迟和每秒数千笔交易的持续吞吐量。Sui 完成了这两个任务,并保持了在共享对象上表达复杂合约、生成检查点以及跨时期重新配置验证者集的能力。
结合基于共识和非共识的方法
Sui Lutris 采取了一种独特的方法,将上述两种方法结合起来。为了确保对单个所有者拥有的资产(拥有的对象)进行操作的安全性,系统在验证者之间采用了一致的广播协议,这导致延迟低于共识。Sui Lutris 仅依靠共识来处理在共享对象上运行的复杂智能合约,即任何用户都可以改变的对象。Sui Lutris 还支持网络维护操作,例如定义检查点和重新配置验证器。在复制的拜占庭环境中处理交易时,这种新颖的策略提供了两全其美的方法。
Sui Lutris 中的高级描述和交易生命周期。
拥有私钥的用户创建并签署用户交易,以改变他们拥有的对象,或者他们拥有的对象和共享对象的混合体, 交易被发送到每个 Sui Lutris 验证节点(通常通过全节点),验证节点执行一系列有效性和安全性检查,对其进行签名,并将已签名的交易返回给客户端,客户端收集来自绝大多数验证节点的响应以形成交易证书,在这一点上,交易可以被认为是不可逆的(达到最终性)。
证书组装完成后,将被发送回所有验证节点,验证节点检查其有效性并向客户确认收到。如果交易涉及独占对象,交易证书可以立即处理并执行,无需等待共识引擎(直接快速路径)。所有证书都转发到我们基于 DAG 的共识协议(也由 Sui 验证节点操作)。共识最终输出证书的总顺序;验证节点检查并执行包含共享对象的那些交易,客户可以收集绝大多数验证节点的响应,将它们组装成一个效果证书,并将其用作交易结算的证明, 随后,为每个共识提交形成检查点,这也用于驱动重新配置协议。
除了上图所示的主要交易流程外,Sui Lutris 还提供了许多设施来支持生产级区块链:
1)在达到最终确定性后实施检查点协议,该协议产生系统中所有交易的因果历史。这用于完整的审计,以及以有效的方式保持完整节点和滞后验证节点同步。
2)Sui Lutris 支持在每个时期结束时重新配置,此时验证者集及其投票权可能会发生变化,为确保所有最终交易都包含在一个纪元中,每个纪元都需要仔细关闭并确认最终是安全的。
3)在以前的无共识协议中,当有漏洞的客户端双花资产时,资产将被永远锁定,Sui Lutris 在 epoch 结束时安全地“解锁”错误锁定的资产,将 bug 的损害降到最低。
Sui Lutris 支持 Sui,这是一个为用户管理大量价值的区块链,完整的技术报告提供了有关安全和活性协议如何运行的更多详细信息,以及它们在标准分布式系统模型中与部分同步的拜占庭参与者的安全性证明。
关于Sui Lutris,完整的技术报告可以点击了解:
https://github.com/MystenLabs/sui/blob/main/doc/paper/sui-lutris.pdf?ref=tech.mystenlabs.com