Aptos链GAS设计解析: 首个MOVE语言GAS计划详解

robot
摘要生成中

MOVE语言首个GAS设计: Aptos链上GAS费用计算解析

MOVE语言的上一个版本原本计划在无GAS的前提下运行,因此并未为GAS设计做好准备。Aptos为其区块链建立的GAS计划被称为"一场冒险",这是MOVE语言的首个GAS设计。

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

流程

Aptos链上的GAS设计流程包括:

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

原则

Aptos的GAS设计原则包括:

  1. 操作成本与网络可用资源直接相关,技术改进后GAS成本应随之降低
  2. GAS由链上治理设置,可无缝配置
  3. GAS可防止对网络固定资源的DoS攻击,需要根据网络情况快速调整
  4. GAS价格反映了保持区块链人人可及的愿景
  5. 鼓励在设计中做出好的选择,如优先考虑安全性、模块化等

GAS计算

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

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

交易执行过程中将收取:

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

最终交易费用 = 消耗的GAS总量 * GAS单价

如果交易执行过程中耗尽GAS,发送方将按最大GAS量收费,该交易所做的所有更改将被恢复。

GAS计划表

基本配置

GAS计划中包括与单个操作无关的几个组成部分,如交易大小和最大GAS单位。

交易规模

最初设为32KB,后根据社区需求调整为64KB。非常大规模的交易会提高网络带宽成本,可能影响性能。

最大GAS单位

定义了单个交易最多可执行的操作数量,设置为1,000,000。这直接影响交易可执行时长,设置过高可能对区块链性能产生负面影响。

执行

通过基准框架和Valgrind分析Move VM,估算所有Move指令和本机函数的相对成本。考虑系统稳健性和安全性,得出最终执行的机器指令数量。

存储

考虑存储设备带宽、IOPS容量和磁盘占用成本,设计存储GAS计划。访问和存储任何状态项都会产生与验证整个区块链状态相关的成本。

存储GAS费 = 项目费 + (字节费 * 字节数)

读、创建和写

  • 读操作:最常见,根据磁盘IOPS和带宽容量校准费用
  • 创建操作:在状态存储中添加新项,成本最高
  • 写操作:更新现有项,对更新项中的字节收取与创建相同的费用

每笔交易只需为相同资源的多次读/写支付一次费用。

稳定的GAS单位成本

每个操作和交易本身需要相对于存储和执行成本的固定单位成本,有助于保持GAS计划稳定。Aptos以约3位数精度表示GAS单位,如转账交易成本约700个GAS单位。

社区参与

Aptos鼓励社区成员:

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

GAS成本调整

GAS计划作为链上配置存储,可通过治理提案更改。设计为可扩展,允许通过提案进行升级。某些复杂更改可能需要更新节点软件并获得大规模采用。

未来工作

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

  1. 降低执行成本
  2. 实现多维GAS计算,允许用户为执行和存储指定单独预算
  3. 缓解臃肿状态问题,探索每个项目TTL概念
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 3
  • 分享
评论
0/400
空投猎手vip
· 07-12 13:51
谨慎点 gas设计总是埋坑
回复0
币圈塔罗师vip
· 07-12 13:44
钱包瑟瑟发抖.jpg
回复0
德根赌徒vip
· 07-12 13:41
gas终于有点搞头了
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)