https://ewasm.readthedocs.io/en/mkdocs/determining_wasm_gas_costs/

本文件目的是描述如何确定ewasm指令的gas成本。

每个WASM操作码都分配一个适当的Intel IA-32(x86)操作码(或者是一系列操作码)。这些操作码具有固定的周期计数(Intel称为latency)。我们正在从Haswell架构(家族:06,型号3C)中选择一个特定的CPU模型。这相当于2014年生产的CPU。

  1. 假设1:这个特定的haswell机构 CPU代表了以太坊节点计算能力的平均值。我们假设2.2 GHz是平均值。

据英特尔公司称,2.2GHz的时钟频率大致相当于每秒2 200 000 000个周期。

  1. 假设2: CPU 1秒钟执行相当于消耗1000万gas(即1gas相当于0.1 US)。

相当于每个周期消耗0.0045gas。(10 000 000/2 200 000 000)

从这个角度来看,截至2016年8月,平均每区块gas的限制约为470万。基于这一假设,我们允许智能合约执行时,在15秒阻塞时间中最高占用0.5秒,这也必须包括其他处理,例如POW和网络往返时间。

  1. 假设3:gas定价是定期调整的,至少每3年调整一次。

我们假设CPU在不断改进,以太坊节点的硬件每3年升级一次(与通常的更新频率相匹配)。

虽然本文档不提供升级程序,但是未来会有一个专门用于gas 定价的oracle智能合约,它可以用于计量智能合约。

Gas vs. Particles

目前的gas匹配算力方面没有提供准备的精度,而是假设运行的WASM操作码与EVM1操作码相比,处理能力显著降低。

理由:EVM1操作码操作256位数据,而WASM操作码被限制为64位,这将导致即使WASM在最佳情况下也需要执行四条指令才可以匹配EVM1。EVM1中的大多数算术指令花费3个GAS,而对于大多数64位WASM指令,这相当于0.75个GAS。

在内部,Ewasm 的gas测量值应记录在精度为4位小数的64位的变量中,。我们称之为particles。这只是一个小的实现细节,实际上我们使用整数,将其转为适当的gas。

当把particles数转换成以太坊 gas时,它必须除以10000,并且必须四舍五入。如果结果小于0,则应等于1。

Gas costs of individual instructions

Gas 消耗的公式为:<cycle count> * <gas per cycle>

Registers

Memory

Flow Control

Calls

Constants

32-bit Integer operators

64-bit Integer operators

Datatype conversions, truncations, reinterpretations, promotions, and demotions

Type-parametric operators.

Other

Notes about complex instructions

上面的一些指复杂的令很,不能一一映射到机器指令。对于它们,我们假设下面的算法,并根据组件成本计算气体。

i32.clz

32bit数,前n bit置0。

如果计算clz函数中单个指令的周期,则-6 if -6 then-2 return-5 and-5 eqz,-11 get_local,-11 set_local,-5 add,-5 shl

在最坏的情况下,总共有104.5个周期。

注意:CLZ是最常见的CPU上固有的命令,像Intel和ARM CPU。我们可以将其视为以太坊的固有命令,属于一个经济型的命令。

i32.ctz

32bit数,后n bit清零。

他和i32.clz相同的步骤,所以消耗是一样的。

注意:CTZ并不存在于ARM CPU上。ARM应被视为以太坊轻客户机的重要平台,因此在把他归属于基于复杂的类型的gas 消耗是明智的。

i32.popcnt

32bit数总1的个数。

i64.clz

同i32.clz

i64.ctz

同i32.ctz

i64.popcnt

同i32.popcnt

i64.extend_s/i32

把32bit扩大到64

select

三元运算符。

breaking out of the VM

任意暂停虚拟机并在ewasm合约和主机之间传输数据的指令都会暂时脱离虚拟机。

这些指令包括:- current_memory - grow_memory - call_indirect - call_import

EWASM Gas Costs——gas 计算相关推荐

  1. 以太币转帐速度_燃起来吧!一文带你读懂以太坊网络中的Gas、Gas Fee、Gas Price、Gas...

    曾用过区块链相关应用,不管是交易所.DApp 或是虚拟货币钱包的人,一定都听过矿工费(Gas Fee) 这个词.它是当你要在区块链网路发起一笔交易时,所要支付给矿工的一笔手续费.其实很容易理解,就好比 ...

  2. filecoin lotus 转账fil流程和gas计算

    文章目录 转账流程 和 gas计算 完整信息转账 签名 签名过程 消息广播 广播过程 自动计算gas发送交易 GAS 计算gasLimit,gasPreium,gasFeeCap GasEstimat ...

  3. 【译】Economics of Fees and Gas

    以太坊(和Qtum )的天然气基本上是智能合约中的一项作业成本. 不同的操作有不同的成本. 有些非常便宜,有些并不便宜. 这种机制基本上是阻止某些行为的一种方式,也可以使垃圾邮件和对区块链的攻击更加昂 ...

  4. [leetcode] Gas Station

    题目描述: There are N gas stations along a circular route, where the amount of gas at stationi is gas[i] ...

  5. 134. Gas Station 加油站

    在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升. 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升.你从其中的一个加 ...

  6. LeetCode 134.Gas Station 解题分析

    题目来源: https://leetcode.com/problems/gas-station/description/ 题目描述: There are N gas stations along a ...

  7. 弄懂gas费,读这篇就够了

    Q:gas是什么? gas是指在以太坊上执行操作所需的"燃料". 以太坊提供了虚拟机(EVM,Ethereum Virtual Machine),开发者可以在其上开发各种应用.EV ...

  8. 【区块链】走进web3的世界-gas费用

    气体单位用于衡量在以太坊上执行交易所需的计算量.由于每笔交易都需要一些计算资源来执行,因此需要一笔费用,通常称为Gas fee或Transaction fee . 汽油费以以太坊的本地货币--ethe ...

  9. unix 汇编语言 GAS

    .macrocomm Beginthe definition of a macro called comm, which takes noarguments. .macroplus1 p, p1 .m ...

最新文章

  1. python命令之m参数 局域网传输
  2. ORB-SLAM2代码/流程详解
  3. 一.js高级(4)-函数调用-this指向-其他参数
  4. 《代码大全》阅读笔记-18-表驱动法
  5. [补档]noip2019集训测试赛(十)
  6. Spring3.0_调试错误集
  7. ospybook安装包及安装过程
  8. 【统计分析】2 地理统计
  9. javaweb_表单设计
  10. 写作专用各种表情和符号,使你的文章更加美观有趣!❤️❤️❤️
  11. SpringBoot学期总结
  12. 零基础学习人工智能如何入门?
  13. Pre-Upgrade Utility---下载并运行Oracle数据库预升级实用程序 (文档 ID 1577379.1)
  14. 足球视频AI(一)——位置与平面坐标的转换
  15. 2021年12月9日|12月10日|
  16. 当uniapp遇上滚动穿透,巧妙的解决方式~
  17. WCS仓库(分拣)控制系统 案例介绍
  18. 15-英特尔驱动下载安装
  19. python 高空坠球_题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落 C程序:一球从100米高...
  20. 看懂这篇文章,你就懂了信息安全的密码学

热门文章

  1. Linux系统下SVN服务器的搭建过程详解 UpJ}s7+
  2. 洛谷P3899 [湖南集训]谈笑风生
  3. 一物一码(2): 一物一码之【红包那点事】
  4. php首字母改大写,php实现字符串首字母转换成大写的方法
  5. windows系统文件简述
  6. 小米蓝牙键盘怎么连接_小米2手机连接使用蓝牙键盘和蓝牙鼠标教程(原创)
  7. 单模连接器损耗与影响因素
  8. WiFi功耗管理(一)(概述)
  9. java webservice测试_搭建Soap webservice api接口测试案例系统
  10. 第7章 面向对象技术