Sui通过对共享对象的阻塞控制简化交易

devtools/2024/9/25 16:54:56/

高吞吐量区块链的核心是它能快速、安全地处理大量交易。然而,当交易涉及写入相同的共享对象时,它们必须依次执行。这可能导致较长的检查点时间,进而降低状态同步的效率。

共享对象阻塞控制的首要目标是提高检查点执行的效率。通过控制每个检查点中接触到阻塞(或热门)共享对象的交易数量,系统确保处理时间保持一致,避免延迟。

该机制还通过确保更高gas费用的交易在检查点中优先处理,促进了交易的公平性。用户会期望成本更高的交易能更快地处理。

解决Sui早期的限制

Sui之前通过交易管理器管理共享对象阻塞。这个系统监控所有待执行交易的数量,等待所需对象可用。如果待处理交易超过了阈值,交易管理器就会停止接受新的交易签名或执行请求。

尽管之前的机制在某些情况下有效,但在多个方面表现不足。例如,它经常导致部分交易被拒绝以及由于验证节点之间的不一致性导致对象锁定。此外,它无法准确估算依赖交易序列的执行时间,导致处理效率低下和潜在的阻塞。当某个对象阻塞时,之前的解决方案会拒绝所有新交易,直到当前交易执行完毕,并且无法通过gas费用来优先处理交易。

阻塞控制的新方法

新的共识处理器设计引入了更精细的方式来管理热门共享对象之间的执行依赖关系,包含两个新功能:

  1. 推迟交易的能力:共识处理器现在可以将交易推迟到未来的共识提交中,更有效地管理检查点中的执行依赖关系。
  2. 主动取消交易:验证节点现在可以主动取消推迟过多次的交易。一旦取消,交易仍会被处理,但执行引擎会立即停止并释放被锁定的对象,快速返回取消错误给客户端。

共识处理器对交易进行排序和管理,该图使用彩色圆圈表示具有不同gas费用的交易。

当共识处理器收到共识提交时,它首先将提交中的交易与任何先前被推迟的交易合并,并按gas价格排序。然后,它逐一检查每笔交易,创建一个基于对象的执行依赖图,图片概述了检查点执行所需的关键步骤。这个过程确保了交易根据成本的顺序高效处理。

为了将交易添加到依赖图中,处理器会评估交易中涉及的所有共享对象。它会识别出队列最长的对象作为交易执行的起点,并将所有涉及对象的队列对齐到这一最大长度。交易的成本随后会被添加到每个对象的队列中,更新执行顺序。

依赖图根据最长队列为每个对象提供执行延迟的估算,这也表明了整个共识提交的总体延迟。每个共识提交中的队列长度有一个最大限制。如果交易超过了这个限制,它将被推迟到未来的提交中。如果多次推迟并超过一定阈值,交易将被取消并从处理流程中移除。这通常发生在交易目标是高度需求的对象,但提供的gas费用过低而无法竞争时。

新设计通过监控执行依赖关系并限制每个共识提交中涉及高需求共享对象的交易,显著提高了效率,从而保护了检查点执行。重要的是,不涉及这些高需求对象的交易不会受到这些限制的影响。

解决以往的挑战

如前所述,之前的系统在跟踪每个对象的交易队列时表现不佳,导致了效率低下。共享对象阻塞控制机制不仅解决了这些问题,还通过简化流程引入了显著的改进。新方法确保了所有验证节点在决定执行、推迟或取消交易时的一致性。这一变化有效地消除了与锁定对象相关的问题,并允许快速释放由低优先级交易占用的对象。

阻塞控制机制还通过在每个共识提交中跟踪完整的交易依赖图来提高准确性。这意味着它会仔细记录交易的顺序和依赖关系,从而更清晰地了解执行检查点所需的实际时间。通过这样做,它解决了之前被忽略的复杂性和低效问题。

此外,通过推迟交易并在后续的共识提交中与新的交易结合,新方法支持了本地费用市场。该设置有利于gas价格较高的交易,确保它们在繁忙时期有更大的处理机会。用户可以为交易的优先处理付费,这对DeFi活动尤其有用。

最后,新方法在热点共享对象工作负载中通常能在检查点执行性能下降之前实现更好的表现。这一改进源于验证节点的一致集体决策,带来了更高效的交易处理和整体网络吞吐量的增加。这种一致性确保了系统在性能问题出现之前能够处理更多交易。

Sui开辟新路径

共享对象阻塞控制的实施不仅是技术升级,也是战略性增强,大大提升了Sui的扩展性和效率。随着这一基础的建立,Sui上的用户和应用将享受更高效和更可靠的交易处理,这一优化为部署更复杂和响应更快的应用程序提供了跳板,进一步扩展了生态的能力。


关于Sui Network

Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有横向可扩展性,让开发者能够快速且低成本支持广泛的应用开发。获取更多信息:https://linktr.ee/sui_apac

官网|Twitter|Discord|英文电报群|中文电报群


http://www.ppmy.cn/devtools/117065.html

相关文章

大数据新视界 --大数据大厂之探索ES:大数据时代的高效搜索引擎实战攻略

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24 1. Enriching Datasets with Demographics through Large Language Models: What’s in a Name? K AlNuaimi, G Marti, M Ravaut, A AlKetbi, A Henschel… - arXiv preprint arXiv …, 2024 通过大型语言…

ARCGIS PRO SDK MapProjectItem 地图项目类

一、获取工程中的所有地图 Dim projectMaps As IEnumerable(Of MapProjectItem) Project.Current.GetItems(Of MapProjectItem)() 二、从项目中删除地图 Dim mapProjItem Project.Current.GetItems(Of MapProjectItem)().FirstOrDefault(Function(mpi) mpi.Name "需…

【计算机网络 - 基础问题】每日 3 题(二十一)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…

Python 学习之虚拟环境

一、为什么需要虚拟环境 到目前位置我们所有的第三方包安装都是直接通过 pip install xx 的方式进行安装的,这样安装会将那个包安装到你的系统级的 python 环境中。但是这样有一个问题,就是如果你现在 Diango 1.10.x写了个网站,然后你的领导…

鸿蒙开发(HarmonyOS)组件化浅谈

众所周知,现在组件化在移动开发中是很常见的,那么组件化有哪些好处: 1. 提高代码复用性:组件化允许将应用程序的不同功能模块化,使得这些模块可以在不同的项目中重复使用,从而提高开发效率并减少重复工作。…

卷积神经网络-最优模型

文章目录 一、关键步骤1. 定义性能评估指标2. 设置保存逻辑3. 保存最佳模型4.使用最优模型 二、代码运用1. 保存模型参数(state_dict)2. 保存完整的模型3.使用模型参数4.读取完整模型的方法 三、保存模型优缺点1.优点2.缺点 在卷积神经网络(C…

java 获取集合a比集合b多出来的对象元素

public class OrderListEntity {/*** deprecated 对象集合的处理* param aData 集合a* param bData 集合b* return 返回集合a比集合b多出来的部分, 通过id判断*/public static List<OrderListEntity> AHasMoreThanBData(List<OrderListEntity> aData, List<Ord…