Ich habe einen Vertrag mit einigen Veranstaltungen abgeschlossen. Es wurde mit einem lokalen Knoten getestet geth
und funktionierte wie erwartet. Nun möchte ich es einsetzen und habe mich für infura.io als Public Node Provider entschieden.
Hier hatte ich ein Problem mit dem Stoppen der Anzeige: infura bietet nur begrenzte Set- oder RPC-Aufrufe und newFilter
ist nicht in dieser Liste enthalten. Ich sehe, dass beim Abonnieren von Ereignissen in meinem Vertrag zuerst ein fehlgeschlagener Anruf web3
gesendet wird .eth_newFilter
Ich vermute, dass ich die Filteranweisung sicher aus meiner Vertragsdefinition entfernen kann:
this.contract.logWinner({fromBlock:'latest'}).watch(this.onWinner.bind(this));
und ersetzen Sie es durch
this.contract.logWinner({}).watch(this.onWinner.bind(this));
aber newFilter
die Funktion ruft immer noch auf und die App ist abgestürzt.
Meine Frage: Könnte ich es irgendwie vermeiden zu rufen eth.newfilter
?
Anstelle der infura.io API, die nicht unterstützt wird,eth_newFilter
können Sie die etherscan.io API verwenden .
So erhalten Sie beispielsweise EOS- Transfer
Ereignisse:
const api = "https://api.etherscan.io/api?module=logs&action=getLogs";
const range = "&fromBlock=379224&toBlock=latest";
const addr = "&address=0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0";
const topic = "&topic0=0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
fetch(api + range + addr + topic).then(r => r.json).then(console.log);
Alex GP
max taldykin