Web3js

在 EIP-1559 之後對 metamask 的巨額建議費用

  • October 27, 2021

我們必須基於響應的應用程序負責連接 NFT 合約並呼叫“mint”函式。

要呼叫該函式,合約會要求 0.06ETH,數量就是 NFT 的使用者想要多少。

contract.methods.mintToken(amount).send({
                   from: account,
                   value: amount * web3.utils.toWei("0.06", "ether"),
               });

但是metamask會設置巨大的gas limit,大約28500000,有時是10K甚至20K。

我們嘗試添加自定義gasLimit:

from: account,
value: amount * web3.utils.toWei("0.06", "ether"),
gasLimit: "300000",

這給出了合理的 150-200 美元。

但是這種收費的交易會讓一些人失敗,沒有模式。我們嘗試獲取最後一個區塊的中間值,動態增加等。沒有任何效果,即使有 500K 的氣體限制,人們仍然會獲得還原交易,有些人在幾秒鐘內獲得 200K 交易,真的是絕對隨機的。

所以我的問題是:

如何降低建議費用並使建議費用合理?

還有一點建議,當我使用 gasLimit: "300000" should this be gasLimit: amount * "300000"時,因為使用者可以在一次交易中鑄造多達 20 個?

maxPriorityFeePerGas通常應該在 1.5 到 3.0 左右(2.5 實際上是 Web3js 和 Ethersjs 用來解釋“MEV Heavy”塊的設置)。此參數通常由 metamask 錯誤配置,並且會使值與您的 相同maxFeePerGas,因此瘋狂定價。

如果您願意,可以使用此 API:

curl -sL api.txprice.com | jq

此 API 是 Blocknatives 天然氣定價服務的代理。他們也有一個 chrome 擴展。(注意:我的雇主操作此端點,除了來自 IP 的每分鐘請求數外,我們不跟踪使用者數據)。

它將為您提供基於信賴區間的交易成本定價。

如果您想了解其他服務/API 提供商如何產生他們的結果,這裡是 Gas Reporting Index(注意:我自己的工作):

https://github.com/sambacha/gas-reporting

引用自:https://ethereum.stackexchange.com/questions/109311