Я пытаюсь использовать web3 или JSON-RPC, чтобы получить список ожидающих транзакций.
В документах API web3 говорится, что вызов web3.eth.getBlock('pending')
вернет структуру, показывающую блок, number
и hash
будет нулевым. Ответ на этот вопрос соглашается и говорит, что block.transactions
будут незавершенные транзакции. Но я вижу ненулевые значения для полей number
и , которые соответствуют блоку, и список транзакций, которые были включены в этот блок. На самом деле, и вернуть тот же результат. Например, при работе локального узла контроля четности (Parity/v1.4.7-beta-f2058bd-20161227):hash
latest
web3.eth.getBlock('pending')
web3.eth.getBlock('latest')
> let Web3 = require('web3');
> let web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
> blockL = web3.eth.getBlock('latest');
> blockP = web3.eth.getBlock('pending');
> [blockL.number, blockL.hash]
[ 2971275, '0x2187511e60d49a5ed081ccc31ee4f76365727254e9001f4b563c47cee457ed3f' ]
> [blockP.number, blockP.hash]
[ 2971275, '0x2187511e60d49a5ed081ccc31ee4f76365727254e9001f4b563c47cee457ed3f' ]
Я попытался сделать вызов JSON-RPC напрямую, а также получил последний блок, а не информацию об ожидающем:
$ curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["pending",false],"id":0}' localhost:8545
{ "result" : {
... ,
"number" : "0x2d4c56",
...
"hash" : "0xb0d47255dbeae836384321b1141ae221254fa7ee4ded07f3d49afb875f05a44e"
... }
}
Я также пытался использовать узел Infura RPC и получил аналогичные результаты.
Я неправильно понимаю, что pending
должно означать? Есть ли другой способ использовать web3 или JSON-RPC для получения списка ожидающих транзакций?
(Когда я использую web3.eth.filter('pending')
, я вижу ожидающие транзакции по мере их поступления на мой узел, но это отличается от запроса текущего ожидающего набора.)
Этот ответ подсказывает мне, что web3.eth.getBlock('pending')
он актуален только в том случае, если вы занимаетесь майнингом. Ты?
Если нет, то да... возвращение текущего добытого блока кажется ожидаемым поведением.
Ваш узел четности будет возвращать другой ожидающий блок только тогда, когда включен один из режимов mining
или sealing
( ). --force-sealing
Это заставляет узел создавать ожидающие блоки и учитывать их при вызовах API.
пигги
eth.pendingTransactions
. Документы web3 и JSON-RPC не предполагают, что для просмотраpending
транзакций требуется локальный майнинг, и я вижу их сweb3.eth.filter('pending')
. Моя мотивация — отслеживать жизненный цикл транзакций, созданных Dapp. Я хотел бы сравнить список транзакций, которые я пытался отправить, с теми, которые в настоящее время ожидаются или добыты.пигги
pending
, что он полезен для пользовательского интерфейса, который хочет показать ход транзакции. Думаю, я всегда могу позвонитьweb3.eth.getTransaction()
по каждой из интересующих сделок. Если он находится на рассмотрении, значение.blockNumber
будет нулевым.