MOVE语言首创GAS设计:解析链上交易成本计算方案

robot
摘要生成中

MOVE语言首个GAS设计:链上GAS花费计算方案

MOVE语言的上一个版本原本计划在无GAS的前提下运行,因此并未为GAS计划做好准备。某区块链平台最近公布的GAS计划是MOVE语言的首个GAS设计,被官方称为"一场冒险"。

该GAS计划阐明了制定GAS的原则、流程、计算方法、后期调整以及对社区建议的开放态度。GAS计量是这个区块链和许多其他区块链的基本概念,它定义了执行和存储链上交易所需的计算和存储资源量的抽象计算。GAS计划确定了链上所有执行所消耗的成本,用于计算执行交易期间使用的GAS花费。

流程

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

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

原则

定义的原则包括:

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

计算GAS

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

  1. 最大gas量:以GAS单位计量,用户愿意为执行交易花费的最大GAS单位数
  2. 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计划表

  1. 基本配置 GAS计划包含与单个操作无关的组成部分,如交易大小和最大GAS单位。

  2. 交易规模 大多数交易规模在千字节级别,Move模块发布可达几千字节。最初设置为32KB,后根据社区需求调整为64KB。

  3. 最大GAS单位 定义交易最多可执行的操作量,设定为1,000,000,即使最大框架升级也不到90%。

  4. 执行 通过基准框架和Valgrind分析Move VM,估算Move指令和原生函数的相对成本。

  5. 存储 考虑存储设备带宽、IOPS容量和永久磁盘占用成本设计存储GAS计划。

读、创建和写

状态项访问分为读、创建和写三种类型,各有不同的费用计算方式。

稳定的GAS单位成本

固定的gas单位成本有助于保持gas计划稳定,与APT市场价值脱钩。

社区参与

社区成员可以:

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

GAS成本调整

GAS计划可通过治理提案更改,设计为可扩展,允许随时间调整参数。

未来工作

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

这是Move的第一个可行GAS框架,为未来工作奠定基础,包括改进编译器和虚拟机效率、实现更细粒度的GAS定价,以及探索解决链上数据删除动力不足的问题。

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
数据酸菜鱼vip
· 07-11 09:02
咋又整这些花里胡哨的
回复0
GateUser-40edb63bvip
· 07-10 14:08
计算方式好丰富啊嘞
回复0
Gas_Optimizervip
· 07-09 07:42
收费真心科学了
回复0
资深链上考古学家vip
· 07-09 07:24
又有新费用结构玩 有点意思
回复0
Rugman_Walkingvip
· 07-09 07:19
谁负责制定gas价格?
回复0
LiquidityHuntervip
· 07-09 07:18
设计够硬核 gas计算精确到byte
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)