Ich versuche, von einem Node.js-Server aus eine Verbindung zu Kovan Testnet herzustellen. Ich habe versucht, eine Verbindung herzustellen, um vergangene Ereignisse abzurufen.
Bisherige Schritte: -
Die Verbindung wurde über Infura hergestellt. Versuchte diese Schritte über mehrere Versionen
Version 0.20.3 (Version auf Github):
var MyContract = web3.eth.contract(JSON);
contractAddress=<contractAddress>;
var contractInstance = MyContract.at(contractAddress);
var events = contractInstance.allEvents({fromBlock: 5000000, toBlock: 'latest'});
events.get(function(error, logs){
console.log(logs);
});
Trotz vorhandener Ereignisse wird keine Ausgabe erzeugt. Wenn Infura das Problem ist, gibt es eine andere Möglichkeit, Ereignisse von Kovan Testnet zu erhalten?
Ich habe versucht, mit web3-1.0.0.beta19 eine Verbindung zu Infura über Websockets herzustellen, aber festgestellt, dass es keine Websockets für Kovan gibt.
Ich habe eine Problemumgehung gefunden, indem ich den Zero-Client-Anbieter verwendet habe . Es funktioniert stabil für die von Infura bereitgestellten Mainnet- und Kovan-RPC-Verbindungen.
Verwenden Sie beim Starten der Parität mit, --chain=kovan
um eine Verbindung zum Kovan-Testnetz herzustellen, die zusätzlichen Optionen von pubsub, parity, parity_pubsub in --ws-api
s und fügen Sie auch --jsonrpcapis=all
die Option hinzu.
Wenn Sie die Parität mit den oben genannten Optionen starten, können Sie sich für Vertragsereignisse registrieren, indem Sie contractInstance.events.MyEvents()
Ihren Javascript-Code in nodejs verwenden.
Meine nodejs-Anwendung, die perfekt funktionierte, während sie auf einem lokalen Ethereum-Knoten lief, hatte Probleme beim Erfassen von Vertragsereignissen, während sie zu Kovan Testnet wechselte. Ich konnte das Problem mit den oben genannten Optionen lösen.
Kopieren Sie den vollständigen Befehl, der für mich unten funktioniert hat.
parity --chain=kovan --ws-apis="eth,net,web3,personal,web3,pubsub,parity,parity_pubsub" --rpcapi="eth,net,web3,personal" --jsonrpc-apis=all
Ich hoffe es hilft.