Um dos objetivos dos contratos inteligentes é a automação das transações de pagamento entre contrapartes. Nosso serviço de pagamento em blockchain
wirech também funciona neste mercado. Apesar da promessa de contratos inteligentes, o autor do material analisa as deficiências dessa tecnologia.
Como desenvolvedor da popular plataforma blockchain, às vezes me perguntam se existe um lugar para contratos inteligentes nos planos de desenvolvimento de nosso serviço Multichain, semelhantes aos usados no Ethereum. A resposta sempre soa: "Não, ou pelo menos não agora."

Porém, no mundo barulhento e barulhento das blockchains, os contratos inteligentes
são considerados algo muito legal. Por que sempre não há resposta? Bem, o problema é que, no caso de bitcoin controlado como o bitcoin, conhecemos pelo menos três cenários poderosos de sua aplicação prática (rastreando o histórico de origem, armazenando documentos da empresa, facilitando a organização dos sistemas financeiros) e, então,
contratos inteligentes no
ar equivalentes em eficiência casos simplesmente não existem.
Não é que as pessoas não entendam o que querem de contratos inteligentes. O problema é que muitas dessas idéias simplesmente não são viáveis. Quando as pessoas inteligentes ouvem o termo contratos inteligentes, elas tendem a dar liberdade à sua imaginação. Desenhe na cabeça imagens de software independente e inteligente, gerando uma onda de dados e conectando-se à solução de problemas do mundo real. Infelizmente, a imagem real de como os contratos inteligentes funcionam é muito mais prosaica.
Um contrato inteligente é um pedaço de código armazenado na blockchain. É alimentado por transações de blockchain e lê a partir da blockchain ou grava dados nela. Isso é tudo. Nem mais nem menos.
Um contrato inteligente é apenas um nome sonoro para um código que funciona na blockchain e interage com seu estado. O que é esse código? Este é Pascal, Python ou PHP. Ou talvez Java, Fortran ou C ++. Se você pensar no formato do banco de dados, ele poderá ser representado na forma de procedimentos escritos em alguma extensão do SQL.
Fundamentalmente, todas essas linguagens são equivalentes; elas resolvem os mesmos tipos de problemas usando os mesmos métodos para resolvê-los. Obviamente, cada um deles tem pontos fortes e fracos. Você ficaria louco tentando criar um site em C ou compactar vídeo HD em Ruby. Mas pelo menos teoricamente você poderia fazer isso se quisesse. Você apenas teria que pagar um preço alto em termos de conveniência, desempenho e é muito provável que perca muito cabelo na cabeça.
O problema dos contratos inteligentes reside não apenas em expectativas excessivamente altas, mas também no fato de que essas expectativas levam ao fato de que um número considerável de pessoas gasta tempo e dinheiro em idéias que dificilmente serão realizadas na prática.
A prática mostra que as grandes empresas, via de regra, têm recursos suficientes para percorrer um longo caminho desde o momento em que a alta gerência aprende sobre uma nova tecnologia até o momento em que suas vantagens e limitações se tornam verdadeiramente compreendidas.
Nos últimos nove meses, ouvimos muitos argumentos sobre os possíveis cenários de aplicação de contratos inteligentes, e aconteceu que repetidamente respondemos aos autores que essas idéias simplesmente não podiam ser realizadas na vida real.
Como resultado, identificamos os três conceitos errôneos mais comuns sobre o tema de contratos inteligentes. Essas idéias não são verdadeiras não porque a tecnologia ainda não esteja madura o suficiente ou porque não temos ainda nenhuma ferramenta.
Em vez disso, eles se baseiam em um mal-entendido das propriedades fundamentais do código que vive em um banco de dados e é processado de maneira descentralizada.
1. Interação com serviços externos
Frequentemente, você pode ouvir a oferta de usar contratos inteligentes que mudam seu comportamento em resposta a algum evento externo. Por exemplo, uma apólice de seguro agrícola que efetua pagamentos dependendo da quantidade de chuva que ocorreu em um determinado mês.
De acordo com a idéia dos autores da idéia, o processo ocorre aproximadamente da seguinte maneira: um contrato inteligente aguarda um tempo predeterminado, recebe um boletim meteorológico de um serviço externo e se comporta de acordo com os dados recebidos.
Isso parece bem simples. Simples e impossível ao mesmo tempo. Porque Como o blockchain é um sistema baseado em consenso, o que significa que ele funcionará apenas se cada nó da rede atingir o mesmo estado após o processamento de cada transação e cada bloco.
Todas as operações que ocorrem na blockchain devem ser completamente determinadas, sem a menor probabilidade de que alguma diferença entre no seu trabalho. Assim que dois nós honestos assumem posições diferentes no estado da cadeia, todo o sistema se torna inútil.
E agora, lembre-se de que cada nó da cadeia executa contratos inteligentes de forma independente. Isso significa que, se um contrato inteligente recebe algumas informações de uma fonte externa, cada nó repete o procedimento para obter dados independentemente. Mas como a fonte está fora do blockchain, não há garantia de que cada nó receberá a mesma resposta.
Talvez a fonte altere sua resposta em algum momento entre solicitações de dois nós diferentes, ou pode ficar temporariamente indisponível. De uma forma ou de outra, o consenso não será alcançado e todo o blockchain deixará de funcionar.
Que maneira de sair da situação pode ser encontrada? E a solução é realmente muito simples. Você só precisa substituir o processo de contato de um contrato inteligente com uma fonte externa por uma ou mais partes confiáveis (os chamados oráculos), criando uma transação que grava os dados necessários na cadeia. Cada nó terá uma cópia idêntica dos dados e eles poderão ser usados nos cálculos do contrato inteligente.
Em outras palavras, em vez de um contrato inteligente que "extrai" dados de fora, o oráculo inserirá esses mesmos dados no blockchain.
Problemas semelhantes surgem quando se trata de contratos inteligentes que desencadeiam certos eventos no mundo exterior. Por exemplo, muitas pessoas gostam da ideia de contratos inteligentes que usam a API do banco para transferir dinheiro. Mas se cada nó executar o código da cadeia independentemente, qual dos nós será responsável por chamar a API?
Se este for qualquer nó, o que acontecerá se esse nó em particular, deliberada ou involuntariamente começar a falhar? E se todos os nós forem contatados, podemos confiar em cada nó com uma senha de API? E é justificado fazer centenas de chamadas em vez de uma? E ainda pior: se um contrato inteligente precisar determinar o sucesso de uma chamada de API, novamente enfrentaremos o problema da dependência de dados externos.
E também há uma saída simples. Em vez de instruir um contrato inteligente para acessar uma API externa, podemos usar um serviço confiável que monitora o estado da blockchain e executa certas ações em resposta aos dados recebidos. Por exemplo, um banco poderia monitorar proativamente o blockchain e fazer transferências de dinheiro correspondentes às transações aprovadas na cadeia. Essa abordagem não cria riscos para o consenso, uma vez que a cadeia nesse modelo desempenha um papel absolutamente passivo.
Tendo considerado as soluções propostas para as situações descritas acima, podemos tirar algumas conclusões.
Em primeiro lugar, ambas as abordagens exigem que um terceiro confiável gerencie as interações entre o blockchain e o mundo exterior. Apesar da possibilidade teórica de implementar esse modelo, qualquer descentralização em sua estrutura perde todo o sentido.
Em segundo lugar, os mecanismos usados nesses exemplos são exemplos diretos de leitura e gravação no banco de dados. O oráculo que fornece informações externas simplesmente as grava na cadeia. Um serviço que repete o estado da blockchain no mundo real nada mais faz do que ler essa cadeia. Em outras palavras, qualquer interação entre o blockchain e o mundo exterior nesse caso se resume a operações normais do banco de dados.
Mais detalhadamente, revelaremos esse fato posteriormente no material.
2. Efetuar pagamentos dentro da cadeia
Outra sugestão que ouvimos com frequência: o uso de contratos inteligentes para automatizar pagamentos em cupons dos chamados títulos inteligentes. A essência da ideia é inicializar automaticamente os pagamentos no momento exigido pelo contrato inteligente. Isso evitará o processamento manual do pagamento e garantirá que o emissor não possa adiar.
Obviamente, para que essa ideia funcione, os fundos usados para pagar também devem estar dentro da blockchain. Caso contrário, um contrato inteligente simplesmente não pode garantir o pagamento.
Vamos lembrar que o blockchain é apenas um banco de dados. No nosso caso, um registro financeiro contendo títulos emitidos e algum caixa eletrônico. Portanto, quando falamos de pagamentos de cupons, na verdade estamos falando de operações de banco de dados executadas automaticamente no horário acordado.
Embora essa automação seja viável do ponto de vista técnico, surgem dificuldades com o aspecto financeiro do modelo. Se os fundos usados para pagamentos de cupons forem controlados por um contrato inteligente de títulos, esses pagamentos poderão realmente ser garantidos. Mas, nesse caso, o emissor do título não poderá usar esses fundos para outros fins. E a retirada de fundos do controle de um contrato inteligente anula qualquer garantia de pagamento.
Em outras palavras, um vínculo inteligente não faz sentido para o emissor ou o investidor. Se você refletir sobre essa situação, essa conclusão se torna completamente óbvia.
Do ponto de vista do investidor, a essência da compra de títulos é a capacidade de obter um lucro atraente, se houver algum risco aceitável de inadimplência. Para o emissor, o objetivo da emissão de títulos é captar recursos para uma atividade produtiva, mas um tanto arriscada, como, por exemplo, a construção de uma nova fábrica.
Não há como o emissor captar recursos e, ao mesmo tempo, garantir inequivocamente pagamentos aos investidores. Acho que ninguém ficará surpreso com o fato de a regularidade existente entre risco e lucratividade não estar incluída na lista de tarefas que blockchains podem resolver.
3. A necessidade de ocultar dados confidenciais
Como escrevi anteriormente, o desafio mais sério que enfrentamos ao implantar blockchains é o grau extremo de transparência que eles fornecem.
Por exemplo, se um grupo de 10 bancos quiser criar uma blockchain juntos, quaisquer transações bidirecionais nessa blockchain imediatamente se tornarão visíveis para os outros oito participantes. Apesar da existência de várias estratégias que possibilitam nivelar esse efeito, nenhuma delas pode superar a simplicidade e a eficácia de um banco de dados centralizado gerenciado por uma determinada pessoa que tem controle total sobre os níveis de visibilidade e acesso de todos os participantes.
Algumas pessoas acreditam que contratos inteligentes podem resolver esse problema. Seu raciocínio começa com o fato de que cada contrato inteligente contém seu próprio banco de dados em miniatura e o controla completamente. Todas as operações de leitura e gravação nesse banco de dados são totalmente mediadas pelo código do contrato, que exclui a situação em que um contrato lê os dados de outro. (Essa estreita relação entre dados e código é chamada de encapsulamento. Está subjacente aos paradigmas populares da programação orientada a objetos).
Portanto, nenhum contrato inteligente pode acessar os dados de outros contatos inteligentes. Mas isso resolve o problema de privacidade dentro da blockchain? Faz sentido falar sobre ocultar informações dentro de um contrato inteligente? Infelizmente, a resposta é não.
Sim, um contrato inteligente não pode ler dados de outros contratos; no entanto, essas cópias desses dados ainda estão localizadas em cada nó de rede individual. Cada participante armazena esses dados em sua memória ou no disco rígido do sistema, que está sob seu controle total. Como resultado, nada impede que esse participante leia as informações em seu próprio sistema, se e quando ele quiser.
As tentativas de ocultar dados em um contrato inteligente são comparáveis em nível de segurança, com uma tentativa de ocultá-los no código HTML de uma página da web. Obviamente, os usuários comuns da web não verão essas informações, pois não serão exibidas na janela do navegador. Mas, para a divulgação, basta clicar no botão para exibir o "código-fonte", que está em todos os navegadores modernos e os dados ficam imediatamente na palma da sua mão.
Da mesma forma, no caso de dados ocultos em um contrato inteligente, tudo o que é necessário é fazer alterações no software para trabalhar com o blockchain para que ele exiba o status completo do contrato e toda a aparência de sigilo desapareça imediatamente.
Qualquer programador de classe média lidará com essa tarefa em não mais de uma hora.
Qual é o objetivo dos contratos inteligentes?
Depois de tudo o que foi exposto, surge uma pergunta razoável: onde, em geral, os contratos inteligentes podem encontrar aplicação? Mas, para responder a essa pergunta, precisamos retornar mentalmente aos conceitos básicos de blockchains. Em resumo, o blockchain permite que um grupo de pessoas que não confiam um no outro trabalhe diretamente, com segurança e diretamente com o banco de dados, sem a necessidade de recorrer a um determinado administrador principal para obter ajuda.
As blockchains permitem que você abandone a mediação ao trabalhar com dados, o que pode levar a uma simplificação significativa e a custos mais baixos.
Para fazer uma alteração em qualquer banco de dados, é necessário executar a chamada transação que contém um conjunto de alterações no banco de dados que serão aplicadas ou rejeitadas com êxito. Pegue, por exemplo, a situação no registro financeiro quando Alice fizer um pagamento a favor de Bob. O pagamento é apresentado na forma de uma transação que: a) verifica se Alice possui fundos suficientes na conta, b) deduz a quantia indicada de fundos da conta de Alice ec) adiciona a mesma quantia à conta de Bob.
Em um banco de dados centralizado regular, essas transações são criadas por um único gerente confiável. Por outro lado, em um banco de dados público do tipo blockchain, as transações podem ser criadas por qualquer usuário do blockchain. E como não há confiança absoluta entre esses usuários, deve haver regras no banco de dados que imponham uma restrição à execução das transações.
Por exemplo, no registro financeiro, com todos os nós em posição igual, os parâmetros de cada transação não devem levar a uma violação do saldo geral dos fundos. Caso contrário, os participantes poderão alocar livremente quanto dinheiro quiserem.
Existem muitas maneiras de cumprir essas regras, mas dois paradigmas predominantes sob a influência do Bitcoin e do Ethereum atualmente dominam. O método Bitcoin, que pode ser chamado de “restrição de transação” de outra maneira, avalia cada transação do ponto de vista de: a) registros no banco de dados excluídos usando esta transação eb) registros criados.
A regra é usada no registro financeiro: a quantidade total de fundos nos registros excluídos não deve entrar em conflito com a quantidade total nos registros criados. (uma alteração em um registro é considerada como exclusão desse registro e sua recriação com os valores necessários).
O segundo paradigma originado no Ethereum são os contratos inteligentes. Segundo ele, todas as alterações nos dados do contrato devem ser executadas pelo seu código. (No contexto de bancos de dados tradicionais, podemos assumir que este é um procedimento armazenado obrigatório) Para modificar os dados do contrato, os usuários do blockchain enviam solicitações ao seu código que determina se a solicitação deve ser atendida e como deve ser feita.
À luz do exemplo acima, um contrato inteligente para o registro financeiro executa as mesmas tarefas que o administrador de um banco de dados centralizado: verificar a disponibilidade de fundos suficientes, subtraí-los de uma conta e adicioná-los a outra.
Ambos os paradigmas funcionam com eficiência, e cada um deles tem suas vantagens e desvantagens. Em resumo, limitar transações do tipo bitcoin permite alcançar melhores indicadores de acessibilidade e desempenho simultâneos, enquanto contratos inteligentes do tipo ethereum permitem maior flexibilidade.
Portanto, voltando à questão de que servem os contratos inteligentes: eles são necessários quando não é possível implementar um caso de blockchain usando restrição de transação.
Mas, mesmo tendo determinado esse critério para o uso de contratos inteligentes, ainda acho difícil nomear pelo menos um cenário para seu uso em blockchains fechados, onde a abordagem tradicional de bitcoin realmente não seria aplicável.
Todos os projetos blockchain realmente interessantes que eu conheço podem ser implementados usando a abordagem bitcoin, dentro da estrutura da qual é possível implementar a separação de direitos de acesso e armazenamento de dados, bem como a criação de ativos, seus movimentos, depósitos, trocas e destruição. Seja como for, novos casos de usuários aparecem regularmente e não ficarei surpreso se alguns deles realmente exigirem o poder de contratos inteligentes. Ou pelo menos uma extensão do paradigma Bitcoin.
De uma forma ou de outra, a regra principal em qualquer situação é lembrar que os contratos inteligentes são apenas um dos métodos para limitar a execução de transações no banco de dados.
, , . - . , .
