Grundsätzlich möchte ich in der Lage sein, den Saldo von Smart Contracts und einzigartige Transaktionen über einen bestimmten Zeitraum zu verfolgen, z. B. die letzten 24 Stunden, die letzte Stunde und so weiter.
Was wäre der beste Ansatz, um dies zu tun? Wie soll ich die Daten speichern, die ich erhalte, um meine API, SQL/NoSQL-Datenbank zu erstellen?
Vielen Dank im Voraus!
Sie können das Ether-Guthaben eines Smart Contracts in jedem Block abrufen, indem Sie den Web3 JSON RPC verwenden, der durch Web3-Bibliotheken wie Web3.js verfügbar gemacht wird:
web3.eth.getBalance(address [, defaultBlock] [, callback])
Wie Sie sehen können, unterstützt dieser Funktionsaufruf einen "Block"-Eingang, der verwendet werden kann, um den Ether-Saldo der angegebenen Adresse an einem bestimmten Block abzurufen.
Blöcke werden nicht in perfekten Intervallen erstellt, aber Sie sollten in der Lage sein, den benötigten Block anzunähern, indem Sie davon ausgehen, dass die durchschnittliche Blockzeit ~15 Sekunden beträgt.
Sie können dann bestätigen, dass Sie den richtigen Block haben, indem Sie den timestamp
Wert aus dem Block ( web3.eth.getBlock()
) abrufen und bei Bedarf anpassen.
Diese Art von Logik ist in diese JavaScript-Anwendung integriert: ETH Balance Graph ( Code )
Das Ermitteln der Transaktionsanzahl für den Vertrag ist komplizierter, da eingehende Transaktionen für einen Vertrag nicht vom Netzwerk indiziert werden.
Meine Vorschläge wären, die Transaktionen zu verfolgen, die ein Ereignis ausgeben .
Sie können alle vergangenen Ereignisse für einen Vertrag abrufen mit:
myContract.getPastEvents(event[, options][, callback])
Daraus sollten Sie eine ziemlich gute Vorstellung von der Aktivität des Smart Contracts im Laufe der Zeit bekommen. Insbesondere, wenn es sich bei dem Vertrag um einen ERC20-Token handelt, der bei jeder Übertragung von Token ein Transfer
Ereignis ausgeben muss und dasselbe Ereignis ausgeben sollte , wenn Token erstellt werden.
Um jedoch wirklich alle internen und externen Transaktionen zu erhalten, müssten Sie jeden Block seit der Vertragserstellung durchlaufen und nach diesen Transaktionen suchen (soweit ich weiß). Dies ist, was Etherscan tut, und ist keine triviale Aufgabe.
Demeterca Ionuț-Alexandru
Shawn Tabrizi
Demeterca Ionuț-Alexandru
Shawn Tabrizi
Demeterca Ionuț-Alexandru