Transactions

如何追踪合約內部交易中可能包含的代幣轉移

  • April 6, 2022

以本次交易為例。

這個單一事務包含 50 個內部事務。

如果直接呼叫api,我們得到的是一個很長的原始十六進製input欄位。這個輸入實際上包含合約方法資訊和方法參數。而且貌似合約方式其實是批量轉賬,但是創建者並沒有提供完整程式碼。

問題來了,如果我需要通過程式碼來監控這個代幣轉賬,我該如何處理這種轉賬?由於每個人都可以創建新的合約,我是否需要跟踪所有處理這種代幣的合約?

你不需要做任何特別的事情。

這些類型的批量發送合約仍然會發出正常的 ERC20 標準Transfer事件。您所需要的只是一個在事務日誌中搜尋這些事件的程序,就像您搜尋單個 erc20 傳輸 tx 一樣。

parity 和 geth 都支持日誌過濾器,也可以通過 web3 訪問。

你有幾種方法:

  1. 用於truffle-contract獲取契約程式碼並訂閱事件(在您的情況下 - Transfer)。Truffle-Contract 自動將日誌解碼為可讀格式。缺點:你必須使用 Truffle 基礎設施來編譯程式碼並在地址獲取合約。
  2. 前段時間我使用truffle-contract了負責事務日誌解碼的程式碼。不幸的是,它是為封閉源項目完成的,但我絕對記得我從decodeLogs方法中反轉了它,假設你可以嘗試做同樣的事情 - 提取這個方法與所有依賴項並用你的原始事務日誌數據提供它並獲得可讀的東西。

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