Gas
Noun
在以太坊中,交易、执行智能合约,或是支付数据储存费用,都需要消耗 Gas(燃料)。Gas 是存在于以太坊虚拟机内部,作为计算工作量的计数。它一方面作为对矿工打包区块的奖励,另一方面,为恶意交易抬高门槛,维护以太坊网络正常运作。
Gas
在以太坊中,交易、执行智能合约,或是支付数据储存费用,都需要消耗 Gas(燃料)。
Gas介绍
Gas 是存在于以太坊虚拟机内部,作为计算工作量的计数。它一方面作为对矿工打包区块的奖励,另一方面,为恶意交易抬高门槛,维护以太坊网络正常运作。 Gas 是以太坊中的燃料,它保证了以太坊生态的运作。正如汽油对于汽车的作用, Gas 不可或缺。
Gas Price:是用户愿意为每个 Gas 支付的价格,一般单位为 Gwei 。1 ETH =1,000,000,000
Gas Limit:是用户愿意为执行某个操作或确认交易支付的最大 Gas 量。
Gas Used:是执行操作消耗的 Gas 总量
举个例子,这次以同样需要 Gas 的汽车为例。
某人驾车从 S 地到 P 地需要消耗 30L 汽油,从 P 地到 A 地需要 40L 汽油,从 A 地到 R 地需要 50L 汽油。火火驾车前往四地需要消耗 120L 汽油。
同样的,以太坊中每一步运算也都需要消耗 Gas 。不同的是汽车的油箱是汽车厂商设置的,油价也不是车主制定,而 Gas Price 和 Gas Limit 都是交易发送方自己设定的。
Gas Limit 设置过低
如果汽车油箱容量为 100L ,那么从 A 地前往 R 地的途中,汽车就会面临油耗用尽的困扰,加油的费用也不退还。
同样,如果 Gas Limit 设置过低,无法保证计算完整运行,系统将会提示“ out of gas ”,这笔交易依然被打包到区块中,交易金额被退回,交易费用作为奖励发放给打包这个区块的矿工。
Gas Limit 设置过高
既然 Gas Limit 设置过低会导致交易失败,那将 Gas Limit 无限调高,岂不是没有这个困扰?
正如交易有 Gas Limit ,区块也有 Gas Limit 。每个区块在打包的时候都会确定当前区块的 Gas Limit 总量,以此来确定单个区块所能打包的交易数量,所以矿工在打包每笔交易的时候都会判断当前的 Gas 量够不够打包当前交易。
例如现在有 3 笔交易, A 交易 Gas Limit 为 10 , B 交易为 20 , C 交易为 30 ,如果区块 Gas Limit 为 30 ,那么 A 交易和 B 交易将被打包。由于矿工有权力选择哪些交易被打包,因此另一名矿工选择将 C 交易打包进这个区块。但是如果将 ABC 交易同时打包, Gas Limit 达到 60 ,超过区块 Gas Limit ,这个区块会被网络拒绝。
Gas Price 的高低
矿工总是希望获得更多的挖矿奖励,在打包交易的同时,交易费用越高,越容易被打包。
交易费用 = GasPrice * GasUsed
因此,Gas Price 越高,矿工将会优先打包,交易会被更快确定;如果 Gas Price 设置过低,矿工的报酬降低,交易的确认时间将会延长。
Gas Limit 和 Gas Price 是什么?
ETH 与其他加密货币不同,其作用不仅限于支付还用维护网络,一枚 ETH 分为:Finney,Szabo,Gwei,Mwei,Kwei 和 Wei,其中Wei是最小的 ETH 单位,一个ETH 等于一千 Finney,一百万 Szabo,十亿Gwei和百万万亿 Wei 。
Gas由两个部分组成: 限制(Gas limit)和价格(Gas Price)。Gas Limit 是用户愿意为执行某个操作或确认交易支付的最大Gas量(最少21,000)。Gas Price 是 Gwei 的数量,用户愿意花费于每个 Gas 单位的价钱。
当进行每笔交易时,发送人设定Gas Limit 和Gas Price,将 Gas Limit*Gas Price ,就得到了ETH交易佣金的成本。
现在,1Gwei≈0.00000002 ETH,所以佣金最少为0.00000002*21000=0.00042ETH,通常情况下,交易设置的Gas limt 为50000-100000个,总费用为 0.001 ETH - 0.002 ETH。
设置 Gas limint 需要考虑的问题:
不同的操作会产生不同的 Gas 成本。Gas 用完时,矿工将停止执行。如果有剩余 Gas,将立即退还给发起交易的人员或智能合约创建者。
但是,如果用户设置的限制值太低,那么ta的交易被认为是无效的,并且会因为“Gas不足”错误而被取消,并且其中用于计算的 Gas 不会退到账户。所以无论交易是否通过,发送者总需要向矿工支付计算费用。
提高Gas Price是否会加快开采速度?
交易费用会交给挖矿的矿工。当矿工挖矿时,他们必须决定确认哪些交易。为了鼓励矿工在区块中确认你的交易,你可以设置一个足够高的 Gas Price,这样你就跳到了别人的前面,被优先确认交易。如果你的 Gas price 设置得过低,低于矿工的预期值,就会被忽视不予确认
如果你想少花一些交易费,就降低 Gas price,但是价格太低会影响交易的确认速度,适用于不紧急的交易。目前为止,确认交易使用 1 Gwei 需要大约30分钟,而用 40 Gwei 大约1-2分钟。
如果想以ETH、美元、欧元和人民币计算 Gas Limit 和交易时间等信息。