👤 Votre nom :👤 Your name:— pour enregistrer votre travail au nom de l'enseignant— to log your work for the instructor
Lab · La preuve sans l'aveuLab · Proof without disclosure
Prouver sans révélerProve without revealing
Toute la DeFi est publique : chacun voit chaque montant. Mais que se passe-t-il quand on veut prouver une chose sans la divulguer — « j'ai plus de 18 ans », « j'ai assez de fonds », « ce calcul est juste » — sans montrer la donnée ? C'est la magie des preuves à divulgation nulle (zero-knowledge). Vous allez fabriquer un engagement cryptographique réel, puis générer une preuve ZK.All of DeFi is public: everyone sees every amount. But what happens when you want to prove something without disclosing it — "I'm over 18", "I have enough funds", "this computation is correct" — without showing the data? That's the magic of zero-knowledge proofs. You'll build a real cryptographic commitment, then generate a ZK proof.
~45minmin
2simulateurssimulators
3réflexionswrite-ups
1quizquiz
Étape 1 — L'intuitionStep 1 — The intuition
La grotte d'Ali BabaAli Baba's cave
Imaginez une grotte en anneau, avec une porte secrète au fond qui s'ouvre par un mot de passe. Je veux vous prouver que je connais le mot de passe — sans vous le dire. Vous restez à l'entrée ; j'entre par un côté au hasard ; vous criez « ressors par la gauche ! ». Si je connais le mot, je peux toujours obéir. Répétez 20 fois : si je réussis à chaque fois, vous êtes convaincu — et vous n'avez rien appris du mot de passe.Picture a ring-shaped cave with a secret door at the back that opens with a password. I want to prove I know the password — without telling you. You wait at the entrance; I walk in from a random side; you shout "come out on the left!". If I know the word, I can always comply. Repeat 20 times: if I succeed every time, you're convinced — and you've learned nothing about the password.
C'est tout le ZK : convaincre sans divulguer. Voyons d'abord la brique de base — l'engagement — puis une vraie preuve.That's all of ZK: convince without disclosing. Let's first see the building block — the commitment — then a real proof.
Un engagement (commitment) est un hash : il cache votre secret (on ne peut pas le deviner depuis le hash) tout en vous liant (vous ne pourrez plus le changer). Le calcul ci-dessous est un vrai SHA-256, exécuté dans votre navigateur. Engagez un secret + un sel aléatoire, puis révélez. Essayez ensuite de tricher en révélant un autre secret.A commitment is a hash: it hides your secret (you can't guess it from the hash) while binding you (you can no longer change it). The computation below is real SHA-256, running in your browser. Commit a secret + a random salt, then reveal. Then try to cheat by revealing a different secret.
① EngagementCommit
— l'engagement (hash) apparaîtra ici —— the commitment (hash) will appear here —
② RévélationReveal
Étape 3 — À vous d'écrireStep 3 — Your turn to write
À quoi ça sert ?What is it good for?
Donnez un cas concret où « engager puis révéler » change la donne (ex. enchère scellée, vote secret) — et expliquez pourquoi le sel est indispensable (indice : sans sel, qu'arrive-t-il si votre secret est « oui »/« non » ?).Give a concrete case where "commit then reveal" changes the game (e.g. sealed-bid auction, secret vote) — and explain why the salt is essential (hint: with no salt, what happens if your secret is "yes"/"no"?).
↳ Collez les premiers caractères de votre engagement (le hash) obtenu ci-dessus.↳ Paste the first characters of your commitment (the hash) you produced above.
« J'ai l'âge » — sans dire votre âge"I'm old enough" — without saying your age
Un site exige un âge minimum. Au lieu de tendre votre carte d'identité (date de naissance, nom, adresse…), vous générez une preuve que âge ≥ seuil. Le vérificateur reçoit un ✓/✗ — et rien d'autre. Réglez votre âge réel (privé), choisissez le seuil public, et générez la preuve au moins 3 fois (au-dessus et en dessous du seuil).A site requires a minimum age. Instead of handing over your ID (birthdate, name, address…), you generate a proof that age ≥ threshold. The verifier receives a ✓/✗ — and nothing else. Set your real age (private), pick the public threshold, and generate the proof at least 3 times (above and below the threshold).
🔒 Ce que VOUS détenez (jamais envoyé)What YOU hold (never sent)
Âge réel :Real age:—
🌐 Ce que le VÉRIFICATEUR reçoitWhat the VERIFIER receives
—
Preuve :Proof:—
Étape 5 — Le piègeStep 5 — The catch
Ce que le ZK ne fait PASWhat ZK does NOT do
« Garbage in » : une preuve montre qu'un calcul est correct, pas que l'entrée est vraie. Si on prouve « âge ≥ 18 » à partir d'un âge falsifié, la preuve est valide mais le fait est faux. Il faut une source de confiance en amont (une autorité qui signe votre date de naissance)."Garbage in": a proof shows a computation is correct, not that the input is true. Prove "age ≥ 18" from a fake age and the proof is valid but the fact is false. You still need a trusted source upstream (an authority signing your birthdate).
Coût : générer une preuve (zk-SNARK/STARK) est lourd en calcul ; la vérifier est rapide et bon marché — d'où leur usage pour compresser des milliers de transactions (zk-rollups).Cost: generating a proof (zk-SNARK/STARK) is compute-heavy; verifying it is fast and cheap — which is why they're used to compress thousands of transactions (zk-rollups).
Setup de confiance : certains systèmes (SNARKs) exigent une cérémonie de génération de paramètres ; si elle est compromise, on peut forger de fausses preuves. Les STARKs s'en passent.Trusted setup: some systems (SNARKs) need a parameter-generation ceremony; if compromised, fake proofs become possible. STARKs avoid it.
Vie privée ⇄ conformité : la même technologie protège les dissidents et peut contrarier la lutte anti-blanchiment. Tension politique, pas seulement technique.Privacy ⇄ compliance: the same tech shields dissidents and can frustrate anti-money-laundering. A political tension, not only a technical one.
Choisissez un domaine (KYC bancaire, vote en ligne, dossier médical, chaîne d'approvisionnement). Décrivez ce qu'une preuve ZK permettrait de prouver sans divulguer, et nommez une chose qu'elle ne pourrait pas garantir.Pick a domain (bank KYC, online voting, medical records, supply chain). Describe what a ZK proof would let you prove without disclosing, and name one thing it could not guarantee.
Étape 7 — À quoi ça sert vraimentStep 7 — What it actually buys you
Confidentialité, passage à l'échelle, ou identité ?Privacy, scaling, or identity?
Le ZK sert plusieurs buts. Classez chaque usage selon son bénéfice principal.ZK serves several goals. Classify each use by its primary benefit.
Zcash : envoyer des fonds sans révéler montant ni destinataireZcash: sending funds without revealing amount or recipient
ConfidentialitéPrivacy
Passage à l'échelleScaling
IdentitéIdentity
✓ Confidentialité : la transaction est valide et vérifiable, mais ses détails restent cachés.✓ Privacy: the transaction is valid and verifiable, yet its details stay hidden.
zk-rollup : prouver 5 000 transactions en une seule preuve sur Ethereumzk-rollup: proving 5,000 transactions in a single proof on Ethereum
ConfidentialitéPrivacy
Passage à l'échelleScaling
IdentitéIdentity
✓ Passage à l'échelle : une preuve compacte remplace la re-vérification de milliers de tx → plus de débit, moins de frais.✓ Scaling: one compact proof replaces re-checking thousands of txs → more throughput, lower fees.
Preuve d'unicité humaine (un humain = un compte, sans le nommer)Proof of personhood (one human = one account, without naming them)
ConfidentialitéPrivacy
Passage à l'échelleScaling
IdentitéIdentity
✓ Identité : prouver une propriété d'identité (unicité, >18 ans) sans dévoiler qui vous êtes. Brique anti-sybil.✓ Identity: prove an identity property (uniqueness, over-18) without revealing who you are. The anti-sybil building block.
Étape 8 — Confidentialité vs loiStep 8 — Privacy vs law
Le cas Tornado CashThe Tornado Cash case
Tornado Cash est un « mélangeur » : vous y déposez des fonds et les retirez vers une autre adresse, en prouvant par ZK que vous avez bien déposé — sans relier dépôt et retrait. Outil de confidentialité légitime pour les uns ; machine à blanchir pour d'autres. En août 2022, le Trésor américain (OFAC) a sanctionné le code lui-même — du jamais-vu : on ne sanctionnait plus une personne, mais des contrats intelligents. Un développeur a été arrêté. Débat mondial sur « peut-on interdire des mathématiques ? ».Tornado Cash is a "mixer": you deposit funds and withdraw to a different address, proving via ZK that you did deposit — without linking deposit to withdrawal. A legitimate privacy tool to some; a laundering machine to others. In August 2022, the US Treasury (OFAC) sanctioned the code itself — unprecedented: not a person, but smart contracts. A developer was arrested. A global debate on "can you ban mathematics?".
Question : la confidentialité financière est un droit dans le monde physique (le cash). Faut-il l'autoriser on-chain, sachant qu'on ne peut pas la donner « seulement aux gentils » ? Argumentez.Question: financial privacy is a right in the physical world (cash). Should it be allowed on-chain, knowing you can't grant it "only to the good guys"? Make your argument.
Étape 9 — Contrôle expressStep 9 — Quick check
Trois questionsThree questions
Que prouve une preuve à divulgation nulle ?What does a zero-knowledge proof prove?
La donnée elle-mêmeThe data itself
Qu'un énoncé est vrai, sans la donnéeThat a statement is true, without the data
L'identité du prouveurThe prover's identity
✓ On convainc le vérificateur qu'un énoncé est vrai sans rien révéler de plus.✓ You convince the verifier a statement is true while revealing nothing more.
À quoi sert le sel dans un engagement ?What is the salt for in a commitment?
Accélérer le hashSpeed up the hash
Réduire la tailleShrink the size
Empêcher de deviner par force bruteStop brute-force guessing
✓ Sans sel, un secret prévisible (« oui »/« non ») se retrouve en testant tous les hash possibles.✓ Without salt, a predictable secret ("yes"/"no") is found by hashing all possibilities.
Pourquoi les zk-rollups aident-ils au passage à l'échelle ?Why do zk-rollups help scaling?
Vérifier une preuve est rapide/bon marchéVerifying a proof is fast/cheap
Ils suppriment les fraisThey remove fees
Ils cachent les montantsThey hide amounts
✓ Une seule petite preuve atteste de milliers de tx, et la couche de base n'a qu'à la vérifier (vite).✓ One small proof attests to thousands of txs, and the base layer only has to verify it (fast).
L'idée à emporterThe takeaway
Découpler la vérité de la donnéeDecoupling truth from data
Le ZK casse une vieille équivalence : pendant des siècles, « prouver » voulait dire « montrer ». La cryptographie moderne permet de convaincre sans montrer. Conséquence : la blockchain n'a plus à choisir entre transparence vérifiable et confidentialité — elle peut avoir les deux. C'est aussi ce qui la fait passer à l'échelle (rollups) et ce qui pose les questions politiques les plus difficiles (mélangeurs, sanctions). La même brique, trois usages : confidentialité, débit, identité.ZK breaks an old equivalence: for centuries, "to prove" meant "to show". Modern cryptography lets you convince without showing. The consequence: a blockchain no longer has to choose between verifiable transparency and privacy — it can have both. It's also what makes it scale (rollups) and what raises the hardest political questions (mixers, sanctions). One building block, three uses: privacy, throughput, identity.