前言
简单的说就是手续费的一种变体,本质还是转账费用,只能在设计上,功能更复杂,用处更多。 即然是手续费,为什么不干脆一次性收取或者设定一个转账比例,不是更简单? 这个后面说。
Gas 说明
以太坊自称要成为世界计算机,但是这个计算机是烧Gas
而不是用电,也不知是汽化天燃气还是液化天燃气。也有可能是以太坊想说,发电要用天燃气,所以Gas代表了消耗。
参数 | 作用 |
---|---|
Gas(也称:GasUsed) | EVM中的每个操作都指定了要消耗的gas量 |
Gas Price | 每个操作的单价,就是说这笔交易,不只一处需要使用到Gas |
Gas Limit | 本次交易的Gas限额 |
所以一笔交易的手续费就是:
Transaction Fee = Gas * GasPrice
就是这么简单粗暴。
作用:资源限制手段,以及网络矿工奖励手段。
- 作为以太坊价格(具有波动性)和矿工对其工作的奖励之间的抽象层。
- 另一种是抵御拒绝服务攻击。
为了防止网络中的意外或恶意无限循环或其他计算浪费,每个交易的发起者需要设置他们愿意花费在gas上的金额的限制。 因此,gas系统阻止攻击者发送垃圾邮件交易,因为他们必须按比例支付他们消耗的计算,带宽和存储资源。
Gas 限制
每笔交易的gas
是的上限的,也就是gasLimit
,而每个区块只包含1250
万单位的gas,超过这个上限后,交易无法打包,只能等待下一个区块再打包。
Gas - 操作次数
Gas 的操作每一步操作步数,都是固定的。也就是说每个合约在执行时,能执行多少操作完全就可以被计算出来的。
- 添加两个数字需要
3
个gas - 计算Keccak256哈希值,需要
30
个gas 每256位数据被哈希6个gas - 发送交易成本为
21000
gas
ADD
: 3
MUL
: 5
SUB
: 3
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 预测
代码语言:javascript复制eth.estimateGas({from:eth.accounts[0], to:eth.account[1], value: 10})
设置打包费用
如果站在矿工的角度上来说,怎么设置哪些需要打包哪些不需要打包。
而Gas
的收益最后归矿工所有。