前言

简单的说就是手续费的一种变体,本质还是转账费用,只能在设计上,功能更复杂,用处更多。
即然是手续费,为什么不干脆一次性收取或者设定一个转账比例,不是更简单?
这个后面说。

Gas 说明

以太坊自称要成为世界计算机,但是这个计算机是烧Gas而不是用电,也不知是汽化天燃气还是液化天燃气。也有可能是以太坊想说,发电要用天燃气,所以Gas代表了消耗。

参数 作用
Gas(也称:GasUsed) EVM中的每个操作都指定了要消耗的gas量
Gas Price 每个操作的单价,就是说这笔交易,不只一处需要使用到Gas
Gas Limit 本次交易的Gas限额

所以一笔交易的手续费就是:

Transaction Fee = Gas * GasPrice

就是这么简单粗暴。

作用:资源限制手段,以及网络矿工奖励手段。

  1. 作为以太坊价格(具有波动性)和矿工对其工作的奖励之间的抽象层。
  2. 另一种是抵御拒绝服务攻击。

为了防止网络中的意外或恶意无限循环或其他计算浪费,每个交易的发起者需要设置他们愿意花费在gas上的金额的限制。
因此,gas系统阻止攻击者发送垃圾邮件交易,因为他们必须按比例支付他们消耗的计算,带宽和存储资源。

Gas 限制

每笔交易的gas是的上限的,也就是gasLimit,而每个区块只包含1250万单位的gas,超过这个上限后,交易无法打包,只能等待下一个区块再打包。

Gas - 操作次数

Gas 的操作每一步操作步数,都是固定的。也就是说每个合约在执行时,能执行多少操作完全就可以被计算出来的。

  1. 添加两个数字需要3个gas
  2. 计算Keccak256哈希值,需要30个gas+ 每256位数据被哈希6个gas
  3. 发送交易成本为21000 gas

ADD: 3
MUL: 5
SUB: 3

gas操作

GasPrice - 操作单价

gasprice的计量单位为:gwei,一个gwei为是1g个wei,即10^9 wei。
由于1 wei = 10^(-18) ETH,所以: 1 gwei = 10^9 wei = 10^(-9) ETH。

wei和Gwei 不一样

单位 说明
wei 1wei = 10^(-18) ETH
Gwet 1gwei = 10^9 wei,1gwei = 10^(-9) ETH

这笔费用去了哪里?

最终给了矿工。

gas 预测

1
eth.estimateGas({from:eth.accounts[0], to:eth.account[1], value: 10})

设置打包费用

如果站在矿工的角度上来说,怎么设置哪些需要打包哪些不需要打包。
Gas的收益最后归矿工所有。

参考链接

evm.codes