BlockPulseNews
Définition

Vérification formelle : définition

La vérification formelle est une méthode qui démontre mathématiquement qu'un programme, par exemple un smart contract, respecte certaines propriétés précisément définies, quelles que soient les entrées, là où les tests classiques n'examinent qu'un nombre limité de cas.

Thème : Sécurité et arnaques

Vérification formelle : comment ça marche ?

La démarche commence par une spécification : on écrit, dans un langage logique, les propriétés que le code doit toujours respecter. Par exemple, la somme des soldes est égale à l'offre totale, ou personne ne peut retirer plus qu'il n'a déposé. Des outils spécialisés, comme des solveurs automatiques ou des assistants de preuve, analysent ensuite le code pour démontrer que ces propriétés tiennent dans toutes les situations possibles, ou produisent un contre-exemple.

Pour des contrats qui gèrent des fonds importants et ne peuvent pas être facilement corrigés, cette approche apporte un niveau de confiance supérieur aux tests et aux audits manuels. Elle reste cependant coûteuse et demande une expertise rare. Surtout, elle ne prouve que ce qui a été spécifié : si une propriété importante est oubliée ou mal formulée, une faille peut subsister malgré une vérification réussie.

Un exemple concret

Imaginons une équipe qui développe un contrat de stablecoin. Elle spécifie qu'aucune fonction ne peut créer de jetons sans dépôt de collatéral correspondant. L'outil de vérification découvre un enchaînement d'appels rare qui viole cette règle. L'équipe corrige le code, relance la preuve, et la propriété est démontrée.

Les risques à connaître

Une vérification formelle ne couvre que les propriétés écrites et le code analysé : une spécification incomplète, une erreur dans l'outil ou des interactions avec des contrats externes non modélisés peuvent laisser passer des failles. Elle ne remplace pas un audit complet.

À ne pas confondre avec

  • Bug bounty : Un bug bounty récompense des chercheurs qui trouvent des failles a posteriori, alors que la vérification formelle cherche à prouver l'absence de certains bugs avant le déploiement.

Questions fréquentes sur Vérification formelle

La vérification formelle garantit-elle qu'un smart contract est sans faille ?

Non. Elle garantit que les propriétés spécifiées sont respectées, mais une faille peut exister en dehors de ces propriétés ou dans les interactions avec d'autres contrats.

Quelle différence avec un audit de sécurité ?

Un audit est une revue experte, en partie manuelle, du code. La vérification formelle est une démonstration mathématique outillée. Les deux sont complémentaires.

Dans le même thème : Sécurité et arnaques

Tous les termes du thème Sécurité et arnaques →

À lire

Vérification formelle dans l'actualité

Nos articles qui parlent de Vérification formelle, les plus pertinents d'abord.

Approfondir avec l'Académie : La Sécurité Crypto Un module gratuit, en leçons courtes et quiz, pour maîtriser ce thème pas à pas.
Découvrir le module

Les autres termes en V

← Tout le lexique crypto de A à Z