Lektion 4

Vertragsinteraktionen

In dieser letzten Lektion untersuchen wir, wie Verträge miteinander interagieren. Außerdem erfahren Sie, wie Sie die Ereignisprotokollierung implementieren, um Aktivitäten in der Blockchain zu überwachen.

Interaktion mit Verträgen

Das erste Konzept, das wir in Angriff nehmen werden, ist die Vertragsinteraktion. Vertragsinteraktion bezieht sich auf die Art und Weise, wie Verträge kommunizieren und Informationen austauschen. In Solidity können Verträge die Funktionen anderer Verträge aufrufen, andere Verträge erstellen und sogar Ether an andere Verträge oder Adressen senden.

Wir haben in unserem Abstimmungssystem bereits Vertragsinteraktionen gesehen. Bei jeder Stimmabgabe interagiert der Abstimmungsvertrag mit sich selbst, um den Status des Wählers und die Stimmenzahl für den Vorschlag zu aktualisieren. Bei einem komplexeren System verfügen Sie jedoch möglicherweise über separate Verträge, die miteinander interagieren müssen.

Hier ist ein einfaches Beispiel für eine Vertragsinteraktion:

Solidität 
 Pragma-Solidität >=0,7,0 <0,9,0; 

 Vertrag CalledContract { 
 uint public x; 

 Funktion setX(uint _x) öffentlich {
        x = _x;
    }
}

Vertrag CallerContract { 
 Funktion callSetX(address _claimedContractAddress, uint _x) öffentlich {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

In diesem Beispiel interagiert CallerContract mit CalledContract , indem es dessen setX Funktion aufruft.

Ereignisprotokollierung

Kommen wir nun zur Ereignisprotokollierung. Ereignisse sind für Ihren Vertrag eine Möglichkeit, der Außenwelt mitzuteilen, dass etwas passiert ist. In unserem Abstimmungssystem möchten wir beispielsweise möglicherweise jedes Mal, wenn eine Stimme abgegeben wird, ein Ereignis ausgeben. So geht's:

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

 Vertrag Wähler { 
 // Ereignisdefinition 
 Ereignis VoteCast(Adresse Wähler, uint Vorschlag); 

 // Rest des Vertrags... 

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

        proposals[_proposal].voteCount += 1;

        // Emit event
        emit VoteCast(msg.sender, _proposal);
    }

    // Rest des Vertrags... 
 }

In der aktualisierten vote geben wir jedes Mal, wenn eine Stimme abgegeben wird, ein VoteCast Ereignis aus. Das Ereignis protokolliert die Adresse des Wählers und den Vorschlag, für den er gestimmt hat.

In dieser Lektion haben wir etwas über Vertragsinteraktion und Ereignisprotokollierung gelernt, zwei wesentliche Konzepte in Solidity. Mit dem Wissen, das Sie in diesem Kurs erworben haben, sind Sie nun in der Lage, mit der Entwicklung komplexerer dezentraler Anwendungen auf Ethereum zu beginnen.

Abschluss

Glückwunsch! Sie haben den Kurs „Aufbau eines dezentralen Wahlsystems“ erfolgreich abgeschlossen.

In diesem Kurs haben Sie die Kernkonzepte eines dezentralen Abstimmungssystems kennengelernt und erfahren, wie Sie eines mithilfe von Solidity in der Remix-IDE implementieren. Nachdem wir verstanden hatten, was dezentrales Wählen ist und warum es wichtig ist, haben wir uns mit der Codierung unserer eigenen Smart Contracts für die Wählerregistrierung, Stimmabgabe und Stimmauszählung befasst. Wir haben auch gelernt, wie wir mit unseren Verträgen interagieren und den gesamten Abstimmungsprozess innerhalb der Remix-IDE simulieren. Abschließend haben wir untersucht, wie Verträge miteinander interagieren und wie Ereignisse protokolliert werden, um Aktivitäten auf der Blockchain zu verfolgen.

Die Fähigkeiten und Kenntnisse, die Sie in diesem Kurs erworben haben, beschränken sich nicht nur auf die Erstellung von Abstimmungssystemen, sondern können auch auf andere Arten dezentraler Anwendungen angewendet werden. Üben, experimentieren und bauen Sie weiter.

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 4

Vertragsinteraktionen

In dieser letzten Lektion untersuchen wir, wie Verträge miteinander interagieren. Außerdem erfahren Sie, wie Sie die Ereignisprotokollierung implementieren, um Aktivitäten in der Blockchain zu überwachen.

Interaktion mit Verträgen

Das erste Konzept, das wir in Angriff nehmen werden, ist die Vertragsinteraktion. Vertragsinteraktion bezieht sich auf die Art und Weise, wie Verträge kommunizieren und Informationen austauschen. In Solidity können Verträge die Funktionen anderer Verträge aufrufen, andere Verträge erstellen und sogar Ether an andere Verträge oder Adressen senden.

Wir haben in unserem Abstimmungssystem bereits Vertragsinteraktionen gesehen. Bei jeder Stimmabgabe interagiert der Abstimmungsvertrag mit sich selbst, um den Status des Wählers und die Stimmenzahl für den Vorschlag zu aktualisieren. Bei einem komplexeren System verfügen Sie jedoch möglicherweise über separate Verträge, die miteinander interagieren müssen.

Hier ist ein einfaches Beispiel für eine Vertragsinteraktion:

Solidität 
 Pragma-Solidität >=0,7,0 <0,9,0; 

 Vertrag CalledContract { 
 uint public x; 

 Funktion setX(uint _x) öffentlich {
        x = _x;
    }
}

Vertrag CallerContract { 
 Funktion callSetX(address _claimedContractAddress, uint _x) öffentlich {
        CalledContract calledContract = CalledContract(_calledContractAddress);
        calledContract.setX(_x);
    }
}

In diesem Beispiel interagiert CallerContract mit CalledContract , indem es dessen setX Funktion aufruft.

Ereignisprotokollierung

Kommen wir nun zur Ereignisprotokollierung. Ereignisse sind für Ihren Vertrag eine Möglichkeit, der Außenwelt mitzuteilen, dass etwas passiert ist. In unserem Abstimmungssystem möchten wir beispielsweise möglicherweise jedes Mal, wenn eine Stimme abgegeben wird, ein Ereignis ausgeben. So geht's:

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

 Vertrag Wähler { 
 // Ereignisdefinition 
 Ereignis VoteCast(Adresse Wähler, uint Vorschlag); 

 // Rest des Vertrags... 

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

        proposals[_proposal].voteCount += 1;

        // Emit event
        emit VoteCast(msg.sender, _proposal);
    }

    // Rest des Vertrags... 
 }

In der aktualisierten vote geben wir jedes Mal, wenn eine Stimme abgegeben wird, ein VoteCast Ereignis aus. Das Ereignis protokolliert die Adresse des Wählers und den Vorschlag, für den er gestimmt hat.

In dieser Lektion haben wir etwas über Vertragsinteraktion und Ereignisprotokollierung gelernt, zwei wesentliche Konzepte in Solidity. Mit dem Wissen, das Sie in diesem Kurs erworben haben, sind Sie nun in der Lage, mit der Entwicklung komplexerer dezentraler Anwendungen auf Ethereum zu beginnen.

Abschluss

Glückwunsch! Sie haben den Kurs „Aufbau eines dezentralen Wahlsystems“ erfolgreich abgeschlossen.

In diesem Kurs haben Sie die Kernkonzepte eines dezentralen Abstimmungssystems kennengelernt und erfahren, wie Sie eines mithilfe von Solidity in der Remix-IDE implementieren. Nachdem wir verstanden hatten, was dezentrales Wählen ist und warum es wichtig ist, haben wir uns mit der Codierung unserer eigenen Smart Contracts für die Wählerregistrierung, Stimmabgabe und Stimmauszählung befasst. Wir haben auch gelernt, wie wir mit unseren Verträgen interagieren und den gesamten Abstimmungsprozess innerhalb der Remix-IDE simulieren. Abschließend haben wir untersucht, wie Verträge miteinander interagieren und wie Ereignisse protokolliert werden, um Aktivitäten auf der Blockchain zu verfolgen.

Die Fähigkeiten und Kenntnisse, die Sie in diesem Kurs erworben haben, beschränken sich nicht nur auf die Erstellung von Abstimmungssystemen, sondern können auch auf andere Arten dezentraler Anwendungen angewendet werden. Üben, experimentieren und bauen Sie weiter.

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.