Go-Ethereum
觀察網路中所有節點的待處理交易
我在自己的私有網路中有兩個 geth 節點:
nodeA
和nodeB
. 當我從 發送交易時,如果我有權訪問,我可以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
節點不能告訴你他們不知道的交易。
每個節點都有一個事務池,但不能保證它與您可能在另一個節點上找到的列表相同。事實上,網路延遲保證會有差異。
謹防將事務池用於應用程序邏輯。例如,事務池不是計算下一個事務的隨機數的好方法:得到錯誤隨機數太低,但隨機數從一天開始就被卡住了
希望能幫助到你。