06-Real-World - SmartContracts en Production
Navigation : Sommaire de la série | << SC-22 Solana & Anchor
La dernière sous-série SmartContracts (SC-23 a SC-27) fait le passage de la théorie au déploiement réel. On quitte le bac a sable anvil local pour affronter des réseaux publics : testnets Ethereum/XRP, mainnets L2 (Base, Polygon), ponts cross-chain Chainlink CCIP, et un projet capstone qui combine vote, chiffrement homomorphique, preuve ZKP et tests Foundry. L’épilogue SC-27 referme la boucle en revenant au bac à sable : la boucle de gouvernance y est déroulée et mesurée (gas par étape, quorum, timelock, coût du retour arrière, verrous sans rollback).
Ces notebooks supposent que les clés API et private keys sont lues depuis l’environnement (.env, os.getenv) – ils ne s’exécutent pas end-to-end sans configuration externe (faucet testnet, clé Infura/Alchemy, ETH sur L2). Les outputs committes documentent honnêtement ce qui se passe quand la configuration est absente (messages DEPLOYER_PRIVATE_KEY non configure, simulations conceptuelles disclosees), et ce qui a réellement tourne quand elle est présente. Exception : SC-27 s’exécute entièrement sur anvil local (comptes pré-financés) – aucune clé, aucun faucet, exécution end-to-end réelle.
Notebooks
| # | Notebook | Durée | Contenu |
|---|---|---|---|
| 23 | SC-23-Cross-Chain-Python | ~45 min | Interoperabilite, Chainlink CCIP, bridge simple, sécurité cross-chain |
| 24 | SC-24-Testnet-Deploy-Python | ~50 min | Sepolia via Alchemy/Infura, faucet, déploiement + interaction testnet, XRP Testnet via xrpl-py |
| 25 | SC-25-Mainnet-Deploy-Python | ~40 min | Choix L2 (Base/Polygon/Arbitrum), estimation de cout, déploiement mainnet, checklist sécurité, vérification explorateur |
| 26 | SC-26-Final-Project-Python | ~90 min | Capstone : vote Solidity + chiffrement Paillier + preuve ZKP + déploiement anvil/testnet + tests Foundry |
| 27 | SC-27-Dette-Irreversibilite-Python | ~45 min | Épilogue mesuré : boucle gouvernance (proposition→vote→timelock→exécution) avec coûts gas réels, retour arrière, table de dette paramètre/logique/migration, verrou du brûlage |
Le capstone SC-26 ne présente pas un concept nouveau : il assemble les briques acquises dans les sous-séries précédentes en une DApp de vote complète. Ce diagramme en fait la synthèse — chaque brique pointe vers son notebook d’origine :
flowchart LR
SC09["Contrat de gouvernance<br/>(SC-9 · DAO)"]
SC16["Chiffrement des bulletins<br/>(SC-16 · Paillier)"]
SC17["Vote vérifiable E2E<br/>(SC-17)"]
SC15["Preuve ZK de validité<br/>(SC-15 · ZKP)"]
SC12["Tests Foundry<br/>(SC-12/14)"]
SC24["Déploiement testnet<br/>(SC-24)"]
SC26((("<b>SC-26<br/>Capstone</b><br/>DApp de vote")))
SC09 --> SC26
SC16 --> SC26
SC17 --> SC26
SC15 --> SC26
SC12 --> SC26
SC24 --> SC26
Parcours d’apprentissage
Phase 1 : Interoperabilite (SC-23, ~45 min)
Pourquoi deplacer un actif ou un message d’une chaîne a l’autre, comment Chainlink CCIP fait transituer des données on-chain de manière vérifiable, et ou se cachent les attaques cross-chain (reentrancy de bridge, message spoofing). Le notebook reste en mode source-as-strings (les contrats CCIP sont lus comme texte pédagogique, non déployés).
Phase 2 : Deploiement public (SC-24 + SC-25, ~1h30)
Le coeur metier de la sous-série. SC-24 déployé sur Sepolia (Ethereum testnet) et envoie des transactions sur le XRP Testnet ; SC-25 monte en gamme vers un mainnet L2 (Base, chain_id 8453) ou un déploiement coute quelques centimes. Les deux notebooks couvrent le cycle complet : connexion RPC, wallet, gas, broadcast, vérification.
Cout réel : SC-25 sur Base/Polygon coute ~$0.01-0.50 par déploiement, contre des dizaines de dollars sur Ethereum L1. C’est le motif pédagogique des L2 : même sécurité (settlement L1), cout divisé par 100-1000x.
Phase 3 : Capstone (SC-26, ~90 min)
SC-26 assemble toute la série (SC-0..25) en une DApp de vote complète : smart contract de gouvernance (cf SC-9), chiffrement homomorphique des bulletins via Paillier (cf SC-16-17), preuve zero-knowledge de validite du bulletin (cf SC-15), déploiement sur anvil puis testnet (cf SC-24), tests Foundry (cf SC-12-14). C’est le notebook de cloture – il suppose tous les autres acquis.
Phase 4 : Épilogue mesuré (SC-27, ~45 min)
Après le capstone, SC-27 change d’angle : au lieu d’ajouter une brique, il mesure ce que la série a construit. La boucle de gouvernance (proposition → vote → timelock → exécution) est déroulée sur anvil transaction par transaction, chaque étape ayant son gas mesuré depuis un vrai receipt. Le notebook tente ensuite le retour arrière (son coût, et la liste explicite de ce qui ne revient pas : gas brûlé, historique append-only, surpaiement de fenêtre), compare trois formes de changement (paramètre / logique / migration) dans une table de dette coût-quorum-délai-réversibilité, et démontre l’échelon zéro : le brûlage de jetons de gouvernance, verrou sans aucun rollback (le geste le moins cher du mécanisme, prouvé par une proposition unanime refusée).
Prérequis
Par notebook
| Notebook | Prérequis | Dépendances |
|---|---|---|
| SC-23 Cross-Chain | SC-3..SC-8 (Solidity), notions de bridges | Compte testnet Sepolia |
| SC-24 Testnet-Deploy | SC-2 (Setup web3.py), SC-3 (Solidity Basics) | web3 py-solc-x xrpl-py python-dotenv + clé API Alchemy/Infura |
| SC-25 Mainnet-Deploy | SC-24 complète | web3 py-solc-x python-dotenv + ETH sur Base/Polygon (~$0.01-0.50) |
| SC-26 Final-Project | SC-0..25 (toute la série), en particulier SC-9/SC-15/SC-16-17/SC-24 | Foundry (forge, anvil), web3, pycryptodome |
| SC-27 Dette-Irreversibilite | SC-9 (mécanique DAO gouvernance) | web3 py-solc-x + anvil local (aucune clé externe) |
Configuration requise
Ces notebooks ne s’exécutent pas sans configuration externe. Variables d’environnement attendues (via .env, jamais inline dans le code) :
ALCHEMY_API_KEYouINFURA_API_KEY– endpoint RPC Sepolia/BaseDEPLOYER_PRIVATE_KEY– wallet de déploiement (testnet ou L2 mainnet)- XRP Testnet : wallet + seed generes via faucet XRP
Sans ces variables, les notebooks tournent en mode degrade et les outputs committes le documentent (messages non configure, Interaction non disponible).
Ponts inter-séries
| Série | Lien | Relation |
|---|---|---|
| 05-Alternative-Chains | Precedent | Solana, Move, Vyper, XRP – les blockchains abordees dans SC-24/25 |
| 03-Foundry-Testing | Tests | SC-26 capstone utilise forge/anvil |
| 04-Privacy-Cryptography | Crypto | SC-26 réutilise Paillier (SC-16-17) et ZKP (SC-15) |
| SmartContracts parent | Vue d’ensemble | Progression complète SC-0..SC-27 |
Points de vigilance (déploiement réel)
- Jamais de clé privée dans le code :
os.getenv("DEPLOYER_PRIVATE_KEY")sans valeur par defaut. Un secret inline = leak (cf.claude/rules/secrets-hygiene.md). - Testnet avant mainnet : SC-24 (Sepolia, gratuit) systematiquement avant SC-25 (Base/Polygon, payant).
- Gas est un cout réel sur mainnet : SC-25 sur L2 reste bon marche, mais un déploiement foire multiplie le cout. La checklist de SC-25 (audit, vérification explorateur, proxy pattern) existe pour ca.
- Verification de contrat : après déploiement mainnet, publier le source code sur l’explorateur (Basescan, Polygonscan) pour transparence et interaction depuis le front-end.
Ressources
- Chainlink CCIP Docs – cross-chain messaging (SC-23)
- Sepolia Faucet – testnet ETH gratuit (SC-24)
- XRP Ledger Testnet – faucet XRP (SC-24)
- Base / Polygon docs – L2 mainnet deployment (SC-25)
- Basescan / Polygonscan – vérification de contrat (SC-25)
Voir aussi les Ressources Externes du README parent pour les références academiques transversales (Foundry Book, OpenZeppelin, ElectionGuard).
Conclusion / Prochaines étapes
Ce que vous avez appris
Cette dernière sous-série fait le passage de la théorie au déploiement réel. L’arc pédagogique quitte le bac à sable anvil local pour affronter des réseaux publics, et assemble toute la série dans un capstone :
- L’interopérabilité cross-chain (SC-23) — pourquoi déplacer un actif ou un message d’une chaîne à l’autre, comment Chainlink CCIP fait transiter des données on-chain de manière vérifiable, et où se cachent les attaques (reentrancy de bridge, message spoofing).
- Le déploiement public (SC-24, SC-25) — le cœur métier : déployer sur Sepolia (testnet Ethereum) et transiger sur le XRP Testnet (SC-24), puis monter en gamme vers un mainnet L2 (Base, chain_id 8453) où un déploiement coûte quelques centimes (SC-25). Le cycle complet : connexion RPC, wallet, gas, broadcast, vérification.
- Le capstone (SC-26) — la DApp de vote qui assemble toute la série : smart contract de gouvernance (cf SC-9), chiffrement homomorphe des bulletins via Paillier (cf SC-16/17), preuve zero-knowledge de validité (cf SC-15), déploiement anvil puis testnet (cf SC-24), tests Foundry (cf SC-12/14).
- L’épilogue mesuré (SC-27) — le retour au bac à sable pour mesurer ce que le monde réel rend irréversible : coûts gas réels de chaque étape de la boucle de gouvernance, coût du retour arrière et liste de ce qui ne revient jamais, table de dette (paramètre / logique / migration × coût-quorum-délai-réversibilité), et démonstration par échec du verrou du brûlage — détruire le mécanisme coûte moins cher que le faire tourner une fois.
Ces notebooks supposent des clés API et private keys lues depuis l’environnement — les outputs committés documentent honnêtement ce qui se passe quand la configuration est absente, et ce qui a réellement tourné quand elle est présente.
Prochaines étapes
- Le retour aux fondamentaux : après ce capstone, la série est complète. Le meilleur approfondissement est de reprendre un notebook fondateur (SC-0 ou SC-3) — les primitives et la syntaxe se comprennent autrement une fois qu’on a déployé et sécurisé un système réel.
- Au-delà des smart contracts : SymbolicAI/Lean prolonge l’idéal de vérification (cf SC-14) vers la preuve mathématique ; GameTheory/SocialChoice approfondit les fondations théoriques du vote (cf SC-9/SC-17, capstone SC-26).
- La série dans son ensemble : le sommaire SmartContracts cartographie les sept sous-séries — celle-ci clôt le parcours SC-0 → SC-27.
Le fil rouge
Les smart contracts en production proposent un changement de regard sur le déploiement : ne plus opposer théorie et pratique, mais comprendre qu’un protocole n’est vraiment éprouvé qu’exposé au monde réel (gas coûteux, adversaires, immutabilité). Le passage testnet → mainnet L2, la discipline du secret (os.getenv, jamais inline) et le capstone qui assemble vote, chiffrement homomorphe et preuve ZKP ne sont pas des exercices accessoires : ils sont la validation de tout ce que les cinq sous-séries précédentes ont construit. La leçon transversale : un smart contract n’est jamais « fini » tant qu’il n’a pas survécu au contact d’un réseau public — et c’est précisément cette épreuve qui transforme une démonstration pédagogique en un système digne de confiance.