Contract-Deployment

為什麼我的契約部署起來如此昂貴?

  • November 19, 2021

我嘗試部署基於 openzeppelin 庫的合約(見下文)。我支付的費用約為 146 美元,契約甚至沒有部署(即它耗盡了 gas )。我覺得這難以置信的高。它確實降低了我對乙太坊的熱情,因為我認為它更像是一個平台,而不是一個 pozi/價值儲存(即比特幣)。

ethscan.io 稱合約因gas 耗盡而失敗。

Warning! Error encountered during contract execution [Out of gas]
Value:
0 Ether ($0.00)
Transaction Fee:
0.034104011574 Ether ($146.01)
Gas Price:
0.00000011368003858 Ether (113.68003858 Gwei)
Gas Limit & Usage by Txn:
300,000 | 300,000 (100%)
Gas Fees:
Base: 104.963834926 Gwei

我做了什麼愚蠢的事情,礦工“偷”了我的費用,還是這是市場價格?

有沒有辦法使用 Go 來估計合約創建/初始化的成本(我猜它在 init 函式中有什麼)?無論如何,我使用乙太坊開發工俱生成的綁定(“github.com/ethereum/go-ethereum/accounts/abi/bind”)使用 Go 部署它

原始碼

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./openzeppelin-contracts/contracts/token/ERC20/ERC20.sol";

contract XYZXTESTToken is ERC20 {
       uint256 private constant TOTAL_SUPPLY = (18000 * 10000000 * (10**18));
   constructor() ERC20("XYZXTESTTOKEN", "XYZXTESTTOKEN") {
       _mint(msg.sender, TOTAL_SUPPLY);
   }
}

我做了什麼愚蠢的事情,礦工“偷”了我的費用,還是這是市場價格?

除了設置相對較低的氣體限制之外,您沒有做任何愚蠢的事情。礦工並沒有竊取你的費用,只是你使用了錯誤的參數,tx 可以成功或失敗,但無論如何都必須支付 gas。

我使用 Remix 部署了您的合約,並且 tx 天然氣成本為:1,154,936

這意味著,是您使用的300,000限制的****3.8倍。

現在我想就我所說的做一點回應,你做了一些愚蠢的事情:沒有確保你會得到你所支付的。這意味著確保您的參數(即,gas 價格/gas 限制)具有允許部署智能合約的值。

只有當您確定一切正常時,您才應該部署到主網,主網不是測試沙箱。

如果您還沒有這樣做,我建議您使用本地區塊鍊和/或測試網,例如 Rinkeby 或 Ropsten。或者,您也可以部署到 L2 解決方案,例如Polygon,其中 gas 價格更實惠。

有幾個開發框架可以簡化開發/測試和部署,例如TruffleHardhatBrownie來引用最容易訪問的框架,但它要麼是 JavaScript 要麼是 Python。

但是,如果您絕對想堅持使用 go 和 go-ethereum 綁定,您可能會對模擬客戶端或使用 go-ethereum 設置本地區塊鏈感興趣。

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