# 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用户提交交易时需指定两个数量:- 最大GAS数量:用户愿意花费的最大GAS单位数- GAS单价:用户愿意支付的每单位GAS价格执行过程中,交易将被收取: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. 交易规模 最初设为32KB,后根据社区反馈调整为64KB。过大的交易可能影响网络性能,需在规模和可访问性间平衡。3. 最大GAS单位定义单笔交易最多可执行的操作量,设置过高可能影响性能。目前设为1,000,000,即使最大框架升级也不到90%。4. 执行通过基准框架和分析工具评估执行成本,估算Move指令和原生函数的相对成本。5. 存储考虑存储设备带宽、IOPS容量及永久占用成本,设计存储GAS计划。访问任何状态项都产生相关成本:存储GAS费 = 项目费 + (字节费 * 字节数)### 读、创建和写状态项访问分为读、创建和写三类:- 读操作最常见,根据磁盘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计划不变,与代币市场价值脱钩。选择约3位数精度表示GAS单位,如转账交易约700个GAS单位。### 社区参与社区成员可以:1. 指出GAS计划不合理之处2. 参与社区讨论3. 就相关治理提案投票### 如何调整GAS成本GAS计划作为链上配置存储,可通过治理提案更改。设计为可扩展,允许升级。复杂的GAS公式更改需更新节点软件并获得广泛采用。### 未来工作作为Move首个可行GAS框架,未来工作方向包括:1. 降低执行成本2. 多维GAS计算,允许单独指定执行和存储预算3. 缓解臃肿状态,探索状态项TTL概念这一GAS设计为今后工作奠定了基础,但仍需不断完善和改进。
MOVE语言首创GAS机制 链上计费方案全面解析
MOVE语言首个GAS设计:链上GAS计费方案解析
MOVE语言的最新版本原本计划在无GAS的前提下运行,因此并未为GAS机制做好准备。近期某区块链平台为其建立的GAS计划被称为"一场冒险",这是MOVE语言首个GAS设计。
该平台的GAS计划阐明了制定GAS的原则、流程、计算方法、后期调整以及接受社区建议等内容。
GAS计量是许多区块链的基本概念,它定义了执行和存储链上交易所需的计算和存储资源量的抽象计算。GAS计划确定链上所有执行消耗的成本,用于计算执行交易期间使用的GAS花费。
流程
为了有效执行,该平台的流程包括:
原则
该平台定义的原则包括:
计算GAS
用户提交交易时需指定两个数量:
执行过程中,交易将被收取:
最终交易费用 = 消耗的GAS总量 * GAS单价
例如,一笔交易消耗670个GAS单位,用户指定GAS单价为100 Octa/单位,则最终费用为670 * 100 = 67000 Octa = 0.00067 APT。
如果交易执行中耗尽GAS,发送方将按最大GAS量收费,且所有更改将被恢复。
建立GAS计划表
GAS计划包含几个与单个操作无关的组成部分,如交易大小和最大GAS单位。
最初设为32KB,后根据社区反馈调整为64KB。过大的交易可能影响网络性能,需在规模和可访问性间平衡。
定义单笔交易最多可执行的操作量,设置过高可能影响性能。目前设为1,000,000,即使最大框架升级也不到90%。
通过基准框架和分析工具评估执行成本,估算Move指令和原生函数的相对成本。
考虑存储设备带宽、IOPS容量及永久占用成本,设计存储GAS计划。访问任何状态项都产生相关成本:
存储GAS费 = 项目费 + (字节费 * 字节数)
读、创建和写
状态项访问分为读、创建和写三类:
定义了6个GAS参数构成总费用:
稳定的GAS单位成本
固定GAS单位成本有助于保持GAS计划不变,与代币市场价值脱钩。选择约3位数精度表示GAS单位,如转账交易约700个GAS单位。
社区参与
社区成员可以:
如何调整GAS成本
GAS计划作为链上配置存储,可通过治理提案更改。设计为可扩展,允许升级。复杂的GAS公式更改需更新节点软件并获得广泛采用。
未来工作
作为Move首个可行GAS框架,未来工作方向包括:
这一GAS设计为今后工作奠定了基础,但仍需不断完善和改进。