Protokollierung von Daten aus Smart Contracts mit Ereignissen
In Solidity sind Ereignisse Signale, die von Smart Contracts ausgegeben werden können. Dapps oder alles, was mit der JSON-RPC-API von Ethereum verbunden ist, können auf diese Ereignisse lauschen und entsprechend reagieren. Ein Ereignis kann auch indiziert werden, sodass der Ereignisverlauf später durchsuchbar ist.
Ereignisse
Das häufigste Ereignis auf der Ethereum-Blockchain ist zum Zeitpunkt der Erstellung dieses Artikels das Transfer-Ereignis, das von ERC20-Tokens ausgegeben wird, wenn jemand Token überträgt.
1event Transfer(address indexed from, address indexed to, uint256 value);Die Ereignissignatur wird innerhalb des Vertragscodes deklariert und kann mit dem Schlüsselwort emit ausgegeben werden. Zum Beispiel protokolliert das Transfer-Ereignis, wer die Übertragung gesendet hat (from), an wen (to) und wie viele Token übertragen wurden (value).
Wenn wir zu unserem Counter-Smart-Contract zurückkehren und beschließen, jedes Mal zu protokollieren, wenn der Wert geändert wird. Da dieser Vertrag nicht zur Bereitstellung gedacht ist, sondern als Grundlage für die Erstellung eines anderen Vertrags durch Erweiterung dient, wird er als abstrakter Vertrag bezeichnet. Im Fall unseres Counter-Beispiels würde es so aussehen:
1pragma solidity 0.5.17;23contract Counter {45 event ValueChanged(uint oldValue, uint256 newValue);67 // Private Variable vom Typ unsigned int zur Speicherung der Anzahl der Zählungen8 uint256 private count = 0;910 // Funktion, die unseren Zähler inkrementiert11 function increment() public {12 count += 1;13 emit ValueChanged(count - 1, count);14 }1516 // Getter zum Abrufen des Zählwerts17 function getCount() public view returns (uint256) {18 return count;19 }2021}Alles anzeigenBeachten Sie Folgendes:
-
Zeile 5: Wir deklarieren unser Ereignis und was es enthält: den alten Wert und den neuen Wert.
-
Zeile 13: Wenn wir unsere Zählvariable inkrementieren, geben wir das Ereignis aus.
Wenn wir nun den Vertrag bereitstellen und die increment-Funktion aufrufen, sehen wir, dass Remix es automatisch anzeigt, wenn Sie auf die neue Transaktion in einem Array namens logs klicken.
Logs sind sehr nützlich für das Debugging Ihrer Smart Contracts, aber sie sind auch wichtig, wenn Sie Anwendungen erstellen, die von verschiedenen Personen genutzt werden. Sie erleichtern die Analyse, um zu verfolgen und zu verstehen, wie Ihr Smart Contract genutzt wird. Die durch Transaktionen erzeugten Logs werden in gängigen Block-Explorern angezeigt und Sie können sie beispielsweise auch verwenden, um Off-Chain-Skripte zu erstellen, die auf bestimmte Ereignisse lauschen und bei deren Auftreten Maßnahmen ergreifen.
Seite zuletzt aktualisiert: 16. Februar 2026
