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 :
La dĂ©finition des spĂ©cifications et des propriĂ©tĂ©s souhaitĂ©es dâun contrat en langage formel.
La traduction du code du contrat en une représentation formelle, telle que des modÚles mathématiques ou logiques.
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.
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.