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.
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.
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.
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.
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.
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.