Introdução aos contratos inteligentes
Última atualização da página: 25 de fevereiro de 2026
O que é um contrato inteligente?
Um "contrato inteligente" é simplesmente um programa executado na blockchain Ethereum. É uma coleção de código (suas funções) e dados (seu estado) que reside em um endereço específico na blockchain Ethereum.
Contratos inteligentes são um tipo de conta Ethereum. Isso significa que eles têm saldo e podem ser alvo de transações. No entanto, eles não são controlados por um usuário, em vez disso, eles são implantados na rede e são executados como programados. Contas de usuários podem então interagir com um contrato inteligente enviando transações que executam uma função definida no contrato inteligente. Os contratos inteligentes podem definir regras, como um contrato regular, e aplicá-los automaticamente através do código. Os contratos inteligentes não podem ser excluídos por padrão, e as interações com eles são irreversíveis.
Pré-requisitos
Se você está apenas começando ou procurando uma introdução menos técnica, recomendamos nossa introdução aos contratos inteligentes.
Certifique-se de que leu sobre contas, transações e a máquina virtual Ethereum antes de mergulhar no mundo dos contratos inteligentes.
Uma máquina de venda automática digital
Talvez a melhor metáfora para um contrato inteligente seja uma máquina de venda automática, conforme descrito por Nick Szabo (opens in a new tab). Com as entradas certas, uma saída segura é garantida.
Para obter um snack de uma máquina de venda automática:
1dinheiro +seleção de snack = snack dispensadoEsta lógica está programada para a máquina de venda automática.
Um contrato inteligente, como uma máquina de venda automática, tem lógica programada dentro dele. Aqui está um exemplo simples de como essa máquina de venda automática ficaria se fosse um contrato inteligente escrito em Solidity:
1pragma solidity 0.8.7;23contract VendingMachine {45 // Declarar variáveis de estado do contrato6 address public owner;7 mapping (address => uint) public cupcakeBalances;89 // Quando o contrato 'VendingMachine' for implantado:10 // 1. defina o endereço de implantação como o proprietário do contrato11 // 2. defina o saldo de cupcakes do contrato inteligente implantado como 10012 constructor() {13 owner = msg.sender;14 cupcakeBalances[address(this)] = 100;15 }1617 // Permitir que o proprietário aumente o saldo de cupcakes do contrato inteligente18 function refill(uint amount) public {19 require(msg.sender == owner, "Apenas o proprietário pode reabastecer.");20 cupcakeBalances[address(this)] += amount;21 }2223 // Permitir que qualquer pessoa compre cupcakes24 function purchase(uint amount) public payable {25 require(msg.value >= amount * 1 ether, "Você deve pagar pelo menos 1 ETH por cupcake");26 require(cupcakeBalances[address(this)] >= amount, "Não há cupcakes suficientes em estoque para concluir esta compra");27 cupcakeBalances[address(this)] -= amount;28 cupcakeBalances[msg.sender] += amount;29 }30}Exibir tudoDe maneira similar a como uma máquina de venda automática elimina a necessidade de um funcionário fornecedor, os contratos inteligentes podem substituir intermediários em muitos setores.
Sem permissão
Qualquer um pode escrever um contrato inteligente e implantá-lo na rede. Você só precisa aprender a codificar em uma linguagem de contrato inteligente e ter ETH suficiente para implantar seu contrato. Implantar um contrato inteligente é tecnicamente uma transação, então você precisa pagar gás da mesma forma que precisa pagar gás por uma simples transferência de ETH. No entanto, os custos de gás para implantação de contrato são muito mais altos.
A Ethereum tem linguagens que o desenvolvedor terá facilidade de usar para escrever contratos inteligentes:
- Solidity
- Vyper
Contudo, elas devem ser compiladas antes de poderem ser implantadas para que a máquina virtual da Ethereum possa interpretar e armazenar o contrato. Mais sobre compilação
Componibilidade
Os contratos inteligentes são públicos na Ethereum e podem ser considerados como APIs abertas. Isso significa que você pode chamar outros contratos inteligentes em seu próprio contrato inteligente para estender muito o que é possível. Os contratos podem mesmo implantar outros contratos.
Saiba mais sobre a componibilidade de contratos inteligentes.
Limitações
Os contratos inteligentes sozinhos não podem obter informações sobre eventos do "mundo real", porque não podem recuperar dados de fontes off-chain. Isso significa que eles não podem responder a eventos no mundo real. Isto é, por concepção. A sua concepção é a de que as informações externas podem pôr em causa o consenso, que é importante para a segurança e a descentralização.
No entanto, é importante que aplicações blockchain possam usar dados off-chain. A solução são oráculos, que são ferramentas que ingerem dados fora da cadeia e os disponibilizam para contratos inteligentes.
Outra limitação de contratos inteligentes é o tamanho máximo do contrato. Um contrato inteligente pode ser um máximo de 24KB ou ficará sem gás. Isso pode ser contornado usando o Padrão Diamante (The Diamond Pattern) (opens in a new tab).
Contratos Multisig
Os contratos multisig (com múltiplas assinaturas) são contas de contrato inteligente que exigem várias assinaturas válidas para executar uma transação. Isso é muito útil para evitar pontos únicos de falha para contratos com quantidades substanciais de ether ou outros tokens. Os Multisigs também dividem a responsabilidade pela execução do contrato e gerenciamento das chaves entre vários participantes e evitam que a perda de uma única chave privada leve à perda irreversível de fundos. Por esses motivos, os contratos multisig podem ser usados para governança DAO simples. Multisigs exigem N de M assinaturas possíveis (onde N ≤ M e M > 1) para serem executados. N = 3, M = 5 e N = 4, M = 7 são comumente usados. Um multisig 4/7 requer quatro das sete assinaturas válidas possíveis. Isso significa que os fundos ainda podem ser recuperados, mesmo que três assinaturas sejam perdidas. Nesse caso, também significa que a maioria dos detentores de chaves deve concordar e assinar para que o contrato seja executado.
Recursos de contratos inteligentes
OpenZeppelin Contracts - Biblioteca para desenvolvimento seguro de contratos inteligentes.
- openzeppelin.com/contracts/ (opens in a new tab)
- GitHub (opens in a new tab)
- Fórum da Comunidade (opens in a new tab)