Gas

如何測量 Hardhat 中每個函式呼叫的 gas 使用量?

  • August 3, 2021

在 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);

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