Qu'est-ce qu'un schéma d'engagement-révélation dans la blockchain ?

Débutant11/22/2023, 6:46:03 PM
Découvrez la méthode Commit-Reveal, une innovation de la blockchain qui améliore la confidentialité et la sécurité des transactions numériques décentralisées.

La technologie Blockchain apporte des approches innovantes pour atteindre le consensus, la sécurité et la confidentialité. L'une de ces innovations est le schéma "commit-reveal", un protocole cryptographique qui renforce la confidentialité et la sécurité des utilisateurs de la blockchain. En suivant ce cours, vous découvrirez les niveaux de confiance, de transparence et d'innovation que le système Commit-Reveal apporte au domaine numérique décentralisé. Chaque module de cet article est méticuleusement conçu pour fournir une compréhension approfondie du schéma Commit-Reveal, de sa mise en œuvre et de son impact sur le paysage de la blockchain.

Qu'est-ce que la blockchain ?

À la base, une blockchain est comme un grand livre numérique avec une particularité. Contrairement aux grands livres traditionnels, elle est décentralisée, ce qui signifie qu'aucune entité n'a le contrôle de l'ensemble de la blockchain et qu'elle est accessible à toute personne faisant partie de son réseau. Chaque "bloc" d'une blockchain contient une liste de transactions. Lorsqu'un bloc est rempli de transactions, un nouveau bloc est formé, créant ainsi une "chaîne" de blocs connectés, d'où le nom de "blockchain".

L'une des principales caractéristiques de la blockchain est l'importance qu'elle accorde à la confiance et à la transparence. N'importe quel membre du réseau a accès à toutes les transactions de la blockchain et peut les consulter. Cette ouverture décourage la malhonnêteté et favorise la confiance au sein de la communauté. Vous vous demandez peut-être comment elle parvient à un tel niveau de transparence ? La réponse réside dans ses mécanismes de consensus et ses principes cryptographiques uniques, que nous étudierons au fur et à mesure que nous progresserons dans ce cours.

Introduction au système Commit-Reveal

Maintenant que vous avez un aperçu de ce qu'est la blockchain, nous allons lui donner une saveur particulière : le schéma Commit-Reveal. C'est comme un spectacle de magie où un magicien (l'utilisateur) s'engage d'abord dans un certain acte sans le révéler au public (le réseau) puis, à un stade ultérieur, dévoile l'acte. En termes de blockchain, il s'agit d'un processus en deux étapes : la "phase d'engagement" et la "phase de révélation".

Lors de la phase d'engagement, un utilisateur soumet une version hachée de ses informations à la blockchain. Cette version hachée est comme une version brouillée de l'information originale qui cache le contenu réel. La magie de la fonction de hachage réside dans le fait qu'il s'agit d'un voyage à sens unique ; vous ne pouvez pas désembrouiller le hachage pour le ramener à sa forme initiale, ce qui permet de garder l'information secrète pour l'instant. Vient ensuite la phase de révélation, au cours de laquelle l'utilisateur révèle les informations originales, qui sont ensuite vérifiées par le réseau en les hachant à nouveau et en les comparant au hachage initial si elles correspondent, voilà ! Le réseau confirme la révélation et le tour de magie est terminé.

Grâce au schéma Commit-Reveal, les réseaux blockchain peuvent atteindre un nouveau niveau d'engagement dans des applications telles que les ventes aux enchères, les systèmes de vote et autres, que nous explorerons en détail dans les prochains modules.

La phase d'engagement

Alors que nous naviguons dans les profondeurs du schéma Commit-Reveal, notre premier arrêt est la "phase Commit". Dans cette phase, les utilisateurs "s'engagent" à respecter une certaine valeur, mais ils le font d'une manière qui garde la valeur réelle secrète. Imaginez que vous ayez un numéro secret en tête, mais qu'au lieu de le révéler à tout le monde, vous le placiez dans une boîte fermée à clé et que vous le montriez à tout le monde. Ils savent que vous avez un numéro, mais ils ne savent pas de quoi il s'agit. C'est ce que signifie l'engagement dans la blockchain !

Comment mettre sous clé notre valeur secrète ? Dans le monde de la blockchain, nous utilisons ce que l'on appelle une fonction de hachage. Une fonction de hachage est comme un mixeur magique. Vous entrez votre valeur secrète, et le système en recrache une version brouillée, connue sous le nom de hachage. Ce hachage est unique ; même un changement minime de la valeur originale crée un hachage totalement différent. La beauté de la chose est qu'il s'agit d'un processus à sens unique - une fois que la valeur est hachée, il n'y a pas de moyen facile de déterminer la valeur originale à partir du hachage. Ainsi, lorsque les utilisateurs engagent leur valeur, ce qu'ils font réellement, c'est partager le hachage de leur valeur avec tous les utilisateurs de la blockchain.

La phase de révélation

Après le suspense de la phase d'engagement, l'heure de la révélation a sonné ! La phase de révélation est celle où les valeurs engagées sont finalement dévoilées à tous les participants sur la blockchain. Pour revenir à l'analogie de la boîte fermée à clé, c'est le moment où la boîte est ouverte et où tout le monde peut voir le numéro que vous aviez caché. Dans le monde de la blockchain, la révélation est un processus simple mais crucial qui assure la transparence et l'équité dans diverses applications.

Lorsqu'un utilisateur révèle la valeur qu'il a engagée, le réseau peut facilement vérifier son authenticité en hachant la valeur révélée et en la comparant au hachage original partagé pendant la phase d'engagement. Si les hachages correspondent, cela confirme que l'utilisateur n'a pas changé d'avis en cours de route. Ce processus de vérification simple mais puissant contribue à maintenir un environnement de confiance où chacun respecte les règles. C'est comme s'il y avait un arbitre dans un jeu, qui veille à ce que tous les joueurs respectent les conditions convenues.

Mise en œuvre de la méthode Commit-Reveal dans les contrats intelligents

Maintenant que nous avons percé la magie du schéma Commit-Reveal, voyons comment il prend vie dans le monde de la blockchain par le biais des contrats intelligents. Un contrat intelligent ressemble à un contrat traditionnel, mais il est numérique et s'exécute automatiquement. Imaginez un robot impartial qui veille automatiquement à ce que toutes les parties respectent leurs accords, et vous aurez l'idée d'un contrat intelligent. C'est l'outil qui reprend l'idée théorique de Commit-Reveal et la rend pratique dans le domaine numérique. La mise en œuvre d'un schéma Commit-Reveal par le biais d'un contrat intelligent revient à chorégraphier une danse dont chaque pas suit un rythme déterminé. Découvrons cette chorégraphie étape par étape.

Création du contrat

Commencez par créer un contrat intelligent sur une plateforme blockchain comme Ethereum. Ce contrat contiendra les règles d'engagement du système Commit-Reveal.

La fonction Commit

Concevoir une fonction de validation dans le contrat intelligent. Cette fonction permettra aux utilisateurs de soumettre leurs valeurs hachées (la phase d'engagement) au contrat.

Stockage des valeurs engagées

Au fur et à mesure que les utilisateurs engagent leurs valeurs, le contrat intelligent stocke ces hachages en toute sécurité sur la blockchain, en attendant la phase de révélation.

La fonction de révélation

Ensuite, dans le contrat intelligent, créez une fonction reveal. Le moment venu, cette fonction permettra aux utilisateurs de révéler leurs valeurs d'origine.

Vérification et validation

Lors de la révélation, le contrat intelligent vérifie les valeurs révélées en les hachant et en les comparant aux hachages initialement engagés. Si tout correspond, la révélation est validée.

Finalisation

Une fois que toutes les révélations sont collectées et vérifiées, le contrat intelligent peut exécuter automatiquement les étapes suivantes, qu'il s'agisse de comptabiliser les votes, de déterminer les gagnants des enchères ou de toute autre action spécifique à l'application.

Audit et tests

Avant de le déployer, testez minutieusement le contrat intelligent pour vous assurer qu'il fonctionne comme prévu et qu'il est à l'abri de toute exploitation potentielle. Grâce à ces étapes, le contrat intelligent orchestre la danse Commit-Reveal, garantissant ainsi un processus équitable et transparent.

Exemple de code

// SPDX-License-Identifier : MIT

pragma solidity ^0.8.0 ;

contract CommitReveal {

struct Commit {

    bytes32 hash;

    bool revealed;

}



mapping(address => Commit) public commits ;

mapping(address => uint256) public revealedValues ;



// La fonction commit permet aux utilisateurs de soumettre leurs valeurs hachées

function commit(bytes32 _hash) public {

    require(commits[msg.sender].hash == 0, "Already committed");

    commits[msg.sender].hash = _hash;

}



// La fonction reveal permet aux utilisateurs de révéler leurs valeurs originales

function reveal(uint256 _value, string memory _salt) public {

    require(commits[msg.sender].revealed == false, "Already revealed");

    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes don't match");

    commits[msg.sender].revealed = true;

    revealedValues[msg.sender] = _value;

}



// Un exemple de fonction de finalisation qui pourrait comptabiliser les votes

function tallyVotes() public view returns (uint256) {

 uint256 totalVotes = 0 ;

   for (address addr = address(0) ; addr &lt ; address(-1) ; addr++) {

 if (commits[addr].revealed) {

            totalVotes += revealedValues[addr];

        }

    }

    return totalVotes ;

}



// Une fonction pour auditer l'état du contrat (juste un exemple, pas pratique pour les grands ensembles de données)

function audit() public view returns (mapping(address => uint256) memory) {

    return revealedValues;

}

 }

Explication :

  • Création du contrat : Le contrat CommitReveal est créé.
  • La fonction Commit : La fonction de validation accepte une valeur hachée (_hash) et l'enregistre en regard de l'adresse de l'expéditeur.
  • Stockage des valeurs engagées : Les valeurs hachées sont stockées dans une cartographie appelée "commits".
  • La fonction Reveal : La fonction de révélation permet aux utilisateurs de soumettre leur valeur originale (_value) et un sel (_salt). Il vérifie que le hachage de ces derniers correspond au hachage initialement engagé.
  • Vérification et validation : La vérification et la validation s'effectuent dans le cadre de la fonction "reveal" en comparant les hachages.
  • Finalisation : La fonction tallyVotes est un exemple simplifié de la manière dont vous pourriez comptabiliser les votes. Il parcourt toutes les adresses possibles (ce qui n'est pas pratique pour les grands ensembles de données) et additionne les valeurs révélées.
  • Audit et test : La fonction d'audit est un exemple très simpliste de la manière dont vous pouvez vérifier l'état d'un contrat.

Il s'agit d'un exemple très simplifié qui ne tient pas compte de nombreuses considérations pratiques dont vous auriez besoin pour un système de production (comme la prévention des débordements, l'optimisation de l'utilisation du gaz, la gestion de grands ensembles de données et l'ajout d'un contrôle d'accès adéquat). La fonction de finalisation, en particulier, n'est pas pratique en raison de l'itération sur toutes les adresses possibles et nécessiterait une conception différente dans un scénario réel. Ce code est conçu comme un point de départ et un outil pédagogique, et non comme une solution prête à être produite.

Cas d'utilisation du système Commit-Reveal dans la blockchain

Améliorer les plates-formes d'enchères

Les enchères en ligne sont l'une des applications par excellence du schéma Commit-Reveal. Pour éviter que d'autres n'utilisent les montants des offres comme levier, les participants peuvent soumettre leurs offres secrètement pendant la phase d'engagement. À la fin de la période d'appel d'offres, la phase de révélation est lancée, permettant aux participants de divulguer leurs offres. L'offre valide la plus élevée est déterminée, ce qui garantit un processus d'enchères équitable et compétitif.

Créer des systèmes de vote équitables

Les systèmes de vote peuvent bénéficier de manière significative du schéma Commit-Reveal, en particulier dans les scénarios exigeant l'anonymat et l'honnêteté des électeurs. Dans cette configuration, lors des élections ou de tout autre événement de vote, les électeurs s'engagent sur leurs choix lors de la phase de validation sans les révéler aux autres, ce qui garantit l'intégrité et le secret des votes. Une fois la période de vote terminée, la phase de révélation commence, permettant aux électeurs de divulguer leurs votes. Les résultats sont ensuite comptabilisés, ce qui favorise un processus de vote équitable et transparent.

Contrats d'appel d'offres

Dans les contrats à offre scellée, les soumissionnaires présentent leurs offres de manière cachée en utilisant le système Commit-Reveal. Cette procédure garantit qu'aucun des soumissionnaires ne connaît le montant des offres des autres, ce qui favorise une concurrence loyale. Après la période de soumission des offres, la phase de révélation a lieu et le contrat est attribué au soumissionnaire qualifié ayant fait la meilleure offre.

Scénarios de jeu

Le système Commit-Reveal trouve une application amusante dans des scénarios de jeu tels que la version numérique de Rock, Paper, and Scissors (pierre, papier et ciseaux). Les joueurs font leurs choix sans les révéler, ce qui garantit l'équité du jeu. Une fois que les deux joueurs se sont engagés, la phase de révélation suit, déterminant le gagnant en fonction des choix effectués.

Atténuer les problèmes liés aux opérations en amont

Dans les environnements blockchain, la course en avant est un sujet de préoccupation, car des acteurs malveillants pourraient potentiellement bénéficier de la connaissance des transactions en attente. Le système Commit-Reveal permet d'atténuer ces problèmes en dissimulant initialement les détails de la transaction. Lorsque la phase de révélation intervient, il est trop tard pour que les acteurs malveillants puissent agir sur les informations, ce qui permet de préserver l'intégrité de la transaction.

Architectures Commit-and-Reveal à faible latence

Des architectures plus récentes comme F3B ont évolué pour réduire les frais généraux associés aux schémas Commit-Reveal traditionnels. F3B minimise l'écriture de données sur la blockchain, offrant une architecture Commit-and-Reveal à faible latence. Cette évolution est remarquable car elle témoigne de l'optimisation et de l'innovation continues des schémas Commit-Reveal, qui les rendent plus efficaces pour les applications du monde réel.

Génération de nombres aléatoires

Dans les environnements blockchain, la génération de nombres aléatoires peut être un défi en raison de la nature déterministe des protocoles blockchain. Le système Commit-Reveal sert d'alternative décentralisée pour générer des nombres aléatoires sur la blockchain Ethereum. Par exemple, Randao, une implémentation RNG de type Commit-Reveal, utilise des flux de données publiques et encourage la participation à la génération de nombres aléatoires.

Conclusion

À l'issue de cet examen intéressant du schéma Commit-Reveal, il est important d'examiner comment ce mécanisme simple mais puissant contribue à instaurer la confiance et l'ouverture dans les applications de la blockchain. Nous avons eu un aperçu de la façon dont la technologie blockchain pourrait changer de nombreux domaines en rendant les enchères équitables, les systèmes de vote honnêtes et les scénarios de jeu plus créatifs, entre autres, avec le schéma Commit-Reveal. Le voyage ne s'arrête pas là ; la nature en constante évolution de la technologie blockchain offre de nouveaux horizons à explorer. Armé des connaissances acquises dans le cadre de ce cours, vous êtes bien placé pour approfondir la blockchain, explorer ses possibilités infinies et contribuer à façonner un avenir numérique transparent, équitable et décentralisé.

ผู้เขียน: Piero
นักแปล: Cedar
ผู้ตรวจทาน: Matheus、Edward、Ashley He
* ข้อมูลนี้ไม่ได้มีวัตถุประสงค์เป็นคำแนะนำทางการเงินหรือคำแนะนำอื่นใดที่ Gate.io เสนอหรือรับรอง
* บทความนี้ไม่สามารถทำซ้ำ ส่งต่อ หรือคัดลอกโดยไม่อ้างอิงถึง Gate.io การฝ่าฝืนเป็นการละเมิดพระราชบัญญัติลิขสิทธิ์และอาจถูกดำเนินการทางกฎหมาย

Qu'est-ce qu'un schéma d'engagement-révélation dans la blockchain ?

Débutant11/22/2023, 6:46:03 PM
Découvrez la méthode Commit-Reveal, une innovation de la blockchain qui améliore la confidentialité et la sécurité des transactions numériques décentralisées.

La technologie Blockchain apporte des approches innovantes pour atteindre le consensus, la sécurité et la confidentialité. L'une de ces innovations est le schéma "commit-reveal", un protocole cryptographique qui renforce la confidentialité et la sécurité des utilisateurs de la blockchain. En suivant ce cours, vous découvrirez les niveaux de confiance, de transparence et d'innovation que le système Commit-Reveal apporte au domaine numérique décentralisé. Chaque module de cet article est méticuleusement conçu pour fournir une compréhension approfondie du schéma Commit-Reveal, de sa mise en œuvre et de son impact sur le paysage de la blockchain.

Qu'est-ce que la blockchain ?

À la base, une blockchain est comme un grand livre numérique avec une particularité. Contrairement aux grands livres traditionnels, elle est décentralisée, ce qui signifie qu'aucune entité n'a le contrôle de l'ensemble de la blockchain et qu'elle est accessible à toute personne faisant partie de son réseau. Chaque "bloc" d'une blockchain contient une liste de transactions. Lorsqu'un bloc est rempli de transactions, un nouveau bloc est formé, créant ainsi une "chaîne" de blocs connectés, d'où le nom de "blockchain".

L'une des principales caractéristiques de la blockchain est l'importance qu'elle accorde à la confiance et à la transparence. N'importe quel membre du réseau a accès à toutes les transactions de la blockchain et peut les consulter. Cette ouverture décourage la malhonnêteté et favorise la confiance au sein de la communauté. Vous vous demandez peut-être comment elle parvient à un tel niveau de transparence ? La réponse réside dans ses mécanismes de consensus et ses principes cryptographiques uniques, que nous étudierons au fur et à mesure que nous progresserons dans ce cours.

Introduction au système Commit-Reveal

Maintenant que vous avez un aperçu de ce qu'est la blockchain, nous allons lui donner une saveur particulière : le schéma Commit-Reveal. C'est comme un spectacle de magie où un magicien (l'utilisateur) s'engage d'abord dans un certain acte sans le révéler au public (le réseau) puis, à un stade ultérieur, dévoile l'acte. En termes de blockchain, il s'agit d'un processus en deux étapes : la "phase d'engagement" et la "phase de révélation".

Lors de la phase d'engagement, un utilisateur soumet une version hachée de ses informations à la blockchain. Cette version hachée est comme une version brouillée de l'information originale qui cache le contenu réel. La magie de la fonction de hachage réside dans le fait qu'il s'agit d'un voyage à sens unique ; vous ne pouvez pas désembrouiller le hachage pour le ramener à sa forme initiale, ce qui permet de garder l'information secrète pour l'instant. Vient ensuite la phase de révélation, au cours de laquelle l'utilisateur révèle les informations originales, qui sont ensuite vérifiées par le réseau en les hachant à nouveau et en les comparant au hachage initial si elles correspondent, voilà ! Le réseau confirme la révélation et le tour de magie est terminé.

Grâce au schéma Commit-Reveal, les réseaux blockchain peuvent atteindre un nouveau niveau d'engagement dans des applications telles que les ventes aux enchères, les systèmes de vote et autres, que nous explorerons en détail dans les prochains modules.

La phase d'engagement

Alors que nous naviguons dans les profondeurs du schéma Commit-Reveal, notre premier arrêt est la "phase Commit". Dans cette phase, les utilisateurs "s'engagent" à respecter une certaine valeur, mais ils le font d'une manière qui garde la valeur réelle secrète. Imaginez que vous ayez un numéro secret en tête, mais qu'au lieu de le révéler à tout le monde, vous le placiez dans une boîte fermée à clé et que vous le montriez à tout le monde. Ils savent que vous avez un numéro, mais ils ne savent pas de quoi il s'agit. C'est ce que signifie l'engagement dans la blockchain !

Comment mettre sous clé notre valeur secrète ? Dans le monde de la blockchain, nous utilisons ce que l'on appelle une fonction de hachage. Une fonction de hachage est comme un mixeur magique. Vous entrez votre valeur secrète, et le système en recrache une version brouillée, connue sous le nom de hachage. Ce hachage est unique ; même un changement minime de la valeur originale crée un hachage totalement différent. La beauté de la chose est qu'il s'agit d'un processus à sens unique - une fois que la valeur est hachée, il n'y a pas de moyen facile de déterminer la valeur originale à partir du hachage. Ainsi, lorsque les utilisateurs engagent leur valeur, ce qu'ils font réellement, c'est partager le hachage de leur valeur avec tous les utilisateurs de la blockchain.

La phase de révélation

Après le suspense de la phase d'engagement, l'heure de la révélation a sonné ! La phase de révélation est celle où les valeurs engagées sont finalement dévoilées à tous les participants sur la blockchain. Pour revenir à l'analogie de la boîte fermée à clé, c'est le moment où la boîte est ouverte et où tout le monde peut voir le numéro que vous aviez caché. Dans le monde de la blockchain, la révélation est un processus simple mais crucial qui assure la transparence et l'équité dans diverses applications.

Lorsqu'un utilisateur révèle la valeur qu'il a engagée, le réseau peut facilement vérifier son authenticité en hachant la valeur révélée et en la comparant au hachage original partagé pendant la phase d'engagement. Si les hachages correspondent, cela confirme que l'utilisateur n'a pas changé d'avis en cours de route. Ce processus de vérification simple mais puissant contribue à maintenir un environnement de confiance où chacun respecte les règles. C'est comme s'il y avait un arbitre dans un jeu, qui veille à ce que tous les joueurs respectent les conditions convenues.

Mise en œuvre de la méthode Commit-Reveal dans les contrats intelligents

Maintenant que nous avons percé la magie du schéma Commit-Reveal, voyons comment il prend vie dans le monde de la blockchain par le biais des contrats intelligents. Un contrat intelligent ressemble à un contrat traditionnel, mais il est numérique et s'exécute automatiquement. Imaginez un robot impartial qui veille automatiquement à ce que toutes les parties respectent leurs accords, et vous aurez l'idée d'un contrat intelligent. C'est l'outil qui reprend l'idée théorique de Commit-Reveal et la rend pratique dans le domaine numérique. La mise en œuvre d'un schéma Commit-Reveal par le biais d'un contrat intelligent revient à chorégraphier une danse dont chaque pas suit un rythme déterminé. Découvrons cette chorégraphie étape par étape.

Création du contrat

Commencez par créer un contrat intelligent sur une plateforme blockchain comme Ethereum. Ce contrat contiendra les règles d'engagement du système Commit-Reveal.

La fonction Commit

Concevoir une fonction de validation dans le contrat intelligent. Cette fonction permettra aux utilisateurs de soumettre leurs valeurs hachées (la phase d'engagement) au contrat.

Stockage des valeurs engagées

Au fur et à mesure que les utilisateurs engagent leurs valeurs, le contrat intelligent stocke ces hachages en toute sécurité sur la blockchain, en attendant la phase de révélation.

La fonction de révélation

Ensuite, dans le contrat intelligent, créez une fonction reveal. Le moment venu, cette fonction permettra aux utilisateurs de révéler leurs valeurs d'origine.

Vérification et validation

Lors de la révélation, le contrat intelligent vérifie les valeurs révélées en les hachant et en les comparant aux hachages initialement engagés. Si tout correspond, la révélation est validée.

Finalisation

Une fois que toutes les révélations sont collectées et vérifiées, le contrat intelligent peut exécuter automatiquement les étapes suivantes, qu'il s'agisse de comptabiliser les votes, de déterminer les gagnants des enchères ou de toute autre action spécifique à l'application.

Audit et tests

Avant de le déployer, testez minutieusement le contrat intelligent pour vous assurer qu'il fonctionne comme prévu et qu'il est à l'abri de toute exploitation potentielle. Grâce à ces étapes, le contrat intelligent orchestre la danse Commit-Reveal, garantissant ainsi un processus équitable et transparent.

Exemple de code

// SPDX-License-Identifier : MIT

pragma solidity ^0.8.0 ;

contract CommitReveal {

struct Commit {

    bytes32 hash;

    bool revealed;

}



mapping(address => Commit) public commits ;

mapping(address => uint256) public revealedValues ;



// La fonction commit permet aux utilisateurs de soumettre leurs valeurs hachées

function commit(bytes32 _hash) public {

    require(commits[msg.sender].hash == 0, "Already committed");

    commits[msg.sender].hash = _hash;

}



// La fonction reveal permet aux utilisateurs de révéler leurs valeurs originales

function reveal(uint256 _value, string memory _salt) public {

    require(commits[msg.sender].revealed == false, "Already revealed");

    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes don't match");

    commits[msg.sender].revealed = true;

    revealedValues[msg.sender] = _value;

}



// Un exemple de fonction de finalisation qui pourrait comptabiliser les votes

function tallyVotes() public view returns (uint256) {

 uint256 totalVotes = 0 ;

   for (address addr = address(0) ; addr &lt ; address(-1) ; addr++) {

 if (commits[addr].revealed) {

            totalVotes += revealedValues[addr];

        }

    }

    return totalVotes ;

}



// Une fonction pour auditer l'état du contrat (juste un exemple, pas pratique pour les grands ensembles de données)

function audit() public view returns (mapping(address => uint256) memory) {

    return revealedValues;

}

 }

Explication :

  • Création du contrat : Le contrat CommitReveal est créé.
  • La fonction Commit : La fonction de validation accepte une valeur hachée (_hash) et l'enregistre en regard de l'adresse de l'expéditeur.
  • Stockage des valeurs engagées : Les valeurs hachées sont stockées dans une cartographie appelée "commits".
  • La fonction Reveal : La fonction de révélation permet aux utilisateurs de soumettre leur valeur originale (_value) et un sel (_salt). Il vérifie que le hachage de ces derniers correspond au hachage initialement engagé.
  • Vérification et validation : La vérification et la validation s'effectuent dans le cadre de la fonction "reveal" en comparant les hachages.
  • Finalisation : La fonction tallyVotes est un exemple simplifié de la manière dont vous pourriez comptabiliser les votes. Il parcourt toutes les adresses possibles (ce qui n'est pas pratique pour les grands ensembles de données) et additionne les valeurs révélées.
  • Audit et test : La fonction d'audit est un exemple très simpliste de la manière dont vous pouvez vérifier l'état d'un contrat.

Il s'agit d'un exemple très simplifié qui ne tient pas compte de nombreuses considérations pratiques dont vous auriez besoin pour un système de production (comme la prévention des débordements, l'optimisation de l'utilisation du gaz, la gestion de grands ensembles de données et l'ajout d'un contrôle d'accès adéquat). La fonction de finalisation, en particulier, n'est pas pratique en raison de l'itération sur toutes les adresses possibles et nécessiterait une conception différente dans un scénario réel. Ce code est conçu comme un point de départ et un outil pédagogique, et non comme une solution prête à être produite.

Cas d'utilisation du système Commit-Reveal dans la blockchain

Améliorer les plates-formes d'enchères

Les enchères en ligne sont l'une des applications par excellence du schéma Commit-Reveal. Pour éviter que d'autres n'utilisent les montants des offres comme levier, les participants peuvent soumettre leurs offres secrètement pendant la phase d'engagement. À la fin de la période d'appel d'offres, la phase de révélation est lancée, permettant aux participants de divulguer leurs offres. L'offre valide la plus élevée est déterminée, ce qui garantit un processus d'enchères équitable et compétitif.

Créer des systèmes de vote équitables

Les systèmes de vote peuvent bénéficier de manière significative du schéma Commit-Reveal, en particulier dans les scénarios exigeant l'anonymat et l'honnêteté des électeurs. Dans cette configuration, lors des élections ou de tout autre événement de vote, les électeurs s'engagent sur leurs choix lors de la phase de validation sans les révéler aux autres, ce qui garantit l'intégrité et le secret des votes. Une fois la période de vote terminée, la phase de révélation commence, permettant aux électeurs de divulguer leurs votes. Les résultats sont ensuite comptabilisés, ce qui favorise un processus de vote équitable et transparent.

Contrats d'appel d'offres

Dans les contrats à offre scellée, les soumissionnaires présentent leurs offres de manière cachée en utilisant le système Commit-Reveal. Cette procédure garantit qu'aucun des soumissionnaires ne connaît le montant des offres des autres, ce qui favorise une concurrence loyale. Après la période de soumission des offres, la phase de révélation a lieu et le contrat est attribué au soumissionnaire qualifié ayant fait la meilleure offre.

Scénarios de jeu

Le système Commit-Reveal trouve une application amusante dans des scénarios de jeu tels que la version numérique de Rock, Paper, and Scissors (pierre, papier et ciseaux). Les joueurs font leurs choix sans les révéler, ce qui garantit l'équité du jeu. Une fois que les deux joueurs se sont engagés, la phase de révélation suit, déterminant le gagnant en fonction des choix effectués.

Atténuer les problèmes liés aux opérations en amont

Dans les environnements blockchain, la course en avant est un sujet de préoccupation, car des acteurs malveillants pourraient potentiellement bénéficier de la connaissance des transactions en attente. Le système Commit-Reveal permet d'atténuer ces problèmes en dissimulant initialement les détails de la transaction. Lorsque la phase de révélation intervient, il est trop tard pour que les acteurs malveillants puissent agir sur les informations, ce qui permet de préserver l'intégrité de la transaction.

Architectures Commit-and-Reveal à faible latence

Des architectures plus récentes comme F3B ont évolué pour réduire les frais généraux associés aux schémas Commit-Reveal traditionnels. F3B minimise l'écriture de données sur la blockchain, offrant une architecture Commit-and-Reveal à faible latence. Cette évolution est remarquable car elle témoigne de l'optimisation et de l'innovation continues des schémas Commit-Reveal, qui les rendent plus efficaces pour les applications du monde réel.

Génération de nombres aléatoires

Dans les environnements blockchain, la génération de nombres aléatoires peut être un défi en raison de la nature déterministe des protocoles blockchain. Le système Commit-Reveal sert d'alternative décentralisée pour générer des nombres aléatoires sur la blockchain Ethereum. Par exemple, Randao, une implémentation RNG de type Commit-Reveal, utilise des flux de données publiques et encourage la participation à la génération de nombres aléatoires.

Conclusion

À l'issue de cet examen intéressant du schéma Commit-Reveal, il est important d'examiner comment ce mécanisme simple mais puissant contribue à instaurer la confiance et l'ouverture dans les applications de la blockchain. Nous avons eu un aperçu de la façon dont la technologie blockchain pourrait changer de nombreux domaines en rendant les enchères équitables, les systèmes de vote honnêtes et les scénarios de jeu plus créatifs, entre autres, avec le schéma Commit-Reveal. Le voyage ne s'arrête pas là ; la nature en constante évolution de la technologie blockchain offre de nouveaux horizons à explorer. Armé des connaissances acquises dans le cadre de ce cours, vous êtes bien placé pour approfondir la blockchain, explorer ses possibilités infinies et contribuer à façonner un avenir numérique transparent, équitable et décentralisé.

ผู้เขียน: Piero
นักแปล: Cedar
ผู้ตรวจทาน: Matheus、Edward、Ashley He
* ข้อมูลนี้ไม่ได้มีวัตถุประสงค์เป็นคำแนะนำทางการเงินหรือคำแนะนำอื่นใดที่ Gate.io เสนอหรือรับรอง
* บทความนี้ไม่สามารถทำซ้ำ ส่งต่อ หรือคัดลอกโดยไม่อ้างอิงถึง Gate.io การฝ่าฝืนเป็นการละเมิดพระราชบัญญัติลิขสิทธิ์และอาจถูกดำเนินการทางกฎหมาย
เริ่มตอนนี้
สมัครและรับรางวัล
$100