Přejít na hlavní obsah

Logování dat z chytrých kontraktů pomocí událostí

chytré kontrakty
remix
solidity
události
Středně pokročilý
jdourlens
3. dubna 2020
2 minut čtení
Upravit stránku (opens in a new tab)

V Solidity jsou události odesílané signály, které mohou chytré kontrakty vyvolat. Decentralizované aplikace (dapps), nebo cokoliv připojeného k Ethereum JSON-RPC API, mohou těmto událostem naslouchat a podle toho jednat. Událost může být také indexována, aby bylo možné v historii událostí později vyhledávat.

Události

Nejběžnější událostí na blockchainu Etherea v době psaní tohoto článku je událost Transfer, kterou emitují tokeny ERC-20, když někdo provede převod tokenů.

event Transfer(address indexed from, address indexed to, uint256 value);

Podpis události je deklarován uvnitř kódu kontraktu a může být emitován pomocí klíčového slova emit. Například událost transfer loguje, kdo převod odeslal (from), komu (to) a kolik tokenů bylo převedeno (value).

Pokud se vrátíme k našemu chytrému kontraktu Counter a rozhodneme se logovat každou změnu hodnoty. Jelikož tento kontrakt není určen k tomu, aby byl nasazen, ale slouží jako základ pro budování dalšího kontraktu jeho rozšířením: nazývá se abstraktní kontrakt. V případě našeho příkladu s počítadlem by to vypadalo takto:

Všimněte si, že:

  • Řádek 5: deklarujeme naši událost a co obsahuje, starou hodnotu a novou hodnotu.

  • Řádek 13: Když inkrementujeme naši proměnnou count, emitujeme událost.

Pokud nyní nasadíme kontrakt a zavoláme funkci increment, uvidíme, že Remix ji automaticky zobrazí, pokud kliknete na novou transakci uvnitř pole s názvem logs.

Remix screenshot

Logy jsou opravdu užitečné pro ladění vašich chytrých kontraktů, ale jsou také důležité, pokud budujete aplikace používané různými lidmi, a usnadňují tvorbu analytiky pro sledování a pochopení toho, jak je váš chytrý kontrakt používán. Logy generované transakcemi se zobrazují v populárních prohlížečích bloků a můžete je například také použít k vytvoření offchain skriptů pro naslouchání specifickým událostem a provádění akcí, když nastanou.

Poslední aktualizace stránky: 3. března 2026