MOVE语言首创GAS机制:链上资源消耗计算详解

robot
摘要生成中

MOVE语言首个GAS机制设计:链上GAS消耗计算详解

10月14日,一项重要的区块链技术突破被公布。这是MOVE语言首次设计GAS机制,被官方称为"一场冒险"。该机制定义了执行和存储链上交易所需的计算和存储资源量的抽象计算方法,用于计算执行交易期间的GAS消耗。

设计流程

为了有效执行,设计团队遵循了以下流程:

  1. 确定设计原则
  2. 制定评估框架,确定每项操作的价格
  3. 为MOVE建立GAS计量系统和安全GAS代数
  4. 将上游GAS框架导入链上
  5. 使GAS框架具有存储意识
  6. 进一步优化GAS方案

设计原则

主要原则包括:

  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计划表构建

1. 基本配置

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

2. 交易规模

大多数交易规模在千字节级别,但发布MOVE模块可达数千字节。目前交易规模上限设为64KB,在规模和可访问性间取得平衡。

3. 最大GAS单位

定义单笔交易可执行的最大操作量,设为1,000,000。即使最大框架升级也仅使用不到90%。

4. 执行成本评估

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

5. 存储成本

考虑存储设备带宽、IOPS容量和永久占用成本,设计存储GAS计划。基本公式为:

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

读取、创建和写入操作

  • 读取:根据磁盘IOPS和带宽容量校准
  • 创建:成本最高,根据参考磁盘空间校准
  • 写入:对更新项字节收取与创建相同费用

定义了6个GAS参数构成总费用:

  • per_item_read
  • per_byte_read
  • per_item_create
  • per_byte_create
  • per_item_write
  • per_byte_write

稳定的GAS单位成本

固定GAS单位成本有助于保持GAS计划稳定。团队以约3位数精度表示GAS单位,如转账交易成本约700个GAS单位。

社区参与

作为社区项目,成员可以:

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

GAS成本调整

GAS计划作为链上配置存储,可通过治理提案更改。设计为可扩展,允许升级。复杂变更需更新节点软件并获大量采用,最后通过治理提案批准。

未来工作

作为MOVE首个可行GAS框架,未来工作包括:

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

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

MOVE2.53%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
幸运哈希值vip
· 3小时前
可算有gas了 Sui的gas都给move干烂了
回复0
BlockchainTherapistvip
· 3小时前
move第一战啊这 有点牛
回复0
DegenDreamervip
· 3小时前
不愧是move 稳啊
回复0
静默看客vip
· 3小时前
move这块我懂点
回复0
GateUser-74b10196vip
· 3小时前
苏神感觉这波又要起飞了
回复0
闪电清算人vip
· 3小时前
gas费真的降不下来?
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)