O que são Contratos Inteligentes?
Página Inicial
Artigos
O que são Contratos Inteligentes?

O que são Contratos Inteligentes?

Intermediário
Publicado em Sep 16, 2019Atualizado em Jun 9, 2023
9m

Introdução

Nick Szabo introduziu os contratos inteligentes na década de 1990. Na época, ele definiu um contrato inteligente como uma ferramenta que formaliza e protege redes de computadores combinando protocolos com interfaces de usuário.

Szabo discutiu o uso potencial de contratos inteligentes em vários campos que envolvem acordos contratuais - como sistemas de crédito, processamento de pagamentos e gerenciamento de direitos sobre conteúdos.

No mundo das criptomoedas, podemos definir um contrato inteligente como um aplicativo ou programa que é executado em uma blockchain. Normalmente, eles funcionam como um contrato digital que é aplicado com um conjunto específico de regras. Essas regras são predefinidas por código de computador, que é replicado e executado por todos os nodes da rede.

Os contratos inteligentes de blockchain permitem a criação de protocolos trustless (que não exigem a necessidade de confiança entre as partes envolvidas). Ou seja, duas partes podem assumir compromissos através da blockchain, sem precisar se conhecer ou confiar uma na outra. Existe a garantia de que, se as condições não forem cumpridas, o contrato não será executado. Além disso, o uso de contratos inteligentes descarta a necessidade de intermediários, reduzindo significativamente os custos operacionais.

Embora o protocolo do Bitcoin ofereça suporte para contratos inteligentes há muitos anos, eles se tornaram populares graças ao criador e cofundador da Ethereum, Vitalik Buterin. Vale ressaltar, porém, que cada blockchain apresenta seu próprio método de implementação de contratos inteligentes. 

Este artigo irá abordar os contratos inteligentes que funcionam na Ethereum Virtual Machine (EVM), que é uma parte essencial da blockchain Ethereum.


Como funcionam?

Resumidamente, um contrato inteligente funciona como um programa determinístico. Ele executa uma tarefa específica quando certas condições são cumpridas. Ou seja, um sistema de contrato inteligente geralmente segue a lógica "se… então…". Mas apesar da terminologia, os contratos inteligentes não são contratos legais, nem inteligentes. Eles são apenas um fragmento de código rodando em um sistema distribuído (blockchain).

Na rede Ethereum, os contratos inteligentes são responsáveis pela execução e gestão das operações da blockchain, que ocorrem quando os usuários (endereços) interagem uns com os outros. Qualquer endereço que não seja um contrato inteligente é chamado de conta externa (EOA, do inglês, externally owned account). Isso significa que os contratos inteligentes são controlados por códigos de computador e as EOAs são controladas pelos usuários.

Basicamente, os contratos inteligentes da Ethereum são compostos por um código de contrato e duas chaves públicas. A primeira chave pública é a fornecida pelo criador do contrato. A outra chave representa o contrato em si, agindo como um identificador digital que é único para cada contrato inteligente.

A implantação de qualquer contrato inteligente é feita através de uma transação de blockchain e o contrato só pode ser ativado quando chamado por uma conta EOA (ou por outros contratos inteligentes). No entanto, o ativador inicial será sempre uma EOA (usuário).


Principais características

Geralmente, um contrato inteligente da Ethereum apresenta as seguintes características:

Distribuído. Os contratos inteligentes são replicados e distribuídos em todos os nós da rede Ethereum. Esta é uma das principais diferenças em relação a outras soluções baseadas em servidores centralizados.

Determinístico. Contratos inteligentes executam apenas as ações para as quais foram projetados, levando em conta os requisitos a serem cumpridos. Além disso, o resultado será sempre o mesmo, independentemente de quem os executa.

Autônomo. Contratos inteligentes podem automatizar todos os tipos de tarefas, agindo como um programa de execução automática. Entretanto, na maioria dos casos, se um contrato inteligente não for acionado, ele permanecerá "inativo" e não irá executar nenhuma ação.

Imutável. Os contratos inteligentes não podem ser alterados após a implantação. Eles podem somente ser "excluídos" caso uma função específica tenha sido implementada anteriormente. Dessa forma, podemos dizer que contratos inteligentes têm capacidade de fornecer codificação inviolável.

Personalizável. Antes da implementação, os contratos inteligentes podem ser codificados de muitas maneiras diferentes. Sendo assim, eles podem ser usados para criar muitos tipos de aplicativos descentralizados (DApps). Isso está relacionado ao fato de que a Ethereum é uma blockchain Turing Complete.

Trustless. Duas ou mais partes podem interagir através de contratos inteligentes sem a necessidade de se conhecerem ou de confiar uns nos outros. Além disso, a tecnologia blockchain garante a precisão dos dados.

Transparente. Como contratos inteligentes são baseados em uma blockchain pública, o código-fonte não só é imutável como também visível para qualquer pessoa.


Posso alterar ou excluir um contrato inteligente?

É impossível adicionar novas funções a um contrato inteligente da Ethereum após a sua implementação. No entanto, se o criador incluir uma função chamada SELFDESTRUCT (autodestruição) no código é possível "excluir" o contrato inteligente no futuro - e substituí-lo por um novo. Contudo, se essa função não for incluída antecipadamente no código, não será possível excluí-lo.

Os chamados contratos inteligentes atualizáveis (upgradeable smart contracts) permitem que os desenvolvedores tenham mais flexibilidade sobre a imutabilidade dos contratos. Existem muitas maneiras de criar contratos inteligentes atualizáveis, com diferentes graus de complexidade.

Como exemplo, vamos imaginar que um contrato inteligente é dividido em vários contratos menores. Alguns deles são projetados para serem imutáveis, enquanto outros têm a função de 'exclusão' habilitada. Isso significa que parte do código (contratos inteligentes) pode ser excluída e substituída, enquanto outras funcionalidades permanecem intactas.


Vantagens e casos de uso

Como possuem código programável, os contratos inteligentes são altamente personalizáveis e podem ser projetados de muitas maneiras diferentes, oferecendo muitos tipos de serviços e soluções.

Por serem programas descentralizados e autoexecutáveis, os contratos inteligentes podem proporcionar maior transparência e redução de custos operacionais. Dependendo da implementação, eles podem também aumentar a eficiência e reduzir despesas burocráticas.

Os contratos inteligentes são especialmente úteis em situações que envolvem a transferência ou o intercâmbio de fundos entre duas ou mais partes.

Em outras palavras, contratos inteligentes podem ser projetados para uma ampla variedade de casos de uso. Alguns exemplos incluem a criação de ativos tokenizados, sistemas de votação, carteiras de criptomoedas, corretoras descentralizadas (DEX), jogos e aplicativos para dispositivos móveis. Eles também podem ser implementados com outras soluções de blockchain que abordam os setores de saúde, instituições de caridade, cadeia de suprimentos (supply chain), governança e finanças descentralizadas (DeFi).


ERC-20

Os tokens emitidos na blockchain da Ethereum seguem um padrão conhecido como ERC-20. O padrão descreve as principais funções de todos os tokens baseados na Ethereum. Por isso, esses ativos digitais são frequentemente chamados de tokens ERC-20 e representam uma grande parte das criptomoedas existentes.
Muitas empresas e startups de blockchain implantaram contratos inteligentes para emitir seus tokens digitais na rede Ethereum. Após a emissão, a maioria dessas empresas distribuiu seus tokens ERC-20 por meio de eventos de Initial Coin Offering (ICO). Na maioria dos casos, o uso de contratos inteligentes permitiu a negociação de fundos e a distribuição dos tokens de forma confiável e eficiente.


Limitações

Contratos inteligentes são feitos por códigos de computador criados por humanos. Isso acaba trazendo alguns riscos, uma vez que o código está sujeito a vulnerabilidades e bugs. Em um cenário ideal, eles devem ser escritos e usados por programadores experientes, especialmente quando envolvem informações confidenciais ou muito dinheiro.

Além disso, alguns argumentam que os sistemas centralizados são capazes de fornecer a maioria das soluções e funcionalidades oferecidas pelos contratos inteligentes. A principal diferença é que os contratos inteligentes são executados em uma rede P2P distribuída, em vez de utilizar um servidor centralizado. E por serem baseados em um sistema de blockchain, eles tendem a ser imutáveis ou muito difíceis de se alterar.

Ser imutável pode ser um aspecto ótimo em algumas situações, mas muito ruim em outras. Por exemplo, quando uma Organização Autônoma Descentralizada (DAO) chamada "The DAO" foi hackeada em 2016, milhões de Ether (ETH) foram roubados devido a falhas no código do contrato inteligente.

Como o contrato inteligente era imutável, os desenvolvedores não conseguiram corrigir o código. Isso resultou em um hard fork, que deu origem a uma segunda blockchain da Ethereum. Basicamente, uma parte da blockchain foi capaz de "reverter" a ação dos hackers e devolver os fundos aos respectivos donos (esta é a parte que integra a blockchain atual da Ethereum). A outra parte da blockchain decidiu não interferir nas consequências do ataque, afirmando que o que acontece em uma blockchain nunca deve ser alterado (esta é a atual blockchain da Ethereum Classic).

É importante ressaltar que o problema não teve origem na blockchain Ethereum. Ele foi causado por uma implementação defeituosa de contrato inteligente.

Outra limitação dos contratos inteligentes está relacionada ao seu status legal incerto. Não apenas por fazer parte de uma área pouco explorada na maioria dos países, mas também porque os contratos inteligentes ainda não se adequam à estrutura legal atual.

Por exemplo, muitos contratos exigem que ambas as partes sejam devidamente identificadas e com mais de 18 anos: o anonimato fornecido pela tecnologia blockchain, juntamente com a falta de intermediários, pode comprometer esses requisitos. Embora existam potenciais soluções para isso, a aplicação legal de contratos inteligentes é um verdadeiro desafio - especialmente no que se refere a redes sem fronteiras e distribuídas.


Crítica

Alguns entusiastas da blockchain vêem contratos inteligentes como uma solução que, em breve, substituirá e automatizará grande parte de nossos sistemas comerciais e burocráticos. Embora esta seja uma realidade possível, provavelmente está longe de acontecer.

Os contratos inteligentes são certamente uma tecnologia interessante. Entretanto, por serem distribuídos, determinísticos, transparentes e, de certa forma, imutáveis, podem ser menos atraentes em algumas situações.

Essencialmente, a crítica é baseada no fato de os contratos inteligentes não serem uma solução adequada para muitos problemas do mundo real. Na verdade, para algumas organizações, é bem mais conveniente utilizar alternativas convencionais com base no servidor. 

Em comparação com contratos inteligentes, os servidores centralizados são mais baratos e mais fáceis de manter. Além disso, tendem a apresentar maior eficiência em termos de velocidade e comunicação entre redes (interoperabilidade).


Considerações finais

Não há dúvidas de que os contratos inteligentes causaram um grande impacto no mundo das criptomoedas e certamente revolucionaram o ambiente da blockchain. Embora os usuários finais possam não interagir diretamente com contratos inteligentes, é provável que eles atendam a uma ampla gama de aplicações no futuro, desde serviços financeiros até gerenciamento da cadeia de suprimentos.

Juntos, os contratos inteligentes e a tecnologia blockchain têm o potencial de influenciar quase todas as áreas da nossa sociedade. Mas só o tempo dirá se estas tecnologias inovadoras conseguirão superar as muitas barreiras que dificultam a adoção em grande escala.