Nick Szabo descreveu pela primeira vez os contratos inteligentes na década de 1990. Naquela é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 de conteúdo.
No mundo das criptomoedas, podemos definir um contrato inteligente como um aplicativo ou programa executado em um blockchain. Normalmente, eles funcionam como um contrato digital que é aplicado por um conjunto específico de regras. Essas regras são predefinidas por código de computador, que é replicado e executado por todos os nós da rede .
Os contratos inteligentes Blockchain permitem a criação de protocolos sem confiança. Isso significa que duas partes podem assumir compromissos via blockchain, sem precisar se conhecer ou confiar uma na outra. Eles podem ter certeza de que, se as condições não forem cumpridas, o contrato não será executado. Fora isso, o uso de contratos inteligentes pode eliminar a necessidade de intermediários, reduzindo significativamente os custos operacionais.
Embora o protocolo Bitcoin suporte contratos inteligentes por muitos anos, eles se tornaram populares pelo criador e cofundador da Ethereum , Vitalik Buterin. Vale a pena notar, porém, que cada blockchain pode apresentar um método diferente de implementação de contratos inteligentes.
Este artigo se concentrará nos contratos inteligentes executados na Ethereum Virtual Machine (EVM), que é uma parte essencial da blockchain Ethereum.
Como eles funcionam?
Em termos simples, um contrato inteligente funciona como um programa determinístico. Ele executa uma tarefa específica quando e se certas condições forem atendidas. Como tal, um sistema de contrato inteligente geralmente segue declarações “se… então…”. Mas, apesar da terminologia popular, os contratos inteligentes não são contratos legais, nem inteligentes. Eles são apenas um pedaço de código rodando em um sistema distribuído (blockchain).
Na rede Ethereum, os contratos inteligentes são responsáveis por executar e gerenciar as operações de blockchain que ocorrem quando os usuários (endereços) interagem entre si. Qualquer endereço que não seja um contrato inteligente é chamado de conta de propriedade externa (EOA). Assim, os contratos inteligentes são controlados por código de computador e os EOAs são controlados pelos usuários.
Basicamente, os contratos inteligentes Ethereum são feitos de um código de contrato e duas chaves públicas. A primeira chave pública é aquela fornecida pelo criador do contrato. A outra chave representa o próprio contrato, atuando como um identificador digital exclusivo para cada contrato inteligente.
A implantação de qualquer contrato inteligente é feita por meio de uma transação blockchain, e eles só podem ser ativados quando chamados por um EOA (ou por outros contratos inteligentes). No entanto, o primeiro disparo é sempre causado por um EOA (usuário).
Características principais
Um contrato inteligente Ethereum geralmente apresenta as seguintes características:
Distribuído. Os contratos inteligentes são replicados e distribuídos em todos os nós da rede Ethereum. Essa é uma das grandes diferenças em relação a outras soluções baseadas em servidores centralizados.
Determinístico. Os contratos inteligentes executam apenas as ações para as quais foram projetados, desde que os requisitos sejam atendidos. Além disso, o resultado será sempre o mesmo, não importa quem os execute.
Autônomo. Os contratos inteligentes podem automatizar todos os tipos de tarefas, funcionando como um programa autoexecutável. Na maioria dos casos, porém, se um contrato inteligente não for acionado, ele permanecerá “inativo” e não executará nenhuma ação.
Imutável. Os contratos inteligentes não podem ser alterados após a implantação. Eles só podem ser “excluídos” se uma função específica foi implementada anteriormente. Assim, podemos dizer que os contratos inteligentes podem fornecer código inviolável.
Customizável. Antes da implantação, os contratos inteligentes podem ser codificados de várias maneiras diferentes. Assim, eles podem ser usados para criar muitos tipos de aplicativos descentralizados ( DApps ). Isso está relacionado ao fato de que o Ethereum é um blockchain Turing completo .
Sem confiança. Duas ou mais partes podem interagir por meio de contratos inteligentes sem conhecer ou confiar uma na outra. Além disso, a tecnologia blockchain garante que os dados sejam precisos.
Transparente. Como os contratos inteligentes são baseados em um blockchain público, seu código-fonte não é apenas imutável, mas também visível para qualquer pessoa.
Posso alterar ou excluir um contrato inteligente?
É impossível adicionar novas funções a um contrato inteligente Ethereum após a implantação. No entanto, se seu criador incluir uma função chamada SELFDESTRUCT no código, ele poderá “excluir” o contrato inteligente no futuro – e substituí-lo por um novo. Por outro lado, porém, se a função não estiver incluída no código de antemão, eles não poderão excluí-la.
Notavelmente, os chamados contratos inteligentes atualizáveis permitem que os desenvolvedores tenham mais flexibilidade sobre a imutabilidade dos contratos. Existem muitas maneiras de criar contratos inteligentes atualizáveis, com vários graus de complexidade.
Tomando um exemplo simplificado, vamos imaginar que um contrato inteligente seja dividido em vários contratos menores. Alguns deles são projetados para serem imutáveis, enquanto outros têm a função ‘excluir’ 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 código programável, os contratos inteligentes são altamente personalizáveis e podem ser projetados de várias maneiras diferentes, oferecendo diversos tipos de serviços e soluções.
Como programas descentralizados e autoexecutáveis, os contratos inteligentes podem fornecer maior transparência e custos operacionais reduzidos. Dependendo da implantação, também podem aumentar a eficiência e reduzir gastos burocráticos.
Os contratos inteligentes são particularmente úteis em situações que envolvem a transferência ou troca de fundos entre duas ou mais partes.
Em outras palavras, os 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 criptográficas, trocas descentralizadas, jogos e aplicativos móveis. Eles também podem ser implantados junto com outras soluções de blockchain que abordam os campos de saúde , caridade , cadeia de suprimentos , governança e finanças descentralizadas (DeFi) .
ERC-20
Os tokens emitidos na blockchain Ethereum seguem um padrão conhecido como ERC-20 . O padrão descreve as principais funções de todos os tokens baseados em Ethereum. Como tal, 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 Oferta Inicial de Moedas (ICO) . Na maioria dos casos, o uso de contratos inteligentes permitiu a troca de fundos e a distribuição de tokens de maneira confiável e eficiente.
Limitações
Contratos inteligentes são feitos de código de computador escrito por humanos. Isso traz inúmeros riscos, pois o código está sujeito a vulnerabilidades e bugs. Idealmente, eles devem ser escritos e implantados por programadores experientes, especialmente quando envolvem informações confidenciais ou grandes quantias de dinheiro.
Fora isso, alguns argumentam que os sistemas centralizados podem 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 um servidor centralizado. E por serem baseados em um sistema blockchain, eles tendem a ser imutáveis ou muito difíceis de mudar.
Ser imutável pode ser ó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 em seu código de contrato inteligente.
Como o contrato inteligente era imutável, os desenvolvedores não conseguiram corrigir o código. Isso acabou levando a um hard fork , dando origem a uma segunda cadeia Ethereum. Simplificando, uma cadeia “reverteu” o hack e devolveu os fundos aos legítimos proprietários (isso faz parte do atual blockchain Ethereum). A outra cadeia decidiu não interferir no hack, afirmando que as coisas que acontecem em uma blockchain nunca devem ser alteradas (essa cadeia agora é chamada de Ethereum Classic).
É importante observar que o problema não veio da blockchain Ethereum. Em vez disso, foi causado por uma implementação defeituosa do contrato inteligente.
Outra limitação dos contratos inteligentes está relacionada ao seu status legal incerto. Não apenas porque está em uma área cinzenta na maioria dos países, mas também porque os contratos inteligentes não se adequam à estrutura legal atual.
Por exemplo, muitos contratos exigem que ambas as partes sejam devidamente identificadas e maiores de 18 anos. O pseudônimo fornecido pela tecnologia blockchain, combinado com a falta de intermediários, pode ameaçar esses requisitos. Embora existam soluções potenciais para isso, a aplicabilidade legal dos contratos inteligentes é um desafio real – especialmente quando se trata de redes distribuídas sem fronteiras.
Crítica
Alguns entusiastas do blockchain veem os 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 se tornar a norma.
Os contratos inteligentes são certamente uma tecnologia interessante. Mas, por serem distribuídos, determinísticos, transparentes e um tanto imutáveis, podem torná-los menos atraentes em algumas situações.
Essencialmente, as críticas se baseiam no fato de que os contratos inteligentes não são uma solução adequada para muitos problemas do mundo real. Na verdade, algumas organizações preferem usar alternativas convencionais baseadas em servidor.
Quando comparados aos contratos inteligentes, os servidores centralizados são mais fáceis e baratos de manter, e tendem a apresentar maior eficiência em termos de velocidade e comunicação entre redes (interoperabilidade).