「环球科技在此」| 一文读懂以太坊上的 Gas、GasLimit、GasPrice,科普


「环球科技在此」| 一文读懂以太坊上的 Gas、GasLimit、GasPrice,科普
文章图片
免责声明:本文旨在传递更多市场信息 , 不构成任何投资建议 。 文章仅代表作者观点 , 不代表火星财经官方立场 。
小编:记得关注哦
来源:预言机实验室
原文标题:科普|读懂以太坊上的Gas、GasLimit、GasPrice
Gas是什么?
Gas是存在于以太坊EVM内部 , 是计算工作量的计量单位 。 其作为以太坊网络中的燃料 , 为以太坊网络生态的发展运作提供动力 。 正如汽油对于汽车的作用 , Gas对于以太坊用户和开发者来说 , 必不可少 。
Gas一方面用于以太坊矿工打包区块的奖励;另一方面 , 其存在提高了恶意交易的门槛 , 可以更好的维护以太坊网络的正常运转 。
在以太坊系统底层 , 为每一个规定操作和合约方法都确定了Gas数量消耗 , 交易过程中的每个运算步骤都需要消耗Gas 。 比如:部署NEST预言机报价合约的用户需要支付一定的Gas费 , 去执行这笔交易 , 而Gas就是以太坊系统向用户收取的手续费 。 使用以太坊网络时必须设置消耗Gas的最大值 , 当Gas消耗完或者智能合约逻辑执行完 , 就会停止执行该合约 。 在以太坊系统内 , Gas需要换算成ETH来进行支付 。
提示:无论用户发起的交易是否打包成功 , 都要支付Gas费用;这就好比您在开车回家的路上 , 开了一半没油了一样 , 即使没成功到家 , 但消耗的汽油确实已经消耗了 , 所以也要为之买单 。
「环球科技在此」| 一文读懂以太坊上的 Gas、GasLimit、GasPrice,科普
文章图片
GasLimit又是什么?
GasLimit是以太坊用户愿意为成功执行某笔交易逻辑所支付的最大Gas数量 。
如果一笔交易的GasLimit设置过低 , 不能使交易逻辑完整执行 , 系统将会提示“outofgas” , 交易会失败 。 这笔交易依然会被打包到区块中 , 交易中所携带的以太坊资产会自动退回 , 但Gas费用依旧会被收取 , 该费用作为奖励发放给打包这个区块的矿工 。 (经常部署智能合约的用户 , 应该碰到过这种情况)
如果该笔交易所使用的Gas数量小于或等于您所设置的GasLimit , 则会被打包成功 。 在这笔交易执行中所实际消耗的Gas总量为GasUsed , 没有使用完的Gas会退还到交易发起地址 。
请注意 , 我们这里所说的GasLimit指的是一笔交易的Gas上限 。 在整个以太坊发展过程中 , 也有一个GasLimit值比较重要也经常被提及 , 那就是一个区块的GasLimit , 即单个以太坊区块可执行交易的Gas总和上限 。
【「环球科技在此」| 一文读懂以太坊上的 Gas、GasLimit、GasPrice,科普】每个区块在打包的时候都会确定当前区块内所有交易的GasLimit总量 , 以此来确定该区块能打包的交易数量 , 所以矿工在打包每笔交易的时候都会判断当前的Gas量够不够打包当前这笔交易 。 如果你将一个会超过当前区块GasLimit的交易打包 , 会被以太坊网络拒绝 , 系统反馈为“belowgaslimit” 。 在经过以太坊1.x多次升级之后 , 目前一个以太坊区块的GasLimit值为1200万Gas 。
「环球科技在此」| 一文读懂以太坊上的 Gas、GasLimit、GasPrice,科普
文章图片
EtherscanGasPrice数据
单个Gas的价格:GasPrice
GasPrice是用户愿意为每个Gas支付的价格 , 单位是Gwei 。
1ETH=1,000,000,000Gwei
以太坊矿工除了获得挖矿区块奖励外 , 总是希望区块里面包含更多的Gas费;所以 , 矿池在打包交易的时候 , 优先打包支付矿工费更多的交易 。
一笔交易的矿工费=GasPrice*GasUsed
因此 , GasPrice设置的越高 , 交易越先被打包进区块 , 越先被确认;如果GasPrice设置的过低 , 交易会长时间处于pending状态 , 排队等待被矿工打包 。 所以 , 在以太坊网络发生拥堵的时候 , 如果我们想加快交易速度 , 就需要大幅度提高交易的GasPrice数值 , 让矿工优先打包我们的交易 。