Eventos
Last updated
Was this helpful?
Last updated
Was this helpful?
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.
O exemplo a seguir de um contrato ink! mostra como um evento "Transferred" é definido e emitido no #[ink(constructor)]
.
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.
Em um construtor, os eventos são emitidos através de Self::env().emit_event()
. Veja este exemplo:
Em uma mensagem, os eventos são emitidos através de self.env().emit_event()
:
Veja nosso para um exemplo detalhado que utiliza eventos.
A assinatura do evento é, por padrão, um dos tópicos do evento, a menos que você anote o evento com #[ink(anonymous)]
. Consulte para obter detalhes sobre esse atributo.