Contract-Deployment

對gas費超級困惑

  • April 19, 2022

我希望你們一切都好,並保持安全。

我剛剛完成了我的第一個 Dapp,我試圖將它部署到主網上,但我很痛苦。所以我的 dapp 與一個超級簡單的合約互動,總合約是 25 行。

在建構時,我顯然必須多次測試合約,每次我將其部署到測試網路(無論是 rinkeby 還是 ropsten),gas 成本都不超過 $ 13 at absolute max. So I based the gas fees cost around $ 主網100。我想即使它是雙倍或三倍,我仍然有足夠的。

然而,情況似乎並非如此。我不斷收到資金不足錯誤。我已經嘗試過 HardHat 和 Truffle。我也無法查看所需的氣體量,所以我真的處於困境中。有人可以就本契約的部署成本指導我正確的方向嗎?(我附在下面)

contract MyNFT is ERC721 {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;

constructor() public ERC721("DistroToken", "DTKN") {}

function mintNFT(address recipient, string memory tokenURI)
   public
   returns (uint256)
{
   _tokenIds.increment();

   uint256 newItemId = _tokenIds.current();
   _mint(recipient, newItemId);
   _setTokenURI(newItemId, tokenURI);

   return newItemId;
}

}

非常感謝你!

編輯:所以今天在預設設置下嘗試通過 HardHat 部署它之後,它通過了!我想知道加密貨幣價格的下跌是否是負責任的?

您可以嘗試使用estimateGas()web3.js 中的方法(https://web3js.readthedocs.io/en/v1.2.5/web3-eth.html?highlight=estimategas#estimategas)估算您的交易所需的氣體。

然後將其乘以目前的 gas 價格(檢查https://etherscan.io/gastracker)。

您的問題可能來自這樣一個事實,儘管您指定了可以使用的特定汽油量,但您沒有為您的交易指定明確的汽油價格。主網上的 Gas 價格高於測試網上。

這是一個很好的答案,解釋了這兩個概念。

預設情況下,testnet 可能使用了較低的 gas 價格,因此您的成本為 13 $ . However, on mainnet there is much more congestion and the gas price you need to pay is much higher. When your transaction failed, the default gas price was probably high enough that it caused the price of deployment to be greater than 100 $ .

當主網上的 gas 價格較低時,您的交易可能會在稍後成功。

最佳實踐是始終​​指定明確的 gas 價格和明確的 gas。

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