Смотреть ожидающую транзакцию со всех узлов в сети

У меня есть два гет-узла в моей частной сети: nodeAи nodeB. Когда я отправляю транзакцию из nodeA, я могу видеть эту транзакцию в ожидающем пуле после метода вызова, txpool.contentесли у меня есть доступ к nodeA. Но можно ли получить txpool, nodeAесли у меня есть доступ только к nodeB? И как я могу просмотреть весь ожидающий txpool со всех узлов?

afaik, вам нужно, чтобы оба узла были синхронизированы как «полные узлы». Если вы использовали свет для их синхронизации, у них не будет доступа

Ответы (3)

Пул транзакций является чем-то внутренним для узла. В 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
На самом деле есть методы, которые я использую сейчас, и они просто дают мне пул моих файлов nodeA. Но я хочу просмотреть ожидающие транзакции и с других узлов.
Афаик, извне вы можете запросить его только через порт jsonrpc.

Узлы не могут сообщить вам о транзакциях, о которых они не знают.

У каждого узла есть пул транзакций, но нет гарантии, что это тот же список, что и на другом узле. На самом деле сетевая задержка гарантирует наличие различий.

Остерегайтесь использования пула транзакций для логики приложения. Например, пул транзакций — не очень хороший способ определить одноразовый номер для следующей транзакции: получение ошибочного одноразового номера слишком мало, но одноразовый номер правильно застрял с одного дня .

Надеюсь, поможет.

Насколько я знаю, каждый узел знает только о своем собственном txpool.

Если вы хотите узнать, где эти транзакции хранятся в geth, вы можете найти файл transaction.rlp в каталоге вашего узла. Если вы хотите изменить это имя файла, вы можете сделать это, используя следующий флаг:

  --txpool.journal value       Disk journal for local transaction to survive node restarts (default: "transactions.rlp")
С eth65 узлы могут сплетничать о транзакциях пула, прежде чем они будут включены в блоки.