Lektion 2

Implementierung der Wählerregistrierung und Stimmabgabe

In dieser Lektion entwickeln wir unser dezentrales Wahlsystem weiter, indem wir die Funktionalitäten für die Wählerregistrierung und Stimmabgabe implementieren. Wir beginnen mit der Erweiterung unseres Voter-Vertrags und tauchen dann in die Details der Zuordnungen und Arrays von Solidity ein.

Erweiterung des Wählervertrags

Wir werden ein Vorschlagssystem und eine Option für registrierte Wähler zur Abstimmung hinzufügen. Dazu benötigen wir ein Array zum Speichern der Vorschläge und eine neue Funktion zum Abstimmen.

Fügen Sie im Voter Vertrag die folgenden Codezeilen hinzu:

Solidity 
 // SPDX-License-Identifier: GPL-3.0 
 Pragma Solidity >=0.7.0 <0.9.0; 

 Vertrag Wähler { 
 struct Person {
        bool voted;  
        uint vote;   
    }

    struct Proposal {
        string name;   
        uint voteCount; 
    }

    Proposal[] öffentliche Vorschläge; 
 Mapping(Adresse => Person) öffentliche Wähler; 

 Funktion registerVoter() öffentlich {
        voters[msg.sender].voted = false;
    }

    Funktion addProposal(string Memory _name) öffentlich {
        proposals.push(Proposal(_name, 0));
    }

    Funktion vote(uint _proposal) öffentlich { 
     require(_proposal < proposals.length, "Invalid proposal index."); // This is the added check 

     Person storage sender = voters[msg.sender]; 
     require(!sender.voted, "Already voted."); 
     sender.voted = true; 
     sender.vote = _proposal; 

     proposals[_proposal].voteCount += 1; 
    }
}

Den Kodex verstehen

Lassen Sie uns den neuen Code aufschlüsseln:

  1. Vorschlagsstruktur: Wir haben eine neue Struktur hinzugefügt, Proposal, die den Namen des Vorschlags und die Anzahl der erhaltenen Stimmen enthält.

  2. Proposals-Array: Das proposals Array enthält alle Vorschläge im Abstimmungssystem.

  3. Funktion „Vorschlag hinzufügen“: Mit der Funktion addProposal können wir einen neuen Vorschlag zum proposals Array hinzufügen. Der Vorschlagsname wird als Parameter übergeben und die Stimmenzahl wird zunächst auf Null gesetzt.

  4. Abstimmungsfunktion: Mit der vote kann ein registrierter Wähler seine Stimme abgeben. Es verwendet den Index eines Vorschlags als Parameter und erhöht die Stimmenzahl des Vorschlags um eins. Außerdem wird überprüft, ob der Wähler bereits abgestimmt hat, und der Status des Wählers aktualisiert.

Kompilieren und Testen

Nachdem wir unserem Vertrag nun weitere Funktionen hinzugefügt haben, ist es an der Zeit, ihn zu kompilieren und zu testen. Klicken Sie in der Remix-IDE auf das Solidity-Compiler-Symbol in der linken Seitenleiste und dann auf die Schaltfläche „Kompilieren“.

Um Ihren Vertrag zu testen, gehen Sie zur Registerkarte „Transaktionen bereitstellen und ausführen“ (unter dem Solidity-Compiler-Symbol) und klicken Sie auf die Schaltfläche „Bereitstellen“. Sobald der Vertrag bereitgestellt ist, können Sie mit ihm interagieren, indem Sie seine Funktionen auf dieser Registerkarte aufrufen. Versuchen Sie, einen Wähler zu registrieren, einen Vorschlag hinzuzufügen und eine Stimme abzugeben, um zu sehen, wie es funktioniert.

In der nächsten Lektion werden wir die Funktionalität implementieren, um die Stimmen zu zählen und das Ergebnis des Abstimmungsprozesses bekannt zu geben. Bis dahin können Sie den Vertrag gerne erkunden und damit experimentieren. Solidity bietet viele weitere Funktionen, die Ihren Vertrag robuster und sicherer machen können. Viel Spaß beim Codieren!

Haftungsausschluss
* Kryptoinvestitionen sind mit erheblichen Risiken verbunden. Bitte lassen Sie Vorsicht walten. Der Kurs ist nicht als Anlageberatung gedacht.
* Der Kurs wird von dem Autor erstellt, der Gate Learn beigetreten ist. Vom Autor geteilte Meinungen spiegeln nicht zwangsläufig die Meinung von Gate Learn wider.
Katalog
Lektion 2

Implementierung der Wählerregistrierung und Stimmabgabe

In dieser Lektion entwickeln wir unser dezentrales Wahlsystem weiter, indem wir die Funktionalitäten für die Wählerregistrierung und Stimmabgabe implementieren. Wir beginnen mit der Erweiterung unseres Voter-Vertrags und tauchen dann in die Details der Zuordnungen und Arrays von Solidity ein.

Erweiterung des Wählervertrags

Wir werden ein Vorschlagssystem und eine Option für registrierte Wähler zur Abstimmung hinzufügen. Dazu benötigen wir ein Array zum Speichern der Vorschläge und eine neue Funktion zum Abstimmen.

Fügen Sie im Voter Vertrag die folgenden Codezeilen hinzu:

Solidity 
 // SPDX-License-Identifier: GPL-3.0 
 Pragma Solidity >=0.7.0 <0.9.0; 

 Vertrag Wähler { 
 struct Person {
        bool voted;  
        uint vote;   
    }

    struct Proposal {
        string name;   
        uint voteCount; 
    }

    Proposal[] öffentliche Vorschläge; 
 Mapping(Adresse => Person) öffentliche Wähler; 

 Funktion registerVoter() öffentlich {
        voters[msg.sender].voted = false;
    }

    Funktion addProposal(string Memory _name) öffentlich {
        proposals.push(Proposal(_name, 0));
    }

    Funktion vote(uint _proposal) öffentlich { 
     require(_proposal < proposals.length, "Invalid proposal index."); // This is the added check 

     Person storage sender = voters[msg.sender]; 
     require(!sender.voted, "Already voted."); 
     sender.voted = true; 
     sender.vote = _proposal; 

     proposals[_proposal].voteCount += 1; 
    }
}

Den Kodex verstehen

Lassen Sie uns den neuen Code aufschlüsseln:

  1. Vorschlagsstruktur: Wir haben eine neue Struktur hinzugefügt, Proposal, die den Namen des Vorschlags und die Anzahl der erhaltenen Stimmen enthält.

  2. Proposals-Array: Das proposals Array enthält alle Vorschläge im Abstimmungssystem.

  3. Funktion „Vorschlag hinzufügen“: Mit der Funktion addProposal können wir einen neuen Vorschlag zum proposals Array hinzufügen. Der Vorschlagsname wird als Parameter übergeben und die Stimmenzahl wird zunächst auf Null gesetzt.

  4. Abstimmungsfunktion: Mit der vote kann ein registrierter Wähler seine Stimme abgeben. Es verwendet den Index eines Vorschlags als Parameter und erhöht die Stimmenzahl des Vorschlags um eins. Außerdem wird überprüft, ob der Wähler bereits abgestimmt hat, und der Status des Wählers aktualisiert.

Kompilieren und Testen

Nachdem wir unserem Vertrag nun weitere Funktionen hinzugefügt haben, ist es an der Zeit, ihn zu kompilieren und zu testen. Klicken Sie in der Remix-IDE auf das Solidity-Compiler-Symbol in der linken Seitenleiste und dann auf die Schaltfläche „Kompilieren“.

Um Ihren Vertrag zu testen, gehen Sie zur Registerkarte „Transaktionen bereitstellen und ausführen“ (unter dem Solidity-Compiler-Symbol) und klicken Sie auf die Schaltfläche „Bereitstellen“. Sobald der Vertrag bereitgestellt ist, können Sie mit ihm interagieren, indem Sie seine Funktionen auf dieser Registerkarte aufrufen. Versuchen Sie, einen Wähler zu registrieren, einen Vorschlag hinzuzufügen und eine Stimme abzugeben, um zu sehen, wie es funktioniert.

In der nächsten Lektion werden wir die Funktionalität implementieren, um die Stimmen zu zählen und das Ergebnis des Abstimmungsprozesses bekannt zu geben. Bis dahin können Sie den Vertrag gerne erkunden und damit experimentieren. Solidity bietet viele weitere Funktionen, die Ihren Vertrag robuster und sicherer machen können. Viel Spaß beim Codieren!

Haftungsausschluss
* Kryptoinvestitionen sind mit erheblichen Risiken verbunden. Bitte lassen Sie Vorsicht walten. Der Kurs ist nicht als Anlageberatung gedacht.
* Der Kurs wird von dem Autor erstellt, der Gate Learn beigetreten ist. Vom Autor geteilte Meinungen spiegeln nicht zwangsläufig die Meinung von Gate Learn wider.