Solidity
鍊式回退函式中的事件導致 VirtualMachineError
我正在開發一個可升級的合約,它使用
fallback
函式 withinline assembly
delegatecall
和call
呼叫(使用calldatacopy
andreturndatacopy
)來路由內部和外部函式呼叫。函式呼叫通常在執行之前通過三個回退函式進行路由。我有一套不錯的測試,一切都順利通過。但是,如果我在初始回退函式中發出一個事件,合約執行會brownie.exceptions.VirtualMachineError: revert
因鏈上fallback
呼叫而停止。一旦發射被刪除,測試套件再次通過而沒有問題。任何想法這裡出了什麼問題或我如何解決這個問題?我有分層呼叫數據,事件會以某種方式影響它嗎?這帶回了未初始化指針的記憶……
合約通過回退函式進行合約內呼叫。問題在於呼叫視圖函式,這些函式編譯成
staticcalls
不能發出事件。