Solidity
“合約錯誤 - 氣體估算失敗氣體估算錯誤並顯示以下消息(見下文)”的根本原因是什麼?
其餘的錯誤:
事務執行可能會失敗。是否要強制發送?內部 JSON-RPC 錯誤。
我在幾個案例中收到了這條消息,通常是關於不同的錯誤。
該錯誤的原因是什麼,有沒有一種方法可以讓我更快地理解問題。
在大多數情況下,我會嘗試逐塊重寫所有內容,並檢查何時沒有收到該錯誤。
除其他外,每個乙太坊交易都有名為
gasLimit
或簡單的屬性gas
。這是允許消耗的最大氣體交易量。通過 Web3 API 發送交易時,您可以顯式指定此屬性的值:web3.eth.sendTransaction ({ from: 0x0123456789012345678901234567890123456789, to: 0x9876543210987654321098765432109876543210, gas: 90000 // <-- Here is gasLimit });
此參數是可選的,如果省略,Web3 API 實現將嘗試通過首先在本地執行事務然後將其實際廣播到網路來估計適當的值。這種本地執行類似於礦工在將交易包含到區塊之前執行交易的方式。
如果本地執行成功,Web3 API 實現會計算實際消耗的氣體交易量,並使用該值填充
gasLimit
參數。但是,如果本地執行失敗,例如智能合約將其還原,gas estimation failed
則會報告錯誤。您仍然可以通過明確指定gasLimit
來廣播此類交易。