Ошибка «Соединение не открыто» при подписке на адрес с веб-сокетом

Я пытаюсь подписаться на транзакции, отправленные на определенный адрес ethereum или с него. Я также хочу проверить это в локальной частной сети, поэтому я не использую etherscan или что-то в этом роде.

Я запускаю geth с помощью этой команды:geth --ws --mine --minerthreads=1 --datadir ./test/testDataDir/ --networkid 15

Я подключаюсь к консоли geth с помощью этой команды:geth attach ipc:./test/testDataDir/geth.ipc

Затем я разблокирую учетную запись и отправляю транзакцию, например:

web3.eth.sendTransaction({from:eth.coinbase, to:"0x3e1127Bf1A673D378a8570f7a79cEA4F10E20489", value: 100}) "0xe122a9fa56068f9c10802bf607b572d57de83022f6b46238b6a96629c5a0478e"

Это вывод майнера:

INFO [07-03|11:18:04] Successfully sealed new block number=1846 hash=fe4bcc…c4eea9 INFO [07-03|11:18:04] 🔗 block reached canonical chain number=1841 hash=a45268…7aee1b INFO [07-03|11:18:04] 🔨 mined potential block number=1846 hash=fe4bcc…c4eea9 INFO [07-03|11:18:04] Commit new mining work number=1847 txs=0 uncles=0 elapsed=160.998µs INFO [07-03|11:18:05] Submitted transaction fullhash=0xe122a9fa56068f9c10802bf607b572d57de83022f6b46238b6a96629c5a0478e recipient=0x3e1127Bf1A673D378a8570f7a79cEA4F10E20489 INFO [07-03|11:18:14] Successfully sealed new block number=1847 hash=76f3ee…169d0f INFO [07-03|11:18:14] 🔗 block reached canonical chain number=1842 hash=d170fb…84b87e INFO [07-03|11:18:14] 🔨 mined potential block number=1847 hash=76f3ee…169d0f INFO [07-03|11:18:14] Commit new mining work number=1848 txs=1 uncles=0 elapsed=233.923µs

Вот как я подключаюсь к web3 из своего кода:

const Web3 = require('web3'); //1.0.0-beta.34 if (typeof web3 !== 'undefined') { web3 = new Web3(web3.currentProvider); } else { web3 = new Web3('ws://127.0.0.1:8546'); }

И вот тут я подписываюсь на логи. Я хочу иметь обратный вызов всякий раз, когда транзакция отправляется на определенный адрес.

var options = { fromBlock: '0x0', address: '0x3e1127Bf1A673D378a8570f7a79cEA4F10E20489' }; var subscription = web3.eth.subscribe('logs', options, function(error, result){ if(error || result == null){ console.log('Error when watching incoming transactions: ', error.message); return; } console.log('Got something back: ', result); // code continues... } subscription.on('data', function(log){ console.log(log); });

Но это то, что выводится на консоль из моего кода:

connection not open on send() Error when watching incoming transactions: connection not open connection not open on send() Error when watching incoming transactions: connection not open connection not open on send() Error when watching incoming transactions: connection not open connection not open on send() Error when watching incoming transactions: connection not open

Кто-нибудь знает, что может быть причиной этого? Возможно, я неправильно подключаюсь к веб-сокету.

Итак, я получил то, что хотел, подписавшись, pendingTransactionsа затем проверив, была ли транзакция отправлена ​​​​на адрес, который я сохранил в массиве. Я думаю, что под капотом подписка на индивидуальный адрес, вероятно, делает что-то подобное, так что все в порядке.

Ответы (1)

Попробуй это :

geth --ws  --wsaddr "0.0.0.0" --wsapi "eth,net,web3,admin,shh" --wsorigins "*"  --mine --minerthreads=1 --datadir ./test/testDataDir/ --networkid 15
Спасибо за ответ! Ошибка исчезает, но вместо этого вообще ничего не печатает.