🎡Eventos
Um contrato inteligente do ink! pode definir eventos que podem ser emitidos durante a execução do contrato. A emissão de eventos pode ser usada por ferramentas de terceiros para consultar informações sobre a execução e o estado de um contrato.
Exemplo
O exemplo a seguir de um contrato ink! mostra como um evento "Transferred" é definido e emitido no #[ink(constructor)].
Veja nosso contrato de exemplo ERC20 para um exemplo detalhado que utiliza eventos.
Definição de Evento
Assim é como uma definição de evento se parece:
Adicione a tag de atributo #[ink(topic)] a cada item do seu evento que você deseja que seja indexado. Uma boa regra é se perguntar se alguém pode querer pesquisar por esse tópico. Por esse motivo, o amount no evento exemplar acima não foi tornada indexável - provavelmente haverá muitos eventos diferentes com valores variados.
A assinatura do evento é, por padrão, um dos tópicos do evento, a menos que você anote o evento com #[ink(anonymous)]. Consulte aqui para obter detalhes sobre esse atributo.
Emitting Events in a Constructor
Em um construtor, os eventos são emitidos através de Self::env().emit_event(). Veja este exemplo:
Emitindo Eventos a partir de Mensagens
Em uma mensagem, os eventos são emitidos através de self.env().emit_event():
Last updated
Was this helpful?