Ich habe zwei Geth-Knoten in meinem eigenen privaten Netzwerk: nodeA
und nodeB
. Wenn ich eine Transaktion von sende nodeA
, kann ich diese Transaktion nach der Anrufmethode im ausstehenden Pool sehen, txpool.content
wenn ich Zugriff auf habe nodeA
. Aber ist es möglich, txpool
von zu kommen, nodeA
wenn ich nur Zugriff auf habe nodeB
? Und wie kann ich alle ausstehenden txpools von allen Knoten beobachten?
Der Transaktionspool ist etwas Internes des Knotens. In Geth gibt es eine Web3-Erweiterung, um sie per JSON RPC remote abzufragen. Siehe https://github.com/ethereum/go-ethereum/blob/master/internal/web3ext/web3ext.go (TxPool_JS).
Sie müssen JSON RPC direkt verwenden (mit aktivieren -rpcapi txpool
):
Z.B:
curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_content","params":[],"id":1}' http://localhost:8545
{"jsonrpc":"2.0","id":1,"result":{"pending":{},"queued":{}}}
Die vollständige Methodenliste ist:
nodeA
. Aber ich möchte auch ausstehende TXs von anderen Knoten erneut überprüfenDie Nodes können Ihnen nichts über Transaktionen sagen, von denen sie nichts wissen.
Jeder Knoten hat einen Transaktionspool, aber es gibt keine Garantie dafür, dass es sich um dieselbe Liste handelt, die Sie möglicherweise auf einem anderen finden. Tatsächlich garantiert die Netzwerklatenz, dass es Unterschiede gibt.
Hüten Sie sich davor, den Transaktionspool für App-Logik zu verwenden. Zum Beispiel ist der Transaktionspool keine sehr gute Methode, um die Nonce für die nächste Transaktion zu ermitteln: Fehler Nonce zu niedrig bekommen, aber Nonce steckt seit einem Tag fest
Ich hoffe es hilft.
AFAIK jeder Knoten kennt nur seinen eigenen Txpool.
Wenn Sie wissen möchten, wo diese Transaktionen in Geth gespeichert sind, können Sie in Ihrem Knotenverzeichnis nach Transactions.rlp suchen. Falls Sie diesen Dateinamen ändern möchten, können Sie dies mit dem folgenden Flag tun:
--txpool.journal value Disk journal for local transaction to survive node restarts (default: "transactions.rlp")
Daithí