O que são events em Solidity?
Escrito por Alchemy
Solidity events são cruciais para desenvolvedores de smart contracts porque permitem que smart contracts indexem variáveis para reconstruir o estado de armazenamento, ajudam a atualizar automaticamente a interface do usuário e permitem testar variáveis específicas. Este artigo vai aprofundar seu entendimento sobre eventos do Solidity e ajudar você a aprofundar seu conhecimento da linguagem de programação Solidity.
Primeiro vamos introduzir os eventos do Solidity, depois apresentar algumas de suas classificações e fornecer exemplos. Ao final deste artigo, você será capaz de criar um evento do Solidity para seu próximo projeto.
O que é um evento no Solidity?
No Solidity, eventos são sinais disparados que smart contracts podem emitir. Quando você chama eventos, os argumentos são armazenados no log da transação, uma estrutura de dados especial na blockchain. Eventos notificam usuários externos, como um frontend que está escutando ou uma aplicação cliente, de que algo aconteceu na blockchain.
Qual é a diferença entre eventos e funções no Solidity?
Enquanto tanto funções quanto eventos aceitam argumentos e podem ser chamados, funções modificam smart contracts diretamente, enquanto eventos têm o papel de informar serviços fora da blockchain para avisar usuários de que algo aconteceu.
Funções no Solidity permitem que desenvolvedores leiam, escrevam, alterem e armazenem dados no smart contract. Você pode passar argumentos ou parâmetros para uma função. Também é possível chamar uma função sempre que necessário no código.
Eventos também aceitam argumentos, mas eles são armazenados no log da transação, que é inacessível aos smart contracts. Os dados de contrato ficam na State trie, e os dados de evento ficam armazenados na Transaction Receipts trie, o que significa que contratos não podem ler dados de eventos.
Assim como funções, eventos podem ser chamados. No entanto, a palavra-chave emit é usada para chamar/disparar eventos. Isso permite que desenvolvedores saibam quando um evento ou uma função está sendo chamado.
Qual é a relação entre eventos e logs?
A estrutura de dados Log do Ethereum armazena os dados emitidos pelos eventos.
A Ethereum Virtual Machine (EVM) tem uma função de logging usada para escrever dados, incluindo eventos do Solidity, em uma estrutura fora dos smart contracts.
Logs e eventos costumam ser tratados como sinônimos. Eventos permitem "imprimir" informações na estrutura de logging de uma forma mais eficiente em termos de gas, já que a informação não é armazenada em uma variável de storage, o que consumiria mais gas. Eventos, ou logs, ficam na Transaction Receipts trie, que é inacessível aos smart contracts.
Como os eventos são indexados no Solidity?
Eventos do Solidity são interfaces com a funcionalidade de logging da EVM. Você pode adicionar o atributo indexed a até três parâmetros. Esses parâmetros aparecem então na estrutura de topics, e não na parte de dados do log. Quando os parâmetros não têm o atributo indexed, eles são codificados em ABI na parte de dados do log.
Tipos de eventos no Solidity
Existem dois tipos de eventos no Solidity: os que são indexados e os que não são.
Quando os parâmetros não têm o atributo indexed, eles são codificados em ABI na parte de dados do log. Esses parâmetros formam o array de bytes do evento. Os dados são codificados de acordo com seu tipo e podem ser decodificados de acordo com um schema.
Parâmetros indexados, também conhecidos como "topics", são os parâmetros pesquisáveis dos eventos. Os parâmetros indexados permitem que você pesquise por esses eventos usando-os como filtros. Você pode adicionar o atributo indexed a até 4 parâmetros ou 3 parâmetros, dependendo de o evento ser anônimo ou não, respectivamente.
Como os eventos funcionam no Solidity?
Eventos do Solidity são declarados, emitidos e registrados.
- Primeiro, o tipo do evento precisa ser declarado com a palavra-chave event no Solidity.
- Em seguida, o evento precisa ser emitido com a palavra-chave emit.
- Sempre que algo mudar na blockchain, seu programa registrará automaticamente essa mudança e disparará o evento
Observação: Emitir um evento após a declaração permite que você "escute" o evento a partir da sua aplicação usando bibliotecas como Web3.js ou Ethers.js.
Como declarar um evento no Solidity?
A declaração de um evento contém o nome do evento e os parâmetros que você deseja salvar quando o evento for disparado.
Primeiro, você precisa declarar um evento no Solidity. Depois, você emite o evento com a palavra-chave emit.
A seguir, um exemplo de como declarar um evento:
O evento, quando disparado, informará à aplicação externa que algo mudou na blockchain.
Como os eventos são emitidos no Solidity?
Depois que o evento é definido, você pode dispará-lo usando a palavra-chave emit. Uma vez que um evento é emitido, os argumentos passados são armazenados nos logs da transação.
A sintaxe a seguir mostra como usar emit no Solidity:
Como escutar eventos no Solidity
Depois que os eventos são emitidos, você pode escutá-los se inscrevendo para capturar esses eventos usando ethers.js. Assim, aplicações, ou qualquer coisa conectada a uma Ethereum JSON-RPC API, podem escutar esses eventos e agir de acordo.
Exemplo de evento no Solidity
O código de exemplo a seguir define e emite um evento para transferências. Esse código é aplicável a uma aplicação de transferência do Ethereum, na qual o evento é disparado em uma transferência. Código adicional pode ser incluído para permitir que o evento, ao ser disparado, atualize a interface do usuário para mostrar que uma transferência ocorreu.

O próximo exemplo, retirado do Solidity by Example, cria um evento com dois parâmetros: o endereço do remetente e a mensagem em string. Quando disparado, o evento registra "Hello World" e "Hello EVM".

Continue aprendendo sobre Solidity
Este artigo apresenta os eventos do Solidity e traz explicações e recursos para você usar no seu próximo projeto. Com eventos do Solidity, ficará mais fácil criar smart contracts eficientes.
Se você é novo na linguagem Solidity e está pronto para construir seu primeiro smart contract, garanta sua vaga no curso online gratuito de 7 semanas de programação em Solidity da Alchemy University, aqui.
Visões gerais relacionadas
Solidity3 de dezembro de 2025
As 6 melhores IDEs de Solidity para desenvolvedores (2026)
Conheça as melhores IDEs para desenvolvimento em Solidity.
Solidity19 de novembro de 2025
Otimização de gas em Solidity: 12 técnicas para deixar seus smart contracts mais baratos e eficientes
Quer escrever código melhor e reduzir suas taxas de gas?
Solidity13 de novembro de 2025
12 boas práticas de segurança para smart contracts em Solidity
Proteja seus smart contracts com essas dicas e ferramentas de segurança de especialistas.

Construa magia blockchain
A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.