# MOVE语言首创GAS设计:链上资源消耗如何计量?GAS计量是许多区块链的基本概念,它定义了执行和存储链上交易所需的计算和存储资源量的抽象计算。GAS计划将链上所有执行所消耗的成本确定,用于计算执行交易期间使用的GAS花费。## 流程为了有效执行,链上流程如下:1. 定义原则2. 准备评估框架,确定每个执行的价格3. 为Move建立GAS计量系统和安全GAS代数4. 将上游GAS框架导入5. 使GAS框架具有存储意识6. 进一步细化GAS计划## 原则定义的原则包括:1. 操作成本应与网络可用资源直接相关,技术改进后GAS成本应降低2. GAS由链上治理设置,可无缝配置3. GAS可防止DoS攻击,可根据网络情况快速调整4. GAS价格反映加速增长和保持区块链可及性的愿景5. 鼓励在设计中做出好的选择,如优先考虑安全性、模块化等## 计算GAS用户提交交易时需指定两个数量:- 最大GAS数量:用户愿意为执行交易花费的最大GAS单位数- GAS单价:用户愿意支付的每单位GAS价格执行过程中,交易将被收取:1. 固定成本2. 执行成本3. 读取成本4. 写入成本最终交易费用 = 消耗的GAS总量 * GAS单价如果交易执行中耗尽GAS,发送方将根据最大GAS量收费,所有更改将被恢复。## 建立GAS计划表### 基本配置GAS计划包含与单个操作无关的几个组成部分,如交易大小和最大GAS单位。### 交易规模大多数交易规模在KB量级,Move模块发布可达几KB。最初交易规模设为32KB,后根据社区反馈调整为64KB。非常大规模交易会增加网络带宽成本,可能影响性能。设置在最大规模和可访问性间取得平衡。### 最大GAS单位GAS计划中最大GAS单位定义单笔交易最多可执行的操作量。设置过高可能导致负面性能影响。经验表明,即使最大框架升级也不到最大GAS单位(1,000,000)的90%。### 执行通过基准框架和分析工具评估执行成本,估算Move指令和原生函数相对成本。考虑系统稳健性和安全性,得出最终执行机器指令数量。### 存储每次访问账本状态项或数据时都会向存储设备发出读写。数据访问总数取决于存储设备带宽和IOPS容量。存储GAS计划设计考虑这些成本。访问和存储状态项产生与验证区块链状态数据结构相关成本。费用计算公式:存储GAS费 = 项目费 + (字节费 * 字节数)### 读、创建和写状态项访问分为读、创建、写三种类型:- 读操作最常见,根据磁盘IOPS和带宽容量校准费用- 创建操作在状态存储中添加新项,成本最高- 写操作更新现有项,对更新项中的字节收取与创建相同费用存储相关成本基于每笔交易评估,多次读写同一资源只收取一次费用。### 稳定的GAS单位成本每个操作和交易本身需要相对固定的单位成本。固定GAS单位成本有助于保持GAS计划稳定,与市场价值脱钩。选择约3位数精度表示GAS单位,如转账交易成本约700个GAS单位。## 社区参与作为社区项目,成员可以:1. 找出GAS计划不合理之处2. 表达担忧并参与讨论3. 对相关治理提案投票## GAS成本调整GAS计划作为链上配置存储,可通过治理提案更改。设计为可扩展,允许升级。随时间推移,GAS参数可根据反馈调整。复杂更改需更新节点软件,大量采用后通过治理提案批准使用新版本。## 未来工作这是Move首个可行GAS框架,为今后工作铺平道路:1. 降低执行成本2. 实现多维GAS计算,允许单独指定执行和存储预算3. 缓解臃肿状态,探索每个项目TTL概念
MOVE语言开创性GAS设计:链上资源消耗计量解析
MOVE语言首创GAS设计:链上资源消耗如何计量?
GAS计量是许多区块链的基本概念,它定义了执行和存储链上交易所需的计算和存储资源量的抽象计算。GAS计划将链上所有执行所消耗的成本确定,用于计算执行交易期间使用的GAS花费。
流程
为了有效执行,链上流程如下:
原则
定义的原则包括:
计算GAS
用户提交交易时需指定两个数量:
执行过程中,交易将被收取:
最终交易费用 = 消耗的GAS总量 * GAS单价
如果交易执行中耗尽GAS,发送方将根据最大GAS量收费,所有更改将被恢复。
建立GAS计划表
基本配置
GAS计划包含与单个操作无关的几个组成部分,如交易大小和最大GAS单位。
交易规模
大多数交易规模在KB量级,Move模块发布可达几KB。最初交易规模设为32KB,后根据社区反馈调整为64KB。
非常大规模交易会增加网络带宽成本,可能影响性能。设置在最大规模和可访问性间取得平衡。
最大GAS单位
GAS计划中最大GAS单位定义单笔交易最多可执行的操作量。设置过高可能导致负面性能影响。经验表明,即使最大框架升级也不到最大GAS单位(1,000,000)的90%。
执行
通过基准框架和分析工具评估执行成本,估算Move指令和原生函数相对成本。考虑系统稳健性和安全性,得出最终执行机器指令数量。
存储
每次访问账本状态项或数据时都会向存储设备发出读写。数据访问总数取决于存储设备带宽和IOPS容量。存储GAS计划设计考虑这些成本。
访问和存储状态项产生与验证区块链状态数据结构相关成本。费用计算公式:
存储GAS费 = 项目费 + (字节费 * 字节数)
读、创建和写
状态项访问分为读、创建、写三种类型:
存储相关成本基于每笔交易评估,多次读写同一资源只收取一次费用。
稳定的GAS单位成本
每个操作和交易本身需要相对固定的单位成本。固定GAS单位成本有助于保持GAS计划稳定,与市场价值脱钩。选择约3位数精度表示GAS单位,如转账交易成本约700个GAS单位。
社区参与
作为社区项目,成员可以:
GAS成本调整
GAS计划作为链上配置存储,可通过治理提案更改。设计为可扩展,允许升级。随时间推移,GAS参数可根据反馈调整。
复杂更改需更新节点软件,大量采用后通过治理提案批准使用新版本。
未来工作
这是Move首个可行GAS框架,为今后工作铺平道路: