Uma leitura para entender a Verificação formal do Contrato inteligente

Introdução

Com o rápido aumento do valor dos ativos na cadeia de blocos, os projetos estão lançando uma série de diferentes aplicações económicas de encriptação. Nesse contexto, é mais importante do que nunca prevenir possíveis vulnerabilidades e ameaças.

O BTC foi originalmente projetado para substituir os bancos, mas a tecnologia Blockchain mostra a capacidade de substituir todos os intermediários. Nesse processo, ela traz novas possibilidades para a moeda digital, como moedas programáveis, o que não é possível com papel moeda. Essa moeda digital impulsiona o desenvolvimento da descentralização, ao permitir a execução automática de contratos de forma transparente e sem intervenção humana. Assim, advogados e contratos podem ser substituídos em transações financeiras. No entanto, como exatamente os contratos inteligentes funcionam? Podemos realmente confiar nesse sistema sem confiança?

Este artigo irá explorar em profundidade a Verificação formal de contratos inteligentes, analisar as suas vantagens e desvantagens e o seu impacto no ecossistema de encriptação, especialmente na aplicação do Ethereum.

Desenvolvimento histórico dos contratos inteligentes

Source: CryptoSlate

Nick Szabo, cientista da computação e criptógrafo americano, frequentemente considerado como sendo o próprio Satoshi Nakamoto. Como fundador dos contratos inteligentes, ele propôs pela primeira vez o conceito de 'contrato inteligente' em 1994. Szabo define um contrato inteligente como um protocolo de transação digital usado para executar automaticamente os termos de um protocolo. Sua intenção era melhorar as transações eletrônicas, como o sistema de ponto de venda, e expandir suas capacidades para o domínio digital.

Sabu's vision for the future of the protocolo is like an automatic vending machine, automated, reliable, and tamper-proof. Although the technological conditions at the time were not able to fully realize his ideas, his concepts laid the foundation for the transformation of the Bloco chain industry. In 2015, the launch of Ethereum allowed the true application of Contrato inteligente, and Sabu's theories became a key technology for Descentralização applications.

A sua visão é permitir que os contratos possam gerir as relações de ambas as partes com cláusulas precisas e automatizadas, reduzindo a necessidade de intervenção e supervisão humana. Este método oferece uma forma mais segura e eficiente de gerir protocolos, abrindo caminho para o desenvolvimento de contratos inteligentes e tornando-os numa ferramenta importante no ecossistema blockchain. As primeiras ideias de Szabo continuam a influenciar o desenvolvimento de transações digitais e de contratos inteligentes até hoje.

O que é Verificação formal?

Source: Medium

Verificação formal é um processo de verificação rigorosa de um sistema (como Contrato inteligente) para garantir que ele cumpra as regras ou normas estabelecidas. Em resumo, é verificar se o sistema pode operar como esperado, garantindo que atenda às condições necessárias e execute suas funções previstas sem erros.

Para alcançar esse objetivo, essa tecnologia de verificação primeiro descreve o comportamento esperado do sistema por meio de um modelo formal e, em seguida, usa uma linguagem de especificação para definir as condições específicas que o contrato deve cumprir. À medida que avançamos no artigo, veremos mais exemplos práticos. A tecnologia de Verificação formal compara matematicamente a execução real do contrato com suas especificações, garantindo sua precisão. Uma vez que o contrato atenda a essas especificações, ele é considerado "funcionalmente correto" ou "corretamente projetado", confirmando assim sua confiabilidade e segurança no ambiente da Blockchain.

O tipo de especificação formal do contrato inteligente

Fonte: Ever Scale

Formalized specifications use mathematical reasoning to verify the correctness of program execution. These specifications can describe the overall behavior (high-level) or the internal operation details of the contract (low-level). By mathematically defining the behavior of the contract, formalized specifications ensure that the contract works as expected.

Regulamentos de Alto Nível

A alta especificação, também conhecida como especificação orientada a modelos, descreve o estado operacional geral dos contratos inteligentes, vendo-os como uma máquina de estados finitos (FSM) que muda entre diferentes estados por meio de operações específicas. A lógica temporal é frequentemente usada para definir as regras dessas transições, detalhando como os contratos evoluem ao longo do tempo e as condições que devem ser satisfeitas.

As normas de alto nível enfatizam principalmente dois aspectos: segurança e atividade. A segurança pode evitar a ocorrência de eventos inesperados, como o saldo da conta do remetente não sendo suficiente para realizar a transação. A atividade garante que o contrato possa funcionar normalmente, mantendo Liquidez suficiente e garantindo que os usuários possam sacar fundos a qualquer momento. Ambos garantem a segurança e confiabilidade dos contratos inteligentes, protegendo os ativos e a experiência de interação do usuário.

Especificações de baixo nível

A especificação de baixo nível, também conhecida como especificação orientada a atributos, foca em definir se o comportamento de um contrato é correto através da análise do processo de execução interno do contrato. Ao contrário da especificação de alto nível, que considera o contrato como uma máquina de estados finitos, a especificação de baixo nível considera o Contrato inteligente como um sistema de funções matemáticas e analisa a ordem de execução das funções (chamadas de trajetórias), as quais causam mudanças no estado do contrato.

Tecnologia de Verificação formal de Contratos inteligentes

Fonte: Ever Scale

Detecção de modelo

A verificação do modelo é um método de validação que utiliza algoritmos para verificar se o modelo de contrato inteligente está em conformidade com as especificações pré-definidas. Os contratos inteligentes são normalmente representados como sistemas de transição de estados, cujas propriedades são definidas por lógica temporal. Este método envolve a criação de um modelo matemático e a descrição do seu comportamento através de fórmulas lógicas, permitindo que o algoritmo verifique se o modelo está em conformidade com os requisitos.

Prova de Teorema

Ao contrário da verificação de modelo, a prova de teorema é um método matemático utilizado para verificar a correção dos programas (incluindo contratos inteligentes). Este método converte o modelo e a especificação do contrato em fórmulas lógicas para verificar a sua equivalência lógica, ou seja, se uma proposição é verdadeira, a outra também é verdadeira. Ao expressar essa relação como um teorema, ferramentas automáticas de prova de teorema podem verificar a correção do modelo do contrato e sua especificação.

Ao contrário da verificação de modelos restrita a sistemas de estado finito, a prova de teoremas pode analisar sistemas de estado infinito, mas geralmente requer orientação humana para resolver problemas lógicos complexos. Portanto, a prova de teoremas geralmente é mais demorada e exigente do que a verificação de modelos completamente automatizada.

Execução Simbólica

A execução simbólica é um método poderoso de análise de contratos inteligentes, que executa funções usando valores simbólicos em vez de entradas específicas. Este método converte o caminho de execução do contrato em fórmulas matemáticas (chamadas predicados de caminho) e usa um resolvedor SMT para determinar se esses predicados são verdadeiros, ou seja, se existem entradas que atendem às condições.

Por exemplo, se uma função de contrato ocorrer uma Reversão quando o valor estiver entre 5 e 10, a execução simbólica pode encontrar rapidamente o valor que aciona essa condição, avaliando a condição X > 5 e X < 10. Esse método é mais eficiente do que os testes tradicionais, tem uma taxa de falsos positivos menor e pode gerar diretamente valores específicos que acionam erros, sendo uma ferramenta poderosa para garantir a confiabilidade dos contratos inteligentes.

O que é Contrato inteligente?

Source: Tenderly

Contrato inteligente é um programa automatizado que é executado na cadeia de blocos e que executa automaticamente as operações correspondentes quando condições específicas são atendidas. Eles podem variar de protocolo simples a programas complexos e são capazes de gerir ativos de milhões ou até mesmo dezenas de bilhões de dólares.

Os contratos inteligentes têm o potencial de revolucionar completamente áreas como votação política, gestão da cadeia de fornecimento, saúde e imobiliário. Este artigo centra-se na sua aplicação em ativos de criptografia. O design dos contratos inteligentes permite uma colaboração mais longa sem riscos de manipulação, proporcionando um quadro transparente e seguro que melhora a eficiência e inovação. No entanto, é importante estar ciente das vulnerabilidades e desafios de segurança em contratos inteligentes.

A vulnerabilidade de segurança do contrato inteligente

O vulnerabilidade de segurança no código do contrato inteligente pode levar a consequências desastrosas, como a perda de todos os ativos no contrato. Eventos recentes ilustram claramente este ponto.

  • Em 2021, a AMMUranium Finance foi roubada de 50 milhões de dólares devido a um erro de digitação no contrato inteligente.
  • Em 2021, a Compound Finance acidentalmente distribuiu 80 milhões de dólares em recompensas não ganhas devido a um erro de caractere.
  • Em 2022, a Wormhole Bridge foi roubada de 01928374656574839201 de dólares de ativos criptográficos devido a uma falha no contrato inteligente.

Estes exemplos mostram que os contratos inteligentes devem ser precisos no seu código antes da sua implementação. Os contratos inteligentes são código aberto e, uma vez implementados, o seu código torna-se público, podendo os hackers facilmente explorar vulnerabilidades descobertas. Além disso, a imutabilidade dos contratos inteligentes significa que as vulnerabilidades de segurança geralmente não podem ser corrigidas depois de publicadas. Portanto, se o desenvolvimento não for preciso o suficiente, eles sempre estarão em risco.

Como é feita a validação do contrato inteligente?

Source: Certik

Este processo inclui os seguintes passos:

  • Usar uma linguagem formal para especificar os requisitos e as funcionalidades esperadas do contrato.
  • Converter o código do contrato em uma representação formal, como um modelo matemático ou expressão lógica.
  • Use um verificador de teoremas automático ou um verificador de modelo para confirmar se as especificações e propriedades do contrato são válidas.
  • Ao verificar repetidamente, descobrimos e corrigimos erros ou desvios que não correspondem às propriedades esperadas.

As principais características do Contrato Inteligente

Source: Certik

Pode-se ver um Contrato inteligente como um 'protocolo' gravado em pedra, uma vez criado, não pode ser alterado. Esses contratos operam em um livro-razão imutável da blockchain, executando automaticamente termos sem a necessidade de um intermediário, acelerando assim as transações e reduzindo custos. Essa característica fixa não só fortalece a segurança, mas também realiza uma gestão descentralizada, reduzindo significativamente os riscos de fraude e corrupção.

Por que a verificação de Contratos Inteligentes é tão importante?

Por meio do raciocínio matemático, a Verificação formal garante que o Contrato inteligente não tenha falhas, erros ou comportamentos inesperados. O processo de execução contratual aumenta a confiança das pessoas no contrato, pois suas funcionalidades e propriedades foram totalmente verificadas.

O caso de sucesso da verificação do contrato inteligente destaca o seu papel crucial na prevenção de perdas financeiras significativas.

Uniswap

Por exemplo, o famoso AMMUniswap durante o desenvolvimento do seu V1Contrato inteligente realizou Verificação formal, descobrindo e corrigindo erros que poderiam levar a possíveis perdas de fundos.

Balancer

Da mesma forma, o outro AMM Balancer V2 descobriu um erro de cálculo de taxas relacionado aos Empréstimos Flash através da Verificação formal, evitando assim potenciais riscos de roubo.

SafeMoon

SafeMoon V1, após implantação, foi identificado com uma vulnerabilidade sutil pela Verificação formal. Essa vulnerabilidade permite que o proprietário abandone a propriedade e recupere o controle sob certas condições, um detalhe que foi ignorado pela maioria das auditorias manuais devido à sua complexidade. A Verificação formal, analisando combinações específicas de valores de variáveis, pode capturar problemas que podem ter sido negligenciados na auditoria manual.

Como é que a Verificação Formal e a auditoria manual colaboram em conjunto?

A verificação formal é um método automatizado e sistemático para verificar se a lógica e o comportamento dos contratos inteligentes estão de acordo com suas funcionalidades esperadas. Esse método simplifica o processo de detecção e correção de erros, especialmente em problemas complexos que podem ser ignorados em auditorias manuais.

Enquanto a Verificação formal é um processo de verificação formal, a auditoria humana é uma inspeção abrangente do código, design e implementação do contrato por especialistas. Os auditores utilizam a sua experiência para descobrir potenciais vulnerabilidades de segurança e avaliar o estado geral de segurança do contrato. Eles também podem verificar a precisão do processo de Verificação formal e identificar falhas que as ferramentas automatizadas possam ter ignorado. A combinação de Verificação formal e auditoria humana pode fornecer uma avaliação abrangente da segurança, aumentando a probabilidade de descoberta e correção de falhas, e estabelecer uma linha de defesa robusta com base em experiência passada e análise automatizada.

Prós e contras dos contratos inteligentes

Source: Blockonomi

Embora os contratos inteligentes não sejam perfeitos, suas vantagens superam significativamente as desvantagens. Eles simplificam transações complexas, economizam tempo e custos, aumentam a transparência do fluxo de trabalho e reduzem disputas. Além disso, os contratos inteligentes dependem da execução do código, o que também reduz erros humanos. Sua encriptação de proteção também garante alta segurança. No entanto, os contratos inteligentes são inflexíveis e difíceis de lidar com situações inesperadas. Além disso, a configuração de contratos inteligentes requer habilidades de programação profissional, o que pode ser um obstáculo para algumas pessoas. Apesar dos desafios, os contratos inteligentes estão impulsionando a transformação de várias indústrias.

Vantagens do contrato inteligente

  • Automação de operações para aumentar a eficiência, economizar tempo e dinheiro.
  • Aumentar a transparência, reduzir controvérsias e permitir o acesso de todas as partes à mesma informação.
  • Reduzir erros, pois eles dependem de código, eliminando erros humanos.
  • Através da tecnologia de encriptação para reforçar a segurança, é difícil de ser adulterado.

Os contratos inteligentes têm algumas desvantagens

  • Falta de flexibilidade para lidar com situações imprevistas.
  • Necessita de habilidades de programação profissionais e depende amplamente do limiar tecnológico.

Ferramenta de Verificação formal para contratos inteligentes ETH

Source: Calibraint

Linguagem para escrever especificações formais

  • Ato: O Act permite que os usuários definam armazenamento atualização, pré-condições, pós-condições e a imutabilidade do contrato. A sua suíte de ferramentas fornece backend de verificação para verificar várias propriedades usando Coq, solucionadores SMT ou hevm.

(https://github.com/ethereum/act)[GitHub]

使用文档

  • Scribble: Scribble pode converter comentários de código escritos em sua linguagem específica em asserções de especificação verificáveis.

使用文档

  • Dafny: Dafny é uma linguagem de programação projetada especialmente para verificação, utilizando anotações avançadas para ajudar na inferência e verificação da correção do código.

(https://github.com/dafny-lang/dafny)[GitHub]

Ferramenta para verificar a correção do contrato

  • Certora Prover: Certora Prover é uma ferramenta de Verificação formal automatizada, projetada especificamente para verificar a correção do código de Contratos inteligentes. Ele usa a Linguagem de Verificação Certora (CVL) para criar especificações de contratos e detectar potenciais violações de propriedades por meio de análise estática e técnicas de resolução de restrições.

Website oficial

Documento de uso

  • Solidity SMTChecker: Este é um verificador de modelo incorporado no Solidity, que utiliza a tecnologia SMT (Teoria dos Modelos Satisfatórios) e resolução de Horn para garantir que o código-fonte do contrato cumpra as especificações pré-definidas durante a compilação e detetar a existência de propriedades de segurança que possam estar em violação.

(https://github.com/ethereum/solidity)[GitHub]

  • Solc-verify: Solc-verify é uma versão aprimorada do compilador Solidity, capaz de realizar verificação automatizada de código Solidity por meio de comentários e programas modularizados. Verificação formal.

(https://github.com/SRI-CSL/solidity)[GitHub]

  • KEVM: KEVM é uma representação formal da Máquina Virtual Ethereum (EVM) criada através do framework K. Ele é capaz de executar e usar lógica de acessibilidade para verificar propriedades específicas.

(https://github.com/runtimeverification/evm-semantics)[GitHub]

使用文档

Estrutura de ferramentas para prova de teoremas

  • Isabelle: Isabelle/HOL é um assistente de prova que ajuda os usuários a expressar fórmulas matemáticas em linguagem formal e fornece ferramentas para provar essas fórmulas. É principalmente usado para provas matemáticas formais, especialmente para verificar a correção de hardware, software e linguagens de programação.

(https://github.com/isabelle-prover)[GitHub]

Documentação de uso

  • Coq: Coq é uma ferramenta interativa de prova de teoremas que ajuda os usuários a definir programas e teoremas, e criar provas de correção verificáveis por máquina através de um processo interativo.

(https://github.com/coq/coq)[GitHub]

Documentação de Uso

Ferramenta de detecção de vulnerabilidades baseada em execução simbólica

  • Manticore - Manticore é uma ferramenta que usa análise de execução de símbolos para examinar o código de byte do EVM, especificamente para a detecção de vulnerabilidades.GitHub

Documento de Uso

  • Hevm - hevm é um motor de execução simbólica usado para verificar a equivalência do bytecode EVM.

(https://github.com/dapphub/dapptools/tree/master/src/hevm)[GitHub]

  • Mythril - Mythril é uma ferramenta de execução simbólica usada especificamente para descobrir possíveis vulnerabilidades em contratos inteligentes do Ethereum.

(https://github.com/ConsenSys/mythril-classic)[GitHub]

使用文档

Conclusão

Para garantir a segurança dos contratos inteligentes, é crucial combinar a verificação formal com auditoria humana. Essa combinação permite avaliar abrangentemente a segurança dos contratos. Embora a verificação formal seja um recurso intensivo, é um investimento em segurança que vale a pena para contratos de alto risco ou envolvendo grandes quantias de dinheiro. Os contratos inteligentes não são apenas um conceito popular, eles já desempenham um papel importante nos negócios globais. Embora haja alguns desafios, os contratos inteligentes têm vantagens únicas na melhoria da eficiência, redução de erros e aumento da segurança. Eles simplificarão os processos de negócios e aumentarão a confiança nas transações digitais. As empresas que estão adotando essa tecnologia agora terão vantagem na economia de encriptação do futuro, enfatizando transparência e confiabilidade.

Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
  • Recompensa
  • Comentar
  • Partilhar
Comentar
0/400
Nenhum comentário
  • Pino
Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)