在发起 ETH 转账时,你会看到,Gas Price 和 Gas Limit,在区块链浏览器上还会找到 Gas Used 。这些有关 Gas 的术语都是什么意思呢?今天我们来将他们逐一击破!
1.Gas
在以太坊中,交易、执行智能合约,或是支付数据储存费用,都需要消耗 Gas(燃料)。
Gas 是存在于以太坊虚拟机内部,作为计算工作量的计数。它一方面作为对矿工打包区块的奖励,另一方面,为恶意交易抬高门槛,维护以太坊网络正常运作。 Gas 是以太坊中的燃料,它保证了以太坊生态的运作。正如汽油对于汽车的作用, Gas 不可或缺。
Gas Price:是用户愿意为每个 Gas 支付的价格,一般单位为 Gwei 。1 ETH = 1,000,000,000 Gwei
Gas Limit:是用户愿意为执行某个操作或确认交易支付的最大 Gas 量。
Gas Used:是执行操作消耗的 Gas 总量
老样子,我们举个例子,这次以同样需要 Gas 的汽车为例。
小星驾车从 S 地到 P 地需要消耗 30L 汽油,从 P 地到 A 地需要 40L 汽油,从 A 地到 R 地需要 50L 汽油。火火驾车前往四地需要消耗 120L 汽油。
同样的,以太坊中每一步运算也都需要消耗 Gas 。不同的是汽车的油箱是汽车厂商设置的,油价也不是车主制定,而 Gas Price 和 Gas Limit 都是交易发送方自己设定的。
2. Gas Limit 设置过低
如果小星的汽车油箱容量为 100L ,那么从 A 地前往 R 地的途中,小星就会面临油耗用尽的困扰,加油的费用也不退还。
同样,如果 Gas Limit 设置过低,无法保证计算完整运行,系统将会提示“ out of gas ”,这笔交易依然被打包到区块中,交易金额被退回,交易费用作为奖励发放给打包这个区块的矿工。
3. 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 ,这个区块会被网络拒绝。
4. Gas Price 的高低
矿工总是希望获得更多的挖矿奖励,在打包交易的同时,交易费用越高,越容易被打包。
交易费用 = GasPrice * GasUsed
因此,Gas Price 越高,矿工将会优先打包,交易会被更快确定;如果 Gas Price 设置过低,矿工的报酬降低,交易的确认时间将会延长。
这些复杂的术语小编终于理清楚了,你呢?