Ethereum & Smart Contracts (Avancé) — Module 1/3 — 20 min
Solidity est le langage de programmation principal pour écrire des smart contracts sur Ethereum. Créé en 2014 par Gavin Wood, il est aujourd'hui maintenu par la Ethereum Foundation.
Solidity est un langage orienté objet, typé statiquement, influencé par JavaScript, Python et C++. Il compile en **bytecode EVM** exécutable sur la blockchain.
Un contrat Solidity se compose de plusieurs éléments :
| Type | Description | Exemple |
|---|---|---|
| `uint256` | Entier non signé 256 bits | Montants, compteurs |
| `address` | Adresse Ethereum 20 octets | Wallet, contrat |
| `bool` | Booléen | true / false |
| `string` | Chaîne de caractères | Noms, descriptions |
| `mapping` | Table de hachage clé→valeur | Soldes d'utilisateurs |
| `struct` | Type composé personnalisé | Objet avec champs |
| `array` | Tableau de valeurs | Listes dynamiques |
public : accessible par tous (externe et interne)
private : accessible uniquement dans le contrat
internal : accessible dans le contrat et les contrats héritants
external : accessible uniquement de l'extérieur
Remix IDE
Environnement de développement en ligne accessible à [remix.ethereum.org](https://remix.ethereum.org) :
Hardhat
Framework professionnel pour le développement de smart contracts :
Foundry
Alternative en Rust, plus rapide que Hardhat :
1. Conception : définir la logique métier et les fonctions
2. Développement : coder les smart contracts en Solidity
3. Tests : tests unitaires et d'intégration
4. Audit de sécurité : faire auditer le code par des experts
5. Déploiement : publier sur testnet (Sepolia) puis mainnet
6. Frontend : connecter une interface React avec ethers.js ou wagmi
7. Maintenance : surveiller, upgarder si nécessaire
Avant de déployer sur le mainnet Ethereum (coûteux), les développeurs utilisent des réseaux de test où les ETH sont gratuits :
1. Compiler le contrat → obtenir le bytecode et l'ABI
2. Créer une transaction de déploiement (sans destinataire)
3. Payer les frais de gas pour le déploiement
4. Recevoir l'adresse du contrat déployé
5. Interagir via l'ABI depuis le frontend
L'**ABI** (Application Binary Interface) est le schéma qui décrit les fonctions et événements d'un contrat, permettant au frontend de l'appeler correctement.
Checks-Effects-Interactions
Toujours vérifier les conditions → modifier l'état → puis appeler des contrats externes. Évite les attaques de réentrance comme le hack du DAO en 2016 (60M$).
OpenZeppelin
Bibliothèque de contrats sécurisés et audités : ERC-20, ERC-721, Ownable, AccessControl, etc. Utiliser ces implémentations éprouvées plutôt que de tout recoder.