Fehler „Verbindung nicht geöffnet“ beim Abonnieren der Adresse mit Websocket

Ich versuche, Transaktionen zu abonnieren, die an oder von einer bestimmten Ethereum-Adresse gesendet werden. Ich möchte dies auch in einem lokalen privaten Netzwerk testen, weshalb ich kein Etherscan oder ähnliches verwende.

Ich starte geth mit diesem Befehl:geth --ws --mine --minerthreads=1 --datadir ./test/testDataDir/ --networkid 15

Ich verbinde mich mit diesem Befehl mit der Geth-Konsole:geth attach ipc:./test/testDataDir/geth.ipc

Dann entsperre ich das Konto und übermittle eine Transaktion wie folgt:

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

Das ist die Ausgabe des Miners:

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

So verbinde ich mich von meinem Code aus mit 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'); }

Und hier abonniere ich die Protokolle. Ich möchte einen Rückruf haben, wenn eine Transaktion an eine bestimmte Adresse gesendet wird.

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); });

Aber das wird von meinem Code auf der Konsole gedruckt:

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

Hat jemand eine Ahnung woran das liegen könnte? Vielleicht verbinde ich mich nicht richtig mit dem Websocket.

Also habe ich bekommen, was ich wollte, indem ich abonniert pendingTransactionsund dann überprüft habe, ob die Transaktion an eine Adresse gesendet wurde, die ich in einem Array gespeichert habe. Ich denke, unter der Haube macht das Abonnieren einer einzelnen Adresse wahrscheinlich etwas Ähnliches, also ist alles gut.

Antworten (1)

Versuche dies :

geth --ws  --wsaddr "0.0.0.0" --wsapi "eth,net,web3,admin,shh" --wsorigins "*"  --mine --minerthreads=1 --datadir ./test/testDataDir/ --networkid 15
Danke für die Antwort! Der Fehler verschwindet, aber stattdessen wird überhaupt nichts gedruckt.