Comprendre la Vérification formelle des smart contracts en une seule lecture

Introduction

Avec la hausse rapide de la valeur des actifs off-chain du bloc, chaque projet lance à tour de rôle des scénarios économiques de chiffrement différents. Dans ce contexte, la prévention des vulnérabilités et des menaces potentielles est plus importante que jamais.

Bitcoin a été initialement conçu pour remplacer les banques, mais la technologie Blockchain a montré qu'elle a le potentiel de remplacer tous les intermédiaires. Dans ce processus, elle a ouvert de nouvelles possibilités pour la monnaie numérique, comme la programmation monétaire, ce qui est impossible avec la monnaie papier. Cette monnaie numérique favorise le développement de la décentralisation en permettant l'exécution automatique des contrats et en offrant une transparence élevée et sans intervention humaine. Ainsi, les avocats et les contrats peuvent être remplacés dans les transactions financières. Cependant, comment fonctionnent exactement les smart contracts ? Peut-on vraiment faire confiance à ce système sans confiance ?

本文将深入探讨smart contracts的Vérification formelle,分析其优缺点及其对chiffrement生态的影响,特别是以太坊的应用。

Histoire succincte du développement des smart contracts

Source: CryptoSlate

Nick Szabo· Informaticien et cryptographe des États-Unis, on attribue souvent Satoshi lui-même. En tant que fondateur de Smart Contract, il a inventé le concept de « Smart Contract » en 1994. Saab définit le Smart Contract comme un protocole de transaction numérique utilisé pour automatiser les termes d’un protocole. Son intention initiale était d’améliorer les transactions électroniques, telles que les systèmes de point de vente, et d’étendre ses capacités dans le domaine numérique.

Sabaud imagine que le protocole futur sera automatisé, fiable et inviolable, tout comme un distributeur automatique. Bien que les conditions technologiques de l'époque ne permettent pas encore de réaliser pleinement sa vision, ses idées ont jeté les bases de la transformation ultérieure de l'industrie de la chaîne de blocs. En 2015, le lancement d'Ethereum a permis une véritable application des smart contracts, et la théorie de Sabaud est devenue une technologie clé pour la décentralisation.

Sa vision est de permettre aux contrats de gérer les relations entre les deux parties avec des termes précis et automatisés, réduisant ainsi le besoin d'intervention humaine et de supervision. Cette méthode offre une manière plus sûre et efficace de gérer les protocoles, ouvrant la voie au développement des smart contracts en tant qu'outil essentiel de l'écosystème blockchain. Les premières idées de Sabo continuent d'influencer le commerce numérique et le développement des smart contracts.

Qu'est-ce que la Vérification formelle?

Source: Medium

La Vérification formelle est un processus de vérification rigoureux pour déterminer si un système (tel que Smart Contract) est conforme aux règles ou spécifications établies. En d'autres termes, il s'agit de vérifier si le système peut fonctionner comme prévu, de s'assurer qu'il remplit les conditions nécessaires et exécute ses fonctions prévues sans erreur.

Pour atteindre cet objectif, cette technique de vérification commence par décrire le comportement attendu du système à l'aide d'un modèle formel, puis utilise un langage de spécification pour définir les conditions spécifiques que le contrat doit remplir. Au fur et à mesure de la lecture de l'article, nous découvrirons plus d'exemples concrets. La technologie de Vérification formelle confronte mathématiquement l'exécution réelle du contrat à ses spécifications, garantissant ainsi sa précision. Une fois que le contrat satisfait à ces spécifications, il est considéré comme "fonctionnellement correct" ou "conçu correctement", confirmant ainsi sa fiabilité et sa sécurité dans l'environnement Blockchain.

Les types de spécifications formelles des contrats intelligents

Source : Ever Scale

Les spécifications formelles utilisent le raisonnement mathématique pour vérifier si l'exécution du programme est correcte. Ces spécifications peuvent être formulées en termes de comportement global (niveau élevé) ou de détails d'exécution internes du contrat (niveau bas). En définissant mathématiquement le comportement du contrat, les spécifications formelles garantissent que le contrat fonctionne comme prévu.

Spécifications de haut niveau

Les spécifications de haut niveau, également appelées spécifications orientées modèle, décrivent l'état global d'exécution du smart contract, le considérant comme une machine à états finis (FSM) qui effectue des transitions entre différents états via des opérations spécifiques. La logique temporelle est souvent utilisée pour définir les règles de ces transitions, décrivant en détail comment le contrat évolue dans le temps et les conditions qui doivent être remplies.

Les spécifications de haut niveau mettent l'accent sur deux aspects : la sécurité et la liquidité. La sécurité permet d'éviter les incidents imprévus, tels que l'insuffisance du solde du compte de l'expéditeur pour effectuer des transactions. La liquidité garantit le bon fonctionnement continu du contrat intelligent, en maintenant suffisamment de liquidités pour permettre aux utilisateurs de retirer des fonds à tout moment. Les deux garantissent ensemble la sécurité et la fiabilité des contrats intelligents, protégeant les actifs des utilisateurs et leur expérience d'interaction.

Spécifications de bas niveau

Les spécifications de bas niveau, également connues sous le nom de spécifications axées sur les propriétés, se concentrent sur la définition de leur comportement en analysant le processus d'exécution interne du contrat. Contrairement aux spécifications de haut niveau qui considèrent le contrat comme une machine à états finis, les spécifications de bas niveau considèrent le Smart Contract comme un système de fonctions mathématiques et analysent l'ordre d'exécution des fonctions (appelé trajectoire), ces trajectoires entraînant des changements d'état de contrat.

La technologie de vérification formelle des contrats intelligents

Source: Ever Scale

Détection de modèle

La détection de modèles est une méthode de vérification qui utilise l'Algorithme pour vérifier si le modèle de Smart Contract est conforme aux spécifications prédéfinies. Les Smart Contracts sont généralement représentés comme des systèmes de transition d'états, dont les propriétés sont définies par une logique temporelle logique. Cette méthode consiste à créer un modèle mathématique et à le décrire par des formules logiques, puis à permettre à l'Algorithme de vérifier si le modèle est conforme aux exigences.

Preuve du théorème

Contrairement à la vérification de modèle, la démonstration de théorème est une méthode mathématique utilisée pour vérifier la correction des programmes (y compris les contrats intelligents). Cette méthode convertit le modèle et les spécifications du contrat en formules logiques pour en vérifier l'équivalence logique, c'est-à-dire qu'une proposition est vraie, une autre proposition est également vraie. En exprimant cette relation sous la forme d'un théorème, les outils de démonstration automatique de théorèmes peuvent vérifier la correction du modèle de contrat et de ses spécifications.

Contrairement à la vérification de modèle limitée aux systèmes à états finis, la preuve de théorème peut analyser les systèmes à états infinis, mais nécessite généralement une orientation manuelle pour résoudre les problèmes logiques complexes. Par conséquent, la preuve de théorème est souvent plus chronophage et coûteuse que la vérification de modèle entièrement automatisée.

Exécution de symboles

L'exécution symbolique est une méthode puissante d'analyse des Smart Contracts qui consiste à exécuter des fonctions en utilisant des valeurs symboliques plutôt que des entrées spécifiques. Cette méthode transforme les chemins d'exécution du contrat en formules mathématiques (appelées prédicats de chemin) et utilise un solveur SMT pour déterminer si ces prédicats sont vrais, c'est-à-dire s'il existe des entrées qui satisfont aux conditions.

Par exemple, si une fonction de contrat se produit entre 5 et 10, le rollback peut être déclenché en évaluant la condition X > 5 et X < 10. Cette méthode est plus efficace que les tests traditionnels, présente un faible taux de faux positifs et peut générer directement des valeurs spécifiques qui déclenchent des erreurs, ce qui en fait un outil puissant pour garantir la fiabilité des smart contracts.

Qu'est-ce qu'un smart contract ?

Source: Tenderly

Les contrats intelligents sont des programmes automatisés qui s'exécutent sur la chaîne off-chain Bloc et effectuent automatiquement des opérations correspondantes lorsqu'ils remplissent des conditions spécifiques. Ils peuvent aller de protocoles simples à des programmes complexes et sont capables de gérer des actifs de plusieurs millions, voire de plusieurs milliards de dollars.

Les Smart Contracts ont le potentiel de transformer complètement des domaines tels que les votes politiques, la gestion de la chaîne d'approvisionnement, la santé et l'immobilier. Cet article se concentre sur leur application dans le domaine des Cryptoactifs. La conception des Smart Contracts permet à plus long de collaborer sans se soucier des risques de manipulation, offrant ainsi un cadre transparent et sécurisé qui améliore l'efficacité et l'innovation. Cependant, il est important de prendre conscience des vulnérabilités et des défis auxquels les Smart Contracts sont encore confrontés.

Les vulnérabilités de smart contracts

Les vulnérabilités de sécurité dans le code des smart contracts pourraient avoir des conséquences désastreuses, comme la perte de tous les actifs dans le contrat. Les événements récents en sont une illustration frappante.

Ces exemples montrent que, avant le déploiement des smart contracts, il est essentiel de garantir l'exactitude de leur code. Les smart contracts sont open source, une fois déployés, leur code est public et les hackers peuvent facilement exploiter les failles découvertes. De plus, l'immutabilité des smart contracts signifie que les failles de sécurité sont souvent impossibles à corriger une fois le code publié. Ainsi, s'ils ne sont pas développés avec précision, ils resteront toujours exposés aux risques.

Comment la vérification des smart contracts est-elle effectuée ?

Source: Certik

Ce processus comprend les étapes suivantes :

  • Utiliser un langage formel pour spécifier les contrats et les fonctionnalités attendues.
  • Transpose le code de contrat en une représentation formalisée telle qu'un modèle mathématique ou une expression logique.
  • Utilisez un vérificateur de théorème automatique ou un vérificateur de modèle pour confirmer la validité des spécifications et des propriétés du contrat.
  • En vérifiant à plusieurs reprises, les erreurs ou écarts par rapport aux propriétés attendues ont été découverts et corrigés.

Les caractéristiques clés des contrats intelligents

Source: Certik

Les contrats intelligents peuvent être considérés comme des protocoles gravés dans la pierre, une fois créés, ils ne peuvent pas être modifiés. Ces contrats fonctionnent sur un registre immuable de blockchain, exécutent automatiquement les termes sans intermédiaire, accélérant ainsi les transactions et réduisant les coûts. Cette caractéristique fixe renforce la sécurité, réalise une gestion décentralisée et réduit considérablement les risques de fraude et de corruption.

Pourquoi la vérification des smart contracts est-elle si importante?

Via des raisonnements mathématiques, la Vérification formelle garantit qu'aucun bug, erreur ou comportement inattendu n'existe dans les smart contracts. La rigueur du processus d'exécution des contrats renforce la confiance des individus, car les fonctionnalités et les propriétés ont été minutieusement vérifiées.

Les cas de réussite de la vérification des contrats intelligents mettent en évidence leur rôle important dans la prévention des pertes financières importantes.

Uniswap

Par exemple, le célèbre AMM Uniswap a effectué une Vérification formelle lors du développement de son contrat intelligent V1, découvrant et corrigeant des erreurs qui pourraient entraîner des pertes de fonds. 可能导致资金损失

Balancer

De même, un autre AMM Balancer V2 a découvert une erreur de calcul des frais liée aux Prêts Flash grâce à la Vérification formelle, évitant ainsi tout risque de vol potentiel. [https://www.certik.com/resources/blog/little-pains-great-gains-balancer-defi-contract-was-drained]

SafeMoon

SafeMoon V1 a identifié un bug critique dans le contrat intelligent après déploiement via Vérification formelle. Ce bug permet au propriétaire d'abandonner et de reprendre le contrôle dans des conditions spécifiques, un détail souvent négligé lors des audits manuels en raison de sa complexité. La Vérification formelle permet de détecter efficacement les problèmes pouvant être omis lors des audits manuels en analysant des combinaisons spécifiques de valeurs de variables.

Comment la vérification formelle et l'audit manuel collaborent-ils?

La Vérification formelle est une méthode automatisée et systématique pour vérifier si la logique et le comportement des Smart Contracts correspondent à leurs fonctionnalités attendues. Cette méthode simplifie le processus de découverte et de correction des erreurs, en particulier pour les problèmes complexes qui pourraient être ignorés lors d'une vérification manuelle.

Alors que l'audit manuel est une vérification complète du code, de la conception et du déploiement du contrat par des experts. Les auditeurs utilisent leur expérience pour découvrir les vulnérabilités de sécurité potentielles et évaluer la sécurité globale du contrat. Ils peuvent également valider le processus de Vérification formelle et identifier les failles que les outils d'automatisation pourraient négliger. La combinaison de la Vérification formelle et de l'audit manuel permet une évaluation complète de la sécurité, augmentant ainsi les chances de découvrir et de corriger les failles. En combinant l'expérience passée et l'analyse automatisée, une ligne de défense solide peut être établie.

Avantages et inconvénients des smart contracts

Source: Blockonomi

Bien que les contrats intelligents ne soient pas parfaits, leurs avantages l'emportent nettement sur leurs inconvénients. Ils simplifient les transactions complexes, permettent de gagner du temps et de l'argent, tout en améliorant la transparence des processus de travail et en réduisant les litiges. De plus, les contrats intelligents s'appuient sur l'exécution du code, ce qui réduit également les erreurs humaines. Leur chiffrement assure également un niveau élevé de sécurité. Cependant, les contrats intelligents manquent de flexibilité et sont difficiles à adapter aux situations imprévues. De plus, la mise en place de contrats intelligents nécessite des compétences de programmation professionnelles, ce qui constitue un obstacle pour certaines personnes. Malgré ces défis, les contrats intelligents sont en train de transformer plusieurs industries.

Avantages des contrats intelligents

  • Automatisation des opérations pour améliorer l'efficacité, économiser du temps et de l'argent.
  • Améliorer la transparence, réduire les controverses, et permettre à toutes les parties d'accéder aux mêmes informations.
  • Réduire les erreurs, car elles dépendent du code, éliminer les erreurs humaines.
  • Renforce la sécurité avec la technologie de chiffrement pour prévenir les altérations.

Les inconvénients des Smart Contracts

  • Manque de flexibilité, difficile à faire face aux situations imprévues.
  • Des compétences de programmation professionnelles sont nécessaires, avec une dépendance généralisée aux seuils technologiques.

Outil de Vérification formelle des contrats intelligents de la blockchain Ethereum

Source: Calibraint

Langage pour écrire des spécifications formelles

  • Act: Act permet aux utilisateurs de définir la mise à jour du stockage, les conditions préalables, les conditions ultérieures et l'immuabilité du contrat. Sa boîte à outils fournit un backend de vérification pour vérifier diverses propriétés à l'aide de Coq, des solveurs SMT ou hevm.

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

使用文档

  • Scribble: Scribble peut convertir les commentaires de code écrits dans son langage spécifique en assertions de spécification de vérification.

使用文档

  • Dafny: Dafny est un langage de programmation conçu spécifiquement pour la vérification de conception, utilisant des annotations avancées pour aider à raisonner et vérifier la correction du code.

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

Outil de validation de la correctitude du contrat

  • Certora Prover: Certora Prover est un outil de Vérification formelle automatisé, spécialement conçu pour vérifier la précision du code des contrats intelligents. Il utilise le langage de vérification Certora (CVL) pour créer des spécifications de contrat et détecter les violations potentielles des propriétés grâce à l'analyse statique et à la résolution de contraintes.

Site officiel

使用文档

  • Solidity SMTChecker: C'est un vérificateur de modèle intégré à Solidity qui utilise la théorie des modèles satisfaisants (SMT) et la technique de résolution de Horn pour garantir que le code source du contrat est conforme aux spécifications prédéfinies lors de la compilation et détecter toute violation des propriétés de sécurité.

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

  • Solc-verify: Solc-verify est une version améliorée du compilateur Solidity qui permet d'automatiser la vérification formelle du code Solidity à l'aide de commentaires et de vérifications modulaires.

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

  • KEVM: KEVM est une représentation formelle de la machine virtuelle Ethereum (EVM) créée à travers le cadre K. Il peut exécuter et utiliser la logique de l'accessibilité pour vérifier des propriétés spécifiques.

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

使用文档

Cadre d'outils pour la démonstration de théorèmes

  • Isabelle: Isabelle/HOL est un assistant de preuve qui aide les utilisateurs à exprimer des formules mathématiques dans un langage formel et fournit des outils pour prouver ces formules. Il est principalement utilisé pour la preuve mathématique formelle, en particulier pour la vérification de la correction de l'ordinateur matériel, du logiciel et des langages de programmation.

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

使用文档

  • Coq: Coq est un outil interactif de preuve de théorème qui aide les utilisateurs à définir des programmes et des théorèmes de manière interactive, et à créer des preuves de correction vérifiables par machine.

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

Documentation d'utilisation

Outil de détection de vulnérabilités basé sur une exécution symbolique

  • Manticore - Manticore est un outil d'analyse de l'exécution symbolique utilisé pour détecter les vulnérabilités dans le bytecode EVM.GitHub

使用文档

  • Hevm - hevm est un moteur d'exécution symbolique utilisé pour vérifier l'équivalence du bytecode EVM.

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

  • Mythril - Mythril est un outil d'exécution symbolique spécialement conçu pour découvrir les vulnérabilités potentielles dans les contrats intelligents Ethereum.

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

使用文档

Conclusion

Pour garantir la sécurité des smart contracts, il est essentiel de combiner la vérification formelle avec l'audit humain. Cette combinaison permet d'évaluer de manière exhaustive la sécurité des contrats. Bien que la vérification formelle soit coûteuse en termes de ressources, elle constitue une mesure de sécurité qui vaut la peine d'être investie pour les contrats à haut risque ou impliquant des montants importants. Les smart contracts ne sont pas seulement un concept populaire, ils jouent déjà un rôle important dans les activités commerciales mondiales. Malgré quelques défis, les smart contracts présentent des avantages uniques en termes d'efficacité, de réduction des erreurs et d'amélioration de la sécurité. Ils simplifieront les processus commerciaux et renforceront la confiance dans les transactions numériques. Les entreprises qui adoptent cette technologie seront en mesure de profiter d'un avantage concurrentiel dans l'économie du chiffrement, qui mettra l'accent sur la transparence et la fiabilité.

Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
  • Récompense
  • Commentaire
  • Partager
Commentaire
0/400
Aucun commentaire
  • Épingler
Trader les cryptos partout et à tout moment
qrCode
Scan pour télécharger Gate app
Communauté
Français (Afrique)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)