Zephyrnet-logo

Hoe gebeurtenissen in soliditeit te gebruiken

Datum:

Profielfoto van Kamil Polak Hacker Noon

@kamilpolakKamil Polak

Ik ben een grote liefhebber van cryptocurrency en blockchain-technologie.

In deze korte tutorial wil ik je de basis van evenementen in Solidity laten zien. In het bijzonder zal ik uitleggen wat de gebeurtenissen in soliditeit zijn en hoe we ze kunnen gebruiken in ons slimme contract.

Wat zijn de evenementen?

Volgens de Solidity-documentatie:

"Gebeurtenissen zijn erfelijke leden van contracten. Wanneer je ze belt, zorgen ze ervoor dat de argumenten worden opgeslagen in het transactielogboek - een speciale datastructuur in de blockchain. Deze logboeken zijn gekoppeld aan het adres van het contract, worden in de blockchain opgenomen en blijven daar zolang een blok toegankelijk is"

Waarom hebben we evenementen nodig?

Gebeurtenissen worden gebruikt om externe gebruikers te informeren dat er iets is gebeurd op de blockchain. Slimme contracten kunnen zelf niet naar evenementen luisteren.

Alle informatie in de blockchain is openbaar en alle acties kunnen worden gevonden door de transacties dichtbij genoeg te bekijken, maar evenementen zijn een snelkoppeling om de ontwikkeling van externe systemen in samenwerking met slimme contracten te vergemakkelijken. 

Hoe gebeurtenissen in Solidity te gebruiken

Stevigheid definieert gebeurtenissen met het event-trefwoord. Nadat events zijn aangeroepen, worden hun argumenten in de blockchain geplaatst. Om evenementen eerst te gebruiken, moet u ze op de volgende manier aangeven:

event moneySent(address _from, address _to, uint _amount);

De definitie van de gebeurtenis bevat de naam van de gebeurtenis en de parameters die u wilt opslaan wanneer u de gebeurtenis activeert.

Dan moet u uw evenement uitzenden binnen de functie:

emit moneySent(msg.sender, _to, _amount);

Soliditeitsevenementen zijn interfaces met logging-functionaliteit van Ethereum Virtual Machine. Jij kan toevoegen een kenmerk dat is geïndexeerd voor maximaal drie parameters. Wanneer parameters niet de geïndexeerd attribuut, zijn ze ABI-gecodeerd in het datagedeelte van het logboek.

Laten we de volledige code bekijken om de gebeurtenis beter te begrijpen.

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
contract MyContract{ mapping(address => uint) public Balance; event moneySent(address _from, address _to, uint _amount); constructor public { owner = msg.sender; moneyBalance[msg.sender] = 50; } function sendMoney(address _to, uint _amount) public returns(bool) { require(msg.sender = owner; "You are not allowe"); require(Balance[msg.sender] >= _amount; "Not enough money"); moneyBalance[msg.sender] -= _amount; moneyBalance[_to] += _amount; emit moneySent(msg.sender, _to, _amount); return true; }

Takeaways

  • Er zijn twee soorten Solidity-gebeurtenisparameters: geïndexeerd en niet geïndexeerd,
  • Gebeurtenissen worden gebruikt voor retourwaarden van de transactie en als goedkope gegevensopslag,
  • Blockchain houdt gebeurtenisparameters bij in transactielogboeken Gebeurtenissen kunnen worden gefilterd bij naam en op contractadres

Referenties

Tags

Doe mee met Hacker Noon

Maak uw gratis account aan om uw persoonlijke leeservaring te ontgrendelen.

Coinsmart. Beste Bitcoin-beurs in Europa
Bron: https://hackernoon.com/how-to-use-events-in-solidity-pe1735t5?source=rss

spot_img

Laatste intelligentie

spot_img