使用Ethers.js和Infura以有效的方式發現如何監視和記錄“ ETH轉移”。了解有關提取內部交易和事件的更多信息! ---此視頻基於一個問題https://stackoverflow.com/q/74561210/由用戶'ldls'詢問(https://stackoverflow.com/u/5450352/)以及答案https://stackover.com/stackover.com/a/a/a/a/a/a/a/a/7456141416/ https://stackoverflow.com/u/1693192/)在“堆棧溢出”網站上。感謝這些出色的用戶和Stackexchange社區的貢獻。請訪問這些鏈接以獲取原始內容和更多詳細信息,例如替代解決方案,有關主題,評論,修訂歷史記錄等的最新更新/開發。 by-sa 4.0'(https://creativecommons.org/licenses/by-sa/4.0/)許可證和原始答案帖子在“ cc by-sa 4.0'(https://creativecommons.org/licenses/licenses/licenses/by-sa/4.0/)下獲得許可。如果您似乎有什麼事,請隨時用vlogize [at] gmail [dot] com寫信給我。 ---理解ETH轉移事件在區塊鏈技術方面,尤其是在以太坊網絡上,開發人員通常專注於跟踪交易。對於像USDT這樣的ERC-20代幣,聆聽轉移事件相對簡單,因為這些令牌會發出特定的事件日誌。但是,跟踪本地令牌ETH轉移的方法並不是直接的。如果您一直使用Ethers.js和Infura來處理ERC-20轉移事件,那麼您可能已經註意到,本機ETH轉移不會發出事件日誌。這可能會有些混亂,尤其是當您想全面跟踪網絡上的所有交易時。 ETH為什麼不轉移發射事件?在以太坊中,本地令牌傳輸通常不會發出事件日誌,除非它們是EVM消息呼叫或內部交易的一部分。這是一個簡單的故障:事件記錄:標準ERC-20令牌傳輸作為其實現的一部分發射日誌。例如,標準的ERC-20代幣合同可能具有這樣的事件:[[請參閱視頻以揭示此文本或代碼片段]] ETH傳輸:ETH的傳輸如果您想記錄事件,則需要在智能合約中進行特定的實現。這是一個基本示例:[[請參閱視頻以揭示此文本或代碼段]]在上面的合同中,只有通過Transfereth函數進行的轉移才能記錄轉移的事件。因此,如果沒有合同中的明確跟踪,則不會記錄ETH轉移。如何跟踪ETH傳輸選項1:使用匯總數據庫獲取地址的本機ETH傳輸,您可以依靠現有數據源。幾個平台匯總了區塊鏈數據,可以輕鬆跟踪各種交易而不從頭構建所有內容。選項2:構建自己的跟踪系統,如果您喜歡採用更多的動手方法,則可以創建自己的機制來跟踪ETH轉移。您可以做到這一點:通過所有交易收據循環:您需要從塊收集交易收據。這意味著在指定的塊中獲取所有交易。內部交易:請記住,內部交易將在交易收據中不可用。您將需要重建它們。您可以使用Geth或其他以太坊客戶的Debug_tracetransaction方法來執行此操作。這是一個簡單的工作流程:使用Block Explorer API獲取所有塊。檢索每個塊的交易哈希。對於每個交易哈希,請使用debug_tracetransaction訪問內部交易詳細信息。設置一個監視機制:使用Ethers.js中的JavaScript代碼中的事件偵聽器,類似於ERC-20令牌的此示例。但是,由於ETH轉移不會發出日誌,因此您將嚴重依賴對交易收據的監視。示例代碼如果您使用ethers.js來收聽ERC-20令牌傳輸,則您的代碼可能看起來像這樣:[[請參閱視頻以揭示此文本或代碼片段]]結論是因為在標準傳輸中缺乏事件日誌,請聆聽本機ETH的傳輸可能很棘手。通過依靠現有的匯總數據庫或創建自己的記錄機制,您可以有效地監視ETH交易。無論您選擇更簡單的方法還是更全面的方法,了解以太坊網絡如何處理此類交易將使您能夠創建更強大的區塊鏈應用程序。通過注意這些複雜性,您可以確保捕獲開發項目中的所有相關交易數據。
免責聲明:info@kdj.com
所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!
如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。