BlockPulseNews
Définition

Commit-reveal : définition

Le commit-reveal est une procédure en deux étapes où un participant publie d'abord une empreinte cryptographique d'une valeur (commit), puis la valeur elle-même plus tard (reveal), ce qui empêche les autres de copier ou d'exploiter son choix.

Thème : Sécurité et arnaques

Commit-reveal : comment ça marche ?

Sur une blockchain publique, toute transaction en attente est visible dans la mempool avant d'être incluse dans un bloc. Si un utilisateur soumet directement une enchère, un vote ou un nombre aléatoire, d'autres peuvent le voir et réagir. Le commit-reveal contourne ce problème. Lors de la première phase, l'utilisateur envoie le hachage de sa valeur combinée à un nombre secret appelé sel. Ce hachage ne révèle rien, mais il engage l'utilisateur, qui ne peut plus changer d'avis. Lors de la seconde phase, il publie la valeur et le sel, et le contrat vérifie qu'ils correspondent à l'engagement initial.

Ce schéma sert dans de nombreux cas : enchères sous pli scellé, votes secrets jusqu'à la clôture, jeux où les joueurs choisissent simultanément, ou génération d'aléa à plusieurs participants. Le service de noms ENS l'utilise pour l'enregistrement des noms, afin d'éviter qu'un observateur ne réserve avant vous le nom que vous venez de demander. Le sel est indispensable : sans lui, un attaquant pourrait tester toutes les valeurs possibles, par exemple « oui » et « non » dans un vote, et retrouver le choix à partir du hachage.

Un exemple concret

Imaginons une enchère on-chain sur un objet numérique. Pendant la phase de commit, Alice envoie le hachage de son offre de 5 ETH accompagnée d'un sel secret, et Bob fait de même avec la sienne. Personne ne peut connaître les montants. Une fois la phase close, chacun révèle son offre et son sel. Le contrat vérifie les hachages et attribue l'objet à la meilleure offre valide.

Les risques à connaître

Le dernier participant à révéler peut décider de ne pas le faire si le résultat lui est défavorable, ce qui fausse notamment les tirages au sort : il faut donc prévoir des pénalités, comme la perte d'un dépôt. Les deux phases ajoutent du délai et des frais. Un sel trop court ou réutilisé rend l'engagement devinable.

À ne pas confondre avec

  • Front-running : Le front-running est l'attaque que le commit-reveal cherche à empêcher, en cachant la valeur tant qu'elle pourrait être exploitée.
  • VRF : Une VRF produit un aléa vérifiable à partir d'une seule clé, alors que le commit-reveal combine des valeurs engagées par plusieurs participants.
  • Transaction privée : Un mempool privé cache la transaction avant son inclusion grâce à un intermédiaire, tandis que le commit-reveal cache la valeur par la cryptographie, sans faire confiance à un tiers.

Questions fréquentes sur Commit-reveal

Pourquoi ne pas envoyer directement sa valeur à un smart contract ?

Parce que les transactions sont visibles avant leur confirmation. D'autres participants pourraient copier ou contrer votre choix. Le commit masque la valeur jusqu'à ce qu'il soit trop tard pour l'exploiter.

Un commit-reveal garantit-il un hasard équitable ?

Pas à lui seul. Le dernier à révéler peut refuser de le faire s'il n'aime pas le résultat. Des dépôts de garantie ou des sources d'aléa vérifiables comme les VRF sont souvent utilisés en complément.

Termes liés

Dans le même thème : Sécurité et arnaques

Tous les termes du thème Sécurité et arnaques →

À lire

L'actualité : Sécurité et arnaques

Les derniers articles de BlockPulseNews sur ce sujet.

Approfondir avec l'Académie : La Sécurité Crypto Un module gratuit, en leçons courtes et quiz, pour maîtriser ce thème pas à pas.
Découvrir le module

Les autres termes en C

← Tout le lexique crypto de A à Z