Go-Ethereum

如何收聽有關交易的節點間通信

  • January 15, 2022

如果我在乙太坊網路中執行一個完整的節點(比如 geth),那麼事情的解決方式是每個節點在收到新交易時發布/宣布新交易。我假設我的節點也必須收到很多未經確認的交易。我的目標是將(我收到交易詳細資訊的節點的)IP 地址附加到實際交易消息本身

如何做到這一點?我隱約知道ÐΞVp2p用於節點之間的通信,但它是否也用於實際的交易細節傳輸或只是對等發現?此外,我是否必須將我的 geth 客戶端作為礦工執行(以確保我從網路中的其他節點接收交易消息)。

您可以使用txpool API 方法找到有關掛起/排隊交易的大量資訊。

但是,沒有直接的方法可以找到您從中接收 tx 的節點的 IP 地址。您可以實現一個代理,您的 geth 節點通過該代理與網路通信並檢查通過它的流量,但您獲得的資訊很可能是無用的:

  • 您的節點連接到有限數量的節點(低於 100 個),而線上節點有數万個。
  • 即使您的節點 A 從節點 B 獲得大量交易,也不意味著節點 B 是該 tx 的原始廣播者。這僅意味著節點 B 比其他節點中繼更多的事務。
  • 如果您希望通過查看原始節點 IP 來抓住竊取 ETH/令牌的黑客,我幾乎可以肯定這是不可能的:可以離線創建和簽署交易並從 etherscan 廣播,並且很可能還有其他可用的託管 ETH 節點。

如果您更喜歡使用 javascript, https://web3js.readthedocs.io/en/1.0/web3-eth-txpool.html可能非常漂亮。但我擔心您正在尋找的所需 IP 資訊根本不可用。

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