Solidity

為什麼呼叫從公共變數創建的視圖函式時會引發“UNPREDICTABLE_GAS_LIMIT”錯誤?

  • February 23, 2022

我正在使用 Hardhat 控制台測試我的智能合約,它完美地工作,直到我刪除了我為公共狀態變數編寫的 getter 函式以支持自動生成的視圖函式。例如,我有一個這樣的函式:

function getName() public view returns(string memory) {
       return name;
}

執行Contract.getName()按預期返回了我的名稱變數。但是,在我刪除此功能並嘗試使用Contract.name()後,我收到一條錯誤消息cannot estimate gas; transaction may fail or may require manual gas limit。這是什麼矛盾?

順便說一句,我正在使用ethers.js和 Hardhat 控制台,並且我的合約已部署到 Ropsten 測試網。

就我而言,我收到了確切的錯誤消息,因為我使用不正確的地址實例化了合約。修復地址使消息消失。

我收到此錯誤是因為require觸發了一條語句。如果您仔細閱讀錯誤,您可能會看到一條消息,指出您必須在 Solidity 程式碼中更改的內容。

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