🎡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

O exemplo a seguir de um contrato ink! mostra como um evento "Transferred" é definido e emitido no #[ink(constructor)].

Veja nosso contrato de exemplo ERC20arrow-up-right para um exemplo detalhado que utiliza eventos.

Definição de Eventoarrow-up-right

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 aquiarrow-up-right para obter detalhes sobre esse atributo.

Emitting Events in a Constructorarrow-up-right

Em um construtor, os eventos são emitidos através de Self::env().emit_event(). Veja este exemplo:

Emitindo Eventos a partir de Mensagensarrow-up-right

Em uma mensagem, os eventos são emitidos através de self.env().emit_event():

Last updated