🎡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.

Contract execution via transaction

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?