Um programa na blockchain
Um smart contract (contrato inteligente) é um programa armazenado em uma blockchain que é executado automaticamente quando condições predefinidas são atendidas. O termo foi cunhado pelo cientista da computação Nick Szabo em 1994, mas o conceito tornou-se prático apenas com o lançamento do Ethereum em 2015.
A analogia mais simples é uma máquina de venda automática. Você insere dinheiro, aperta um botão e a máquina libera o item. Não há negociação, não há intermediário, não é necessária confiança. A máquina segue sua programação todas as vezes. Um smart contract funciona da mesma maneira, exceto que ele roda em uma blockchain onde milhares de computadores verificam se o código foi executado corretamente.
O que torna isso poderoso é a combinação de automação e confiança. Um smart contract não pode decidir mudar suas regras no meio de uma transação. Ele não pode favorecer ninguém. Ele não pode ser subornado. Ele roda exatamente como foi escrito, e o resultado é registrado permanentemente em um livro-razão público que qualquer pessoa pode verificar.
Como os smart contracts funcionam
O ciclo de vida de um smart contract possui várias etapas:
- Escrita. Um desenvolvedor escreve a lógica do contrato em uma linguagem de programação (mais comumente Solidity para Ethereum). O código define o que o contrato faz: aceitar depósitos, executar negociações, emitir tokens, gerenciar votos.
- Implementação (Deployment). O código compilado é enviado para a blockchain em uma transação especial. Uma vez implementado, o contrato possui seu próprio endereço — assim como uma carteira — e vive na blockchain permanentemente.
- Interação. Usuários e outros contratos enviam transações para o endereço do contrato. Cada transação aciona uma função no código. Por exemplo, chamar a função "swap" na Uniswap envia tokens e recebe outros tokens de volta.
- Execução. Os validadores da rede (ou mineradores, em redes Proof of Work) executam o código do contrato. Milhares de computadores independentes rodam o mesmo cálculo e verificam se todos obtêm o mesmo resultado. É isso que torna a execução confiável — nenhuma parte isolada pode falsificar o resultado.
- Mudança de estado. O resultado da execução é registrado na blockchain. Saldos são atualizados, tokens se movem, registros mudam. O novo estado é permanente e transparente.
O que os smart contracts fazem na prática
Quase tudo em cripto, além de simples transferências de Bitcoin, é impulsionado por smart contracts. Aqui estão as principais categorias:
Gestão de tokens
Todo token ERC-20 (USDC, UNI, LINK, AAVE) é um smart contract. O contrato rastreia o saldo de cada detentor e processa cada transferência. Quando você "detém" USDC, o que você realmente possui é uma entrada de saldo no smart contract do USDC.
Negociação descentralizada
Uniswap, Curve e outras DEXs são smart contracts que mantêm pools de tokens e executam trocas usando fórmulas matemáticas. Sem livro de ofertas, sem motor de correspondência, sem operador de corretora — apenas código.
Empréstimos
Protocolos como Aave e Compound são smart contracts que aceitam depósitos, rastreiam taxas de juros algoritmicamente e gerenciam garantias. Liquidações acontecem automaticamente quando as posições ficam subcolateralizadas.
Governança
Contratos de governança de DAOs gerenciam propostas, votações e gastos do tesouro. Detentores de tokens votam on-chain e, se uma proposta for aprovada, o contrato pode executar a ação aprovada sem qualquer intermediário humano.
Staking
Contratos de staking bloqueiam tokens e distribuem recompensas. Protocolos de liquid staking como a Lido usam smart contracts para reunir depósitos de usuários, gerenciar validadores e emitir tokens de staking líquido (stETH) em troca.
Contratos imutáveis vs. atualizáveis
Esta é uma das distinções mais importantes na segurança de smart contracts, e merece atenção cuidadosa.
Contratos imutáveis não podem ser alterados após a implementação. O código é permanente. Nenhum administrador, nenhuma equipe, nenhuma votação de governança pode modificá-lo. Uniswap V2 e Liquity V1 são exemplos — uma vez implementados, eles rodam exatamente como foram escritos até que a própria blockchain Ethereum pare de funcionar. Isso oferece a garantia de confiança mais forte possível: você pode verificar o código hoje e saber que ele se comportará da mesma forma para sempre.
Contratos atualizáveis usam um padrão de design chamado "proxy". Os usuários interagem com um contrato proxy que delega chamadas para um contrato de implementação separado. Um administrador (geralmente uma carteira multisig controlada pela equipe do protocolo) pode trocar o contrato de implementação, alterando efetivamente a lógica com a qual os usuários interagem. Isso permite que as equipes corrijam bugs e adicionem funcionalidades, mas também significa que o administrador pode mudar as regras.
A troca é clara:
- Contratos imutáveis: confiança máxima, mas bugs nunca podem ser corrigidos. Se houver uma vulnerabilidade, a única opção é implementar um novo contrato e pedir aos usuários que migrem.
- Contratos atualizáveis: flexibilidade para corrigir problemas, mas os usuários devem confiar que o administrador não fará alterações maliciosas. Uma chave administrativa comprometida significa um protocolo comprometido.
A maioria dos grandes protocolos DeFi usa alguma forma de atualizabilidade com salvaguardas: timelocks (as mudanças entram em vigor após um atraso, dando tempo para os usuários saírem), chaves administrativas multisig (várias pessoas devem aprovar as mudanças) e votações de governança (detentores de tokens decidem sobre as atualizações). Mas nada disso é infalível. Entender o mecanismo de atualização de um protocolo é uma parte central de avaliar seu risco.
Auditorias de smart contracts
Antes de implementar um smart contract que manterá um valor significativo, equipes responsáveis contratam empresas de segurança independentes para auditar o código. Uma auditoria envolve pesquisadores de segurança experientes revisando o código linha por linha, testando casos extremos e tentando encontrar vulnerabilidades antes que os atacantes o façam.
Fatos importantes sobre auditorias:
- Múltiplas auditorias são melhores. Auditores diferentes detectam coisas diferentes. Um protocolo com três auditorias de empresas respeitáveis é geralmente mais seguro do que um com uma única auditoria.
- Auditorias não são garantias. Uma auditoria reduz o risco, mas não o elimina. Muitos protocolos hackeados haviam sido auditados — às vezes por várias empresas. Auditores encontram alguns bugs, não todos.
- O escopo importa. Uma auditoria dos contratos principais não cobre contratos periféricos, integrações de oráculos ou configurações de implementação. Ataques frequentemente exploram as lacunas entre componentes auditados.
- Alterações pós-auditoria invalidam auditorias. Se uma equipe modifica o código após uma auditoria, a auditoria não se aplica mais ao código modificado. Esta é uma fonte comum de vulnerabilidades.
Transparência de código aberto
A maioria dos smart contracts DeFi é de código aberto — o código é publicado em exploradores de blocos como o Etherscan, e qualquer pessoa pode ler, verificar e analisá-lo. Essa transparência é uma característica fundamental do ecossistema. Você não precisa confiar no marketing de uma equipe; você pode ler o código deles.
Na prática, a maioria dos usuários não consegue ler código Solidity, e tudo bem. O que importa é que pesquisadores de segurança, auditores, equipes concorrentes e a comunidade de desenvolvedores em geral possam lê-lo. Isso cria uma camada de verificação coletiva que os sistemas financeiros centralizados não possuem. Quando o código de um protocolo está ativo e aberto há anos sem ser explorado, isso é uma evidência significativa (embora não uma prova) de segurança.
Riscos de smart contracts
Bilhões de dólares foram perdidos devido a vulnerabilidades em smart contracts. Os vetores de ataque mais comuns incluem:
- Reentrância. O contrato de um atacante chama de volta o contrato da vítima antes que a primeira execução seja concluída, drenando fundos repetidamente. O hack da DAO em 2016 ($60 milhões) usou essa técnica. Melhores práticas modernas e proteções contra reentrância tornaram isso menos comum, mas ainda ocorre.
- Manipulação de oráculos. Smart contracts que dependem de feeds de preços (oráculos) podem ser explorados se um atacante manipular os dados de preço. Ataques de flash loan frequentemente funcionam distorcendo temporariamente os preços em uma DEX que o contrato da vítima usa como oráculo.
- Erros de lógica. Erros simples de programação — matemática incorreta, falta de controle de acesso, transições de estado falhas — que permitem que atacantes extraiam valor de maneiras que os desenvolvedores não previram.
- Comprometimento de chave administrativa. Se a chave privada que controla um contrato atualizável for roubada, o atacante pode atualizar o contrato para drenar todos os fundos. É por isso que chaves administrativas devem ser protegidas por carteiras multisig e timelocks.
- Ataques de atualização. Uma equipe maliciosa ou comprometida promove uma atualização de contrato que inclui um backdoor. Timelocks ajudam ao dar aos usuários uma janela para sacar antes que a atualização entre em vigor.
Para conselhos práticos sobre como se proteger, veja nosso guia sobre como se manter seguro em cripto.
Principais hacks de smart contracts
| Incidente | Valor perdido | Causa |
|---|---|---|
| The DAO (2016) | $60 milhões | Vulnerabilidade de reentrância |
| Ronin Bridge (2022) | $625 milhões | Comprometimento de chave de validador |
| Wormhole (2022) | $325 milhões | Bug na verificação de assinatura |
| Euler Finance (2023) | $197 milhões | Erro de lógica na função de doação |
| Curve Finance (2023) | $73 milhões | Bug de compilador na linguagem Vyper |
Linguagens de programação de smart contracts
Diferentes blockchains usam diferentes linguagens para o desenvolvimento de smart contracts:
- Solidity — A linguagem dominante, usada no Ethereum e em todas as redes compatíveis com EVM (Arbitrum, Optimism, Base, BNB Chain, Polygon, Avalanche). Sintaxe semelhante a JavaScript. Possui a maior comunidade de desenvolvedores e as ferramentas mais maduras.
- Rust — Usada na Solana (através do framework Anchor). Uma linguagem de programação de sistemas conhecida pela segurança de memória e desempenho.
- Move — Usada em Aptos e Sui. Projetada especificamente para uso em blockchain com segurança de recursos integrada — tokens não podem ser duplicados ou destruídos acidentalmente.
- Cairo — Usada na StarkNet. Projetada para escrever programas comprováveis que podem ser verificados usando provas de conhecimento zero (zero-knowledge proofs).
- Vyper — Uma alternativa ao Solidity no Ethereum, projetada para ser mais simples e auditável. Usada pela Curve Finance e outros protocolos.
Smart contracts e seu portfólio
Toda vez que você deposita em um protocolo DeFi, troca tokens em uma DEX ou faz staking de seus ativos, você está interagindo com smart contracts. Seus tokens são mantidos por esses contratos, e seus retornos dependem de eles funcionarem corretamente. Isso torna o entendimento do risco de smart contracts uma necessidade prática, não apenas um exercício acadêmico.
A CleanSky detecta suas posições em protocolos DeFi — cada um dos quais é um conjunto de smart contracts — e mostra onde seu dinheiro está, o que ele está fazendo e quais protocolos o mantêm. Combinado com o entendimento de como o DeFi funciona e os fundamentos da blockchain, isso lhe dá a visibilidade necessária para tomar decisões informadas.
Veja quais smart contracts mantêm seu dinheiro — e quais riscos eles carregam — em todas as suas carteiras.