Events
Es gibt Fälle, in denen ist es wünschenswert, dass man über einen Vorgang in einem Smart Contract informiert wird, sobald dieser Vorgang eingetreten ist.
Dies kann beispielsweise ein erfolgreicher Tokenvarkauf sein, den man dem Nutzer sofort auf der Webseit oder in der App anzeigen möchte. Dafür gibt es grundlegend zwei Möglichkeiten.
- Man überwacht die Blockchain und die Transaktionen. Sobald eine Transaktion einen gesuchten Vorgang ausgelöst hat, informiert man den Nutzer. Dies ist jedoch umständlich, da es schwer ist, die Transaktionen zu parsen und die konkreten Auswirkungen auf einen Smart Contract zu ermitteln.
- Man nutzt Events.
Ethereum stellt mit Events einen Speicher zur Verfügung, der nicht auf der Blockchain beruht. Dieser wird auch Event Log genannt.
Programmierer können Events an verschiedenen Stellen im Code eines Smart Contracts ausführen. Es können auch in begrenztem Umfang Werte zurückgegeben werden.
Deklaration von Events
Events werden in Solidity wiefolgt im Kopf des Smart Contracts deklariert:
event Write(string);
Write ist der Name des Events und string gibt den Datentyp des Rückgabewertes an.
Aufgerufen wird ein Event in einer Funktion oder im Constructor wiefolgt:
emit Write(text);
Beispiel
pragma solidity ^0.8.26;
contract writeTextContract{
string public text;
uint256 price = 10000000000; // Wei
event Write(string);
function writeText(string memory _text) payable public{
require(msg.value >= price);
text = _text;
emit Write(text);
}
}
Den Quellcode können Sie auch in der Datei contract_s4_02.sol finden.