# 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八进制=0.00000001原生代币交易执行过程中会收取:1. 固定成本2. 执行成本(执行Move指令) 3. 读取成本(从持久存储读取数据)4. 写入成本(将数据写入持久存储)最终交易费用 = 消耗的GAS总量 × GAS单价例如,如果一笔交易消耗670个GAS单位,用户指定的GAS单价为每单位100 Octa,那么最终交易费用为670 × 100 = 67000 Octa = 0.00067原生代币。如果交易执行过程中耗尽GAS,发送方将按最大GAS量收费,且交易所做的所有更改将被撤销。## GAS计划表### 基本配置GAS计划包含一些与单个操作无关的组成部分,如交易大小和最大GAS单位。### 交易规模大多数交易规模在千字节级别,但Move模块发布可达几千字节。最初交易规模设为32KB,后根据社区反馈调整为64KB。非常大规模的交易会增加网络带宽成本,可能影响性能。内存池会倾向于忽略规模更大的交易,因此需在最大规模和可访问性之间取得平衡。### 最大GAS单位GAS计划中的最大GAS单位定义了单个交易可执行的最大操作量。设置过高可能对区块链性能产生负面影响。经测试,即使进行最大规模的框架升级,也不到最大GAS单位(设为1,000,000)的90%。### 执行成本评估通过构建基准框架并使用分析工具,团队估算了所有Move指令和本机函数的相对成本。考虑到系统稳健性和安全性,最终确定了执行的机器指令数量,并与存储和最大GAS单位进行权衡,得出当前GAS计划中的值。### 存储成本存储GAS费用考虑了数据访问的瞬时稀缺性和磁盘占用的永久成本。费用计算公式为:存储GAS费 = 项目费 + (字节费 × 字节数)对状态项的访问分为读、创建和写三种类型,各有不同的收费标准。读取费用基于磁盘IOPS和带宽容量校准,创建费用基于参考磁盘空间校准,写入费用则介于两者之间。需要注意的是,存储相关成本基于每笔交易评估,即使多次读/写同一资源,也只收取一次费用。## 稳定的GAS单位成本为保持GAS计划稳定并与原生代币市场价值脱钩,每个操作和交易本身都需要相对固定的单位成本。团队以约3位数精度表示GAS单位,例如转账交易成本约为700个GAS单位。## 社区参与作为社区项目,用户可以:1. 指出GAS计划中不合理之处2. 参与社区讨论,表达对GAS计划的担忧3. 对相关治理提案进行投票## GAS成本调整机制GAS计划作为链上配置存储,可通过治理提案进行更改。它被设计为可扩展的,允许通过治理提案升级。随着技术进步和社区反馈,GAS参数可能会随时间调整。复杂的GAS公式更改需要更新节点软件,并通过治理提案批准启用新版本。## 未来工作方向1. 降低执行成本:通过改进编译器和虚拟机效率2. 多维GAS计算:允许用户为执行和存储指定单独预算3. 缓解状态膨胀:探索每个项目TTL概念,在TTL到期时删除未访问的状态项目
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原生代币。
如果交易执行过程中耗尽GAS,发送方将按最大GAS量收费,且交易所做的所有更改将被撤销。
GAS计划表
基本配置
GAS计划包含一些与单个操作无关的组成部分,如交易大小和最大GAS单位。
交易规模
大多数交易规模在千字节级别,但Move模块发布可达几千字节。最初交易规模设为32KB,后根据社区反馈调整为64KB。
非常大规模的交易会增加网络带宽成本,可能影响性能。内存池会倾向于忽略规模更大的交易,因此需在最大规模和可访问性之间取得平衡。
最大GAS单位
GAS计划中的最大GAS单位定义了单个交易可执行的最大操作量。设置过高可能对区块链性能产生负面影响。经测试,即使进行最大规模的框架升级,也不到最大GAS单位(设为1,000,000)的90%。
执行成本评估
通过构建基准框架并使用分析工具,团队估算了所有Move指令和本机函数的相对成本。考虑到系统稳健性和安全性,最终确定了执行的机器指令数量,并与存储和最大GAS单位进行权衡,得出当前GAS计划中的值。
存储成本
存储GAS费用考虑了数据访问的瞬时稀缺性和磁盘占用的永久成本。费用计算公式为:
存储GAS费 = 项目费 + (字节费 × 字节数)
对状态项的访问分为读、创建和写三种类型,各有不同的收费标准。读取费用基于磁盘IOPS和带宽容量校准,创建费用基于参考磁盘空间校准,写入费用则介于两者之间。
需要注意的是,存储相关成本基于每笔交易评估,即使多次读/写同一资源,也只收取一次费用。
稳定的GAS单位成本
为保持GAS计划稳定并与原生代币市场价值脱钩,每个操作和交易本身都需要相对固定的单位成本。团队以约3位数精度表示GAS单位,例如转账交易成本约为700个GAS单位。
社区参与
作为社区项目,用户可以:
GAS成本调整机制
GAS计划作为链上配置存储,可通过治理提案进行更改。它被设计为可扩展的,允许通过治理提案升级。随着技术进步和社区反馈,GAS参数可能会随时间调整。
复杂的GAS公式更改需要更新节点软件,并通过治理提案批准启用新版本。
未来工作方向