Aller au contenu
Plateforme privée et indépendante.Plateforme privée et indépendante : gratuite pour les clients, financée par une commission des prestataires.Financement
smart-contract.com

Glossaire

Glossaire des smart contracts et de l'audit

56 termes définis simplement, pour les décideurs comme pour les développeurs.

A

AMM (teneur de marché automatisé)
Type de plateforme d'échange décentralisée où les prix sont fixés par une formule mathématique appliquée à des réserves de jetons apportées par des fournisseurs de liquidité, plutôt que par un carnet d'ordres. Ses calculs de prix et son exposition à la manipulation sont des points centraux de tout audit.
Voir aussi : DeFi (finance décentralisée), Manipulation d'oracle, Flash loan (prêt éclair)
Analyse statique
Inspection automatisée du code source sans l'exécuter, pour détecter des schémas de vulnérabilité connus, des constructions risquées et des problèmes de style. Rapide et utile avant comme pendant l'audit, elle produit toutefois des faux positifs et ne comprend pas la logique métier.
Voir aussi : Fuzzing, Audit, Vérification formelle
Appel d'offres (RFP)
Demande formelle adressée à plusieurs prestataires, invités à soumettre chacun une proposition pour un même besoin défini. Sur smart-contract.com, un appel d'offres s'appuie sur le cahier des charges du client et impose un format de devis commun, pour que les réponses soient comparables point par point.
Voir aussi : Cahier des charges (brief), Périmètre d'audit (scope), Règle d'indépendance
Audit
Revue indépendante et limitée dans le temps du code d'un smart contract par des spécialistes de la sécurité, qui recherchent vulnérabilités et erreurs de logique et les classent par gravité. Un audit réduit le risque mais ne garantit pas l'absence de bugs, et il ne couvre que le code et la version définis dans son périmètre.
Voir aussi : Périmètre d'audit (scope), Rapport d'audit, Réaudit

B

Blockchain
Registre partagé et répliqué sur de nombreux ordinateurs, dans lequel les transactions sont regroupées en blocs chaînés et validés par un mécanisme de consensus. Son historique est très difficile à modifier, ce qui permet à des parties qui ne se font pas confiance de s'appuyer sur le même registre et sur les smart contracts qu'il exécute.
Voir aussi : Smart contract (contrat intelligent), Mainnet (réseau principal), Gas (frais de transaction)
Bridge (pont inter-chaînes)
Ensemble de contrats et de composants hors chaîne qui transfère des jetons ou des messages d'une blockchain à une autre, en général en bloquant les actifs d'un côté pour émettre leur représentation de l'autre. Un bridge concentre beaucoup de valeur et des hypothèses de confiance complexes, ce qui en fait l'un des systèmes les plus difficiles à sécuriser.
Voir aussi : DeFi (finance décentralisée), Multisig (portefeuille multisignature), Oracle
Bug bounty (prime aux bogues)
Programme permanent qui récompense des chercheurs en sécurité indépendants lorsqu'ils signalent de manière responsable une vulnérabilité dans du code déployé. Il complète l'audit après le lancement en mobilisant de nombreux relecteurs dans la durée, avec des récompenses généralement proportionnelles à la gravité.
Voir aussi : Audit, Concours d'audit (audit contest), Gravité (severity)

C

Cahier des charges (brief)
Spécification structurée que le client rédige une seule fois pour décrire son projet de smart contract : objectifs, fonctionnalités, blockchain, intégrations, budget, délai et code existant. Il sert de base commune aux demandes de développement et d'audit, afin que chaque prestataire établisse son devis sur les mêmes informations.
Voir aussi : Appel d'offres (RFP), Périmètre d'audit (scope), nSLOC (lignes de code source normalisées)
Cairo
Langage de programmation des smart contracts de Starknet, un réseau qui s'appuie sur des preuves à divulgation nulle de connaissance pour faire passer Ethereum à l'échelle. Son modèle d'exécution diffère de celui de l'EVM et demande des développeurs et des auditeurs ayant une expérience spécifique.
Voir aussi : Rust, Move, EVM (Ethereum Virtual Machine)
Clé privée
Nombre secret qui prouve le contrôle d'un compte blockchain et signe ses transactions. Quiconque l'obtient peut déplacer les actifs du compte et exercer ses droits : les clés qui administrent des smart contracts exigent donc une garde stricte, idéalement via un multisig.
Voir aussi : Wallet (portefeuille), Multisig (portefeuille multisignature), Contrôle d'accès
Concours d'audit (audit contest)
Compétition limitée dans le temps au cours de laquelle de nombreux chercheurs indépendants examinent le même code et sont rémunérés selon les constats valides qu'ils soumettent. Elle mobilise des profils variés, mais offre une couverture moins prévisible qu'un audit cadré mené par une équipe dédiée.
Voir aussi : Audit, Bug bounty (prime aux bogues), Constat (finding)
Constat (finding)
Problème relevé par l'auditeur : vulnérabilité, erreur de logique, écart par rapport à la spécification ou point de qualité du code. Chaque constat est documenté dans le rapport d'audit avec un niveau de gravité, une description de son impact et une recommandation.
Voir aussi : Gravité (severity), Rapport d'audit, Preuve de concept (PoC)
Contrôle d'accès
Règles qui déterminent qui peut appeler les fonctions sensibles : émettre des jetons, suspendre un contrat, modifier des paramètres ou mettre à jour le code. Un contrôle d'accès absent ou mal configuré constitue une catégorie de vulnérabilités à la fois fréquente et lourde de conséquences.
Voir aussi : Multisig (portefeuille multisignature), Clé privée, Proxy évolutif (upgradeable proxy)

D

DAO (organisation autonome décentralisée)
Organisation dont les règles et les décisions s'exécutent via des smart contracts : les membres votent, souvent avec des jetons de gouvernance, sur des propositions comme l'utilisation des fonds ou la modification de paramètres. Sa sécurité dépend de la logique de vote, du timelock et de la résistance à la manipulation des votes.
Voir aussi : Timelock, Token (jeton), Multisig (portefeuille multisignature)
DeFi (finance décentralisée)
Services financiers, comme l'échange, le prêt, l'emprunt ou les produits dérivés, construits sous forme de smart contracts qui fonctionnent sans intermédiaire central. Parce qu'ils détiennent des fonds mutualisés et interagissent entre eux, les protocoles DeFi comptent parmi les contrats les plus complexes et les plus ciblés à sécuriser.
Voir aussi : AMM (teneur de marché automatisé), Protocole de prêt (lending), Flash loan (prêt éclair)
Dépassement d'entier (integer overflow)
Erreur où le résultat d'une opération arithmétique dépasse la plage de son type numérique et revient à une valeur inattendue. Solidity vérifie l'arithmétique par défaut depuis la version 0.8, mais les blocs unchecked, les conversions de type et d'autres langages peuvent encore y exposer les contrats.
Voir aussi : Solidity, Fuzzing, Analyse statique

E

ERC-1155
Standard Ethereum multi-jetons qui permet à un seul contrat de gérer des jetons fongibles et non fongibles, et d'en transférer plusieurs en une seule transaction. Il est souvent retenu pour les jeux, la billetterie et les collections comportant de nombreux types d'objets.
Voir aussi : ERC-20, ERC-721, NFT (jeton non fongible)
ERC-20
Standard d'interface Ethereum pour les jetons fongibles, dont toutes les unités sont interchangeables, comme une monnaie ou une part. Il définit les fonctions de solde, de transfert et d'autorisation de dépense, ce qui permet aux wallets et aux applications de prendre en charge tout jeton conforme sans intégration spécifique.
Voir aussi : Token (jeton), ERC-721, ERC-1155
ERC-721
Standard Ethereum pour les jetons non fongibles, dont chacun possède un identifiant unique et un seul propriétaire. Il sert de base à la plupart des collections de NFT et à de nombreux actifs tokenisés qui doivent être suivis individuellement.
Voir aussi : NFT (jeton non fongible), ERC-1155, Token (jeton)
EVM (Ethereum Virtual Machine)
Environnement d'exécution des smart contracts sur Ethereum et sur les nombreux réseaux compatibles. Les contrats écrits en Solidity ou en Vyper sont compilés en bytecode EVM : le code, les outils et l'expertise d'audit se transposent donc souvent d'une chaîne EVM à l'autre.
Voir aussi : Solidity, Vyper, Gas (frais de transaction)

F

Flash loan (prêt éclair)
Prêt sans garantie qui doit être emprunté et remboursé au sein d'une même transaction. C'est un outil DeFi légitime, mais il donne aussi à un attaquant un accès temporaire à des capitaux importants pour exploiter une manipulation de prix ou une faille de logique.
Voir aussi : Manipulation d'oracle, DeFi (finance décentralisée), AMM (teneur de marché automatisé)
Front-running
Pratique consistant à placer une transaction avant une autre transaction en attente, déjà connue, pour en tirer profit, par exemple en achetant juste avant un achat important. Sur les blockchains publiques, les transactions en attente sont visibles : les contrats doivent limiter ce qu'un observateur peut gagner à les voir.
Voir aussi : MEV (maximal extractable value), AMM (teneur de marché automatisé)
Fuzzing
Technique de test automatisé qui appelle les fonctions d'un contrat avec un grand nombre d'entrées aléatoires ou semi-aléatoires, pour trouver les cas qui violent une assertion ou un invariant. Elle révèle souvent des cas limites que les tests unitaires écrits à la main ne couvrent pas.
Voir aussi : Invariant, Test unitaire, Vérification formelle

G

Gas (frais de transaction)
Unité qui mesure le calcul consommé par une transaction sur une blockchain EVM. Les utilisateurs paient le gas dans la monnaie native du réseau : un code peu efficace renchérit chaque interaction, et certaines opérations échouent si elles dépassent la limite de gas d'un bloc.
Voir aussi : EVM (Ethereum Virtual Machine), Blockchain
Gel du code (code freeze)
Moment à partir duquel le code soumis à l'audit n'est plus modifié, hormis pour corriger les constats. Geler le code avant le début de l'audit préserve la validité de la revue ; des modifications pendant l'audit peuvent invalider ses conclusions et retarder la livraison.
Voir aussi : Hash de commit, Périmètre d'audit (scope), Réaudit
Gravité (severity)
Niveau attribué à un constat selon son impact potentiel et sa probabilité, le plus souvent critique, élevé, moyen, faible ou informatif. La gravité aide l'équipe à prioriser les corrections, même si chaque auditeur applique ses propres critères de classement.
Voir aussi : Constat (finding), Rapport d'audit, Bug bounty (prime aux bogues)

H

Hash de commit
Identifiant unique d'une version précise du code dans un dépôt Git. Indiquer le hash de commit dans le périmètre d'audit établit sans ambiguïté quel code a été revu, et permet de vérifier que les contrats déployés correspondent bien à la version auditée.
Voir aussi : Périmètre d'audit (scope), Gel du code (code freeze)

I

Invariant
Propriété qui doit toujours rester vraie pour un contrat, quelle que soit la séquence de transactions, par exemple que le total des dépôts égale la somme des soldes des utilisateurs. Formaliser les invariants clarifie l'intention et permet au fuzzing et à la vérification formelle de les tester.
Voir aussi : Fuzzing, Vérification formelle, Test unitaire

M

Mainnet (réseau principal)
Réseau de production d'une blockchain, sur lequel les transactions sont définitives et les jetons ont une valeur réelle. Le déploiement sur le mainnet est le moment où un bug commence à avoir des conséquences financières : l'audit et les corrections sont donc normalement terminés avant.
Voir aussi : Testnet (réseau de test), Audit, Gel du code (code freeze)
Manipulation d'oracle
Attaque consistant à fausser le prix ou la donnée sur lesquels s'appuie un contrat, souvent par des échanges massifs sur un marché peu liquide ou à l'aide d'un flash loan, afin qu'il prenne des décisions sur des valeurs erronées. Des oracles robustes, des prix moyennés dans le temps et des contrôles de cohérence réduisent ce risque.
Voir aussi : Oracle, Flash loan (prêt éclair), AMM (teneur de marché automatisé)
MEV (maximal extractable value)
Valeur que les producteurs de blocs et des robots spécialisés peuvent capter en incluant, en excluant ou en réordonnant les transactions d'un bloc, par exemple par front-running ou attaque « sandwich ». Les choix de conception d'un protocole déterminent l'exposition de ses utilisateurs.
Voir aussi : Front-running, AMM (teneur de marché automatisé)
Move
Langage de smart contracts conçu autour de la notion de ressource, un actif qui ne peut être ni copié ni détruit par inadvertance, utilisé par plusieurs blockchains récentes. Son système de types écarte certaines catégories d'erreurs dès la conception, mais la logique métier et le contrôle d'accès doivent toujours être revus de façon indépendante.
Voir aussi : Rust, Cairo, Contrôle d'accès
Multisig (portefeuille multisignature)
Portefeuille ou contrat qui exige plusieurs signatures indépendantes, par exemple trois sur cinq, avant d'exécuter une transaction. Il sert couramment à détenir la trésorerie et les droits d'administration, afin qu'aucune clé compromise ni aucune personne ne puisse agir seule.
Voir aussi : Clé privée, Timelock, Contrôle d'accès

N

NFT (jeton non fongible)
Jeton unique, non interchangeable avec un autre, le plus souvent mis en œuvre avec le standard ERC-721 ou ERC-1155. Un NFT atteste la propriété d'un objet numérique, d'un droit d'accès ou d'un certificat ; le fichier ou l'actif associé est souvent stocké hors de la blockchain.
Voir aussi : ERC-721, ERC-1155, Token (jeton)
nSLOC (lignes de code source normalisées)
Nombre de lignes de code source hors commentaires, lignes vides et différences de mise en forme, qui permet de comparer équitablement des bases de code. Les auditeurs estiment l'effort d'audit, donc sa durée et son prix, principalement à partir des nSLOC du périmètre, ajustés selon le langage, la complexité et le niveau de préparation.
Voir aussi : Périmètre d'audit (scope), Audit, Solidity

O

Oracle
Service qui apporte sur la blockchain des données extérieures, comme le prix d'un actif, un taux d'intérêt ou le résultat d'un événement, afin que les smart contracts puissent les utiliser. Un contrat ne vaut que par la fiabilité des oracles auxquels il se fie : leur conception et leur comportement en cas de défaillance sont des points clés de la revue.
Voir aussi : Manipulation d'oracle, Protocole de prêt (lending), DeFi (finance décentralisée)

P

Périmètre d'audit (scope)
Liste précise des fichiers, des contrats et du commit couverts par un audit, avec les exclusions et les hypothèses retenues. Un périmètre clair rend les devis comparables et délimite ce que le rapport final peut, ou non, affirmer sur le code.
Voir aussi : Hash de commit, nSLOC (lignes de code source normalisées), Rapport d'audit
Preuve de concept (PoC)
Code ou test qui démontre qu'une vulnérabilité est réellement exploitable, en général en reproduisant l'attaque dans un environnement de test. Une PoC lève le doute sur l'impact d'un constat et donne au développeur un moyen de vérifier que sa correction fonctionne.
Voir aussi : Constat (finding), Test unitaire, Gravité (severity)
Protocole de prêt (lending)
Application DeFi où les utilisateurs déposent des actifs pour percevoir des intérêts et empruntent contre une garantie, avec des liquidations déclenchées automatiquement quand la valeur de cette garantie baisse. Elle dépend d'oracles de prix et de calculs précis d'intérêts et de liquidation, ce qui en fait l'un des contrats les plus exigeants à développer et à auditer.
Voir aussi : DeFi (finance décentralisée), Oracle, Manipulation d'oracle
Proxy évolutif (upgradeable proxy)
Architecture dans laquelle les utilisateurs interagissent avec un contrat proxy qui relaie les appels vers un contrat d'implémentation distinct, remplaçable pour faire évoluer la logique. Elle apporte de la souplesse mais crée des risques liés à l'organisation du stockage, à l'initialisation et au contrôle des mises à jour.
Voir aussi : Contrôle d'accès, Timelock, Multisig (portefeuille multisignature)

R

Rapport d'audit
Document remis par l'auditeur à l'issue de l'audit. Il décrit le périmètre et la méthode, liste chaque constat avec sa gravité, son explication et la correction recommandée, puis, après le réaudit, indique le statut de résolution de chaque problème.
Voir aussi : Constat (finding), Gravité (severity), Périmètre d'audit (scope)
Réaudit
Revue de suivi au cours de laquelle l'auditeur vérifie les corrections apportées par le développeur à la suite des constats du premier audit. Il confirme la résolution de chaque problème et s'assure que les correctifs n'en ont pas introduit de nouveaux ; ce n'est pas un nouvel audit complet.
Voir aussi : Audit, Constat (finding), Règle d'indépendance
Réentrance (reentrancy)
Vulnérabilité dans laquelle un contrat appelle un contrat externe avant de mettre à jour son propre état, ce qui permet à ce dernier de le rappeler et de répéter une action, par exemple un retrait. On s'en prémunit en mettant l'état à jour avant tout appel externe et en utilisant des verrous anti-réentrance.
Voir aussi : Contrôle d'accès, Constat (finding), Analyse statique
Règle d'indépendance
Règle de smart-contract.com selon laquelle une société retenue pour développer un projet ne peut jamais être invitée ni retenue pour l'audit ou le réaudit de ce même projet. Elle est appliquée par la base de données elle-même, et pas seulement par l'interface : l'auditeur revoit toujours un code écrit par d'autres.
Voir aussi : Audit, Réaudit, Appel d'offres (RFP)
Rust
Langage de programmation système utilisé pour écrire les smart contracts (souvent appelés programmes) de Solana et d'autres blockchains non EVM. Il offre une forte sûreté mémoire, mais ses frameworks blockchain reposent sur leurs propres modèles de comptes et de sécurité, qui exigent une expertise d'audit spécifique.
Voir aussi : Move, Cairo, Solidity

S

Smart contract (contrat intelligent)
Programme déployé sur une blockchain qui s'exécute automatiquement, selon son code, lorsqu'une transaction l'appelle. Une fois déployé, sa logique est en général immuable et il peut détenir et transférer des actifs numériques : une erreur y coûte cher, d'où l'intérêt d'une revue indépendante.
Voir aussi : Blockchain, Solidity, Audit
Solidity
Langage de programmation le plus répandu pour les smart contracts sur l'EVM, typé statiquement, avec une syntaxe proche de JavaScript et de C++. Comme il réunit le plus grand nombre de développeurs, d'auditeurs et d'outils, il sert de référence pour estimer l'effort d'audit.
Voir aussi : EVM (Ethereum Virtual Machine), Vyper, nSLOC (lignes de code source normalisées)
Staking
Immobilisation de jetons dans un smart contract, soit pour contribuer à la sécurité d'un réseau à preuve d'enjeu, soit pour percevoir des récompenses au sein d'une application. Les contrats de staking gèrent dépôts, calcul des récompenses et conditions de retrait, où les erreurs d'arrondi et de calendrier sont des sources fréquentes de constats d'audit.
Voir aussi : Token (jeton), Constat (finding), Invariant

T

Test unitaire
Test automatisé qui vérifie une fonction ou un comportement d'un contrat de façon isolée, au regard d'un résultat attendu. Une suite de tests complète documente le comportement prévu, détecte les régressions après correction et rend l'audit plus rapide et plus efficace.
Voir aussi : Fuzzing, Invariant, Gel du code (code freeze)
Testnet (réseau de test)
Réseau de test public qui reproduit le fonctionnement d'une blockchain avec des jetons sans valeur. Les équipes y déploient leurs contrats pour tester intégrations et parcours utilisateurs dans des conditions réalistes, avant le passage sur le mainnet.
Voir aussi : Mainnet (réseau principal), Test unitaire
Timelock
Contrat qui impose un délai entre la programmation d'une action sensible, comme une mise à jour ou un changement de paramètre, et son exécution. Ce délai laisse aux utilisateurs et à l'équipe le temps d'examiner la modification et de réagir si elle est inattendue.
Voir aussi : Multisig (portefeuille multisignature), Proxy évolutif (upgradeable proxy), DAO (organisation autonome décentralisée)
Token (jeton)
Unité numérique inscrite et gérée par un smart contract, qui peut représenter une monnaie, un droit d'accès, un droit de vote, une part d'actif ou un objet unique. Son comportement dépend entièrement du contrat qui l'émet, en général conforme à un standard comme ERC-20 ou ERC-721.
Voir aussi : ERC-20, ERC-721, Tokenisation
Tokenisation
Représentation de la propriété d'un actif réel ou financier, comme un bien immobilier, une part de fonds ou une facture, sous forme de jetons sur une blockchain. Au-delà des smart contracts, elle suppose une structuration juridique, des règles d'éligibilité des investisseurs et des restrictions de transfert que le code doit faire respecter.
Voir aussi : Token (jeton), ERC-20, Contrôle d'accès

V

Vérification formelle
Recours à des méthodes mathématiques pour prouver qu'un contrat respecte une spécification précise ou un ensemble d'invariants, quelles que soient les entrées. Elle apporte une assurance forte sur les propriétés démontrées, mais elle est coûteuse et ne vaut que par la qualité de la spécification vérifiée.
Voir aussi : Invariant, Fuzzing, Analyse statique
Vyper
Langage de smart contracts pour l'EVM à la syntaxe inspirée de Python. Il restreint volontairement certaines fonctionnalités pour garder un code simple et plus facile à relire. Moins répandu que Solidity, il compte moins de développeurs et d'auditeurs spécialisés.
Voir aussi : Solidity, EVM (Ethereum Virtual Machine)

W

Wallet (portefeuille)
Logiciel ou appareil qui conserve les clés privées contrôlant des comptes blockchain et s'en sert pour signer les transactions. Un wallet ne contient pas les actifs eux-mêmes, qui restent inscrits sur la blockchain : il détient le moyen de les déplacer.
Voir aussi : Clé privée, Multisig (portefeuille multisignature)

Décrivez votre projet une fois. Comparez en toute confiance.

Recevez des devis comparables de développeurs vérifiés, puis sécurisez votre code avec un auditeur indépendant.

Recevoir des devis

Gratuit pour les clients. Sans engagement.