Aptos推出MOVE语言首创GAS设计 详解链上费用计算机制

MOVE语言首创GAS设计:探索Aptos链上GAS费用计算机制

10月14日,Aptos Labs公布了Aptos的GAS计划。由于MOVE语言之前的版本并未考虑GAS机制,这次为Aptos建立的GAS计划是MOVE语言首个GAS设计,被称为"一次冒险"。

Aptos的GAS计划阐明了制定GAS的原则、流程、计算方法、后期调整以及社区参与等方面。

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

实施流程

Aptos链上的实施流程包括:

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

核心原则

Aptos定义的核心原则包括:

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

GAS计算方法

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

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

交易执行过程中将收取:

  1. 固定成本
  2. 执行成本
  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之间。目前交易规模设置为64KB,以平衡网络带宽成本和应用开发便利性。

最大GAS单位

GAS计划中的最大GAS单位定义了单个交易可执行的最大操作量,设置为1,000,000。过高设置可能导致性能问题,如无限循环。

执行成本评估

通过基准框架和Valgrind分析,估算Move指令和本机函数的相对成本。考虑系统稳健性和安全性,得出最终执行的机器指令数量,并与存储和最大GAS单位权衡确定当前值。

存储成本

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

访问类型包括读、创建和写,各有不同的计费标准:

  • 读操作:基于磁盘IOPS和带宽容量校准
  • 创建操作:基于网络参考磁盘空间校准,成本最高
  • 写操作:对更新项中的字节收取与创建相同的费用

定义了6个GAS参数:每项读取、每字节读取、每项创建、每字节创建、每项写入、每字节写入。

稳定的GAS单位成本

固定的GAS单位成本有助于保持GAS计划稳定,与APT市场价值脱钩。Aptos团队以约3位数精度表示GAS单位,如转账交易成本约700个GAS单位。

社区参与

Aptos鼓励社区成员:

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

GAS成本调整

GAS计划作为链上配置存储,可通过治理提案更改。设计为可扩展,允许升级和调整参数。复杂更改需更新节点软件并获得广泛采用。

未来展望

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

  1. 降低执行成本
  2. 实现多维GAS计算
  3. 缓解臃肿状态问题

团队正探索每个项目TTL概念,在TTL到期时自动删除未访问的状态项目。

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 3
  • 分享
评论
0/400
ApeShotFirstvip
· 5小时前
靠 aptos终于来劲了老铁 gas先炸一波
回复0
治理提案狂vip
· 5小时前
这么多人都搞过GAS了 轮到MOVE来冒险了?呵呵 新瓶装老酒罢了
回复0
夹心饼干哥vip
· 5小时前
就move这新手村玩意还敢吹?
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)