01-Solidity-Foundation - Fondements du langage Solidity
Navigation : Sommaire de la série | << SC-2 Setup Web3py | SC-7 Token Standards >>
Cette première sous-série de code Solidity (SC-3 a SC-6) pose les fondamentaux du langage : structure d’un contrat, types et variables, fonctions et état (data locations, visibilite, modifiers), héritage et interfaces, puis erreurs et events. Aucune ligne de Solidity serieuse ne peut être ecrite sans ces quatres notebooks. Chaque concept est illustre par un contrat compile et déployé réellement sur anvil (le noeud local de test fourni par Foundry) – pas de simulation, les adresses et les receipts dans les outputs sont authentiques.
Notebooks
| # | Notebook | Durée | Contenu |
|---|---|---|---|
| 3 | SC-03-Solidity-Basics-Python | 40 min | Structure de contrat, types valeur, variables d’état, conversions |
| 4 | SC-04-Functions-State-Python | 45 min | Data locations (storage/memory/calldata), visibilite, modifiers (view/pure/payable) |
| 5 | SC-05-Inheritance-Python | 35 min | Héritage simple et multiple, interfaces, abstract/override |
| 6 | SC-06-Errors-Events-Python | 30 min | require/revert/assert, custom errors (0.8.4+), events |
Total : 4 notebooks, ~2h30.
Parcours d’apprentissage
Étape 1 : Syntaxe et types (SC-3, 40 min)
On commence par la structure minimale d’un contrat, les types valeur (uint, address, bool, bytes), les variables d’état vs locales, et les conversions explicites. Premier déploiement sur anvil.
Étape 2 : Fonctions et état (SC-4, 45 min)
Le coeur de la programmation Solidity : les trois data locations (storage, memory, calldata) et leur cout en gas, la visibilite (public/external/internal/private), et les modifiers qui restreignent l’acces (view, pure, payable).
Étape 3 : Héritage et abstraction (SC-5, 35 min)
Solidity supporte l’héritage multiple avec le mot-clé is, les interfaces pour l’abstraction, et les contrats abstract. Cette étape prepare directement aux standards ERC de la sous-série suivante (02-Solidity-Advanced).
Étape 4 : Erreurs et observabilite (SC-6, 30 min)
require (conditions d’entrée, gas rembourse), revert (erreurs complexes), assert (invariants internes), les custom errors economes en gas depuis 0.8.4, et les events pour le logging hors-chain.
Prérequis
Par notebook
| Notebook | Fondations requises | Dépendances |
|---|---|---|
| SC-3 Solidity-Basics | SC-2 Setup Web3py | web3, py-solc-x |
| SC-4 Functions-State | SC-3 complète | idem |
| SC-5 Inheritance | SC-3 + SC-4 complètes | idem |
| SC-6 Errors-Events | SC-3 + SC-4 + SC-5 complètes | idem |
Configuration requise
- Python 3.10+ avec
pip install web3 py-solc-x - Foundry installe :
anvildoit être sur le PATH. Lancezanvildans un terminal avant d’exécuter les cellules (les quatre notebooks s’y connectent en local). - Aucune clé API, aucun faucet, aucun ETH réel nécessaire : tout tourne sur le noeud local
anvil.
Ponts inter-séries
| Série | Lien | Relation |
|---|---|---|
| SmartContracts (parent) | Vue d’ensemble | Contexte, parcours global, glossaire |
| 00-Foundations | Prérequis | SC-2 (Setup Web3py) fournit l’environnement |
| 02-Solidity-Advanced | Suite | SC-7+ (ERC-20/721/1155, DeFi, DAO, Account Abstraction) construisent sur ces fondamentaux |
Points de vigilance (exécution sur anvil)
- Lancer
anvilavant l’exécution : chaque notebook se connecte a un noeud local. Sansanvilactif, les cellules de déploiement echouent enConnectionRefusedError. py-solc-xtelecharge le compilateur au premier appel (solcx.install_solc) ; le versioning se fait viafoundry-lib/au niveau de la série.- Les outputs committes proviennent d’executions réelles sur
anvil: les adresses de contrat, les gas utilises et les receipts sont authentiques. La sous-série 03 (Foundry) exécute elle aussiforgepour de vrai (SC-12 re-exécute la suite Foundry, SC-13 lance un fuzz qui découvre un contre-exemple d’overflow) ; seuls certains notebooks restent en repli disclose quand l’outil est verrouille par acces commercial (SC-14 Certora) ou depend d’un CLI externe non installe (sous-série 05 : Vyper / Bitcoin Script / Move / Rust).
Ressources
- Foundry Book (Foundry contributors) –
anvil,forge,cast. Documentation officielle : book.getfoundry.sh. - Solidity Documentation officielle (Ethereum Foundation) – types, data locations, héritage, errors/events. docs.soliditylang.org.
- Wood, G. (2014) – “Ethereum: A Secure Decentralised Generalised Transaction Ledger” (Yellow Paper) : EVM, gas, modèle d’exécution.
- Voir aussi les références transversales dans le README parent de la série.
Conclusion / Prochaines étapes
Ce que vous avez appris
Cette première sous-série de code Solidity vous a posé les quatre piliers sans lesquels aucune ligne de contrat sérieuse ne s’écrit. L’arc pédagogique procède de la brique minimale au contrat observable :
- La syntaxe et les types (SC-3) — la structure d’un contrat, les types valeur (
uint,address,bool,bytes), les variables d’état vs locales, et les conversions explicites. Premier déploiement réel suranvil. - Les fonctions et l’état (SC-4) — le cœur de la programmation Solidity : les trois data locations (
storage,memory,calldata) et leur coût en gas, la visibilité (public/external/internal/private), et les modifiers qui restreignent l’accès (view,pure,payable). - L’héritage et l’abstraction (SC-5) — l’héritage multiple via
is, les interfaces, les contratsabstractet l’override. Cette étape prépare directement aux standards ERC de la sous-série suivante. - Les erreurs et l’observabilité (SC-6) —
require(conditions d’entrée),revert(erreurs complexes),assert(invariants internes), les custom errors économes en gas depuis 0.8.4, et les events pour le logging hors-chaîne.
Chaque concept est illustré par un contrat compilé et déployé réellement sur anvil — les adresses et receipts dans les outputs sont authentiques, et le pattern compile -> deploy -> call hérité de SC-2 est celui repris dans toute la suite.
Prochaines étapes
- Standards et cas d’usage réels : la suite immédiate est 02-Solidity-Advanced (SC-7 à SC-11), qui construit sur ces fondamentaux — ERC-20/721/1155, primitives DeFi, gouvernance DAO, account abstraction, assistance LLM.
- Revenir aux fondations : si la théorie du gas et des data locations (SC-4) reste abstraite, reprenez SC-00-Cypherpunk-Origins-Python — comprendre pourquoi une blockchain fait payer chaque opération éclaire le modèle économique de la EVM.
- La série dans son ensemble : le sommaire SmartContracts cartographie les sept sous-séries — celle-ci n’est que le socle du langage.
Le fil rouge
Les fondations de Solidity proposent un changement de regard sur la programmation : ne plus écrire du code qui « tourne », mais du code qui coûte (chaque instruction a un prix en gas) et qui est observable (chaque état est public sur la chaîne). Comprendre les data locations, la visibilité et les events, c’est comprendre que sur la EVM, l’optimisation et la transparence ne sont pas des raffinements mais des contraintes structurelles — et que le pattern compile -> deploy -> call établi ici est le squelette de toute la série.