Ethereum est la plateforme de référence pour les smart contracts : une blockchain en preuve d'enjeu dont l'environnement d'exécution, l'Ethereum Virtual Machine (EVM), a été repris par de nombreux autres réseaux. Y développer donne accès à l'offre d'outils, de bibliothèques et de relecteurs expérimentés la plus large, dans un environnement hostile où chaque transaction est publique et où la valeur en jeu attire des attaquants aguerris.
Développer sur Ethereum
Les contrats sont compilés en bytecode EVM et s'exécutent dans un modèle à comptes : chaque contrat possède son propre stockage et chaque modification d'état consomme du gas payé par l'appelant. Solidity est le langage dominant, Vyper une alternative plus restreinte axée sur la simplicité. Le code déployé est immuable, sauf si le projet adopte un proxy évolutif, qui soulève ses propres questions de gouvernance et d'organisation du stockage.
- Langages : Solidity, Vyper
- Frameworks : Foundry, Hardhat
- Briques courantes : bibliothèques standard auditées pour les tokens (ERC-20, ERC-721, ERC-1155), le contrôle d'accès et les proxys
Ce que regardent les auditeurs
- La réentrance et l'ordre entre appels externes et mises à jour d'état, y compris via les callbacks de tokens
- Le contrôle d'accès des fonctions privilégiées, le transfert de propriété, la configuration du multisig et du timelock
- L'usage des oracles et la manipulation de prix, surtout lorsqu'un flash loan peut déplacer un marché en une seule transaction
- L'exposition au front-running et au MEV : limites de slippage, échéances, schémas d'engagement puis révélation
- Les proxys évolutifs : protection de l'initialisation, collisions de stockage, droits de mise à jour
Avant de demander des devis
- Figez un commit hash et listez les fichiers du périmètre, avec le nombre de nSLOC si vous l'avez
- Documentez les rôles, les actions privilégiées et les hypothèses de confiance (clés d'administration, oracles, protocoles externes)
- Fournissez une suite de tests Foundry ou Hardhat fonctionnelle, idéalement avec du fuzzing ou des tests d'invariants sur la comptabilité
- Précisez les réseaux de déploiement, le même code pouvant ensuite tourner sur d'autres chaînes EVM