Was ist ein Commit-Reveal-Schema in Blockchain?

Einsteiger11/22/2023, 6:46:03 PM
Erfahren Sie mehr über die Commit-Reveal-Methode, eine Blockchain-Innovation, die den Datenschutz und die Sicherheit bei dezentralen digitalen Transaktionen verbessert.

Die Blockchain-Technologie bietet innovative Ansätze zur Erzielung von Konsens, Sicherheit und Datenschutz. Eine dieser Innovationen ist das Commit-Reveal-Schema, ein kryptografisches Protokoll, das den Datenschutz und die Sicherheit für Blockchain-Benutzer verbessert. Während Sie durch diesen Kurs navigieren, werden Sie die Ebenen des Vertrauens, der Transparenz und der Innovation entfalten, die das Commit-Reveal-System in den dezentralen digitalen Bereich bringt. Jedes Modul in diesem Artikel ist sorgfältig ausgearbeitet, um ein umfassendes Verständnis des Commit-Reveal-Schemas, seiner Implementierung und seiner Auswirkungen auf die Blockchain-Landschaft zu vermitteln.

Was ist Blockchain?

Im Kern ist eine Blockchain wie ein digitales Hauptbuch mit einer Besonderheit. Im Gegensatz zu herkömmlichen Ledgern ist es dezentralisiert, was bedeutet, dass keine einzelne Entität die Kontrolle über die gesamte Blockchain hat und es für jeden zugänglich ist, der Teil seines Netzwerks ist. Jeder „Block“ in einer Blockchain enthält eine Liste von Transaktionen. Sobald ein Block mit Transaktionen gefüllt ist, wird ein neuer Block gebildet, wodurch eine verbundene „Kette“ von Blöcken entsteht – daher der Name „Blockchain“.

Eines der herausragenden Merkmale der Blockchain ist die Betonung von Vertrauen und Transparenz. Jeder im Netzwerk hat Zugriff auf jede Transaktion in einer Blockchain und kann diese einsehen. Diese Offenheit verhindert Unehrlichkeit und fördert das Vertrauen in der Gemeinschaft. Sie fragen sich vielleicht, wie ein solches Maß an Transparenz erreicht wird? Die Antwort liegt in seinen einzigartigen Konsensmechanismen und kryptografischen Prinzipien, mit denen wir uns im Verlauf dieses Kurses befassen werden.

Einführung in das Commit-Reveal-Schema

Nachdem Sie nun einen Eindruck davon bekommen haben, was Blockchain ist, wollen wir ihr eine besondere Variante vorstellen – das Commit-Reveal-Schema. Es ist wie eine Zaubershow, bei der sich ein Zauberer (der Benutzer) zunächst zu einer bestimmten Handlung verpflichtet, ohne sie dem Publikum (dem Netzwerk) zu offenbaren, und die Handlung dann zu einem späteren Zeitpunkt enthüllt. In Blockchain-Begriffen handelt es sich um einen zweistufigen Prozess: die „Commit-Phase“ und die „Reveal-Phase“.

In der Commit-Phase übermittelt ein Benutzer eine gehashte Version seiner Informationen an die Blockchain. Diese gehashte Version ist wie eine verschlüsselte Version der Originalinformationen, die den tatsächlichen Inhalt verbirgt. Der Zauber der Hash-Funktion besteht darin, dass es sich um eine einseitige Reise handelt; Sie können den Hash nicht wieder in seine ursprüngliche Form entschlüsseln, sodass die Informationen vorerst geheim bleiben. Dann kommt die Offenlegungsphase, in der der Benutzer die ursprünglichen Informationen preisgibt, die dann vom Netzwerk verifiziert werden, indem es sie erneut hasht und bei Übereinstimmung mit dem ursprünglich festgeschriebenen Hash vergleicht, voilà! Das Netzwerk bestätigt die Enthüllung und der Zaubertrick ist abgeschlossen.

Durch das Commit-Reveal-Schema können Blockchain-Netzwerke ein neues Maß an Engagement in Anwendungen wie Auktionen, Abstimmungssystemen und mehr erreichen, das wir in den kommenden Modulen im Detail untersuchen werden.

Die Commit-Phase

Während wir in die Tiefen des Commit-Reveal-Schemas vordringen, ist unsere erste Station die „Commit-Phase“. In dieser Phase „verpflichten“ sich Benutzer zu einem bestimmten Wert, tun dies jedoch auf eine Weise, die den tatsächlichen Wert geheim hält. Stellen Sie sich vor, Sie haben eine Geheimnummer im Kopf, aber anstatt allen zu sagen, was es ist, legen Sie sie in eine verschlossene Kiste und zeigen sie allen. Sie wissen, dass Sie eine Nummer haben, aber sie wissen nicht, was es ist. Darum geht es beim Commit in der Blockchain!

Wie verschließen wir nun unseren geheimen Wert? In der Blockchain-Welt verwenden wir dazu eine sogenannte Hash-Funktion. Eine Hash-Funktion ist wie ein magischer Mixer. Sie geben Ihren geheimen Wert ein und er spuckt eine verschlüsselte Version davon aus, einen sogenannten Hash. Dieser Hash ist einzigartig; Selbst eine kleine Änderung des ursprünglichen Werts erzeugt einen ganz anderen Hash. Das Schöne daran ist, dass es sich um einen einseitigen Prozess handelt – sobald der Wert gehasht ist, gibt es keine einfache Möglichkeit, den ursprünglichen Wert aus dem Hash zu ermitteln. Wenn Benutzer also ihren Wert festlegen, teilen sie in Wirklichkeit den Hash ihres Werts mit allen in der Blockchain.

Die Enthüllungsphase

Nachdem die Spannung in der Commit-Phase aufgebaut wurde, ist es Zeit für die große Enthüllung! In der Reveal-Phase werden die festgelegten Werte schließlich allen Teilnehmern der Blockchain enthüllt. Um auf unsere Analogie zur verschlossenen Box zurückzukommen: Dies ist der Moment, in dem die Box geöffnet wird und jeder sehen kann, welche Nummer Sie versteckt haben. In der Blockchain-Welt ist die Offenlegung ein unkomplizierter, aber entscheidender Prozess, der in verschiedenen Anwendungen für Transparenz und Fairness sorgt.

Wenn ein Benutzer seinen Commit-Wert preisgibt, kann das Netzwerk seine Authentizität leicht überprüfen, indem es den offenbarten Wert hasht und ihn mit dem ursprünglichen Hash vergleicht, der während der Commit-Phase geteilt wurde. Wenn die Hashes übereinstimmen, bestätigt dies, dass der Benutzer seine Meinung nicht auf halbem Weg geändert hat. Dieser einfache, aber leistungsstarke Verifizierungsprozess trägt dazu bei, eine vertrauensvolle Umgebung aufrechtzuerhalten, in der sich jeder an die Regeln hält. Es ist, als hätte man einen Schiedsrichter in einem Spiel, der sicherstellt, dass sich alle Spieler an die vereinbarten Bedingungen halten.

Commit-Reveal in Smart Contracts implementieren

Nachdem wir nun die Magie des Commit-Reveal-Schemas entschlüsselt haben, wollen wir sehen, wie es durch intelligente Verträge in der Blockchain-Welt zum Leben erweckt wird. Ein Smart Contract ähnelt einem herkömmlichen Vertrag, ist jedoch digital und führt sich selbst aus. Stellen Sie sich einen unparteiischen Roboter vor, der automatisch sicherstellt, dass alle Parteien ihre Vereinbarungen einhalten, und Sie haben die Idee eines intelligenten Vertrags. Es ist das Tool, das die theoretische Idee von Commit-Reveal aufgreift und im digitalen Bereich praktisch umsetzt. Die Implementierung eines Commit-Reveal-Schemas über einen Smart Contract ist wie die Choreografie eines Tanzes, bei dem jeder Schritt einem festgelegten Rhythmus folgt. Lassen Sie uns diese Choreografie Schritt für Schritt durchgehen.

Den Vertrag erstellen

Beginnen Sie mit der Erstellung eines Smart Contracts auf einer Blockchain-Plattform wie Ethereum. In diesem Vertrag sind die Einsatzregeln für das Commit-Reveal-System kodiert.

Die Commit-Funktion

Entwerfen Sie eine Commit-Funktion innerhalb des Smart Contracts. Mit dieser Funktion können Benutzer ihre Hash-Werte (Festschreibungsphase) an den Vertrag übermitteln.

Festgeschriebene Werte speichern

Wenn Benutzer ihre Werte festlegen, speichert der Smart Contract diese Hashes sicher in der Blockchain und wartet auf die Offenlegungsphase.

Die Reveal-Funktion

Erstellen Sie als Nächstes innerhalb des Smart Contracts eine Enthüllungsfunktion. Wenn es soweit ist, wird diese Funktion es Benutzern ermöglichen, ihre ursprünglichen Werte preiszugeben.

Verifizierung und Validierung

Nach der Offenlegung überprüft der Smart Contract die offengelegten Werte, indem er sie hasht und mit den ursprünglich festgeschriebenen Hashes vergleicht. Wenn alles übereinstimmt, wird die Enthüllung validiert.

Finalisierung

Sobald alle Enthüllungen gesammelt und verifiziert sind, kann der Smart Contract automatisch die nächsten Schritte ausführen, sei es die Auszählung der Stimmen, die Ermittlung der Auktionsgewinner oder jede andere anwendungsspezifische Aktion.

Auditieren und Testen

Testen Sie den Smart Contract vor der Bereitstellung gründlich, um sicherzustellen, dass er wie vorgesehen funktioniert und vor potenziellen Exploits geschützt ist. Durch diese Schritte orchestriert der Smart Contract den Commit-Reveal-Tanz und sorgt so für einen fairen und transparenten Prozess.

Codebeispiel

// SPDX-License-Identifier: MIT 

 Pragma Solidity ^0.8.0; 

 Vertrag CommitReveal { 

 struct Commit {

    bytes32 hash;

    bool revealed;

}



programming(address => Commit) public commits; 

 Zuordnung(Adresse => uint256) öffentliche enthüllte Werte; 



 // Mit der Commit-Funktion können Benutzer ihre gehashten Werte übermitteln. 

 function commit(bytes32 _hash) public {

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

    commits[msg.sender].hash = _hash;

}



// Mit der Reveal-Funktion können Benutzer ihre Originalwerte offenlegen. 

 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;

}



// Eine beispielhafte Finalisierungsfunktion, die Stimmen auszählen könnte 

 Funktion TallyVotes() öffentliche Ansicht gibt (uint256) zurück { 

 uint256 totalVotes = 0; 

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

 if (commits[addr].revealed) {

            totalVotes += revealedValues[addr];

        }

    }

    return totalVotes; 

 } 



 // Eine Funktion zur Prüfung des Vertragsstatus (nur ein Beispiel, nicht praktikabel für große Datensätze) 

 Funktion audit() öffentliche Ansicht gibt (mapping(address => uint256) Speicher) zurück {

    return revealedValues;

}

 }

Erläuterung:

  • Erstellen des Vertrags: Der CommitReveal-Vertrag wird erstellt.
  • Die Commit-Funktion: Die Commit-Funktion akzeptiert einen Hash-Wert (_hash) und speichert ihn anhand der Absenderadresse.
  • Festgeschriebene Werte speichern: Die gehashten Werte werden in einer Zuordnung namens „Commits“ gespeichert.
  • Die Reveal-Funktion: Mitder Reveal-Funktion können Benutzer ihren ursprünglichen Wert (_value) und einen Salt (_salt) übermitteln. Es prüft, ob der Hash dieser Daten mit dem ursprünglich festgeschriebenen Hash übereinstimmt.
  • Verifizierung und Validierung: Dies erfolgt innerhalb der Reveal-Funktion durch den Vergleich von Hashes.
  • Finalisierung: Die Funktion „tallyVotes“ ist ein vereinfachtes Beispiel dafür, wie Sie Stimmen zählen können. Es durchläuft alle möglichen Adressen (unpraktisch für große Datensätze) und summiert die angezeigten Werte.
  • Auditierung und Tests: Die Audit-Funktion ist ein sehr vereinfachtes Beispiel dafür, wie Sie den Vertragsstatus überprüfen können.

Dies ist ein sehr vereinfachtes Beispiel und es fehlen viele praktische Überlegungen, die Sie für ein Produktionssystem benötigen (z. B. das Verhindern von Überläufen, die Optimierung des Gasverbrauchs, die Verwaltung großer Datensätze und das Hinzufügen einer geeigneten Zugriffskontrolle). Insbesondere die Finalisierungsfunktion ist aufgrund der Iteration über alle möglichen Adressen unpraktisch und würde in einem realen Szenario ein anderes Design erfordern. Dieser Code ist als Ausgangspunkt und Lehrmittel gedacht, nicht als produktionsreife Lösung.

Anwendungsfälle des Commit-Reveal-Schemas in Blockchain

Verbesserung der Auktionsplattformen

Online-Auktionen sind eine der wesentlichen Anwendungen des Commit-Reveal-Systems. Um zu verhindern, dass andere die Gebotsbeträge als Druckmittel nutzen, können Teilnehmer ihre Gebote während der Commit-Phase verdeckt abgeben. Wenn die Gebotsfrist endet, beginnt die Offenlegungsphase, in der die Teilnehmer ihre Gebote offenlegen können. Es wird das höchste gültige Gebot ermittelt, um einen fairen und wettbewerbsorientierten Auktionsprozess zu gewährleisten.

Faire Wahlsysteme schaffen

Wahlsysteme können erheblich vom Commit-Reveal-System profitieren, insbesondere in Szenarien, in denen Anonymität und Ehrlichkeit von den Wählern gefordert werden. In diesem Fall verpflichten sich die Wähler bei Wahlen oder Abstimmungsveranstaltungen in der Commit-Phase zu ihren Entscheidungen, ohne sie anderen preiszugeben, wodurch die Integrität und Geheimhaltung der Abstimmungen gewährleistet wird. Sobald der Abstimmungszeitraum abgelaufen ist, beginnt die Offenlegungsphase, in der die Wähler ihre Stimmen offenlegen können. Diese werden dann zusammengezählt, um das Ergebnis zu ermitteln und so einen fairen und transparenten Abstimmungsprozess zu fördern.

Verträge mit versiegelten Geboten

Bei Verträgen mit versiegelten Geboten geben Bieter ihre Gebote verdeckt nach dem Commit-Reveal-System ab. Dieser Prozess stellt sicher, dass keiner der Bieter die Gebotsbeträge anderer kennt, was einen fairen Wettbewerb fördert. Nach Ablauf der Angebotsfrist folgt die Offenlegungsphase und der Auftrag wird an den qualifizierten Bieter mit dem besten Angebot vergeben.

Spielszenarien

Das Commit-Reveal-Schema findet eine unterhaltsame Anwendung in Spielszenarien wie einer digitalen Version von Stein, Papier und Schere. Die Spieler legen ihre Entscheidungen fest, ohne sie preiszugeben, um ein faires Spiel zu gewährleisten. Sobald sich beide Spieler verpflichtet haben, folgt die Enthüllungsphase, in der der Gewinner anhand der getroffenen Entscheidungen ermittelt wird.

Abmilderung drängender Probleme

In Blockchain-Umgebungen ist Front-Running ein Problem, bei dem böswillige Akteure möglicherweise von der Kenntnis ausstehender Transaktionen profitieren könnten. Das Commit-Reveal-Schema trägt dazu bei, solche Probleme zu entschärfen, indem es zunächst Transaktionsdetails verbirgt. Wenn die Offenlegungsphase beginnt, ist es für böswillige Akteure zu spät, auf die Informationen zu reagieren und somit die Transaktionsintegrität zu wahren.

Commit-and-Reveal-Architekturen mit geringer Latenz

Neuere Architekturen wie F3B wurden entwickelt, um den mit herkömmlichen Commit-Reveal-Schemata verbundenen Overhead zu reduzieren . F3B minimiert das Schreiben von Daten in die Blockchain und bietet eine Commit-and-Reveal-Architektur mit geringer Latenz. Diese Entwicklung ist bemerkenswert, da sie die kontinuierliche Optimierung und Innovation der Commit-Reveal-Systeme bedeutet und sie für reale Anwendungen effizienter macht.

Zufallszahlengenerierung

In Blockchain-Umgebungen kann die Generierung von Zufallszahlen aufgrund der deterministischen Natur von Blockchain-Protokollen eine Herausforderung darstellen. Das Commit-Reveal-Schema dient als dezentrale Alternative zur Generierung von Zufallszahlen auf der Ethereum-Blockchain. Randao beispielsweise, eine Commit-Reveal RNG-Implementierung, nutzt öffentliche Daten-Feeds und bietet Anreize zur Teilnahme an der Generierung von Zufallszahlen.

Abschluss

Da dieser interessante Blick auf das Commit-Reveal-Schema zu Ende geht, ist es wichtig zu bedenken, wie dieser einfache, aber leistungsstarke Mechanismus dazu beiträgt, Vertrauen und Offenheit in Blockchain-Anwendungen aufzubauen. Wir haben einen ersten Blick darauf geworfen, wie die Blockchain-Technologie viele Bereiche verändern könnte, indem sie unter anderem mit dem Commit-Reveal-Schema Auktionen fair, Abstimmungssysteme ehrlicher und Spielszenarien kreativer macht. Die Reise endet hier nicht; Die sich ständig weiterentwickelnde Natur der Blockchain-Technologie eröffnet neue Horizonte, die es zu erkunden gilt. Mit dem in diesem Kurs erworbenen Wissen sind Sie gut aufgestellt, um tiefer in die Blockchain einzutauchen, ihre endlosen Möglichkeiten zu erkunden und zur Gestaltung einer transparenten, fairen und dezentralen digitalen Zukunft beizutragen.

Autor: Piero
Übersetzer: Cedar
Rezensent(en): Matheus、Edward、Ashley He
* Die Informationen sind nicht als Finanzberatung gedacht und stellen auch keine Empfehlung irgendeiner Art dar, die von Gate.io angeboten oder unterstützt wird.
* Dieser Artikel darf ohne Bezugnahme auf Gate.io nicht reproduziert, übertragen oder kopiert werden. Zuwiderhandlung ist eine Verletzung des Urheberrechtsgesetzes und kann gerichtlich verfolgt werden.

Was ist ein Commit-Reveal-Schema in Blockchain?

Einsteiger11/22/2023, 6:46:03 PM
Erfahren Sie mehr über die Commit-Reveal-Methode, eine Blockchain-Innovation, die den Datenschutz und die Sicherheit bei dezentralen digitalen Transaktionen verbessert.

Die Blockchain-Technologie bietet innovative Ansätze zur Erzielung von Konsens, Sicherheit und Datenschutz. Eine dieser Innovationen ist das Commit-Reveal-Schema, ein kryptografisches Protokoll, das den Datenschutz und die Sicherheit für Blockchain-Benutzer verbessert. Während Sie durch diesen Kurs navigieren, werden Sie die Ebenen des Vertrauens, der Transparenz und der Innovation entfalten, die das Commit-Reveal-System in den dezentralen digitalen Bereich bringt. Jedes Modul in diesem Artikel ist sorgfältig ausgearbeitet, um ein umfassendes Verständnis des Commit-Reveal-Schemas, seiner Implementierung und seiner Auswirkungen auf die Blockchain-Landschaft zu vermitteln.

Was ist Blockchain?

Im Kern ist eine Blockchain wie ein digitales Hauptbuch mit einer Besonderheit. Im Gegensatz zu herkömmlichen Ledgern ist es dezentralisiert, was bedeutet, dass keine einzelne Entität die Kontrolle über die gesamte Blockchain hat und es für jeden zugänglich ist, der Teil seines Netzwerks ist. Jeder „Block“ in einer Blockchain enthält eine Liste von Transaktionen. Sobald ein Block mit Transaktionen gefüllt ist, wird ein neuer Block gebildet, wodurch eine verbundene „Kette“ von Blöcken entsteht – daher der Name „Blockchain“.

Eines der herausragenden Merkmale der Blockchain ist die Betonung von Vertrauen und Transparenz. Jeder im Netzwerk hat Zugriff auf jede Transaktion in einer Blockchain und kann diese einsehen. Diese Offenheit verhindert Unehrlichkeit und fördert das Vertrauen in der Gemeinschaft. Sie fragen sich vielleicht, wie ein solches Maß an Transparenz erreicht wird? Die Antwort liegt in seinen einzigartigen Konsensmechanismen und kryptografischen Prinzipien, mit denen wir uns im Verlauf dieses Kurses befassen werden.

Einführung in das Commit-Reveal-Schema

Nachdem Sie nun einen Eindruck davon bekommen haben, was Blockchain ist, wollen wir ihr eine besondere Variante vorstellen – das Commit-Reveal-Schema. Es ist wie eine Zaubershow, bei der sich ein Zauberer (der Benutzer) zunächst zu einer bestimmten Handlung verpflichtet, ohne sie dem Publikum (dem Netzwerk) zu offenbaren, und die Handlung dann zu einem späteren Zeitpunkt enthüllt. In Blockchain-Begriffen handelt es sich um einen zweistufigen Prozess: die „Commit-Phase“ und die „Reveal-Phase“.

In der Commit-Phase übermittelt ein Benutzer eine gehashte Version seiner Informationen an die Blockchain. Diese gehashte Version ist wie eine verschlüsselte Version der Originalinformationen, die den tatsächlichen Inhalt verbirgt. Der Zauber der Hash-Funktion besteht darin, dass es sich um eine einseitige Reise handelt; Sie können den Hash nicht wieder in seine ursprüngliche Form entschlüsseln, sodass die Informationen vorerst geheim bleiben. Dann kommt die Offenlegungsphase, in der der Benutzer die ursprünglichen Informationen preisgibt, die dann vom Netzwerk verifiziert werden, indem es sie erneut hasht und bei Übereinstimmung mit dem ursprünglich festgeschriebenen Hash vergleicht, voilà! Das Netzwerk bestätigt die Enthüllung und der Zaubertrick ist abgeschlossen.

Durch das Commit-Reveal-Schema können Blockchain-Netzwerke ein neues Maß an Engagement in Anwendungen wie Auktionen, Abstimmungssystemen und mehr erreichen, das wir in den kommenden Modulen im Detail untersuchen werden.

Die Commit-Phase

Während wir in die Tiefen des Commit-Reveal-Schemas vordringen, ist unsere erste Station die „Commit-Phase“. In dieser Phase „verpflichten“ sich Benutzer zu einem bestimmten Wert, tun dies jedoch auf eine Weise, die den tatsächlichen Wert geheim hält. Stellen Sie sich vor, Sie haben eine Geheimnummer im Kopf, aber anstatt allen zu sagen, was es ist, legen Sie sie in eine verschlossene Kiste und zeigen sie allen. Sie wissen, dass Sie eine Nummer haben, aber sie wissen nicht, was es ist. Darum geht es beim Commit in der Blockchain!

Wie verschließen wir nun unseren geheimen Wert? In der Blockchain-Welt verwenden wir dazu eine sogenannte Hash-Funktion. Eine Hash-Funktion ist wie ein magischer Mixer. Sie geben Ihren geheimen Wert ein und er spuckt eine verschlüsselte Version davon aus, einen sogenannten Hash. Dieser Hash ist einzigartig; Selbst eine kleine Änderung des ursprünglichen Werts erzeugt einen ganz anderen Hash. Das Schöne daran ist, dass es sich um einen einseitigen Prozess handelt – sobald der Wert gehasht ist, gibt es keine einfache Möglichkeit, den ursprünglichen Wert aus dem Hash zu ermitteln. Wenn Benutzer also ihren Wert festlegen, teilen sie in Wirklichkeit den Hash ihres Werts mit allen in der Blockchain.

Die Enthüllungsphase

Nachdem die Spannung in der Commit-Phase aufgebaut wurde, ist es Zeit für die große Enthüllung! In der Reveal-Phase werden die festgelegten Werte schließlich allen Teilnehmern der Blockchain enthüllt. Um auf unsere Analogie zur verschlossenen Box zurückzukommen: Dies ist der Moment, in dem die Box geöffnet wird und jeder sehen kann, welche Nummer Sie versteckt haben. In der Blockchain-Welt ist die Offenlegung ein unkomplizierter, aber entscheidender Prozess, der in verschiedenen Anwendungen für Transparenz und Fairness sorgt.

Wenn ein Benutzer seinen Commit-Wert preisgibt, kann das Netzwerk seine Authentizität leicht überprüfen, indem es den offenbarten Wert hasht und ihn mit dem ursprünglichen Hash vergleicht, der während der Commit-Phase geteilt wurde. Wenn die Hashes übereinstimmen, bestätigt dies, dass der Benutzer seine Meinung nicht auf halbem Weg geändert hat. Dieser einfache, aber leistungsstarke Verifizierungsprozess trägt dazu bei, eine vertrauensvolle Umgebung aufrechtzuerhalten, in der sich jeder an die Regeln hält. Es ist, als hätte man einen Schiedsrichter in einem Spiel, der sicherstellt, dass sich alle Spieler an die vereinbarten Bedingungen halten.

Commit-Reveal in Smart Contracts implementieren

Nachdem wir nun die Magie des Commit-Reveal-Schemas entschlüsselt haben, wollen wir sehen, wie es durch intelligente Verträge in der Blockchain-Welt zum Leben erweckt wird. Ein Smart Contract ähnelt einem herkömmlichen Vertrag, ist jedoch digital und führt sich selbst aus. Stellen Sie sich einen unparteiischen Roboter vor, der automatisch sicherstellt, dass alle Parteien ihre Vereinbarungen einhalten, und Sie haben die Idee eines intelligenten Vertrags. Es ist das Tool, das die theoretische Idee von Commit-Reveal aufgreift und im digitalen Bereich praktisch umsetzt. Die Implementierung eines Commit-Reveal-Schemas über einen Smart Contract ist wie die Choreografie eines Tanzes, bei dem jeder Schritt einem festgelegten Rhythmus folgt. Lassen Sie uns diese Choreografie Schritt für Schritt durchgehen.

Den Vertrag erstellen

Beginnen Sie mit der Erstellung eines Smart Contracts auf einer Blockchain-Plattform wie Ethereum. In diesem Vertrag sind die Einsatzregeln für das Commit-Reveal-System kodiert.

Die Commit-Funktion

Entwerfen Sie eine Commit-Funktion innerhalb des Smart Contracts. Mit dieser Funktion können Benutzer ihre Hash-Werte (Festschreibungsphase) an den Vertrag übermitteln.

Festgeschriebene Werte speichern

Wenn Benutzer ihre Werte festlegen, speichert der Smart Contract diese Hashes sicher in der Blockchain und wartet auf die Offenlegungsphase.

Die Reveal-Funktion

Erstellen Sie als Nächstes innerhalb des Smart Contracts eine Enthüllungsfunktion. Wenn es soweit ist, wird diese Funktion es Benutzern ermöglichen, ihre ursprünglichen Werte preiszugeben.

Verifizierung und Validierung

Nach der Offenlegung überprüft der Smart Contract die offengelegten Werte, indem er sie hasht und mit den ursprünglich festgeschriebenen Hashes vergleicht. Wenn alles übereinstimmt, wird die Enthüllung validiert.

Finalisierung

Sobald alle Enthüllungen gesammelt und verifiziert sind, kann der Smart Contract automatisch die nächsten Schritte ausführen, sei es die Auszählung der Stimmen, die Ermittlung der Auktionsgewinner oder jede andere anwendungsspezifische Aktion.

Auditieren und Testen

Testen Sie den Smart Contract vor der Bereitstellung gründlich, um sicherzustellen, dass er wie vorgesehen funktioniert und vor potenziellen Exploits geschützt ist. Durch diese Schritte orchestriert der Smart Contract den Commit-Reveal-Tanz und sorgt so für einen fairen und transparenten Prozess.

Codebeispiel

// SPDX-License-Identifier: MIT 

 Pragma Solidity ^0.8.0; 

 Vertrag CommitReveal { 

 struct Commit {

    bytes32 hash;

    bool revealed;

}



programming(address => Commit) public commits; 

 Zuordnung(Adresse => uint256) öffentliche enthüllte Werte; 



 // Mit der Commit-Funktion können Benutzer ihre gehashten Werte übermitteln. 

 function commit(bytes32 _hash) public {

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

    commits[msg.sender].hash = _hash;

}



// Mit der Reveal-Funktion können Benutzer ihre Originalwerte offenlegen. 

 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;

}



// Eine beispielhafte Finalisierungsfunktion, die Stimmen auszählen könnte 

 Funktion TallyVotes() öffentliche Ansicht gibt (uint256) zurück { 

 uint256 totalVotes = 0; 

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

 if (commits[addr].revealed) {

            totalVotes += revealedValues[addr];

        }

    }

    return totalVotes; 

 } 



 // Eine Funktion zur Prüfung des Vertragsstatus (nur ein Beispiel, nicht praktikabel für große Datensätze) 

 Funktion audit() öffentliche Ansicht gibt (mapping(address => uint256) Speicher) zurück {

    return revealedValues;

}

 }

Erläuterung:

  • Erstellen des Vertrags: Der CommitReveal-Vertrag wird erstellt.
  • Die Commit-Funktion: Die Commit-Funktion akzeptiert einen Hash-Wert (_hash) und speichert ihn anhand der Absenderadresse.
  • Festgeschriebene Werte speichern: Die gehashten Werte werden in einer Zuordnung namens „Commits“ gespeichert.
  • Die Reveal-Funktion: Mitder Reveal-Funktion können Benutzer ihren ursprünglichen Wert (_value) und einen Salt (_salt) übermitteln. Es prüft, ob der Hash dieser Daten mit dem ursprünglich festgeschriebenen Hash übereinstimmt.
  • Verifizierung und Validierung: Dies erfolgt innerhalb der Reveal-Funktion durch den Vergleich von Hashes.
  • Finalisierung: Die Funktion „tallyVotes“ ist ein vereinfachtes Beispiel dafür, wie Sie Stimmen zählen können. Es durchläuft alle möglichen Adressen (unpraktisch für große Datensätze) und summiert die angezeigten Werte.
  • Auditierung und Tests: Die Audit-Funktion ist ein sehr vereinfachtes Beispiel dafür, wie Sie den Vertragsstatus überprüfen können.

Dies ist ein sehr vereinfachtes Beispiel und es fehlen viele praktische Überlegungen, die Sie für ein Produktionssystem benötigen (z. B. das Verhindern von Überläufen, die Optimierung des Gasverbrauchs, die Verwaltung großer Datensätze und das Hinzufügen einer geeigneten Zugriffskontrolle). Insbesondere die Finalisierungsfunktion ist aufgrund der Iteration über alle möglichen Adressen unpraktisch und würde in einem realen Szenario ein anderes Design erfordern. Dieser Code ist als Ausgangspunkt und Lehrmittel gedacht, nicht als produktionsreife Lösung.

Anwendungsfälle des Commit-Reveal-Schemas in Blockchain

Verbesserung der Auktionsplattformen

Online-Auktionen sind eine der wesentlichen Anwendungen des Commit-Reveal-Systems. Um zu verhindern, dass andere die Gebotsbeträge als Druckmittel nutzen, können Teilnehmer ihre Gebote während der Commit-Phase verdeckt abgeben. Wenn die Gebotsfrist endet, beginnt die Offenlegungsphase, in der die Teilnehmer ihre Gebote offenlegen können. Es wird das höchste gültige Gebot ermittelt, um einen fairen und wettbewerbsorientierten Auktionsprozess zu gewährleisten.

Faire Wahlsysteme schaffen

Wahlsysteme können erheblich vom Commit-Reveal-System profitieren, insbesondere in Szenarien, in denen Anonymität und Ehrlichkeit von den Wählern gefordert werden. In diesem Fall verpflichten sich die Wähler bei Wahlen oder Abstimmungsveranstaltungen in der Commit-Phase zu ihren Entscheidungen, ohne sie anderen preiszugeben, wodurch die Integrität und Geheimhaltung der Abstimmungen gewährleistet wird. Sobald der Abstimmungszeitraum abgelaufen ist, beginnt die Offenlegungsphase, in der die Wähler ihre Stimmen offenlegen können. Diese werden dann zusammengezählt, um das Ergebnis zu ermitteln und so einen fairen und transparenten Abstimmungsprozess zu fördern.

Verträge mit versiegelten Geboten

Bei Verträgen mit versiegelten Geboten geben Bieter ihre Gebote verdeckt nach dem Commit-Reveal-System ab. Dieser Prozess stellt sicher, dass keiner der Bieter die Gebotsbeträge anderer kennt, was einen fairen Wettbewerb fördert. Nach Ablauf der Angebotsfrist folgt die Offenlegungsphase und der Auftrag wird an den qualifizierten Bieter mit dem besten Angebot vergeben.

Spielszenarien

Das Commit-Reveal-Schema findet eine unterhaltsame Anwendung in Spielszenarien wie einer digitalen Version von Stein, Papier und Schere. Die Spieler legen ihre Entscheidungen fest, ohne sie preiszugeben, um ein faires Spiel zu gewährleisten. Sobald sich beide Spieler verpflichtet haben, folgt die Enthüllungsphase, in der der Gewinner anhand der getroffenen Entscheidungen ermittelt wird.

Abmilderung drängender Probleme

In Blockchain-Umgebungen ist Front-Running ein Problem, bei dem böswillige Akteure möglicherweise von der Kenntnis ausstehender Transaktionen profitieren könnten. Das Commit-Reveal-Schema trägt dazu bei, solche Probleme zu entschärfen, indem es zunächst Transaktionsdetails verbirgt. Wenn die Offenlegungsphase beginnt, ist es für böswillige Akteure zu spät, auf die Informationen zu reagieren und somit die Transaktionsintegrität zu wahren.

Commit-and-Reveal-Architekturen mit geringer Latenz

Neuere Architekturen wie F3B wurden entwickelt, um den mit herkömmlichen Commit-Reveal-Schemata verbundenen Overhead zu reduzieren . F3B minimiert das Schreiben von Daten in die Blockchain und bietet eine Commit-and-Reveal-Architektur mit geringer Latenz. Diese Entwicklung ist bemerkenswert, da sie die kontinuierliche Optimierung und Innovation der Commit-Reveal-Systeme bedeutet und sie für reale Anwendungen effizienter macht.

Zufallszahlengenerierung

In Blockchain-Umgebungen kann die Generierung von Zufallszahlen aufgrund der deterministischen Natur von Blockchain-Protokollen eine Herausforderung darstellen. Das Commit-Reveal-Schema dient als dezentrale Alternative zur Generierung von Zufallszahlen auf der Ethereum-Blockchain. Randao beispielsweise, eine Commit-Reveal RNG-Implementierung, nutzt öffentliche Daten-Feeds und bietet Anreize zur Teilnahme an der Generierung von Zufallszahlen.

Abschluss

Da dieser interessante Blick auf das Commit-Reveal-Schema zu Ende geht, ist es wichtig zu bedenken, wie dieser einfache, aber leistungsstarke Mechanismus dazu beiträgt, Vertrauen und Offenheit in Blockchain-Anwendungen aufzubauen. Wir haben einen ersten Blick darauf geworfen, wie die Blockchain-Technologie viele Bereiche verändern könnte, indem sie unter anderem mit dem Commit-Reveal-Schema Auktionen fair, Abstimmungssysteme ehrlicher und Spielszenarien kreativer macht. Die Reise endet hier nicht; Die sich ständig weiterentwickelnde Natur der Blockchain-Technologie eröffnet neue Horizonte, die es zu erkunden gilt. Mit dem in diesem Kurs erworbenen Wissen sind Sie gut aufgestellt, um tiefer in die Blockchain einzutauchen, ihre endlosen Möglichkeiten zu erkunden und zur Gestaltung einer transparenten, fairen und dezentralen digitalen Zukunft beizutragen.

Autor: Piero
Übersetzer: Cedar
Rezensent(en): Matheus、Edward、Ashley He
* Die Informationen sind nicht als Finanzberatung gedacht und stellen auch keine Empfehlung irgendeiner Art dar, die von Gate.io angeboten oder unterstützt wird.
* Dieser Artikel darf ohne Bezugnahme auf Gate.io nicht reproduziert, übertragen oder kopiert werden. Zuwiderhandlung ist eine Verletzung des Urheberrechtsgesetzes und kann gerichtlich verfolgt werden.
Jetzt anfangen
Registrieren Sie sich und erhalten Sie einen
100
-Euro-Gutschein!