Pular para o conteúdo principal
Change page

Introdução aos contratos inteligentes

O que é um contrato inteligente?

Um "contrato inteligente" é simplesmente um programa que é executado na blockchain do Ethereum. É uma coleção de código (suas funções) e dados (seu estado) que reside em um endereço específico na blockchain do Ethereum.

Os contratos inteligentes são um tipo de conta Ethereum. Isso significa que eles têm um saldo e podem ser o alvo de transações. No entanto, eles não são controlados por um usuário; em vez disso, são implantados na rede e executados conforme programado. As contas de usuário 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á-las automaticamente por meio 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 ter lido sobre contas, transações e a máquina virtual do 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 corretas, uma determinada saída é garantida.

Para pegar um lanche em uma máquina de venda automática:

dinheiro + seleção do lanche = lanche dispensado

Essa lógica é programada na máquina de venda automática.

Um contrato inteligente, assim como uma máquina de venda automática, tem uma lógica programada nele. Aqui está um exemplo simples de como essa máquina de venda automática seria se fosse um contrato inteligente escrito em Solidity:

Assim como uma máquina de venda automática elimina a necessidade de um funcionário vendedor, os contratos inteligentes podem substituir intermediários em muitos setores.

Não permissionado

Qualquer pessoa pode escrever um contrato inteligente e implantá-lo na rede. Você só precisa aprender a programar 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 a implantação de contratos são muito mais altos.

O Ethereum possui linguagens amigáveis para desenvolvedores para escrever contratos inteligentes:

  • Solidity
  • Vyper

Mais sobre linguagens

No entanto, eles devem ser compilados antes de poderem ser implantados para que a máquina virtual do Ethereum possa interpretar e armazenar o contrato. Mais sobre compilação

Composabilidade

Os contratos inteligentes são públicos no Ethereum e podem ser considerados como APIs abertas. Isso significa que você pode chamar outros contratos inteligentes em seu próprio contrato inteligente para expandir muito o que é possível. Os contratos podem até mesmo implantar outros contratos.

Saiba mais sobre a composabilidade 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 offchain. Isso significa que eles não podem responder a eventos no mundo real. Isso é intencional. Depender de informações externas poderia prejudicar o consenso, o que é importante para a segurança e a descentralização.

No entanto, é importante que os aplicativos de blockchain possam usar dados offchain. A solução são os oráculos, que são ferramentas que ingerem dados offchain e os disponibilizam para os contratos inteligentes.

Outra limitação dos contratos inteligentes é o tamanho máximo do contrato. Um contrato inteligente pode ter no máximo 24 KB ou ficará sem gás. Isso pode ser contornado usando o Padrão Diamante (opens in a new tab).

Contratos multisig

Os contratos multisig (assinatura múltipla) são contas de contratos inteligentes que exigem várias assinaturas válidas para executar uma transação. Isso é muito útil para evitar pontos únicos de falha em contratos que mantêm quantias substanciais de ether ou outros tokens. As multisigs também dividem a responsabilidade pela execução do contrato e pelo gerenciamento de chaves entre várias partes 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 a governança simples de uma DAO. As multisigs exigem N assinaturas de M assinaturas aceitáveis possíveis (onde N ≤ M e M > 1) para serem executadas. N = 3, M = 5 e N = 4, M = 7 são comumente usados. Uma multisig 4/7 exige quatro de sete assinaturas válidas possíveis. Isso significa que os fundos ainda podem ser recuperados mesmo se três assinaturas forem 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

Contratos OpenZeppelin - Biblioteca para o desenvolvimento seguro de contratos inteligentes.

Leitura adicional

Tutoriais: Assinaturas de contratos inteligentes (EIP-1271) no Ethereum