Gas
如何測量 Hardhat 中每個函式呼叫的 gas 使用量?
在 Remix IDE 中,部署智能合約然後執行函式呼叫以查看調試日誌以了解 gas 使用情況非常簡單。我們如何查看安全帽中函式呼叫的 gas 消耗?假設
npx hardhat node
在部署契約時在不同的選項卡上執行npx hardhat run --network localhost scripts/deploy.js
經過大量的試驗和錯誤,以下對我有用。首先,我們必須添加
web3
到安全帽。為此,請在終端中執行以下命令。
$ npm install --save-dev @nomiclabs/hardhat-web3 web3
然後打開
hardhat.config.js
文件並添加依賴。
require("@nomiclabs/hardhat-web3");
最後,我們可以在測試中使用 web3 估計 gas。
var methodSignature = web3.eth.abi.encodeFunctionSignature(func); var encodedParameter = web3.eth.abi.encodeParameter("string", "ABCDEFGH"); var data = methodSignature //method signature + encodedParameter.substring(2); //hex of input string without '0x' prefix let gas = await provider.estimateGas({ from: owner.address, to: addr2.address, data: data, value: 1000000000000000, function(estimatedGas, err) { console.log("estimatedGas: " + estimatedGas); console.log("Err:" + err); } }); console.log("Gas: " + gas);