这两个月NFT市场十分火热,很多新玩家加入了市场。无论是一级市场PublicSale的抢购,还是二级市场Opensea的抢地板,一般来说采用默认的gas设置都是没有任何机会的。但是新人想要获取相关知识还是不太容易,在一知半解的情况下也容易出现抢购时给了高额gas被挂在山顶的情况。所以,本文将依托以下几个gas相关的问题进行叙述:
1.gas费中的各个参数都是什么?\ 2.Metamask中的gas如何设置?\ 3.gas费的实际花费是怎么计算得到的?
2021年4月25日,以太坊进行了柏林升级,最重要的就是推行了EIP-1559提案,该提案修改了以太坊交易手续费机制,也就是向矿工支付gas费的方式。由原有一揽子式gas费升级为由基础费(Basefee)和矿工小费(Tip)组合而成。

升级前的Gas Fees组成

升级后的Gas Fees组成
Base(销毁基础费):\ Base费是根据区块使用率动态进行调整的,那么这个动态调整的规则是什么呢?\ 具体规则为:
如果上一个区块完整度正好是 50%,那么基本费用将保持不变。\ 如果上一个区块是完整区块(100%),那么下一个区块的基本费用将增加最多 12.5%。\ 如果上一个区块完整度超过 50%,但不到 100%,那么基本费用将增加 12.5% 以下。\ 如果上一个区块是空白区块(0%),那么下一个区块的基本费用将减少最多 12.5%。\ 如果上一个区块完整度超过 0%,但低于 50%,那么基本费用将减少 12.5% 以下。\ 结合实际数据进行验证,在以太坊浏览器的首页,我们可以看到最近的出块信息。

以太坊浏览器首页的出块信息
点开Block #14166561(下附链接),我们可以看到如下图所示内容。
在以太坊浏览器中的Block#14166561显示内容中我们可以看到:\ 第一个红色方框是本区块中所包含的所有交易内容,具体详情可以点进去查看;\ 第二个红色方框是本区块使用状态,我们可以看到本区块是满载状态。

以太坊浏览器中的Block#14166561显示内容
如果上一个区块是完整区块(100%),那么下一个区块的基本费用将增加最多 12.5%。
我们来验证一下: 随意点开本区块中一笔交易,可以查看当前区块Base费为85.524255391 Gwei,根据上述规则,我们可以推算下一区块Base费为:
85.524255391×(1+12.5%)≈96.214787315

Block#14166561 Base费
点开下一区块交易查看Base费如下图所示,基本上与计算结果一致。

Block#14166562 Base费
Tip/Max Priority(矿工小费): 这一部分是直接支付给矿工的费用,以激励他们将你的交易纳入区块。所以这一部分给的越高,矿工收益越高,你的交易在队列中就会越优先被打包。Max(用户愿意支付的最大费用): 顾名思义,这一个值是用户设置的,表示了用户愿意支付的最大费用。一般来说,需要: Max ≥ Base + Max Priority 这样的话,你的交易才能成功。
以上就是EIP-1559下的gas参数,但有些朋友可能想问,如果我用的是Metamask,这些参数对应在Metamask里是什么呢?
很多朋友使用的小狐狸钱包(Metamask),那么在这里该如何设置gas呢?\ 在网页点击交互以后,小狐狸钱包会弹出确认页面,如下图以uniswap兑换为例:

小狐狸弹出确认页面①
我们点击上图红框中的编辑按钮,这里有默认的Low、Medium、High三档gas调节,但不建议使用。我们直接点击高级选项。

小狐狸弹出确认页面②
点击完成后,可以看到如下图所示页面。这里的有三个参数:\ 1.燃料限制:对应以太坊浏览器中的Gas Limit,这一个值是根据你交互的智能合约方法复杂度自动计算出来的,不需要修改;\ 2.Max priority fee:对应以太坊浏览器中的Max Priority,这一个值就是上述所讲的矿工小费;\ 3.Max fee:对应以太坊浏览器中的Max,也就是你愿意支付的最大费用。

小狐狸弹出确认页面③
修改完成后,点击保存即完成了gas的设置。\ 这里提供一个当前gas设置和建议gas值的网站:
细心的朋友可能会发现,网站建议的max fee一般是Base fee的近似两倍,这是为什么呢?\ 上一节中我们讲到,如果区块保持100%满载状态,每次Base fee会增加12.5%。所以将近两倍的max fee能够保证即使区块满载状态下,你的gas设置也能满足接下来6个区块的Base fee要求。
(1+12.5%)^ 6 ≈ 2.027

示例
这时候你可能有一个疑问,我设置了两倍max fee,那我会不会扣掉很多gas啊?那么接下来就介绍下最终你的实际gas花费是怎么计算出来的。
在实际操作中,很多人学会了gas的设置后,为了抢到热门NFT的PublicSale,没有提前进行预估计算,无脑拉高gas,最终把自己挂在了山顶上。如下图前几天的Karafuru的PublicSale,平均单价5.3ETH,远高于二级市场售价。

被挂在山顶的大聪明
实际花费计算公式:
实际花费 = Usage by Txn × (Base + Max Priority)\ 即下图:
实际花费 = 红框 × (蓝框 + 绿框)

示例
也就是:
189340 × (123.565296156 + 2) × 10^-9 = 0.02377453317417704\ 这里的10^-9是Gwei的换算,这里我们的计算与实际结果相同。

计算结果
上面我们也讲到,Gas Limit一般是默认值,但是在PublicSale没有开启的时候,我们怎么预估Gas Limit的值,从而计算预计花费呢?\ 这里分享两个方法:\ 1.找到对应的测试网合约进行交互:项目正式上线之前一般都会进行测试网部署测试,通过网页源码找到测试网合约地址进行交互,即可得到实际Gas Limit花费;\ 2.根据PresaleSale的花费估计:一般来说PresaleSale的Gas Limit会小于PublicSale的Gas Limit,一般不会超出50%(最不利情况)。
这样就可以在NFT抢购前,结合二级市场售价来计算自己能够承受的最高gas值,也能防止自己被挂在山顶。\ 这里也要注意一点,Gas Limit的值与Max fee的值类似,只是你愿意承担的最高值,实际情况下是按照实际使用值来计算费用的。在不同情况下(抢购成功/抢购失败)的Gas Limit的实际花费是不同的。

成功的gas limit花费

失败的gas limit花费
一般来说,失败使用的gas limit是远小于成功使用的。所以也可以提前预估抢购失败的花费,在自己能承受的范围内进行抢购。
以上就是分享的内容,这也是我第一次写,如果有什么不正确的地方欢迎点评指正,毕竟我是个接触币圈没多久的小白哈哈哈哈,有机会下次见!
——来自 DFarm Club
