Solidity

ecrecover 在 Ropsten 上拋出氣體錯誤

  • April 3, 2018

這裡:http ://solidity.readthedocs.io/en/v0.4.21/units-and-global-variables.html ,它說

可能是您在私有區塊鏈上遇到了 sha256、ripemd160 或ecrecover的耗****氣情況。這樣做的原因是那些被實現為所謂的預編譯合約,並且這些合約只有在它們收到第一條消息後才真正存在(儘管它們的合約程式碼是硬編碼的)。發給不存在合約的消息更昂貴,因此執行會遇到 Out-of-Gas 錯誤。解決此問題的方法是先向每個合約發送例如 1 Wei,然後再在實際合約中使用它們。這在官方或測試網上都不是問題。

它也在 Ropsten 上耗盡了氣體,我正在呼叫一個涉及ecrecover它的函式並且它沒有被執行。

雖然,相同的功能在松露測試中執行良好。在Remix上執行相同的功能,得到

氣體估計錯誤並顯示以下消息(見下文)。事務執行可能會失敗。是否要強制發送?錯誤:所需氣體超過限額或交易總是失敗

Etherscan Tx:https ://ropsten.etherscan.io/tx/0x229a4e16f4464809181a24a16e1db2acb82b11ac160c26a1aa5e692495fb4d4a

如何使用 Ropsten 執行此功能?

我搞定了。問題在於簽名中的前綴 ie \x19Ethereum Signed Message:\n32。可以在此處找到問題的更多詳細資訊:https ://github.com/OpenZeppelin/zeppelin-solidity/issues/644

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