在Arbitrum所带动的“全民撸毛”热潮下,出现了一个奇观:本来为L1提供性能、扩展性以及降低手续费的layer2,它自己的手续费竟然比L1还要高。
不理解这个问题,最终会发生两件事:要么认为L2毫无意义而错失投资机会,要么就会被迫承受更高的空投成本。
所以,我觉得了解以太坊gas费的底层原理就极其重要,因为只有明白了最底层的东西,你才能更好的降低交易成本,以及作出更正确的投资判断。
我想做的,就是尽量是最直白,最全面讲透以太坊L1\L2的gas费机制和原理,包括但不限于:
1.以太坊L1的GAS是怎么收取的?
2.为什么以太坊的GAS费这么高?
3.为什么支付了GAS费还出现交易失败?
4.l2的gas费是怎么收取的?
5.为什么l2的gas费比L1还要高?
同时也我也会在文末留下一些我觉得非常好用的GAS费工具
注:为了方便阅读,内容会分成2个部分,上篇为ETHL1的gas问题,下篇问ETHL2的gas问题
1.以太坊L1的GAS费的构成和原理
gas其实是由两个概念构成的:gasUsed和gasPrice。正常情况下我们讨论是gasUsed。这两个东西怎么理解呢?gasUsed可以理解成汽车行驶所必须的汽油量,gasPrice则是汽油的单价。
这里还要引入一个以太坊的计价单位,比特币网络有个最小的单位“聪”,以太坊网络也有个最小的单位“Gwei”,每一“Gwei”等于0.000000001 ETH (10的负九次方个 ETH)。
标准转账中,gasUsed固定为21000。举个例子,孙宇晨准备向用户A赔付1个ETH,此时gas(Price)为200Gwei,转账需要消耗21000个gas(Used)。
那孙宇晨需要为这笔交易所支付的gas费为:gasUsed*gasPrice ,即21,000 * 200 = 4,200,000 gwei 或者 0.0042 ETH 。
以上是以太坊处于工作量证明时的GAS费构成。但在伦敦升级以后,GAS费的构成又有了改变,加上了“消费”和“销毁”。
还是孙宇晨的这笔交易。gasUsed固定为21000,基础费用是200Gwei,但孙宇晨担心赔付不及时导致用户报警,所以他决定多支付2Gwei作为给矿工的小费。
这时候,孙宇晨所支付的手续费为:21,000 * (200 + 2) = 4242000 gwei或0.004242个ETH。其中矿工获得0.000042的小费,剩下0.0042个ETH的基础费用被销毁。
很多人就有疑惑,每次交易的21000个gas(Used)是怎么得来的呢?这个费用是怎么设定的呢?很多人理解是由开发人员或者是矿工设置的,这是不对的。
以太坊有专门的虚拟机处理交易,虚拟机根据交易中确定的一个一个的操作指令进行逐个处理, 而每个操作指令都有明文规定的Gas消耗量。
因此,决定Gas消耗量的,是交易中所有指令累积的Gas总消耗,我们称之为gasUsed。而你所支付的费用,就是gasUsed*gasPrice。
2.为什么支付了GAS费还出现交易失败?
Gas手续费等于gasUsed*gasPrice。但执行某个智能合约的时候,你没办法提前知道他到底执行了多少个指令,所以就没办法预算gasUsed。这时候,假如你执行的是一个恶意的智能合约,就可能被无限消耗燃料。
比如孙宇晨在以太坊上执行了一个恶意交易,里面包含了无限的指令,就有可能把他的账户余额全部消耗。
所以为了避免这种恶意消耗,用户在发送交易的时候会设定一个消耗GAS费的上限,我们叫做GAS Limit。比如孙宇晨设置了消耗Gas的上限是X。那么在交易过程中,GAS消耗超过了X,那就不会再从余额中额外扣除GAS费。
然而,我们已知每笔交易的手续费就是这笔交易中执行所有指令的总和记录。那么故意设置较低的GAS Limit,就没有意义。你必须支付足够燃料来支付本交易所必要的计算资源。
这时候,假如你的GAS不够完成这笔交易的所以计算资源,那么交易就会失败。同时,即便是交易失败,矿工们却已经为你的交易付出了计算资源,gas费就不会退给你了。
这就是为什么在以太坊上支付了GAS费还出现交易失败的原因了。
注意,这里的交易失败仅仅是限定在对GAS费上的讨论,不包括Bad instruction(指令错误)以及Reverted(回退)。
3.为什么以太坊的GAS费这么高?
因为GAS为燃料单价(gasPrice) * 燃料开销(gasUsed)。作为用户,想要交易费更便宜,就是支付更低的燃料单价。
但是,你的交易要经过矿工打包进区块的过程,因为Gas费是归属于矿工的愿意,显然矿工就更愿意优先处理那些愿意支付更高单价的交易。
大部分矿工的处理方式就是将交易以燃料单价高低作为排序,然后一个个的处理。直到区块塞满,或者到低于矿工所设置的燃料单价底限。
那么以目前以太坊15笔/秒的交易处理性能,一旦交易发生拥堵的时候,燃料单价自然就被哄抬上去了。此时为了完成交易,你就必须支付更高的燃料单价,交易费用就会飙升。
同时,因为去中心化程序的功能变得越来越复杂,操作指令越来越多,gasUsed也会变得越来越高。
最后,也是最重要的,就是ETH的价格也越来越高了。
综上,Gas在拥堵时期Gas急剧飙升的原因,就是更高的gasPrice、gasUsed以及ETH币价所共同造成的。
4.如何降低以太坊手续费。
我们在降低手续费能做的事情就是降低燃料单价,但显然不是说我们降低以后质押者就会帮我们处理,所以,我们更需要做的事就是“错峰出行”。因此我们需要的是一些工具来辅助我们,比如:
Etherscan(opens in a new tab)↗ 交易 gas 价格估算器
Blocknative ETH Gas Estimator(opens in a new tab)↗ 支持类型 0 传统交易和类型 2 EIP-1559 交易的 gas 估算 Chrome 插件。
ETH Gas Station(opens in a new tab)↗ 以太坊 gas 市场面向消费者的指标
Cryptoneur 燃料费计算器(opens in a new tab)↗ 按照您当地货币计算主网、Arbitrum 和 Polygon 上进行的各类交易的燃料费。
5.如何取消“在排队”的交易。
导航到Etherscan
将您的 Tx 哈希粘贴到 Etherscan 搜索栏中
在您的交易页面上,点击“点击查看更多”按钮
你的随机数会出现;记住号码
在您的钱包中准备一笔新的 0 ETH 交易
转到“高级”选项卡并输入与卡住的 Tx 相同的随机数(注意:您可能必须在钱包设置中激活自定义随机数的功能)
以“快速”汽油费发送新交易
一旦确认,您的原始交易将取消
或者,在cancel-ethereum-transactions.web.app上有一个新的交易取消 dapp 。用户友好的服务会自动在您的钱包中找到待处理的交易随机数,然后发送具有正确配置的交易以快速取消它。
以上,就是ETHL1的gas底层原理,下一篇讲的是ETHL2的as底层原理。如果觉得对你有所帮助,可以帮阿空转发和分享。亦或者关注阿空的公众号:Meta星空,了解更多投研思考和干货内容。
END
· 关于 星空社区 ·
星空价值投资 是一个专注于区块链投资、投资者教育的社区组织,创始人Meta星空致力在Crypto行业中,通过实践“风险投资+价值投资”结合的投资体系,来吸引具有高维认知的Crypto投资者共同加入,最终成为国内最大的Crypto投资者社区,成为Crpyto行业散户投资者们的风向标。
防失联:
**
**视频号:星空区块链投资
推:@Meta_starry/@cryptoxingkong