Go-Ethereum

哪些操作可以改變乙太坊地址餘額?

  • October 4, 2021

我正在編寫一個程序來監控一組乙太坊地址的餘額變化。我對基於 UTXO 的硬幣做了同樣的事情,邏輯非常簡單。所有的變化都直接記錄在塊中。但乙太坊似乎更複雜。我必須監控哪些操作以確保不會遺漏任何內容?重要的是我必須監控天平的變化,而不是天平本身。

我發現的能夠改變餘額的操作:

  1. 區塊鏈層面的基本交易

  2. 挖礦的區塊獎勵

  3. 智能合約內部交易

還有什麼我需要注意的嗎?當 ETH 2.0 到來時,Staking 獎勵的形式會不會和目前的餘額更新類型有所不同?

我會將 SELFDESTRUCTs 添加到列表中。它們非常獨特,因為它們可以在不執行程式碼的情況下將乙太幣轉移到智能合約中。另外,我會在塊 1920000添加由EIP-779執行的特殊一次性傳輸。

您可以嘗試製作操作列表,但最強大的是**執行一個處理每個事務的檢測節點,**例如如何獲取合約內部事務中提到的

您問題中的第三項已經需要它。

正如@Mikhail 所指出的,SELFDESTRUCT這也是一個重要的問題。

我能想到的另一種情況是您在創建合約的同時發送乙太幣。

因此,與其嘗試創建“操作列表”,不如讓一個檢測節點處理每個事務,而不是嘗試找出所有邊緣情況,這可能是最可靠的。CREATE2(連同)可能存在一些場景SELFDESTRUCT。(還有@Mikhail 提到的不規則狀態變化。)

如果嘗試擁有“操作列表”是為了能夠在不處理事務的情況下進行靜態檢查,那麼可能有一種理論認為 EVM 的偽圖靈完備性意味著不可能靜態地進行:您必須執行 EVM 程式碼來確定它是否實際上確實改變了地址的餘額。

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