Solidity
為什麼呼叫從公共變數創建的視圖函式時會引發“UNPREDICTABLE_GAS_LIMIT”錯誤?
我正在使用 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 程式碼中更改的內容。