MOVE语言首创GAS机制:链上费用计算全解析

robot
摘要生成中

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. 操作成本应与网络可用资源直接相关,如CPU、内存、网络、存储I/O和空间使用等。随着技术和流程改进,GAS所需成本应随之降低。
  2. GAS应由链上治理设置,并可无缝配置。
  3. GAS可防止对网络固定资源的DoS攻击,可能需要根据网络情况通过治理建议迅速调整。
  4. GAS价格反映了加速增长和保持区块链普及性的愿景。
  5. 鼓励在设计中做出优质选择,如优先考虑安全性、模块化、断言等。

计算GAS

用户提交交易时,需在交易中指定两个数量:

  1. 最大GAS数量:以GAS单位计量,表示用户愿意为执行交易花费的最大GAS单位数。
  2. 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计划包含几个与单个操作细节无关的组成部分,如交易大小和最大GAS单位。

2. 交易规模

大多数交易规模在千字节量级。Move模块发布可能达到几千字节,而框架约为100 KB。用户模块大小通常在4KB到40KB之间。最初交易规模设置为32KB,后根据社区需求调整为64KB,以简化应用程序开发。

大规模交易会增加网络带宽成本并可能影响性能。为平衡最大规模交易的大小和可访问性,内存池可能会忽略规模更大的交易。

3. 最大GAS单位

GAS计划中的最大GAS单位定义了单个交易可执行的最大操作量。设置过高可能对区块链性能产生负面影响。即使进行最大的框架升级,仍不到GAS计划最大GAS单位(设定为1,000,000)的90%。

4. 执行

评估执行成本时,构建了基准框架并使用分析工具分析Move VM。通过分析得出所有Move指令和本机函数的相对成本估计。考虑增强系统稳健性和安全性的编码范例后,确定了最终执行的机器指令数量,并与存储和最大GAS单位进行权衡,得出GAS计划中的当前值。

5. 存储

访问存储在持久存储中的账本状态项或数据时,节点会向存储设备发出读取或写入。每秒数据访问总数取决于存储设备的带宽和IOPS容量。存储GAS计划设计考虑了这些成本。

访问和存储任何状态项都会产生与验证整个区块链状态的数据结构相关的成本。此成本与不同状态项的基数有关。还有一个成本与每个项目的大小成正比。

存储GAS费 = item_fee + (byte_fee * bytes)

读、创建和写

状态项访问分为读、创建或写三种类型。读操作最常见,仅受瞬时资源稀缺限制。创建操作在状态存储中添加新项,成本最高。写操作更新状态存储中的现有项。

基于上述考虑,定义了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计划不变,并与本地代币的市场价值脱钩。GAS单位以约3位数的精度表示,转账交易成本约为700个GAS单位。

社区参与

社区成员可以:

  1. 找出GAS计划不合理之处
  2. 表达对GAS计划的担忧,参与社区讨论
  3. 就与GAS相关的治理提案进行投票

GAS成本调整

GAS计划作为链上配置存储,可通过治理提案更改,并可无缝添加新指令或原生功能。GAS计划设计可扩展,允许通过治理提案升级。随着不断改进和纳入用户反馈,GAS参数可随时间调整。

复杂的GAS公式更改需更新节点软件,并为节点运营商大量采用。最后,必须发布并批准治理提案才能使用新的GAS版本。

未来工作

作为Move的首个可行GAS框架,该项目为今后工作铺平道路:

  1. 降低执行成本:改进编译器和虚拟机效率
  2. 多维GAS计算:允许用户为执行和存储指定单独预算
  3. 缓解臃肿状态:探索每个项目TTL概念,在TTL到期时删除未访问的状态项目
MOVE4.21%
GAS-4.49%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
ShibaMillionairen'tvip
· 07-24 00:05
啥费用不费用 就是韭菜交钱呗
回复0
Satoshi继承人vip
· 07-21 20:58
哼,MOVE的设计方案显然抄袭了以太坊黄皮书第127页
回复0
GasWastervip
· 07-21 01:29
又一天,又一次gas优化……现在就让我去死吧
查看原文回复0
瓦斯烧烤大师vip
· 07-21 01:26
移动支付都来了,还玩这个?
回复0
无常损失心理医生vip
· 07-21 01:12
又创新又烧钱
回复0
币圈鸡汤哥vip
· 07-21 01:09
又在谈费用问题 慌啥呢
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)