Qu’est-ce qu’un audit de contrat intelligent ?
Un audit de contrat intelligent est un examen et une analyse méthodiques approfondis du code d'un contrat intelligent utilisé pour interagir avec une crypto-monnaie ou une blockchain. Ce processus est mené pour découvrir les erreurs, les problèmes et les vulnérabilités de sécurité dans le code afin de suggérer des améliorations et des moyens de les corriger. Généralement, des audits de contrats intelligents sont nécessaires, car la plupart des contrats concernent des actifs financiers et/ou des objets de valeur.
Ces contrôles sont complexes, car les contrats intelligents interagissent souvent les uns avec les autres et toute intégration avec des systèmes tiers peut également rendre le système vulnérable. Pour cette raison, les contrôles sont souvent étendus à d'autres contrats intelligents impliqués dans des interactions, et même à ceux avec lesquels ils interagissent. Ces contrôles incluent généralement à la fois des tests en cours et une analyse manuelle du code.
Les contrats intelligents gèrent souvent d’énormes quantités de fonds et un seul bug ou vulnérabilité peut entraîner de lourdes pertes. Plus précisément, les utilisateurs et parties prenantes de l'application décentralisée en question pourraient perdre tous les actifs qui font partie de l'écosystème.
Les recommandations formulées par les auditeurs sont transmises à l'avance à l'équipe de projet et leurs actions en réponse sont notées dans le rapport final. Il est considéré comme une marque d’authenticité et d’intégrité du projet. C'est pourquoi les équipes souhaitent réaliser un audit pour gagner la confiance des utilisateurs et accroître la crédibilité du projet. Ces audits sont généralement réalisés en plusieurs étapes.
La première étape consiste pour l’équipe et le groupe d’audit à se mettre d’accord sur la portée et les spécifications de l’audit. Cela signifie que la conception, l’objectif, l’architecture et d’autres détails du contrat intelligent sont transmis aux auditeurs. Vient ensuite la phase de test, au cours de laquelle les auditeurs testent les fonctions individuelles (tests unitaires), puis des parties plus importantes (tests d'intégration).
Des outils automatisés de détection et d'analyse des bogues sont également utilisés pour rechercher les vulnérabilités communément connues dans les contrats. Enfin, les auditeurs inspectent manuellement le code pour comprendre les intentions du développeur et interpréter les résultats dans ce contexte. Enfin, le rapport est publié avec les résultats et les correctifs appliqués par l'équipe.
L’importance des audits de code intelligent peut être mesurée par le fait que la scission de la chaîne Ethereum en 2016 était due à une vulnérabilité de code exploitée par un attaquant, mettant en danger des millions de dollars. Un « bug d’appel récursif » a permis à l’attaquant de drainer le fonds spéculatif démocratisé « DAO » pour des millions de dollars d’ETH. Les actions ultérieures de la communauté quant à la restitution forcée des fonds ont provoqué des désaccords et un hard fork.
Les audits de code intelligent sont de plus en plus importants dans le secteur en plein essor de la DeFi, où les contrats intelligents remplis de bogues sont souvent précipités pour répondre à la demande des investisseurs. Cela a conduit à un certain nombre de piratages coûteux en 2020 totalisant des millions, notamment Harvest, Yam Finance, bZx, Balancer et Eminence.