MOVE语言创新:解析Aptos链Gas消耗计算方法

robot
摘要生成中

MOVE语言首个Gas设计:Aptos链上的Gas消耗计算方法

Gas计量是Aptos和许多其他区块链的基本概念,它定义了执行和存储链上交易所需的计算和存储资源量的抽象计算。Gas计划确定了链上所有执行消耗的成本,用于计算执行交易期间使用的Gas花费。

流程

为了有效执行,Aptos链上的流程包括:

  1. 定义原则
  2. 准备评估框架,确定每个执行的价格
  3. 为Move建立Gas计量系统和安全Gas代数
  4. 将上游Gas框架导入Aptos
  5. 使Gas框架具有存储意识
  6. 进一步细化Gas计划

原则

定义的原则包括:

  1. 操作成本应与网络可用资源直接相关。技术和流程改进后,Gas所需成本应随之降低。
  2. Gas应由链上治理设置,并可无缝配置。
  3. Gas可防止对网络固定资源集的DoS攻击,可能需要根据网络情况通过治理建议快速调整。
  4. Aptos的Gas价格反映了加速增长和保持区块链普及性的愿望。
  5. 鼓励在设计中做出优秀选择,如优先考虑安全性、模块化、断言等。

Gas计算

用户提交交易时,需要指定两个数量:

  • 最大Gas数量:以Gas单位计量,用户愿意为执行交易花费的最大Gas单位数。
  • Gas单价:以每单位Gas的八进制计算,1八进制=0.00000001 APT。

执行过程中,交易将被收取:

  1. 固定成本:固定基数加上大额交易的额外费用
  2. 执行成本:用于执行Move指令
  3. 读取成本:用于从持久存储读取数据
  4. 写入成本:用于将数据写入持久存储

最终交易费用可用消耗的Gas总量乘以Gas单价计算。例如,如果一笔交易消耗670个Gas单位,用户指定的Gas单价为每单位100 Octa,则最终交易费用为670 * 100 = 67000 Octa = 0.00067 APT。

如果交易执行中耗尽Gas,发送方将根据最大Gas量收取费用,该交易所做的所有更改都将被恢复。

Gas计划表建立

基本配置

Gas计划中有几个组成部分与单个操作细节无关,包括交易大小和最大Gas单位。

交易规模

大多数交易规模可能在千字节量级。Move模块发布可能有几千字节,Aptos框架约100 KB。用户模块大小通常在4KB到40KB之间。最初交易规模设为32KB,后根据社区反应调整为64KB。

非常大规模的交易会导致网络带宽成本提高,可能对性能产生负面影响。内存池会被鼓励忽略规模更大的交易,因此需在最大规模交易大小和可访问性之间取得平衡。

最大Gas单位

Gas计划中的最大Gas单位定义了一个交易最多可执行多少操作。这与用户在交易中指定的最大Gas量不同。设置过高可能导致对区块链产生负面性能影响。即使进行最大框架升级,也不到Gas计划最大Gas单位(设定为1,000,000)的90%。

执行

为评估执行成本,构建了基准框架并使用Valgrind分析Move VM。输出是一组带注释的源代码,显示每行代码产生的机器指令数量。

基于分析结果,估算了所有Move指令和本机函数的相对成本。注意到与内联函数存在一些问题,通过将数字相加解决。

考虑增强系统稳健性和安全性的编码范例,得出最终执行的机器指令数量。这个数字与存储和最大Gas单位进行权衡,确定Gas计划中的当前值。

存储

Aptos节点访问存储在持久存储中的账本状态项或数据时,会向存储设备发出读取或写入。每秒数据访问总数取决于存储设备的带宽和IOPS容量。数据访问是用户在系统负载时通过费用市场竞争的瞬时稀缺性。写入数据的磁盘占用成本在链上是永久的。

访问和存储任何状态项都会产生与验证整个区块链状态的数据结构(水母默克尔树)相关的成本。此成本与不同状态项的基数有关。还有一个成本与每个项目的大小成正比。

存储Gas费 = item_fee + (byte_fee * bytes)

读、创建和写

对状态项的访问分为读、创建或写三种类型。访问按项目费和字节费收费。

读操作最常见,只受瞬时资源稀缺限制。读取费用根据磁盘IOPS和参考硬件规范的带宽容量校准。

创建是在状态存储中添加新项,增加了身份验证数据结构,成本最高。创建费用根据网络拥有的参考磁盘空间校准。

写操作更新状态存储中的现有项,不会在身份验证数据结构中产生额外开销。对更新项中的字节收取与创建时相同的费用。

存储相关成本基于每笔交易评估:即使多次读取/写入相同资源,也只需支付一次费用。

基于上述考虑,定义了6个Gas参数:

  • per_item_read:根据IOPs校正
  • per_byte_read:根据实际带宽校准
  • per_item_create:根据目标总项目校准
  • per_byte_create:根据目标总大小校准
  • per_item_write:与per_item_read相同
  • per_byte_write:与per_byte_create相同

稳定的Gas单位成本

每个操作和交易本身需要相对于存储和执行成本的固定单位成本。固定Gas单位成本有助于保持Gas计划不变,与APT的自由市场价值脱钩。Aptos团队以约3位数精度表示Gas单位。转账交易成本约为700个Gas单位。

社区参与

Aptos社区成员可以:

  1. 找出Gas计划不合理之处
  2. 表达对Gas计划的担忧,参与社区讨论
  3. 就Aptos上与Gas相关的治理提案进行投票

Gas成本调整

Gas计划作为链上配置存储,可通过Aptos治理提案更改,并可无缝添加新指令或原生功能。Gas计划设计为可扩展,允许通过治理提案升级。随着Aptos和社区改进Move VM并纳入用户反馈,Gas参数可随时间调整。

复杂的Gas公式更改需要更新节点软件,并以不同Gas特征标志区分。需发布节点软件并大量采用,最后发布并批准治理提案使用新Gas版本。

未来工作

作为Move的首个可行Gas框架,未来工作方向包括:

  1. 降低执行成本:改进编译器和虚拟机效率
  2. 多维Gas计算:允许用户为执行和存储指定单独预算
  3. 缓解臃肿状态:探索每个项目TTL概念,在TTL到期时删除未访问的状态项目
MOVE-6.29%
APT-5.68%
GAS-10.21%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 10
  • 转发
  • 分享
评论
0/400
FlashLoanKingvip
· 07-15 09:55
链下套利也不错啊
回复0
地板价观察员vip
· 07-15 04:26
gas还不如涨到天花板呢
回复0
夹子检测者vip
· 07-14 16:16
有点麻烦 下个月优化再看
回复0
跳跃的蜡烛线vip
· 07-12 16:24
真没感觉move有啥特别的~
回复0
BlockDetectivevip
· 07-12 16:22
move是热度王
回复0
VitaliksTwinvip
· 07-12 16:21
move卷麻了
回复0
Crypto笑话王vip
· 07-12 16:16
又双叒又要大出血了,gas费还想玩花样是吧
回复0
Crypto段子手vip
· 07-12 16:07
又一个割韭菜的新借口
回复0
交易,随时随地
qrCode
扫码下载 Gate App
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)