Solidity

鍊式回退函式中的事件導致 VirtualMachineError

  • April 15, 2022

我正在開發一個可升級的合約,它使用fallback函式 withinline assembly delegatecallcall呼叫(使用calldatacopyand returndatacopy)來路由內部和外部函式呼叫。函式呼叫通常在執行之前通過三個回退函式進行路由。我有一套不錯的測試,一切都順利通過。但是,如果我在初始回退函式中發出一個事件,合約執行會brownie.exceptions.VirtualMachineError: revert因鏈上fallback呼叫而停止。一旦發射被刪除,測試套件再次通過而沒有問題。

任何想法這裡出了什麼問題或我如何解決這個問題?我有分層呼叫數據,事件會以某種方式影響它嗎?這帶回了未初始化指針的記憶……

合約通過回退函式進行合約內呼叫。問題在於呼叫視圖函式,這些函式編譯成staticcalls不能發出事件。

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