Solidity

我們還能從自毀合約中獲取歷史狀態值和事件嗎?

  • March 11, 2022

在合約被自毀後,我知道我將無法再呼叫合約來獲取它在被銷毀之前的最新狀態值。

但是,是否仍然可以獲取已銷毀的合約中的歷史狀態值和發出的事件?

我讀到該自毀合約的所有世界狀態都將被刪除。我不確定刪除的範圍是什麼。

只是為了提供一些上下文,我的意圖是使用 Graph 索引我的合約,其中一些最終可能會被破壞。但是,我擔心這是否仍然可行,因為在索引器查詢區塊鏈時某些合約可能已經被破壞。

區塊鏈歷史永遠不會改變(除了鏈重組,這裡不相關)。X 時間區塊鏈中的任何內容都將永遠保留在那裡。

在合約上使用selfdestruct只會將其從未來的區塊中刪除。理論上,稍後可能會將另一個合約部署到同一地址,但這不太可能(由於地址衝突的可能性很小)。因此,您可以在區塊 X 的區塊鏈中查詢在區塊 X 發生的數據,並且您將始終獲得相同的數據。

請注意,您需要一個存檔節點才能進一步查詢過去的歷史塊。

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