Le compiling (compilation) en crypto désigne le processus de transformation du code source d’un smart contract — écrit dans un langage de haut niveau lisible par les humains — en bytecode exécutable par la machine virtuelle de la blockchain. C’est une étape essentielle du développement blockchain, équivalente à la compilation dans le développement logiciel traditionnel.
Sur Ethereum, le compilateur le plus utilisé est solc (Solidity compiler), qui transforme le code Solidity en bytecode EVM (Ethereum Virtual Machine). Le processus produit deux artefacts principaux : le bytecode (le code machine déployé sur la blockchain) et l’ABI (Application Binary Interface), une description JSON des fonctions du contrat qui permet aux applications frontend et autres contrats d’interagir avec lui.
D’autres compilateurs existent selon les écosystèmes : Vyper (alternative Python pour Ethereum), Anchor (framework Rust pour Solana), Ink! (Rust pour les parachains Substrate/Polkadot), et Cairo (langage pour StarkNet). Chaque compilateur optimise le bytecode pour sa machine virtuelle cible.
L’optimisation du compilateur est cruciale en blockchain car le coût de déploiement et d’exécution est directement lié à la taille et à la complexité du bytecode : moins d’opcodes = moins de gas. Le compilateur Solidity offre un paramètre « optimizer runs » qui ajuste le compromis entre coût de déploiement et coût d’exécution. Un contract exécuté fréquemment bénéficie d’un optimizer runs élevé (200+).
La vérification du code source (source verification) est une pratique de transparence où le code source compilé est publié sur Etherscan ou Sourcify, permettant à quiconque de vérifier que le bytecode déployé correspond bien au code source affiché. Cette vérification est essentielle pour la confiance dans les protocoles DeFi et est devenue un standard de l’industrie.