Go-Ethereum

觀察網路中所有節點的待處理交易

  • March 15, 2019

我在自己的私有網路中有兩個 geth 節點:nodeAnodeB. 當我從 發送交易時,如果我有權訪問,我可以nodeA在呼叫方法後在掛起池中看到此交易。但是,如果我只能訪問,是否有可能從中獲得?以及如何從所有節點查看所有待處理的 txpool?txpool.content``nodeA``txpool``nodeA``nodeB

交易池是節點內部的東西。在 geth 中,有一個 web3 擴展可以通過 JSON RPC 遠端查詢它。請參閱https://github.com/ethereum/go-ethereum/blob/master/internal/web3ext/web3ext.go (TxPool_JS)。

您必須直接使用 JSON RPC(使用 啟用-rpcapi txpool):

例如:

curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_content","params":[],"id":1}' http://localhost:8545

{"jsonrpc":"2.0","id":1,"result":{"pending":{},"queued":{}}}

完整的方法列表是:

  • txpool_content
  • txpool_inspect
  • txpool_status

節點不能告訴你他們不知道的交易。

每個節點都有一個事務池,但不能保證它與您可能在另一個節點上找到的列表相同。事實上,網路延遲保證會有差異。

謹防將事務池用於應用程序邏輯。例如,事務池不是計算下一個事務的隨機數的好方法:得到錯誤隨機數太低,但隨機數從一天開始就被卡住了

希望能幫助到你。

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