Ich mache eine Webanwendung, die die Ereignisse aus meinem Vertrag benötigt, um ihren Zustand zu initialisieren. Ich habe den Infura-Websocket-Anbieter verwendet, aber er scheint stark zu verzögern und die Verbindungen während der letzten Woche unerwartet zu schließen. getPastEvents
Methode funktioniert nicht gut.
Ich möchte, dass meine Anwendung von Smartphones aus zugänglich ist (zumindest im Nur-Lese-Modus). Ich kann mich also nicht nur auf den Knoten oder die Brieftasche verlassen, die auf demselben Computer ausgeführt werden.
Gibt es eine Möglichkeit, alle Ereignisse aus einem Vertrag zuverlässig abzurufen? Wie erreicht beispielsweise etherdelta dies? Sie betreiben einen Server mit einem eigenen privaten Knoten, der in jedem Block statische Daten generiert?
Sie können die Ereignisüberwachung bei jedem Transaktionsaufruf verwenden und dann das Ereignis von Tx-Quittungen abrufen.
Beispielcode
const self = this;
this.props.deposit(this.state.amount).then((result) => {
if (!result) {
Message.error('XYZ')
}
var event = self.props.getEventXXX()
event.watch(function (err, response) {
if(response.event == 'XXX') {
notification.success({
message: 'ABC',
description: 'XYZ!',
});
event.stopWatching()
}
});
Sie können auch auf dieses Dokument verweisen: https://github.com/ethereum/wiki/wiki/JavaScript-API#contract-events
Rob Yart
Ha ĐANG