Events en logging van gegevens
Leer events te gebruiken om informatie op de blockchain te loggen, zodat externe applicaties deze efficiënt kunnen monitoren en indexeren.
Events en logging van gegevens is een gratis Blockchain-smart contracts met Solidity-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Blockchain-smart contracts met Solidity. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Blockchain-smart contracts met Solidity bevat in totaal 4 lessen.
Wat zijn gebeurtenissen in Solidity?
Smart contracts moeten vaak communiceren met de buitenwereld. Daar komen gebeurtenissen van pas!
Gebeurtenissen zijn een speciale functie in Solidity waarmee je smart contracts informatie naar het blockchainlogboek kunnen publiceren.
Je kunt ze zien als meldingen waarop externe toepassingen kunnen reageren.
De kracht van gebeurtenislogboeken
Gebeurtenissen zijn cruciaal, omdat de status van een contract rechtstreeks lezen vanuit toepassingen buiten de blockchain inefficiënt en duur kan zijn.
- Kostenefficiënt: Gegevens opslaan in gebeurtenissen is goedkoper dan ze in de contractstatus opslaan.
- Doorzoekbare geschiedenis: Ze bieden een historisch overzicht van acties dat eenvoudig door hulpmiddelen buiten de blockchain kan worden doorzocht.
- Monitoring: Wallets, block explorers en dApps kunnen zich op gebeurtenissen "abonneren" om op wijzigingen te reageren.
Je eerste gebeurtenis definiëren
Een gebeurtenis declareren lijkt op een functie definiëren, maar je gebruikt het sleutelwoord event.
Je geeft de gebeurtenis een naam en een lijst met parameters die deze zal bevatten, net als bij functieargumenten.
Deze parameters bepalen welke gegevens worden gelogd wanneer de gebeurtenis wordt uitgezonden.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract EventExample {
// Declares an event named 'LogMessage'
// It takes a string and a number as parameters
event LogMessage(string message, uint256 timestamp);
}Een gebeurtenis activeren
Nadat je een gebeurtenis hebt gedeclareerd, kun je deze met het sleutelwoord emit binnen elke functie van je contract "activeren".
Wanneer emit wordt aangeroepen, worden de gegevens van de gebeurtenis vastgelegd in het logboek van de transactie, maar niet rechtstreeks in de storage van het contract.
Daardoor zijn gebeurtenissen een lichtgewicht manier om informatie te signaleren.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract EventExample {
event LogMessage(string message, uint256 timestamp);
function doSomethingAndLog(string memory _msg) public {
// Emits the LogMessage event
// current timestamp is block.timestamp
emit LogMessage(_msg, block.timestamp);
}
}Gebeurtenissen doorzoekbaar maken
Je kunt het sleutelwoord indexed aan maximaal drie gebeurtenisparameters toevoegen. Daardoor kunnen toepassingen buiten de blockchain ze doorzoeken en filteren.
indexed-parameters: Opgeslagen in een speciaal deel van het logboek dat "topics" wordt genoemd.- Niet-
indexed-parameters: Opgeslagen in het gedeelte "data" van het logboek. - Voordeel: Hulpmiddelen buiten de blockchain kunnen snel transacties vinden die verband houden met specifieke geïndexeerde waarden.
Gebeurtenis met geïndexeerde parameters
We bekijken hoe je een gebeurtenis met een geïndexeerde parameter declareert en uitzendt.
Let op hoe `sender` wordt gemarkeerd als `indexed`, zodat je eenvoudig kunt filteren op alle gebeurtenissen vanaf een specifiek adres.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract IndexedEventExample {
event Transfer(address indexed from, address indexed to, uint256 amount);
function transferTokens(address _to, uint256 _amount) public {
// Imagine some transfer logic here
// Then emit the event
emit Transfer(msg.sender, _to, _amount);
}
}Logboeken zijn geen status
Het is belangrijk om te begrijpen dat gebeurtenislogboeken niet in de status van het contract worden opgeslagen.
- Status: Gegevens die rechtstreeks in het contract zijn opgeslagen en door andere contracten en functies kunnen worden gelezen. Duur.
- Logboeken: Onderdeel van de transactieontvangstbewijzen van de blockchain. Ze zijn onveranderlijk en persistent, maar niet rechtstreeks toegankelijk voor andere contracten. Goedkoper.
Gebeurtenissen zijn voornamelijk bedoeld voor gebruik buiten de blockchain.
Praktische toepassingen van gebeurtenissen
Gebeurtenissen worden overal in smart contracts gebruikt. Dit zijn enkele veelvoorkomende toepassingen:
- Tokenoverdrachten: De standaarden ERC-20 en ERC-721 zijn sterk afhankelijk van de gebeurtenissen `Transfer` en `Approval`.
- Wijzigingen van eigenaarschap: Melden wanneer de eigenaar van een contract wordt bijgewerkt.
- Gegevensupdates: Aangeven wanneer belangrijke contractvariabelen zijn gewijzigd.
- Feedback voor de gebruikersinterface: DApps luisteren naar gebeurtenissen om de gebruikersinterface in realtime bij te werken.
Interactie buiten de blockchain
Hoewel Solidity-contracten gebeurtenissen niet rechtstreeks kunnen lezen, gebruiken toepassingen buiten de blockchain (zoals web-dApps) web3-bibliotheken (bijvoorbeeld Web3.js en Ethers.js) om:
- Oude gebeurtenissen te filteren: Historische blockchaingegevens op te vragen voor specifieke gebeurtenissen.
- Je op nieuwe gebeurtenissen te abonneren: In realtime te luisteren naar gebeurtenissen wanneer ze worden uitgezonden.
Hierdoor kunnen krachtige en responsieve gedecentraliseerde toepassingen worden gebouwd.
Controle van gebeurtenisconcepten
Bekijk de volgende gebeurtenisdeclaratie in Solidity:
event UserRegistered(
address indexed userAddress,
string userName,
uint256 indexed registrationTime
);
Welke parameters zijn indexed en daardoor eenvoudig doorzoekbaar voor hulpmiddelen buiten de blockchain?
Samenvatting: gebeurtenissen en logboeken
Je hebt de kracht van gebeurtenissen in Solidity geleerd!
- Gebeurtenissen worden door contracten uitgezonden om gegevens op de blockchain te loggen.
- Ze zijn cruciaal voor monitoring buiten de blockchain, indexering en interactie met dApps.
- Gebruik het sleutelwoord `event` om ze te declareren en `emit` om ze te activeren.
- Met `indexed`-parameters worden gebeurtenissen eenvoudig doorzoekbaar.
Dit mechanisme is essentieel voor het bouwen van responsieve en gegevensgestuurde gedecentraliseerde toepassingen.
Leer Blockchain-smart contracts met Solidity met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Events en logging van gegevens” gratis?
Ja — de volledige tekst van “Events en logging van gegevens” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Blockchain-smart contracts met Solidity wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Blockchain-smart contracts met Solidity bevat in totaal 4 lessen.
Wat leer ik in “Events en logging van gegevens”?
Leer events te gebruiken om informatie op de blockchain te loggen, zodat externe applicaties deze efficiënt kunnen monitoren en indexeren. Je oefent met Blockchain-smart contracts met Solidity door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Blockchain-smart contracts met Solidity te beginnen?
Ervaring vooraf is niet nodig. Blockchain-smart contracts met Solidity op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Events en logging van gegevens”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Blockchain-smart contracts met Solidity?
Ja. Elke les over Blockchain-smart contracts met Solidity bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Statevariabelen en opslagindeling
- Mappings en dynamische arrays
- Events en logging van gegevens
- Storage slots en gasoptimalisatie