# MOVE语言首个GAS设计:探索链上GAS费用计算方法MOVE语言的上一版本原本计划在无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. 执行成本3. 读取成本4. 写入成本最终交易费用 = 消耗的GAS总量 × GAS单价例如,如果一笔交易消耗670个GAS单位,用户指定的GAS单价为每单位100 Octa,那么最终交易费用为670 × 100 = 67000 Octa = 0.00067原生代币。如果交易执行过程中耗尽GAS,发送方将按最大GAS量收费,且交易所做的所有更改将被撤销。### 建立GAS计划表1. 基本配置GAS计划包含与单个操作无关的几个组成部分,如交易大小和最大GAS单位。2. 交易规模大多数交易规模在千字节级别,但Move模块发布可达几千字节,该项目框架约100 KB。最初交易规模设为32KB,后根据社区需求调整为64KB,以简化应用开发。3. 最大GAS单位GAS计划中的最大GAS单位定义了单个交易可执行的最大操作数。设置过高可能对区块链性能产生负面影响。目前设定为1,000,000,即使最大框架升级也未超过90%。4. 执行通过基准框架和分析工具评估执行成本,估算所有Move指令和本机函数的相对成本。考虑系统稳健性和安全性,得出最终执行的机器指令数量,并与存储和最大GAS单位进行权衡。5. 存储存储GAS计划考虑了数据访问的瞬时稀缺性和永久磁盘占用成本。访问和存储状态项产生与验证整个区块链状态相关的成本。存储GAS费 = 项目费 + (字节费 × 字节数)### 读、创建和写状态项访问分为读、创建和写三种类型,各有不同的费用计算方式。读操作最常见,创建操作成本最高,写操作介于两者之间。基于这些考虑,定义了6个GAS参数:- per_item_read- per_byte_read- per_item_create- per_byte_create- per_item_write- per_byte_write### 稳定的GAS单位成本每个操作和交易本身需要相对于存储和执行成本的固定单位成本,这有助于保持GAS计划稳定。该项目团队以约3位数精度表示GAS单位,使转账交易成本约为700个GAS单位。### 社区参与作为社区项目,成员可以:1. 指出GAS计划中不合理之处2. 表达对GAS计划的担忧并参与讨论3. 就与GAS相关的治理提案进行投票### 如何调整GAS成本?GAS计划作为链上配置存储,可通过治理提案更改,并可无缝添加新指令或原生功能。GAS参数可随时间调整,以适应项目和社区的发展。某些复杂的GAS公式更改可能需要更新节点软件,并通过新的GAS特征标志区分。这需要节点运营商广泛采用新软件,并通过治理提案批准使用新版本。### 未来工作作为Move语言的首个可行GAS框架,该项目为未来工作铺平了道路:1. 降低执行成本2. 实现多维GAS计算,允许用户为执行和存储指定单独预算3. 缓解臃肿状态,探索每个项目TTL概念,在TTL到期时删除未访问的状态项目这个GAS设计为MOVE语言生态系统的发展提供了重要基础,未来还有很多优化和改进的空间。
MOVE语言首创GAS设计:链上费用计算全解析
MOVE语言首个GAS设计:探索链上GAS费用计算方法
MOVE语言的上一版本原本计划在无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模块发布可达几千字节,该项目框架约100 KB。最初交易规模设为32KB,后根据社区需求调整为64KB,以简化应用开发。
GAS计划中的最大GAS单位定义了单个交易可执行的最大操作数。设置过高可能对区块链性能产生负面影响。目前设定为1,000,000,即使最大框架升级也未超过90%。
通过基准框架和分析工具评估执行成本,估算所有Move指令和本机函数的相对成本。考虑系统稳健性和安全性,得出最终执行的机器指令数量,并与存储和最大GAS单位进行权衡。
存储GAS计划考虑了数据访问的瞬时稀缺性和永久磁盘占用成本。访问和存储状态项产生与验证整个区块链状态相关的成本。存储GAS费 = 项目费 + (字节费 × 字节数)
读、创建和写
状态项访问分为读、创建和写三种类型,各有不同的费用计算方式。读操作最常见,创建操作成本最高,写操作介于两者之间。
基于这些考虑,定义了6个GAS参数:
稳定的GAS单位成本
每个操作和交易本身需要相对于存储和执行成本的固定单位成本,这有助于保持GAS计划稳定。该项目团队以约3位数精度表示GAS单位,使转账交易成本约为700个GAS单位。
社区参与
作为社区项目,成员可以:
如何调整GAS成本?
GAS计划作为链上配置存储,可通过治理提案更改,并可无缝添加新指令或原生功能。GAS参数可随时间调整,以适应项目和社区的发展。
某些复杂的GAS公式更改可能需要更新节点软件,并通过新的GAS特征标志区分。这需要节点运营商广泛采用新软件,并通过治理提案批准使用新版本。
未来工作
作为Move语言的首个可行GAS框架,该项目为未来工作铺平了道路:
这个GAS设计为MOVE语言生态系统的发展提供了重要基础,未来还有很多优化和改进的空间。