首页 > 其他 > 详细

以太坊中的gas、gas price、gas limit到底是什么

时间:2020-04-10 00:53:35      阅读:515      评论:0      收藏:0      [点我收藏+]

什么是gas

Gas 是存在于以太坊虚拟机内部,作为计算工作量的计数。它一方面作为对矿工打包区块的奖励,另一方面,为恶意交易抬高门槛,维护以太坊网络正常运作。 Gas 是以太坊中的燃料,它保证了以太坊生态的运作。正如汽油对于汽车的作用, Gas 不可或缺。以太坊协议规定交易或合约调用的每个运算步骤都需要收费。使用智能合约的用户必须支付一定费用去执行该合约,而gas就像手续费,使用智能合约必须设置消耗gas的最大值,当gas消耗完或者合约执行完,就会停止执行该合约。gas使用ETH来支付。

 注意:无论您执行的命令是成功还是失败,都需要支付计算费用,即使失败,节点也验证并执行了您的交易(计算),因此必须和成功执行支付一样的费用

 什么是gas limit

Gas Limit:是用户愿意为执行某个操作或确认交易支付的最大 Gas 量。

如果 Gas Limit 设置过低,无法保证计算完整运行,系统将会提示“ out of gas ”,这笔交易依然被打包到区块中,交易金额被退回,但费用依旧会被收取,交易费用作为奖励发放给打包这个区块的矿工。交易会失败。
如果该次操作所使用的gas数量小于或等于您所设置的gas limit,则会被执行,在执行中实际消耗的gas值总和叫gas used,没有使用完的gas会退还到原账号

正如交易有 Gas Limit ,区块也有 Gas Limit ,即单个区块允许的最多gas总量。每个区块在打包的时候都会确定当前区块的 Gas Limit 总量,以此来确定单个区块所能打包的交易数量,所以矿工在打包每笔交易的时候都会判断当前的 Gas 量够不够打包当前交易。如果您尝试将一个会使用超过当前区块gas limit的交易打包,则会被网络拒绝,会反馈“below gas limit”

例如现在有 3 笔交易, A 交易 Gas Limit 为 10 , B 交易为 20 , C 交易为 30 ,如果区块 Gas Limit 为 30 ,那么 A 交易和 B 交易将被打包。由于矿工有权力选择哪些交易被打包,因此另一名矿工选择将 C 交易打包进这个区块。但是如果将 ABC 交易同时打包, Gas Limit 达到 60 ,超过区块 Gas Limit ,这个区块会被网络拒绝。

 什么是gas price

Gas Price:是用户愿意为每个 Gas 支付的价格,一般单位为 Gwei 。1 ETH = 1,000,000,000 Gwei

矿工总是希望获得更多的挖矿奖励,在打包交易的同时,交易费用越高,越容易被打包。

交易费用 = GasPrice * GasUsed

因此,Gas Price 越高,矿工将会优先打包,交易会被更快确定;如果 Gas Price 设置过低,矿工的报酬降低,交易的确认时间将会延长。如果您想加快转账,您可以把gas price设置得更高,这样您就可以插队靠前。

总结

  1. gas limit由我们自己设定,相当于我们预计汽车需要加多少升汽油;即执行某个操作或合约的某一条的费用。
  2. gas price由我们自己设定,相当于每升汽油的价格;如果想要加以快点被打包,那么可以把gas price设的高一点,就像佣金高一点
  3. 一次交易或调用实际需要消耗的gas(gas used)由该次交易或调用过程中执行的命令决定;
  4. gas used 必须小于或等于gas limit;
  5. 实际支付的费用 = gas used * gas price。
  6. 交易超过gas limit 交易会回滚,但是交易消耗的gas依然会被支付。区块的所有交易的gas之和大于区块的gas limit 则区块上传就会失败报错,拒绝上传。

 

 

以太坊中的gas、gas price、gas limit到底是什么

原文:https://www.cnblogs.com/forforever/p/12670766.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!