Wie überwacht man eine große Menge von Ethereum-Adressen auf Gleichgewicht?

Ich plane, ein System aufzubauen, bei dem Benutzer per E-Mail und App-Benachrichtigung benachrichtigt werden, wenn sich ihr Ether-Guthaben geändert hat. Ich war verwirrt, wie man eine große Menge von Ethereum-Adressen rund um die Uhr überwacht, um den Kontostand zu überprüfen und darauf basierend ein Ereignis auszulösen. Bietet web3.js eine Funktion zur Überwachung einer großen Menge von Ethereum-Adressen?

Dies ist eine alte Antwort auf eine ähnliche Frage ethereum.stackexchange.com/a/27525 . Ich würde vorschlagen, die Verwendung debug_getModifiedAccountsByNumberzusammen mit einem Blockfilter und möglicherweise einer externen Datenbank zu untersuchen.

Antworten (3)

Ich denke, der effizienteste Weg, dies zu tun, wäre, nach neuen Blöcken zu suchen und die Änderungen der Kontostände aus den Transaktionen zu extrahieren, die Sie im neuen Block finden.

Auf diese Weise überwachen Sie im Grunde alle Konten und können Benachrichtigungen an diejenigen senden, die Ihren Dienst abonniert haben.

Ein weiterer Vorteil dieses Ansatzes besteht darin, dass Sie Gleichgewichtsänderungen sofort erkennen können, wenn sie auftreten. Und Sie könnten Ihre Kunden über andere Dinge informieren, die auf der Blockchain passieren, die sich nicht auf den Kontostand auswirken.

Ich glaube nicht, dass web3 Ihnen diese Art von Funktionalität bietet, stattdessen können Sie sie mit getBalance selbst erstellen .

Sie müssen die Funktion nur für jede Adresse aufrufen, die Ihren Dienst abonniert hat, und eine Benachrichtigung senden, falls der aktuelle Kontostand die von Ihnen gesuchten Bedingungen widerspiegelt, und dann können Sie die entsprechende Aktion auslösen.

Iterieren Sie dies über die Zeit nach einem bestimmten Timeout und Sie haben einen 27/7-Service.

In dieser Antwort auf eine ähnliche Frage habe ich einen Beispielcode geschrieben, der die Salden einer Reihe von Adressen überwacht. Ändern Sie einfach den Überweisungscode, um Ihren Ereignisauslöser aufzurufen. Beachten Sie, dass der Code vom Remote-Web3-Anbieter abhängt, was für geringe Leistungsanforderungen in Ordnung sein kann. Für hohe Leistungsanforderungen könnte es sich lohnen, direkt auf Geth oder Parity zu bauen.

Eigentlich ignoriere ich meine Antwort, habe gerade herausgefunden, dass ich dieselbe Antwort auf dasselbe OP gegeben habe :)