14. Eventos
Blockchains são sistemas isolados do resto da internet e sistemas convencionais e eventos são utilizados para "comunicar ao mundo" o que está acontecendo.
# Declarando o Evento
Possuem uma estrutura básica e padrão para que outros sistemas possam "falar todos a mesma lingua" e resumem-se à: quando, onde, quem e oque aconteceu. Para isso usamos a palavra chave event antes do nomeDoEvento e entre parênteses os seus argumentos obrigatórios.
O parâmetro indexed permite que outros sistemas possam aplicar filtros, no exemplo abaixo um sistema que estiver ouvindo esses eventos poderá filtrar por data, endereço de envio e recebimento.
# Emitindo o Evento
Após declaramos um evento podemos emiti-lo dentro de qualquer função através do parâmetro emit nomeDoEvento() e então passamos os argumentos que são necessários.
# Exemplo real: Transação
No exemplo abaixo um evento será emitido contendo quem enviou, para quem enviou e quanto enviou.