# 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计划表构建1. 基本配置:包括交易大小和最大GAS单位等与单个操作无关的组成部分2. 交易规模:最初设为32KB,后根据社区反馈调整为64KB3. 最大GAS单位:定义单笔交易最多可执行的操作量,设为1,000,0004. 执行成本:通过基准框架和分析工具评估Move指令和原生函数的相对成本5. 存储成本:考虑存储设备带宽、IOPS容量和永久磁盘占用成本存储GAS费 = 项目费 + (字节费 × 字节数)### 读取、创建和写入操作- 读取:最常见操作,费用最低- 创建:在状态存储中添加新项,费用最高- 写入:更新现有项,字节费用与创建相同每笔交易中,即使多次读/写同一资源,也只收取一次费用。### 稳定的GAS单位成本固定的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设计:链上资源消耗计算方案解析
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单位等与单个操作无关的组成部分
交易规模:最初设为32KB,后根据社区反馈调整为64KB
最大GAS单位:定义单笔交易最多可执行的操作量,设为1,000,000
执行成本:通过基准框架和分析工具评估Move指令和原生函数的相对成本
存储成本:考虑存储设备带宽、IOPS容量和永久磁盘占用成本
存储GAS费 = 项目费 + (字节费 × 字节数)
读取、创建和写入操作
每笔交易中,即使多次读/写同一资源,也只收取一次费用。
稳定的GAS单位成本
固定的GAS单位成本有助于保持GAS计划稳定,与代币市场价值脱钩。项目团队以约3位数精度表示GAS单位,如转账交易成本约为700个GAS单位。
社区参与
项目鼓励社区成员:
GAS成本调整
GAS计划作为链上配置存储,可通过治理提案进行更改。复杂的GAS公式更新需要更新节点软件并获得广泛采用,最后通过治理提案批准。
未来工作方向
作为Move语言的首个GAS设计,该项目为未来的工作奠定了基础,期待通过持续改进和社区参与,进一步优化区块链的GAS机制。