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. ROS学习笔记—-- catkin
  2. python3 sys.stdin.readline input 区别
  3. python中类方法与实例方法的区别-Python实例方法、类方法、静态方法的区别与作用详解...
  4. java web三:反射
  5. 密码找回功能可能存在的问题
  6. mugen4g补丁如何使用_如何搜索下载游戏
  7. 预编译指令与相关宏小结
  8. CSS常用的选择器和优先级的权重问题
  9. 飞鸽传书整个逻辑盲写,不做测试
  10. 利用httponly提升应用程序安全性
  11. 带你换个角度理解图卷积网络
  12. MYSQL:Error Code: 1786 Statement violates GTID consistency: CREATE TABLE ... SELECT.
  13. 【Python笔记】使用 re 模块实现正则表达式操作
  14. Blackman 窗函数
  15. 103页PPT带你从浅到深了解什么是PMP项目管理(全)
  16. 【详解】MD5加密真的安全吗?不安全有什么解决办法?
  17. lamp兄弟连 mysql_LAMP兄弟连原创视频教程(笔记五--文件上传下载,mysqli对象,session,cookie,date函数)...
  18. JAVA pdf中插入自定义图片
  19. 常用benchmark小结
  20. html 透明层禁止点击事件,(转)CSS3之pointer-events(屏蔽鼠标事件)属性说明

热门文章

  1. [Webpy]在webpy中使用jinja2模板
  2. dnf压爆服务器挑战网站,dnf手游压爆服务器挑战在哪里?地下城与勇士压爆挑战体验时间介绍[多图]...
  3. 萧瑜 第一次博客随笔
  4. 基于FPGA的深度卷积神经网络的加速器设计
  5. 【论文随笔2】COALA: Co-Aligned Autoencoders for Learning Semantically Enriched Audio Representations
  6. Python_高级特性
  7. 休闲娱乐 - 夏日自制饮料
  8. Android图表年度最强总结,一篇文章从入门到精通!
  9. Dubbo配置加载问题
  10. opencv | A02 播放本地视频 调用摄像头