轻松读懂以太坊上的 Gas、GasLimit、GasPrice

  • NESTFANS
  • 更新于 2020-04-24 17:33
  • 阅读 7305

看懂每一笔以太坊交易!

Gas 是什么?

Gas 是存在于以太坊 EVM 内部,是计算工作量的计量单位。其作为以太坊网络中的燃料,为以太坊网络生态的发展运作提供动力。正如汽油对于汽车的作用, Gas 对于以太坊用户和开发者来说,必不可少。

Gas 一方面用于以太坊矿工打包区块的奖励;另一方面,其存在提高了恶意交易的门槛,可以更好的维护以太坊网络的正常运转

在以太坊系统底层,为每一个规定操作和合约方法都确定了 Gas 数量消耗,交易过程中的每个运算步骤都需要消耗 Gas 。比如:部署 NEST 预言机报价合约的用户需要支付一定的 Gas 费,去执行这笔交易,而 Gas 就是以太坊系统向用户收取的手续费。使用以太坊网络时必须设置消耗 Gas 的最大值,当 Gas 消耗完或者智能合约逻辑执行完,就会停止执行该合约。在以太坊系统内,Gas 需要换算成 ETH 来进行支付。

提示:无论用户发起的交易是否打包成功,都要支付 Gas 费用;这就好比您在开车回家的路上,开了一半没油了一样,即使没成功到家,但消耗的汽油确实已经消耗了,所以也要为之买单。

GasLimit 又是什么?

GasLimit 是以太坊用户愿意为成功执行某笔交易逻辑所支付的最大 Gas 数量

如果一笔交易的 GasLimit 设置过低,不能使交易逻辑完整执行,系统将会提示“out of gas”,交易会失败。这笔交易依然会被打包到区块中,交易中所携带的以太坊资产会自动退回,但 Gas 费用依旧会被收取,该费用作为奖励发放给打包这个区块的矿工。(经常部署智能合约的用户,应该碰到过这种情况)

如果该笔交易所使用的 Gas 数量小于或等于您所设置的 GasLimit,则会被打包成功。在这笔交易执行中所实际消耗的 Gas 总量为 GasUsed,没有使用完的 Gas 会退还到交易发起地址

请注意,我们这里所说的 GasLimit 指的是一笔交易的 Gas 上限。在整个以太坊发展过程中,也有一个 GasLimit 值比较重要也经常被提及,那就是一个区块的 GasLimit,即单个以太坊区块可执行交易的 Gas 总和上限。

每个区块在打包的时候都会确定当前区块内所有交易的 GasLimit 总量,以此来确定该区块能打包的交易数量,所以矿工在打包每笔交易的时候都会判断当前的 Gas 量够不够打包当前这笔交易。如果你将一个会超过当前区块GasLimit 的交易打包,会被以太坊网络拒绝,系统反馈为“below gas limit”。在经过以太坊 1.x 多次升级之后,目前一个以太坊区块的 GasLimit 值为 1200 万 Gas 。

Etherscan GasPrice 数据

单个 Gas 的价格:GasPrice

GasPrice 是用户愿意为每个 Gas 支付的价格,单位是 Gwei

1 ETH = 1,000,000,000 Gwei

以太坊矿工除了获得挖矿区块奖励外,总是希望区块里面包含更多的 Gas 费;所以,矿池在打包交易的时候,优先打包支付矿工费更多的交易

一笔交易的矿工费 = GasPrice * GasUsed

因此,GasPrice 设置的越高,交易越先被打包进区块,越先被确认;如果 GasPrice 设置的过低,交易会长时间处于 pending 状态,排队等待被矿工打包。所以,在以太坊网络发生拥堵的时候,如果我们想加快交易速度,就需要大幅度提高交易的 GasPrice 数值,让矿工优先打包我们的交易。

以上,是有关以太坊网络中 Gas、GasLimit、GasPrice 参数的定义和关系。如果你想更加直接的感知区块链技术和智能合约,那么赶快在以太坊链上部署自己的智能合约吧,或者加入 NEST 价格预言机网络,成为报价矿工,参与预言机报价

点赞 2
收藏 1
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
NESTFANS
NESTFANS
公众号:NESTFANS