Gas 教程:如何设置适合自己的 Gas 价格

阅读时长:11 分钟

人们最常问起的一个问题就是 gas,比如我应该支付多少 gas,gas 为什么这么贵,gas 到底是什么!??gas 之所以会成为如此受欢迎的话题,是因为无论你在这个领域做什么,从汇款、购买 NFT、铸造你的 NFT、抵押你的 ETH 等等,你在以太坊区块链上所做的所有活动都会涉及它。不幸的现实是,我们看到很多人在 gas 上花费的钱比他们需要的多得多,所以我们决定创建一个指南,指导如何在 Metamask 上设置适合自己的 gas 价格。

如果你更偏好视频学习,这个视频(英语) 介绍了如何节省 gas(前5分钟是主要的讲解内容,后面是可选的进阶内容)

gas 究竟是什么?

「gas」这个名字来源于汽车的汽油(gas),二者概念非常相似。如果你计划开车到别的城市并试图预估汽油的总花费,你需要考虑的两件事是距离和每升汽油的价格(假设你总是使用同一辆车,因此每公里油耗保持不变)。在以下情况下,汽油总花费会升高:1. 你行驶的距离更长;2. 汽油价格升高。

在以太坊中,我们可以应用相同的概念。距离换言之,就是一辆汽车需要做多少功。在以太坊中,便是区块链需要做多少工作。例如,以太坊区块链上最简单的交易(工作)是一个人向另一人汇款,这需要 21,000 单位的 gas。另一方面,更复杂的交易(例如铸造 NFT)将需要更多单位的 gas,因为交易所需执行的程序要复杂得多,需要更多的计算资源。

post image

就像你不能改变两个城市之间的距离一样,你也不能改变以太坊交易所需的 gas 单位数量。但是,就像你可以等待汽油价格下跌然后再加满油箱一样,你也可以等待 gas 价格下跌后再进行交易。Metamask 提供了一种方法,可以将 gas 价格设置为你愿意支付的任何金额,并会等待到 gas 价格达到你设定的价格时执行交易,我们将向你展示如何做到这一点。

如何手动设置 gas 价格

让我们尝试对 Foundation 上的一些艺术品进行竞标。点击「出价」按钮后,Metamask Chrome 扩展程序会弹出(我们假设你已经拥有 Metamask 扩展程序),你将看到如下屏幕:

post image

你将看到建议的 gas 价格,该价格会根据当前网络的繁忙程度不停变化。要更改 gas 价格,请点击「编辑(EDIT)」按钮。你现在将看到低/中/高三个单选按钮。让我们忽略它们,因为它们之间的差异很小,并没有太大的区别。所以直接点击「高级选项(Advanced Options)」,你会看到以下选项:

post image

以下是对每个名词含义的快速解释:

  • Gas Limit (unit) : Gas 上限(单位)。你愿意用于此交易的最大 Gas 单位。Gas 单位乘以“Max fee(最高费用)”等于你的总 gas 价格,就像汽车一样,你使用的汽油数量乘以每升汽油的价格来计算你的旅行总成本。永远不要更改此值,因为这是完成交易所必需的工作量,就像你无法更改从加利福尼亚开车到纽约所需的距离一样,你也无法更改某笔交易所需的工作量.。(记住最简单的交易,从一个地址向另一个地址汇款需要 21,000 单位的 gas,因此你可以看到对 Foundation 进行出价需要更多的工作(约 72,600 单位[其中包括一些错误冗余,因此实际上会略少])。

  • Max priority fee aka “miner tip” (GWEI): 最高优先费又名“矿工小费”(GWEI)。这一费用将直接支付给以太坊矿工(支撑区块链和处理交易的人),并激励他们将你的交易优先于他人进行处理。矿工有权选择优先处理哪些交易,他们将根据矿工小费的多少进行选择,因为这是他们将获得的收入。因此,提高这个值会激励矿工选择你的交易。但是,通常情况下,你不需要真的将其设置为高于 1.5 gwei,因此无需更改此设置。

  • Max fee(GWEI): 最高费用(GWEI)。你将支付的最大金额(基本费用 + 优先费用)。基本费用是由以太坊区块链设定的预定金额,作为在区块链上的给定区块中处理任何交易的最低费用要求(该费用将被烧毁,不会支付给矿工)。如果你为交易设置的基本费用低于给定区块所需的基本费用,则无论你的优先费用有多高,该区块都不会处理该交易。

你需要在此处更改最高费用 (GWEI),即你愿意为 gas 花费的总金额。默认情况下,它显示当前的 gas 价格。你可以将其更改为你愿意为 gas 支付的任何价格,当当前的网络 gas 价格下降到该水平时,交易就会完成。

截至 2021 年 9 月,对于不需要立即完成的交易,并且你愿意等待最多 ~24 小时完成,我们通常将 Gas 价格设置在 35 到 40 gwei 之间。如果你将 gas 费设置得如此低,它可能会显示以下消息:

post image

别担心 —— 它只是说交易现在不会以这个 gas 价格被处理,因为网络目前很忙。当网络拥堵下降时,gas 价格也会下降,当它下降到与你设置的价格相同时,交易就会执行。

**如果你使用的是 Ledger 或 Trezor 等硬件钱包,则 UI 可能会略有不同(传统 Gas 价格模式)。它可能只显示 Gas Limit 和 Gas Price。在这种情况下,只需将 gas price 设置为你愿意支付的任意金额,并将其视为与上面显示的常规 gas 屏幕中的 Max fee 基本相同的东西。

完成此操作后,你将在 Metamask 钱包历史记录中看到待处理的交易(请注意如果当前有待处理(Pending)的交易,除非你取消该交易,否则你不能发起新的交易):

post image

如你所见,有一个选项可以「加速(Speed Up)」交易,因此如果网络拥塞的时间比预期的要长得多,并且你无法按时完成交易,你可以随时点按加速并设置新的 gas 价格。由于你总是可以在之后加快交易速度,所以一开始把 gas 价格设置得很低,然后在需要时再加快速度是值得的。

**注意:**当你尝试铸造一个超级流行的 PFP 项目或类似的项目时,很多人都试图同时进行交易,你可能希望将 gas 价格设置为比通常设置的高得多,而不是更低,因为它们是先到先得的。如果项目中的所有的 NFT 都被铸造完毕时你的交易还没有通过,你将不会得到你想要的。我曾经犯过这样的错误。因此,对于给定交易的 gas 价格应该如何设定这一问题,我们应该具体问题具体分析。

如果你不想看到 低/中/高 设置而只想立即手动设置 gas 价格,你可以更改你的 Metamask 设置。单击 Metamask 下拉菜单中右上角的图标,找到菜单「设置(Settings)」,单击它,然后在下一个屏幕上单击「高级(Advanced)」。在这里,你会找到「高级 gas 控制(Advanced gas controls)」选项。打开这一选项并关闭设置面板,现在你将不再看到低/中/高,并且可以直接设置 gas 价格。

post image

如何选定合适的 GAS 价格

现在,你可能会想,好的,我明白在2021 年 9 月时 gas 价格设定在 35 或 40 是比较合适的,但以太坊的拥堵和 gas 价格一直在波动,所以未来我怎么能选择适合自己的 gas 价格呢?

好问题!请看下面。

首先,转到 Etherscan Gas Tracker。在这里你可以看到 Low/Average/High(低/平均/高),但这不是我们应该看的,因为它基于当前的 gas 价格,就像 Metamask 建议的 gas 费用一样。我们应该关注的是每天最低的 gas 价格,因为这是我们在接下来的 24 小时内完成交易所需支付的最低金额。我们如何找到这些信息?转到 Historical Gas Oracle Prices,你可以在其中查看每天 Max/Avg/Min(最大/平均/最小)gas 价格的历史数据。

post image

截至 9 月 30 日,最低 gas 价格为 30 gwei,这意味着,在当天的某个时间点,gas 价格下降到 30 gwei,因此如果我们支付高于此值的任何费用,交易将在某个时间点完成。为了避免交易不被处理的风险,最好比最低价格高一点,因为最低 gas 价格每天都在波动,并且不能保证明天的价格会和今天一样低。因此,在这种情况下,要设置的好 gas 价格可以是 35 甚至 40。

区块链如何知道要处理哪些交易?

当你加速某一交易时,你将在 Etherscan 上看到多个待处理的交易。

区块链如何知道这两个都是针对同一笔交易的,并在其中一个交易通过后取消所有其他待处理的交易(gas 价格最高的交易将被处理)?

这里就该轮到 nonce 发挥作用了。

Nonce:给定的以太坊地址执行的所有交易的连续编号,第一笔交易从 0 开始。例如,如果一笔交易的 nonce 是 10,那么它将是从该地址发起的第 11 笔交易。

换句话说,nonce 是根据你的地址过去完成的交易数量决定的。因此,如果你过去进行了 10 次交易,那么你的下一个 nonce 将是 10(不是 11,因为它从 0 开始)。

可以在 Etherscan 上查看给定交易的 nonce (这里是一个示例交易——你需要单击页面底部的“点击查看更多(Click to see More)”以显示 nonce )。如果去浏览你以太坊地址上进行的所有交易(参见 https://etherscan.io/address/{你的以太坊地址} ),你将看到你最早进行的交易的 nonce 为 0。

回到关于区块链如何知道哪些事务应该相互替换而不是一个接一个地连续执行的问题,nonce 用于区分这两点。如果你查看 2 个待处理交易(你首先进行的事务和为加快第一个交易而进行的第二个交易),两个交易将具有相同的 nonce。当区块链处理其中一项交易时,具有相同 nonce 的所有其他待处理交易将被取消/丢弃。

Hack:如何用全新的交易替换交易

这可能与每个人都不相关,因为这是你可能会或可能不会遇到的更具体、更高级的情况:用另一个交易替换交易。这里有一个示例:你尝试购买一件艺术品,出价,并将 gas 价格设置为较低的价格,以使其稍后而不是立即被处理。 5分钟后,你又发现了另一件你更喜欢的艺术品。你想为新艺术品出价,而不是你已经出价的艺术品。好消息是你可以,如果之前的交易还没有完成的话。这是设置低 gas 价格的另一个好处——如果你以后改变主意,你可以取消交易或更换它!

首先,你需要从我们前面提到的设置选项卡中更改一项设置。转到 Metamask 下拉屏幕右上角的图标,然后选择 Settings > Advanced,然后打开“Customize transaction nonce”设置。

post image

然后,你可以像往常一样对找到的新艺术品出价,但是一旦 Metamask 屏幕弹出,你将看到一个名为“Custom Nonce”的新参数。

post image

现在,转到 Etherscan,打开要替换的待处理交易并检查该交易的 nonce。复制该 nonce 并将其粘贴到此处的 Custom Nonce 参数中。例如,如果你尝试替换的待处理交易中的 nonce 为 3,请将新交易上的自定义 nonce 也更改为 3。

此外,请确保设置稍高的最高优先费用(只需多 1 个 gwei 就足够了)和最高费用(+10 gwei 通常是安全的),以便新交易优先于旧交易。一旦你这样做了,区块链会认为旧交易和新交易正在尝试做同样的事情,所以只有一个,费用较高的交易,即你要完成的新交易而不是旧交易,会通过。

还有一件事

现在以太坊的 gas 价格波动很大,gas 价格上涨的原因是因为更多的人同时进行交易。如果你想知道发生了什么,一种方法是使用 icy.tools。该工具显示 NFT 项目在过去一小时内的趋势(如果你购买会员服务(0.03 ETH/月),你甚至可以看到过去 15 分钟内的趋势),因此你可以了解人们在做什么。非常不错的工具 :)

希望这些对你有用!

原文链接:(2021-10-01)

https://medium.com/@maimai816/advanced-metamask-gas-tutorial-how-to-set-your-own-gas-prices-236d59f563b7

译者:Hexen