Tengo dos nodos geth en mi propia red privada: nodeA
y nodeB
. Cuando envío una transacción desde nodeA
, puedo ver esta transacción en el grupo pendiente después del método de llamada txpool.content
si tengo acceso a nodeA
. Pero, ¿es posible obtenerlo si solo tengo acceso txpool
a ? ¿Y cómo puedo ver todos los txpool pendientes de todos los nodos?nodeA
nodeB
El grupo de transacciones es algo interno del nodo. En geth, hay una extensión web3 para consultarlo de forma remota a través de JSON RPC. Consulte https://github.com/ethereum/go-ethereum/blob/master/internal/web3ext/web3ext.go (TxPool_JS).
Tendrá que usar directamente JSON RPC (habilitar con -rpcapi txpool
):
P.ej:
curl -X POST --data '{"jsonrpc":"2.0","method":"txpool_content","params":[],"id":1}' http://localhost:8545
{"jsonrpc":"2.0","id":1,"result":{"pending":{},"queued":{}}}
La lista completa de métodos es:
nodeA
. Pero también quiero volver a revisar los txs pendientes de otros nodosLos nodos no pueden informarle sobre transacciones que no conocen.
Cada nodo tiene un grupo de transacciones, pero no hay garantía de que sea la misma lista que podría encontrar en otro. De hecho, la latencia de la red garantiza que habrá diferencias.
Tenga cuidado con el uso del grupo de transacciones para la lógica de la aplicación. Por ejemplo, el grupo de transacciones no es una muy buena manera de calcular el nonce para la próxima transacción: obtener un error nonce demasiado bajo, pero el nonce está atascado correctamente desde un día
Espero eso ayude.
AFAIK, cada nodo solo conoce su propio txpool.
Si desea saber dónde se almacenan esas transacciones en geth, puede buscar transacciones.rlp dentro de su directorio de nodos. En caso de que desee cambiar ese nombre de archivo, puede hacerlo utilizando el siguiente indicador:
--txpool.journal value Disk journal for local transaction to survive node restarts (default: "transactions.rlp")
daithí