Infura .watch-Fehler: Ungültige JSON-RPC-Antwort: „“ [Duplikat]

Ich versuche, den Befehl .watch() für ein Ereignis in meinem Vertrag zu verwenden. Immer wenn ich die .js-Datei ausführe, wird mir Folgendes angezeigt:

Fehler: Ungültige JSON-RPC-Antwort: „“

Ich bin nicht an meinem Computer und kann meine .js-Datei bis später heute nicht einfügen, aber was deutet dieser Fehler an? Es wird jedes Mal angezeigt, wenn die Datei ausgeführt wird. Könnte es ein Problem mit der Vertragsinstanz oder web3 selbst sein?

Vielen Dank im Voraus.

Sie können keine Verbindung zu Ihrem Knoten herstellen (ich glaube, Sie verwenden den Geth-Client).
Welche Werkzeuge verwenden Sie (z. B. Trüffel, Ganache usw.)?
Ich stelle den Vertrag über Remix im Ropsten-Testnetzwerk bereit und setze den web3-Anbieter auf den Ropsten Infura-Knoten
Infura unterstützt keine Ereignisse, die Watch verwenden, Sie müssen Abonnement von web3 v1.0 und dem Websocket-Endpunkt verwenden.

Antworten (3)

Wie von Ismael erwähnt, unterstützt Infura die Verwendung von .watch()-Ereignissen nicht. Die Lösung ist die Verwendung der Infura-Websockets. Den funktionierenden Code finden Sie hier: Infura web3 provider for Events (.get & .watch)

Ich füge auch Probleme mit watch() auf web3 hinzu, um nach Ereignissen zu suchen.

Aber ich schaffe es, sie zu lösen, indem ich die alternative Methode ( docs ) verwende :

// Or pass a callback to start watching immediately
var event = myContractInstance.MyEvent([{valueA: 23}] [, additionalFilterObject] , function(error, result){
  if (!error)
    console.log(result);
});

Für eine Veranstaltung dieser Art:

event singleNumber(uint256 number);

Den Wert bekomme ich so:

var event = myContractInstance.singleNumber({}, function(error, result){
  if (!error)
    var number = result.args.number.toNumber();
});

Es gibt einen Github-Thread zu dieser Antwort: https://github.com/trufflesuite/truffle/issues/852

Demnach handelt es sich um ein Problem mit Infura und offenen Handlern.