Compartilhe este artigo

Código é Lei? Ainda não

O código deveria ser lei? Neste artigo de Opinião , Lukas Abegg argumenta que há muitos obstáculos científicos a serem superados antes que isso seja possível.

Depois que o experimento DAO falhou, um acalorado debate Política ocorreu sobre como prosseguir com o desenvolvimento do blockchain do Ethereum.

As posições variaram desde a manutenção do paradigma da imutabilidade com "código é lei" como a regra mais importante a ser Siga, até uma abordagem mais Human de perguntar aos mineradores e desenvolvedores do Ethereum quais medidas deveriam ser tomadas.

A História Continua abaixo
Não perca outra história.Inscreva-se na Newsletter Crypto Daybook Americas hoje. Ver Todas as Newsletters

No entanto, pouco tempo foi gasto na questão do que é umcontrato inteligenteé realmente capaz de executar.

Mas acredito que essa mesma questão deveria estar no CORE do debate e a respectiva resposta é a única base sensata sobre a qual uma Política sólida para o desenvolvimento de blockchain e contratos inteligentes pode ser construída.

Então, vamos dar uma olhada mais de perto nas capacidades dos contratos inteligentes.

Natureza da informação

A característica de um contrato inteligente é, em sua essência, o processamento de informações.

Embora a noção de informação varie e não exista uma definição universal, é útil começar pela forma comoteoria da informaçãolida com informação, já que a teoria da informação faz parte do DNA da ciência da computação atual.

É necessário, portanto, dividir a informação eminformação sintática e informação semântica. O primeiro sendo as regras sobre o relacionamento entre símbolos e o último sendo o significado atribuído a tais símbolos (ou seja: "intenção"). A linha entre os dois é um tanto tênue e diferenciá-los às vezes é difícil (o que, como vemos mais tarde, leva ao problema dos DAOs em primeiro lugar), mas uma diferença entre eles claramente existe.

Um artigo interessante sobre a dificuldade de capturar a “intenção” foiescrito recentementepor Vitalik Buterin.

As informações sintáticas podem ser analisadas e medidas (comoShannon e Tecelão fez em "Uma Teoria Matemática da Comunicação") e está aberta à prova matemática. Informação semântica, no entanto, é o que um ser Human atribui a um símbolo. Pode representar qualquer coisa que um cérebro Human seja capaz de pensar.

Normalizar informações semânticas e torná-las processáveis é uma tarefa bastante difícil, para dizer o mínimo. Ciência da computação (em particular pesquisadores de inteligência artificial)luta muitona tentativa de capturar informações semânticas, como linguagem natural, e representar seu significado em software. Para piorar a situação, as informações semânticas podem ser qualquer coisa, desde bastante simples até muito complexas.

Informações semânticas bastante simples e formais, como uma patente, por exemplo, já podem ser processadas por linguagem de computador. Pense em um arquivo CAD de um widget patenteado em um computador que permite que uma impressora 3D imprima exatamente a coisa que o arquivo CAD contém.

Informações semânticas mais complexas, como a noção legal de "boa fé", por exemplo, ainda não podem ser manipuladas pela ciência da computação. Para isso, um grande salto na pesquisa de inteligência artificial ainda é necessário.

Governança ausente

Outra maneira de fazer uma distinção entre esses dois tipos de informação seria se referir a eles como"código seco" e "código molhado", um conceito cunhado pelo criptógrafo Nick Szabo.

Para fazer um ponto sobre por que é imperativo respeitar essa natureza bilateral da informação, podemos olhar para o DAO. O imperativo de "não causar dano" (ou seja: informação semântica) foi escrito apenas na página inicial do DAO e não em seu código (que, na maior parte, processava apenas informações sintáticas).

Os seguidores de uma doutrina rigorosa de "código é lei" argumentaram que o hacker DAO poderia, portanto, KEEP o ether drenado, já que o imperativo "não causar danos" estava apenas nas especificações da página inicial, mas não no código em si e, portanto, não era vinculativo. Eles levaram seu caso ainda mais longe, mantendo o blockchain Ethereum não bifurcado e criaram um ambiente Ethereum paralelo, Ethereum Classic, o que produz alguns problemas bastante complicados para usuários e desenvolvedores.

Se houvesse uma ferramenta de governança adequada que lidasse com informações semânticas (por exemplo: garantisse que todos obedecessem à regra de "não causar danos" e fornecesse meios para lidar com os infratores), tal divisão provavelmente não teria acontecido.

Prova matemática e imutabilidade

Quando Shannon trabalhou na teoria da comunicação, ele tomou muito cuidado para que sua pesquisa fosse confinada dentro do reino da informação sintática. Isso permitiu que ele provasse matematicamente suas descobertas.

Isso não poderia ter sido feito se informações semânticas estivessem envolvidas. Para Shannon, a prova matemática era importante para fazer a ciência avançar.

Codificar um contrato inteligente não faz a ciência avançar de verdade e, portanto, a prova matemática não é importante, pode- ONE pensar. No entanto, assim que você adiciona imutabilidade por meio de uma implementação de blockchain ao seu código, você está elevando o nível de correção do seu código a um nível incrivelmente alto, se não completamente fora de alcance (cf.:análise mais detalhada).

Como seu código é imutável e não pode ser alterado, você precisa ter certeza absoluta de que ele não possui falhas.

A prova matemática do seu código, portanto, parece de repente um recurso muito importante de se ter.

E, no entanto, a Solidity, conforme usada no Ethereum para implementação de contratos inteligentes, não é uma linguagem que permite provas matemáticas (ou seja: não é referencialmente transparente). Permitiu a implementação de informações semânticas, ou, dito de forma explícita, a intenção dos desenvolvedores. A chamada de recursão que levou ao hack do DAO deveria ter sido usada de uma forma específica, como os desenvolvedores pretendiam.

Obviamente, tal intenção não foi capturada pelo código e, portanto, T impediu o hacker do DAO de drenar o DAO.

Concluindo: imutabilidade e correção do código são como os dois pratos de uma balança. Quanto mais "peso" você coloca na imutabilidade, mais cuidado você tem que ter em relação à correção do seu código.

Necessidade de código verificável

Se quase todo o seu contrato inteligente estiver sendo executado de forma imutável no blockchain (como alguns entusiastas do "código é lei" imaginam que seja a única maneira de fazer isso), você provavelmente não será capaz de colocar "contrapeso" suficiente na correção do seu código.

Todas essas descobertas estão longe de ser novidade.

Já em 2002, Nick Szabo escreveu um artigo sobre umalinguagem formal para contratos, no qual ele explicitamente apontou que o uso de linguagem de computador processual pode ser tentador, mas causando mais mal do que bem. Isso T menciona todos os linguagens de programação existentesque são usados na indústria financeira ou novas formas de criar linguagens de programação, que permitem a comprovação formal (amostrasaquie aquihttps://legalese.com/docs).

Até mesmo o desenvolvedor do próprio Solidity, Dr. Gavin Wood,imaginadoem um estágio inicial da concepção do Solidity, uma linguagem que permite provas matemáticas e as pesquisas mais recentes sugerem que otradução de Solidity para F*seria necessário para chegar a um código verificável.

No entanto, parece claro agora que o estado desejado de legalidade, onde nenhum envolvimento de fora de um contrato inteligente é necessário, ainda não foi alcançado. E provavelmente ainda levará algum tempo para chegar lá, se é que pode ser alcançado.

Preenchendo o vazio técnico

Isso não significa, no entanto, que o conceito de contratos inteligentes falhou ou seria inútil. Ele só precisa de uma arquitetura que respeite os limites da Tecnologia atual. E uma solução alternativa inteligente para as lacunas na linguagem de programação e inteligência artificial que ainda precisam ser preenchidas.

Tal solução alternativa pode residir no sistema jurídico do espaço clássico, em particular numa área específica denominadaResolução Alternativa de Disputas(ADR).

Seu propósito é dar a duas ou mais partes em disputa os meios formais para resolver suas disputas em privado, sem ter que recorrer a tribunais públicos estatais. Ele fornece ferramentas que permitem que você estabeleça suas próprias regras, defina os processos de como gerenciar conflitos e/ou selecione os juízes de sua escolha.

Também tem o efeito colateral agradável de ser realmente clássico-meatspace-legalmente vinculativo. É um campo de jogo formidável para explorar, por exemplo:ideias futarcas como Mercados de previsãoou novos conceitos de atribuição de valor comoRetroalimentaçãopara escolher um árbitro. E nem é muito difícil implementar tais regras de arbitragem em um contrato inteligente.

Apenas certifique-se de que cada usuário de um serviço de contrato inteligente aceita ser submetido a tais regras de arbitragem, assim como você está sujeito a regras de arbitragem constituídas de forma privada (por exemplo: a ICANNUDRP) ao registrar um nome de domínio.

Como tal LINK entre contratos inteligentes e regras legais do espaço físico pode ser encontradaaqui. (Estas não são regras de ADR, mas regras de direito contratual. A implementação, no entanto, seria muito semelhante).

Rumo à legalidade

A princípio, pode parecer estranho usar conceitos antigos para avançar para uma nova área.

No entanto, se você olhar para isso como estruturas de suporte – muito parecidas com um item recém-impresso em 3D e que podem ser movidas de forma constante quando o novo item se mantém em sua própria capacidade – a estranheza desaparece. Ainda mais, tal maneira de seguir em frente pode até ter um elemento heurístico no sentido de que ajuda a Aprenda mais sobre novos conceitos e ferramentas de governança que podem substituir completamente as ferramentas legais do espaço físico no futuro.

Para fechar o ciclo com o começo, devemos respeitar a natureza bilateral da informação e deixar o código processar informações sintáticas e implantar ferramentas de governança para que os seres Human processem informações semânticas.

Usar uma ferramenta de governança como regras de arbitragem específicas para contratos inteligentes, em combinação com o reconhecimento de que contratos inteligentes não são nem contratos inteligentes, mas apenas códigos executados de forma verificável (VEC), pode fornecer uma maneira de testar novas Tecnologia de uma forma menos desastrosa do que foi feito com o DAO e também pode fornecer a certeza necessária para tornar os contratos inteligentes interessantes para as empresas.

Pelo menos até que a ciência alcance a visão de “código é lei” e um verdadeiro estado delegalidadepode ser alcançado.

Imagem de golfevia Shutterstock

Nota: As opiniões expressas nesta coluna são do autor e não refletem necessariamente as da CoinDesk, Inc. ou de seus proprietários e afiliados.

Picture of CoinDesk author Lukas Abegg