Ajude a atualizar esta página

🌏

Há uma nova versão desta página mas, no momento, ela está apenas em inglês. Ajude-nos a traduzir a última versão.

Nenhum bug encontrado!🐛

Por enquanto, esta página permanecerá em inglês.

Esta página está incompleta e adoraríamos sua ajuda. Edite-a e adicione qualquer informação que você considere útil.

Introdução aos contratos inteligentes

Última edição: , Invalid DateTime
Editar Página

O que é um contrato inteligente?

Um "contrato inteligente" é simplesmente um programa que é executado na cadeia de blocos 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.

Os contratos inteligentes são um tipo de conta Ethereum. Isso significa que eles têm um saldo e podem enviar transações através da rede. 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

Verifique se você leu as contas, transações e a máquina virtual Ethereum antes de entrar no mundo dos contratos inteligentes.

Uma máquina de vendas digitais

Talvez a melhor metáfora para um contrato inteligente seja uma máquina de venda automática, descrita por Nick Szabo. Com as entradas certas, uma certa saída é garantida.

Para obter um snack de uma máquina de venda automática:

1dinheiro +seleção de snack = snack dispensado
2

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 há um exemplo simples de como uma máquina de venda automática pareceria, atuando como um contrato inteligente:

1pragma solidity 0.8.7;
2
3contract VendingMachine {
4
5 // Declarar variáveis de estado do endereço público do proprietário do contrato;
6 mapping (address => uint) public cupcakeBalances;
7
8 // Quando o contrato 'VendingMachine' é implantado:
9 // 1. defina o endereço de implantação como proprietário do contrato
10 // 2. defina o saldo de cupcake do contrato inteligente para 100
11 constructor() public {
12 owner = msg.sender;
13 cupcakeBalances[address(this)] = 100;
14 }
15
16 // Permite que o proprietário aumente o saldo de cupcake no contrato inteligente
17 function refill(uint amount) public {
18 require(msg.sender == owner, "Only the owner can refill.");
19 cupcakeBalances[address(this)] += amount;
20 }
21
22 // Permite que qualquer pessoa adquira cupcakes
23 function purchase(uint amount) public payable {
24 require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
25 require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
26 cupcakeBalances[address(this)] -= amount;
27 cupcakeBalances[msg.sender] += amount;
28 }
29}
30
Exibir tudo
📋 Copiar

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 necessidade de permissão

Qualquer um pode escrever um contrato inteligente e implantá-lo na rede. Você só precisa aprender a codificar em um idioma de contrato inteligente e ter ETH suficiente para implantar seu contrato. A implantação de um contrato inteligente é tecnicamente uma transação, então você precisa pagar as suas Gás da mesma forma que você precisa pagar gás por uma transferência de ETH simples. No entanto, os custos do gás para a implantação contratual são muito mais elevados.

O Ethereum tem linguagens amigáveis ao desenvolvedor 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 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 ampliar muito o que é possível. Os contratos podem mesmo implantar outros contratos.

Saiba mais sobre a composição do contrato inteligente.

Limitações

Os contratos inteligentes, por si só, não conseguem obter informações sobre eventos "mundo-real" porque não podem enviar solicitações HTTP. Isto é por design. A sua concepção é a de que a informação externa pode pôr em causa o consenso, que é importante para a segurança e a descentralização.

Há maneiras de contornar isso usando oráculos.

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 de Diamante.

Recursos para contratos inteligentes

OpenZeppelin Contracts - Biblioteca para o desenvolvimento de contratos inteligentes seguros.

DappSys - Blocos de código seguros, simples e flexíveis para smart contracts.

Leitura Adicional

Did this page help answer your question?