Pular para o conteúdo principal
Change page

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 dispensado

Esta 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;
2
3contract VendingMachine {
4
5 // Declarar variáveis de estado do contrato
6 address public owner;
7 mapping (address => uint) public cupcakeBalances;
8
9 // Quando o contrato 'VendingMachine' for implantado:
10 // 1. defina o endereço de implantação como o proprietário do contrato
11 // 2. defina o saldo de cupcakes do contrato inteligente implantado como 100
12 constructor() {
13 owner = msg.sender;
14 cupcakeBalances[address(this)] = 100;
15 }
16
17 // Permitir que o proprietário aumente o saldo de cupcakes do contrato inteligente
18 function refill(uint amount) public {
19 require(msg.sender == owner, "Apenas o proprietário pode reabastecer.");
20 cupcakeBalances[address(this)] += amount;
21 }
22
23 // Permitir que qualquer pessoa compre cupcakes
24 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 tudo

De 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

Mais sobre linguagens

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.

Leitura adicional

Este artigo foi útil?