高吞吐量区块链的核心在于其能够快速安全地处理大量交易。然而,当 Sui 中的交易涉及写入同一共享对象时,它们必须按顺序执行。这可能导致检查点时间更长,从而降低状态同步效率。
共享对象拥塞控制的首要目标是提高检查点执行效率。通过控制每个检查点内接触拥塞或热共享对象的事务数量,系统可确保处理时间保持一致,从而避免延迟。
该机制还通过确保 Gas 费用较高的交易在检查点纳入时获得优先处理,从而促进了交易公平性。用户将期望成本更高的交易能够更快地得到处理。
解决 Sui 早期的局限性
Sui 以前通过其事务管理器管理共享对象拥塞。该系统监控待执行事务的总数,等待所需对象可用。如果待执行事务超过阈值,事务管理器将停止接受新的事务签名或执行请求。
之前的机制虽然在某些情况下有效,但在几个方面存在不足。例如,由于验证器之间的不一致,它经常导致部分交易被拒绝和对象锁定。它没有准确估计相关交易序列的执行时间,导致效率低下和潜在的处理拥塞。最后,当一个对象拥塞时,以前的解决方案会拒绝所有传入的交易,直到当前交易被执行,这意味着无法使用 gas 支付来优先纳入。
深入了解拥塞控制
新的共识处理程序设计引入了一种更细致的方法来管理热共享对象之间的执行依赖关系。这包括添加到验证器逻辑的两个新功能:
延迟交易的能力:共识处理程序现在可以将交易延迟到未来的共识提交,从而更有效地管理检查点中的执行依赖关系。
主动取消交易:验证者现在可以主动取消被过度推迟的交易。当交易被取消时,它仍会被处理,但会向执行引擎发出命令,要求其立即停止。一旦收到此指令,执行引擎就会释放其锁定的所有对象,并迅速向客户端发回取消错误,而不会完成交易。
共识处理器对交易进行排序和管理。此图使用彩色圆圈表示具有不同 gas 量的交易。
当共识处理程序收到共识提交时,它首先将提交中的交易与之前推迟的交易合并,并按 gas 价格对它们进行排序。然后,它会逐一检查每笔交易,创建一个每个对象的执行依赖关系图,概述检查点执行所需的关键步骤。此过程可确保交易得到高效处理并按其成本排序。
要将事务添加到依赖关系图中,处理程序会评估事务中涉及的所有共享对象。它会识别队列最长的对象以启动事务的执行,并将所有涉及的对象的队列对齐到此最大长度。然后将事务的成本添加到每个对象的队列中,更新执行顺序。
依赖关系图根据最长队列为每个对象提供执行延迟的估计,这也表明了共识提交的总体延迟。每个共识提交的队列长度都有最大限制。如果交易超过此限制,则会将其推迟到未来的提交。如果多次推迟超过某个阈值,则交易将被取消并从处理中移除。这通常发生在交易针对需求量很大的对象但提供的 gas 价格太低而缺乏竞争力时。
新设计通过监控执行依赖关系并限制每个共识提交中涉及高需求共享对象的事务来提高效率,从而保护检查点执行。至关重要的是,不涉及这些高需求对象的事务不受这些限制的影响。
解决先前的挑战
如上所述,以前的系统难以跟踪每个对象的交易队列,导致效率低下。共享对象拥塞控制机制不仅解决了这些挑战,还引入了重大改进以简化流程。新方法确保所有验证者在执行、推迟或取消交易方面做出统一的决策。这一变化有效地消除了与锁定对象相关的问题,并允许快速释放优先级较低的交易持有的对象。
拥塞控制机制还通过跟踪每个共识提交中的完整事务依赖关系图来提高准确性。这意味着它会仔细记录事务的顺序和依赖关系,从而更清楚地了解执行检查点所需的实际时间。通过这样做,它解决了以前被忽视的复杂性和低效率问题。
此外,通过推迟交易并在后续共识提交中将其与新交易合并,新方法支持本地费用市场。这种设置有利于 Gas 价格较高的交易,确保它们在繁忙时段有更好的机会得到处理。用户获得了支付纳入费用的能力,这对于 DeFi 活动尤其有用。
最后,新方法倾向于在检查点执行出现任何性能下降之前在热共享对象工作负载中实现更好的性能。这种改进源于验证者的一致和集体决策,从而导致更高效的交易处理和更高的整体网络吞吐量。这种一致性确保系统可以在出现任何性能问题之前处理更多交易。
隋文静扫清道路
共享对象拥塞控制的实现不仅仅是技术升级,更是战略增强,显著提高了 Sui 的可扩展性和效率。有了这个基础,Sui 上的用户和应用现在可以享受更高的交易效率和可靠性。精简的拥塞控制机制为部署更复杂、响应更快的应用程序提供了跳板,进一步扩展了生态系统的功能。