Evm
是否可以從還原的事務中檢索事件日誌?
我知道 Solidity 即將發生變化,這將允許返回帶有字元串錯誤消息的 require() 呼叫。但我想知道現在是否可以做這樣的事情。由於每個節點都必須執行程式碼直到
revert
知道程式碼恢復,這是否意味著事件仍將儲存在歷史記錄中?如果我們正在操作一個節點,我們難道不能看到即使在還原的事務內部也觸發了該事件?我不是 EVM 方面的專家,所以也許我遺漏了一些重要的東西,但似乎這樣的事情應該是可能的。
不,當 a
revert
發生時,事務狀態更改將被丟棄,包括任何事件日誌。此行為在此處的黃皮書中定義:
w = REVERT 時的 A 0位是我上面所說的正式版本:在 revert 的情況下不記錄任何日誌。
如果您正在執行自己的節點,當然您可以做任何您喜歡的事情。例如,Geth 可以提供非常詳細的事務跟踪,您可以查看並查看即使是中止的事務也發生了什麼。但這些都不會儲存在主區塊鏈上。