簡體   English   中英

如何過濾給定地址的傳入交易?

[英]How can I filter incoming transactions for a given address?

使用 Infura 作為我的以太坊節點,我訂閱了 web 套接字中的pendingTransactions項。 對於發生的每筆交易,我都會收到一個交易 ID。 為了確定它是否與我相關,我必須調用getTransaction()方法

因此,我不得不調用該方法 100,000 次,這使我超出了 Infura 配額

公平地說,我什至不想要待處理的交易。 我更喜歡已完成的交易,但 API 似乎沒有提供

我遇到過這篇文章: https://medium.com/coinmonks/monitoring-an-ethereum-address-with-web3-js-970c0a3cf96d這似乎支持以太坊不會讓這件事變得簡單的觀點

誰能推薦一個更好的方法?

TIA, ekkis

您可以訂閱您的節點提供商支持的任何 websocket 頻道。 但是,大多數提供商(包括 Infura)使用go-ethereumopenethereum客戶端軟件,默認情況下僅實現 web3js 文檔中列出的四個通道: pendingTransactionssyncingnewBlockHeaderslogs

因此,為了僅訂閱到/來自指定地址的挖掘交易,您需要找到一個提供者,該提供者使用過濾器實現交易通道(不太可能)。 或者運行您自己的節點並使用通道的自定義實現來擴展其代碼(技術上可行,但范圍不小)。

解決方法:使用收集所有事務的外部服務,將它們存儲在可搜索的數據庫中,並允許其用戶請求過濾數據。 例如,Etherscan 在這種情況下有一個有限的免費端點

我寫了一個工具,可以完全滿足你的需要,你必須給工具你的節點 RPC(HTTP)地址,塊號才能開始索引,它有一個 web 接口供你上傳要檢查的地址列表/監視他們的傳入交易(不包括智能合約交易),然后當您有傳入交易到其中一個地址時,您會收到通知,通知將發送到您提供的 webhook 地址。

https://github.com/ahmadbrainworks/fiddi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM