O que é um contrato inteligente?

Concluído

Um contrato inteligente é um programa armazenado dentro de um blockchain. Os contratos inteligentes estendem o blockchain de dados para código. Eles representam um contrato entre as partes. O contrato é codificado e, quando ocorre uma ação, o código é executado e gera uma resposta.

Todos os termos e condições dos contratos são definidos de forma programática. Uma definição especifica as regras, os requisitos e as recompensas para os participantes do blockchain. Especifica ainda como os ativos digitais são transferidos entre as partes. Cada contrato inteligente recebe um endereço de 20 bytes que o identifica de forma exclusiva.

Os contratos inteligentes são executados de maneira autônoma, enviam eventos que disparam transições de estado e chamam funções. Eles são ideais para a tecnologia de blockchain por permitirem que desconhecidos realizem negócios entre si de uma maneira especificada e segura que dispensa intermediários.

Os contratos inteligentes são mais frequentemente usados com o Ethereum, o primeiro blockchain programável do mundo. Ele permite que os contratos inteligentes sejam definidos para facilitar a transferência de ativos digitais, como o ether.

A linguagem que você usará para gravar contratos será a Solidity. A Solidity é Turing-completa, ou seja, você pode gravar contratos complicados de forma claramente definida e codificada.

Como cada transição de estado é registrada e imutável, você deve testar o contrato de forma completa antes de lançá-lo no ambiente de produção, pois as correções de erros podem custar caro e até causar danos sérios ao sistema.

Os contratos inteligentes têm os seguintes benefícios e propriedades:

  • Transparência: os usuários de blockchain podem ler e acessar os contratos inteligentes usando APIs.
  • Imutabilidade: a execução de contratos inteligentes cria registros que não podem ser alterados.
  • Distribuição: a saída do contrato é validada e verificada por nós na rede. Os estados dos contratos podem ficar visíveis publicamente. Em certos casos, até variáveis "privadas" são visíveis.

Casos de uso

Os contratos inteligentes podem beneficiar diversos setores e processos. Considere os casos de uso a seguir.

Seguro: quando determinados eventos ocorrem, os contratos inteligentes disparam automaticamente uma declaração que simplifica o processo de declarações. Os detalhes do sinistro podem ser gravados no blockchain para a determinação do valor de indenização que os assegurados receberão. Essa funcionalidade pode reduzir os tempos de processamento e os erros humanos.

Eleições: os contratos inteligentes podem ajudar a automatizar e deixar a votação mais transparente. Cada contrato atua como um voto, que representa a identidade do eleitor. Como um blockchain é imutável, ou seja, não pode ser alterado, os votos não podem ser adulterados.

Cadeias de suprimentos: conforme os itens se movimentam pela cadeia de suprimentos, os contratos inteligentes podem registrar a propriedade e confirmar quem é responsável por um produto em um determinado momento. A qualquer etapa, o contrato inteligente pode ser usado para descobrir exatamente onde o produto deveria estar. Se qualquer integrante da cadeia de suprimentos deixar de cumprir sua parte a tempo, todos os demais saberão onde o problema ocorreu.

Conservação de registros: muitos setores podem usar os contratos inteligentes para melhorar a velocidade e a segurança da conservação de registros. A tecnologia de blockchain pode ser usada para digitalizar, criptografar e armazenar registros de maneira segura. Além disso, o acesso pode ser controlado de forma que apenas os indivíduos autorizados possam consultar os registros.

Propriedade imobiliária: os contratos inteligentes podem registrar os proprietários de um imóvel. Eles são uma forma ágil e com bom custo-benefício de registrar a propriedade. Os contratos inteligentes também podem facilitar a transferência de propriedade de forma ágil e segura.

Ferramentas para o trabalho com contratos inteligentes

Muitas ferramentas podem ajudar a desenvolver contratos inteligentes de forma eficiente. As sessões a seguir sugerem IDEs (ambientes de desenvolvimento integrado), extensões e estruturas que podem ser explorados.

IDEs

  • Visual Studio Code: um editor de código redefinido e otimizado para o desenvolvimento e a depuração de aplicativos modernos para a Web e a nuvem. Neste módulo, usamos o Visual Studio Code em todos os exercícios.
  • Remix: um IDE e compilador baseado em navegador que pode ser usado para o desenvolvimento de contratos do Ethereum na linguagem Solidity e para a depuração de transações. O Remix é uma ótima maneira de explorar modelos de contratos. Você pode usá-lo para a gravação, o teste e a implantação de seus próprios contratos. Não usamos o Remix neste módulo, mas você pode experimentá-lo por conta própria nos exercícios sobre contratos.

Extensões

  • Extensão Truffle para VS Code: essa extensão pode simplificar a forma de desenvolver, compilar e implantar contratos inteligentes nos razões do Ethereum. Essa extensão tem integração interna com Truffle, Ganache e mais ferramentas e serviços. Neste módulo, usaremos essa extensão para escrever e testar contratos inteligentes.

Estruturas

  • Conjunto Truffle: use o conjunto de ferramentas Truffle para testar os contratos do Ethereum antes de implantá-los em razões públicas e de incorrer em gastos reais. Para facilitar seu trabalho de desenvolvedor, desenvolva localmente. O conjunto de ferramentas inclui o Truffle, o Ganache e o Drizzle. Neste módulo, usaremos o Truffle.
  • OpenZeppelin: use as ferramentas do OpenZeppelin para gravar, implantar e operar aplicativos descentralizados. O OpenZeppelin fornece dois produtos: a biblioteca de contratos e o SDK. Não usamos o OpenZeppelin neste módulo, mas você poderá experimentá-lo posteriormente quando gravar aplicativos seguros de blockchain.