Qu’est-ce que la vĂ©rification formelle de smart contracts ?
Accueil
Articles
Qu’est-ce que la vĂ©rification formelle de smart contracts ?

Qu’est-ce que la vĂ©rification formelle de smart contracts ?

Avancé
Publié le Mar 2, 2023Mis à jour le Jul 12, 2023
5m

Cet article est une soumission de la communautĂ©. L’auteur est David Tarditi, vice-prĂ©sident de l’ingĂ©nierie chez CertiK, un cabinet d’audit de smart contracts Web3.

Résumé

La vĂ©rification formelle de smart contracts garantit qu’ils sont exempts de bogues, de vulnĂ©rabilitĂ©s et d’autres comportements involontaires. Cela implique qu’un expert humain prĂ©sente la logique du smart contract sous forme d’énoncĂ©s mathĂ©matiques, puis les exĂ©cute Ă  travers un processus automatisĂ© qui vĂ©rifie la logique rĂ©elle par rapport aux modĂšles du comportement attendu du contrat. La combinaison de la vĂ©rification formelle et de l’audit manuel fournit une Ă©valuation complĂšte de la sĂ©curitĂ© d’un smart contract.

Introduction

Les smart contracts sont des programmes informatiques déployés sur une blockchain qui exécutent automatiquement une action lorsque certaines conditions sont remplies. Ces actions peuvent aller de la plus simple à la plus complexe, et peuvent contenir des actifs valant des millions, voire des milliards de dollars.  

Les failles de sĂ©curitĂ© dans le code des smart contracts peuvent avoir des consĂ©quences dĂ©vastatrices, dont le vol de tous les actifs dĂ©tenus par un smart contract. En 2021, le market maker automatisĂ© (AMM) Uranium Finance s’est fait voler 50 millions de dollars en raison d’une simple faute de frappe dans un smart contract.

Toujours en 2021, Compound Finance a distribuĂ© 80 millions de dollars en rĂ©compenses non gagnĂ©es en raison d’une erreur d’un caractĂšre. En 2022, 320 millions de dollars ont Ă©tĂ© volĂ©s Ă  la passerelle Wormhole en raison d’un bogue dans l’un de ses smart contracts.

Il est important de ne pas faire d’erreur dans la dĂ©finition initiale du smart contract. Les smart contracts sont disponibles en libre accĂšs (open-source), ce qui signifie que le code est accessible au public une fois qu’un contrat est dĂ©ployĂ©. Si un pirate trouve un bogue, il peut en profiter immĂ©diatement. En outre, l’application de correctifs aux vulnĂ©rabilitĂ©s de sĂ©curitĂ© au fil du temps n’est pas une option, car le code d’un smart contract ne peut gĂ©nĂ©ralement pas ĂȘtre modifiĂ© aprĂšs son dĂ©ploiement.

Comment fonctionne la vérification des smart contracts ?  

La vĂ©rification formelle des smart contracts fonctionne en prĂ©sentant la logique et le comportement souhaitĂ© des smart contracts sous forme d’énoncĂ©s mathĂ©matiques. Les auditeurs utilisent ensuite des outils automatisĂ©s pour vĂ©rifier si ces comportements sont respectĂ©s.

Le processus comprend :

  1. La dĂ©finition des spĂ©cifications et des propriĂ©tĂ©s souhaitĂ©es d’un contrat en langage formel.

  2. La traduction du code du contrat en une représentation formelle, telle que des modÚles mathématiques ou logiques.

  3. L’utilisation de vĂ©rificateurs de thĂ©orĂšmes automatisĂ©s ou des vĂ©rificateurs de modĂšles pour valider les spĂ©cifications et les propriĂ©tĂ©s du contrat.

  4. La répétition du processus de vérification pour trouver et corriger les erreurs ou les écarts par rapport aux propriétés souhaitées.

Pourquoi la vérification des smart contracts est importante ?

L’utilisation du raisonnement mathĂ©matique permet de s’assurer que les smart contracts formellement vĂ©rifiĂ©s sont exempts de bogues, de vulnĂ©rabilitĂ©s et d’autres comportements involontaires. Cela contribue Ă©galement Ă  accroĂźtre la confiance dans le contrat, car ses propriĂ©tĂ©s ont Ă©tĂ© rigoureusement prouvĂ©es comme Ă©tant correctes. 

Vous trouverez ci-dessous quelques exemples de la façon dont la vĂ©rification des smart contracts a permis d’éviter des pertes financiĂšres importantes et d’autres rĂ©sultats dĂ©sastreux.  

Uniswap

Uniswap est un AMM bien connu. Lorsque le smart contract Uniswap V1 a Ă©tĂ© dĂ©veloppĂ©, il a Ă©tĂ© formellement vĂ©rifiĂ©. Avant sa publication, cette vĂ©rification formelle a permis de trouver et de corriger des erreurs d’arrondi qui auraient pu entraĂźner le vol des fonds d’Uniswap V1. 

Balancer

Balancer V2 est Ă©galement un AMM qui a Ă©tĂ© formellement vĂ©rifiĂ©. Une vĂ©rification formelle a permis de trouver et de corriger un calcul incorrect des frais impliquant une fonctionnalitĂ© de prĂȘt flash dans le smart contract, ce qui aurait pu rendre l’exchange vulnĂ©rable au vol.

SafeMoon

SafeMoon V1 contenait un bogue subtil trouvé par vérification formelle aprÚs son déploiement. Il était possible pour un propriétaire de renoncer à la propriété du contrat et de la récupérer, si certaines opérations étaient effectuées avant de renoncer à la propriété.

Ce bogue a Ă©tĂ© omis dans la plupart des audits manuels des forks SafeMoon V1 car sa dĂ©couverte nĂ©cessitait l’analyse de combinaisons spĂ©cifiques de valeurs de variables du programme. C’est quelque chose qu’il est difficile de dĂ©tecter pour les humains, mais facile Ă  identifier pour une machine.

Comment la vĂ©rification formelle et l’audit manuel fonctionnent ensemble ?

La vĂ©rification formelle fournit un moyen systĂ©matique et automatisĂ© de vĂ©rifier la logique et le comportement d’un contrat par rapport aux propriĂ©tĂ©s souhaitĂ©es. Cela facilite l’identification et la correction des erreurs ou des bogues potentiels. Cette mĂ©thode est particuliĂšrement utile pour trouver des problĂšmes complexes et subtils qui peuvent ĂȘtre difficiles Ă  dĂ©tecter par une inspection manuelle.

L’audit manuel implique l’examen par un expert, du code, de la conception et du dĂ©ploiement d’un contrat. L’auditeur utilise son expĂ©rience et son expertise pour identifier les risques de sĂ©curitĂ© et Ă©valuer le niveau de sĂ©curitĂ© gĂ©nĂ©ral du contrat. Ils peuvent Ă©galement confirmer que le processus de vĂ©rification formelle a Ă©tĂ© effectuĂ© correctement et vĂ©rifier les problĂšmes qui peuvent ne pas ĂȘtre dĂ©tectables par les outils automatisĂ©s. 

La combinaison de la vĂ©rification formelle et de l’audit manuel fournit une Ă©valuation complĂšte de la sĂ©curitĂ© d’un smart contract. Cela augmente les chances de trouver et de corriger des vulnĂ©rabilitĂ©s. Le rĂ©sultat est une approche dĂ©fensive en profondeur de la sĂ©curitĂ© qui exploite les capacitĂ©s uniques des humains et des machines. 

Conclusion

Pour assurer la sĂ©curitĂ© des smart contracts, il est essentiel d’utiliser Ă  la fois une vĂ©rification formelle et un audit manuel pour assurer une Ă©valuation complĂšte et approfondie du niveau de sĂ©curitĂ© d’un smart contract.

Bien que la vĂ©rification formelle puisse exiger beaucoup de ressources, il s’agit d’un investissement rentable pour les contrats gĂ©rant d’importantes sommes d’argent, ou Ă  risque Ă©levĂ©. En fin de compte, il est essentiel de donner la prioritĂ© Ă  la sĂ©curitĂ© et de s’assurer que les smart contracts sont exempts de bogues, de vulnĂ©rabilitĂ©s et de comportements involontaires.

Plus d’informations

Clause de non-responsabilitĂ© et avertissement concernant les risques : ce contenu vous est prĂ©sentĂ© « tel quel » Ă  des fins d’information gĂ©nĂ©rale et Ă©ducative uniquement, sans reprĂ©sentation ni garantie d’aucune sorte. Il ne doit pas ĂȘtre interprĂ©tĂ© comme un conseil financier, ni comme un moyen de recommander l’achat d’un produit ou d’un service spĂ©cifique. Les prix des actifs numĂ©riques peuvent ĂȘtre volatils. La valeur de votre investissement peut varier Ă  la baisse ou Ă  la hausse, et vous ne rĂ©cupĂ©rerez peut-ĂȘtre pas le montant que vous avez investi. Vous ĂȘtes seul(e) responsable de vos dĂ©cisions d’investissement et Binance Academy n’est pas responsable des pertes que vous pourriez subir. Ce contenu ne doit pas ĂȘtre interprĂ©tĂ© comme un conseil financier.