Transactions
如何從任何交易中獲取 Eth 轉移資訊,尤其是具有內部“交易”的交易?
如果我想跟踪交易中的 ERC-20 代幣轉移,即使它們是智能合約執行的結果,我也可以讀取這些事件。
但是,如果交易呼叫了智能合約並且該合約將 Eth 發送到某處,我如何以程式方式檢測到呢?對於任意交易,我想知道哪些地址的 Eth 增加或減少。
如果這需要啟用調試模組的存檔節點,那麼有關如何執行此操作的詳細資訊將很有幫助。
這裡唯一提出的其他問題是:如何以程式方式掃描從智能合約到我的地址的乙太幣轉移?但它沒有得到答案。
你混淆了兩件事:
- 代幣轉移
- 乙太幣轉賬
如果您想要令牌傳輸只需監聽
Transfer
事件,非常符合 ERC20 的令牌將發出此事件,無論它發出的堆棧幀有多深:Transfer(from, to, value)
不需要存檔節點,如果您使用 Infura 的免費 API 密鑰,則根本不需要節點
現在,如果你想要 ETH 轉移,這要復雜得多。
您需要跟踪塊中的每筆交易。ETH 轉賬將按照以下說明進行:
CALL CALLCODE DELEGATECALL STATICALL CREATE CREATE2 SUICIDE (SELFDESTRUCT)
也有在 EVM 之外進行的轉移,它們是:
- 為交易購買氣體(在呼叫 EVM 之前)
- 挖礦獎勵(區塊處理完畢後)
跟踪日誌將包含堆棧,因此要獲取傳輸的 ETH 值,您需要讀取堆棧的最後一個元素。
如果要生成從現在到未來的數據,則不需要存檔節點,但如果您想要過去的歷史存檔節點是必須的。此外,如果您想驗證您是否有正確的實現(沒有錯誤),您將需要歸檔節點,因為完整節點僅跟踪最後 128 個塊,舊塊的狀態被修剪