Willkommen zu Lektion 3! In dieser Lektion konzentrieren wir uns auf die Anwendung der Konzepte und der Syntax, die wir aus den vorherigen Lektionen gelernt haben, um Ethereum-Smart-Verträge mithilfe von Vyper und der Remix-IDE zu entwickeln. Wir erstellen, implementieren und interagieren mit einfachen Smart Contracts und vermitteln Ihnen praktische Erfahrungen mit Vyper und Ethereum. Der erste Vertrag wird ein einfacher Datenspeichervertrag sein, während der zweite ein einfaches Abstimmungssystem simulieren wird.
Der erste Vertrag, den wir bereitstellen werden, ist SimpleStorage
. Bei diesem Vertrag handelt es sich, wie der Name schon sagt, um einen einfachen Datenspeichervertrag, der eine einzelne Nummer speichert. SimpleStorage
besteht aus einer Variablen storedData
und den beiden Funktionen set
“ und „ get
. Mit der set
Funktion kann ein Benutzer eine Nummer speichern, und mit der get
Funktion kann jeder diese Nummer abrufen.
Wir werden die Schritte zur Bereitstellung und Interaktion mit dem SimpleStorage
-Vertrag auf der Ethereum-Blockchain durchgehen. Bei der Bereitstellung eines Vertrags in der Ethereum-Blockchain werden der Bytecode und die ABI des Vertrags an das Ethereum-Netzwerk übertragen, von wo aus er aufgerufen und ausgeführt werden kann. Sobald ein Vertrag bereitgestellt wird, erhält er eine eindeutige Adresse, unter der er erreichbar ist.
Hier ist der Code für SimpleStorage
:
Python
# @title SimpleStorage
gespeicherte Daten: int128
@external
def set(x: int128):
self.storedData = x
@external
def get() -> int128:
return self.storedData
In diesem Vertrag definieren wir eine öffentliche Ganzzahlvariable storedData
, eine öffentliche Funktion set(x: int128)
zum Festlegen des Werts von „ storedData
und eine öffentliche Konstantenfunktion get() -> int128
zum Abrufen des aktuellen Werts von storedData
“.
Hier ist eine Schritt-für-Schritt-Anleitung zur Bereitstellung dieses Vertrags mit Remix:
Öffnen Sie Ihren Webbrowser und navigieren Sie zu Remix Ethereum IDE.
Aktivieren Sie das Vyper-Plugin
Stellen Sie die Umgebung im Abschnitt Deploy & Run Transactions
auf Injected Web3
um. Dadurch wird Remix mit Ihrem MetaMask-Wallet verbunden.
Klicken Sie im Abschnitt File Explorer
auf das +
-Symbol, um eine neue Datei zu erstellen. Nennen Sie es SimpleStorage.vy
.
Fügen Sie den SimpleStorage
Vertragscode in diese neue Datei ein.
Gehen Sie nun zur Registerkarte „VyperCompile
und wählen Sie den SimpleStorage
Vertrag aus.
Wechseln Sie zur Registerkarte Deploy & Run Transactions
und klicken Sie dann auf die Schaltfläche Deploy
.
MetaMask öffnet ein Popup zur Transaktionsbestätigung. Bestätigen Sie die Transaktion.
Nachdem die Transaktion bestätigt wurde, wird der bereitgestellte SimpleStorage
Vertrag im Abschnitt Deployed Contracts
angezeigt.
Sie können nun mit dem Vertrag interagieren. Um beispielsweise eine Nummer zu speichern, geben Sie die Nummer in die set
Funktion ein und klicken Sie auf transact
. Um die gespeicherte Nummer abzurufen, klicken Sie auf get
.
Nachdem wir uns mit SimpleStorage
vertraut gemacht haben, gehen wir zu etwas etwas Komplexerem über: SimpleVoting
. Der SimpleVoting
Vertrag simuliert ein einfaches Abstimmungssystem. Wir erhalten eine Liste mit Kandidaten, die jeweils als String dargestellt werden. Benutzer können für diese Kandidaten stimmen und wir verfolgen die Anzahl der Stimmen, die jeder Kandidat erhalten hat. Der Vertrag bietet Funktionen zum Hinzufügen eines Kandidaten, zum Abstimmen für einen Kandidaten und zum Abrufen der Gesamtstimmen, die ein Kandidat erhalten hat.
Der SimpleVoting
Vertrag ist etwas komplexer als SimpleStorage
. In SimpleVoting
verfügen wir über eine Liste von Kandidaten, die jeweils durch eine Zeichenfolge dargestellt werden.
Hier ist der Code für SimpleVoting
:
Python
# Vyper Voting Contract
# Deklarieren Sie eine Statusvariable „votes“ als HashMap, um die Stimmen für jeden Kandidaten zu speichern.
votes: HashMap[bytes32, uint256]
@external
def vote(candidate: bytes32):
"""
Geben Sie eine Stimme für einen Kandidaten ab.
Argumente:
Kandidat: bytes32 – Die Kennung des Kandidaten, für den gestimmt werden soll.
„““
# Erhöhen Sie die Stimmenzahl für den angegebenen Kandidaten.
self.votes[Kandidat] += 1
@external
@view
def get_votes(candidate: bytes32) -> uint256:
"""
Ermittelt die Gesamtzahl der Stimmen für einen Kandidaten.
Argumente:
Kandidat: bytes32 – Die Kennung des Kandidaten, für den Stimmen abgerufen werden sollen.
Rückgabe:
uint256 – Die Gesamtzahl der Stimmen, die der Kandidat erhalten hat.
„““
return self.votes[candidate]
Dieser Vertrag ist recht einfach und enthält keine Vorkehrungen gegen doppelte oder unbefugte Stimmabgaben. In der Praxis müssten Sie Verfahren einführen, um diese Schwierigkeiten zu verhindern, wie z. B. eine Wählerregistrierung und eine Überprüfung, um sicherzustellen, dass jede Adresse nur einmal wählen kann.
Mit Abschluss dieses Kurses haben Sie eine solide Grundlage für die Blockchain-Programmierung mit Vyper geschaffen. Sie verfügen jetzt über ein solides Verständnis von Ethereum, intelligenten Verträgen und deren Erstellung in der Remix-IDE mit Vyper. Dieses Verständnis eröffnet eine Welt voller Möglichkeiten für die Entwicklung dezentraler Anwendungen und die Teilnahme am Blockchain-Ökosystem.
Um Ihre Fähigkeiten und Kenntnisse weiter zu verbessern, sollten Sie die Erkundung der folgenden Bereiche in Betracht ziehen:
Erweiterte Solidity-Programmierung: Solidity ist eine weitere beliebte Programmiersprache für Ethereum-Smart-Contracts. Das Erlernen von Solidity erweitert Ihre Fähigkeit, mit bestehenden Verträgen zu arbeiten und einen Beitrag zur Ethereum-Community zu leisten. Schauen Sie sich unseren Kurs hier an: [Link zum Solidity-Kurs einfügen, wenn online]
Entwicklung dezentraler Anwendungen (DApp): Tauchen Sie tiefer in die Entwicklung vollständiger dezentraler Anwendungen ein, indem Sie Smart Contracts mit Front-End-Entwicklung mithilfe von Frameworks wie Web3.js, React oder Vue.js kombinieren. Dadurch können Sie interaktive Benutzeroberflächen erstellen, die mit Ihren Smart Contracts interagieren.
Sicherheit und Prüfung: Entdecken Sie Best Practices für die Sicherung intelligenter Verträge und die Durchführung gründlicher Code-Prüfungen. Das Verständnis potenzieller Schwachstellen und die Minderung von Risiken gewährleisten die Zuverlässigkeit und Sicherheit Ihrer Smart Contracts.
Blockchain-Interoperabilität: Untersuchen Sie die Integration verschiedener Blockchain-Netzwerke und -Protokolle. Erfahren Sie mehr über kettenübergreifende Kommunikation und die Entwicklung interoperabler Smart Contracts, die mit mehreren Blockchains interagieren können.
Denken Sie daran, dass sich die Blockchain-Technologie ständig weiterentwickelt und es wichtig ist, über die neuesten Fortschritte auf dem Laufenden zu bleiben. Treten Sie mit der Blockchain-Community in Kontakt, beteiligen Sie sich aktiv an Diskussionen und erkunden Sie neue Konzepte und Technologien, um informiert und auf dem neuesten Stand zu bleiben.
Willkommen zu Lektion 3! In dieser Lektion konzentrieren wir uns auf die Anwendung der Konzepte und der Syntax, die wir aus den vorherigen Lektionen gelernt haben, um Ethereum-Smart-Verträge mithilfe von Vyper und der Remix-IDE zu entwickeln. Wir erstellen, implementieren und interagieren mit einfachen Smart Contracts und vermitteln Ihnen praktische Erfahrungen mit Vyper und Ethereum. Der erste Vertrag wird ein einfacher Datenspeichervertrag sein, während der zweite ein einfaches Abstimmungssystem simulieren wird.
Der erste Vertrag, den wir bereitstellen werden, ist SimpleStorage
. Bei diesem Vertrag handelt es sich, wie der Name schon sagt, um einen einfachen Datenspeichervertrag, der eine einzelne Nummer speichert. SimpleStorage
besteht aus einer Variablen storedData
und den beiden Funktionen set
“ und „ get
. Mit der set
Funktion kann ein Benutzer eine Nummer speichern, und mit der get
Funktion kann jeder diese Nummer abrufen.
Wir werden die Schritte zur Bereitstellung und Interaktion mit dem SimpleStorage
-Vertrag auf der Ethereum-Blockchain durchgehen. Bei der Bereitstellung eines Vertrags in der Ethereum-Blockchain werden der Bytecode und die ABI des Vertrags an das Ethereum-Netzwerk übertragen, von wo aus er aufgerufen und ausgeführt werden kann. Sobald ein Vertrag bereitgestellt wird, erhält er eine eindeutige Adresse, unter der er erreichbar ist.
Hier ist der Code für SimpleStorage
:
Python
# @title SimpleStorage
gespeicherte Daten: int128
@external
def set(x: int128):
self.storedData = x
@external
def get() -> int128:
return self.storedData
In diesem Vertrag definieren wir eine öffentliche Ganzzahlvariable storedData
, eine öffentliche Funktion set(x: int128)
zum Festlegen des Werts von „ storedData
und eine öffentliche Konstantenfunktion get() -> int128
zum Abrufen des aktuellen Werts von storedData
“.
Hier ist eine Schritt-für-Schritt-Anleitung zur Bereitstellung dieses Vertrags mit Remix:
Öffnen Sie Ihren Webbrowser und navigieren Sie zu Remix Ethereum IDE.
Aktivieren Sie das Vyper-Plugin
Stellen Sie die Umgebung im Abschnitt Deploy & Run Transactions
auf Injected Web3
um. Dadurch wird Remix mit Ihrem MetaMask-Wallet verbunden.
Klicken Sie im Abschnitt File Explorer
auf das +
-Symbol, um eine neue Datei zu erstellen. Nennen Sie es SimpleStorage.vy
.
Fügen Sie den SimpleStorage
Vertragscode in diese neue Datei ein.
Gehen Sie nun zur Registerkarte „VyperCompile
und wählen Sie den SimpleStorage
Vertrag aus.
Wechseln Sie zur Registerkarte Deploy & Run Transactions
und klicken Sie dann auf die Schaltfläche Deploy
.
MetaMask öffnet ein Popup zur Transaktionsbestätigung. Bestätigen Sie die Transaktion.
Nachdem die Transaktion bestätigt wurde, wird der bereitgestellte SimpleStorage
Vertrag im Abschnitt Deployed Contracts
angezeigt.
Sie können nun mit dem Vertrag interagieren. Um beispielsweise eine Nummer zu speichern, geben Sie die Nummer in die set
Funktion ein und klicken Sie auf transact
. Um die gespeicherte Nummer abzurufen, klicken Sie auf get
.
Nachdem wir uns mit SimpleStorage
vertraut gemacht haben, gehen wir zu etwas etwas Komplexerem über: SimpleVoting
. Der SimpleVoting
Vertrag simuliert ein einfaches Abstimmungssystem. Wir erhalten eine Liste mit Kandidaten, die jeweils als String dargestellt werden. Benutzer können für diese Kandidaten stimmen und wir verfolgen die Anzahl der Stimmen, die jeder Kandidat erhalten hat. Der Vertrag bietet Funktionen zum Hinzufügen eines Kandidaten, zum Abstimmen für einen Kandidaten und zum Abrufen der Gesamtstimmen, die ein Kandidat erhalten hat.
Der SimpleVoting
Vertrag ist etwas komplexer als SimpleStorage
. In SimpleVoting
verfügen wir über eine Liste von Kandidaten, die jeweils durch eine Zeichenfolge dargestellt werden.
Hier ist der Code für SimpleVoting
:
Python
# Vyper Voting Contract
# Deklarieren Sie eine Statusvariable „votes“ als HashMap, um die Stimmen für jeden Kandidaten zu speichern.
votes: HashMap[bytes32, uint256]
@external
def vote(candidate: bytes32):
"""
Geben Sie eine Stimme für einen Kandidaten ab.
Argumente:
Kandidat: bytes32 – Die Kennung des Kandidaten, für den gestimmt werden soll.
„““
# Erhöhen Sie die Stimmenzahl für den angegebenen Kandidaten.
self.votes[Kandidat] += 1
@external
@view
def get_votes(candidate: bytes32) -> uint256:
"""
Ermittelt die Gesamtzahl der Stimmen für einen Kandidaten.
Argumente:
Kandidat: bytes32 – Die Kennung des Kandidaten, für den Stimmen abgerufen werden sollen.
Rückgabe:
uint256 – Die Gesamtzahl der Stimmen, die der Kandidat erhalten hat.
„““
return self.votes[candidate]
Dieser Vertrag ist recht einfach und enthält keine Vorkehrungen gegen doppelte oder unbefugte Stimmabgaben. In der Praxis müssten Sie Verfahren einführen, um diese Schwierigkeiten zu verhindern, wie z. B. eine Wählerregistrierung und eine Überprüfung, um sicherzustellen, dass jede Adresse nur einmal wählen kann.
Mit Abschluss dieses Kurses haben Sie eine solide Grundlage für die Blockchain-Programmierung mit Vyper geschaffen. Sie verfügen jetzt über ein solides Verständnis von Ethereum, intelligenten Verträgen und deren Erstellung in der Remix-IDE mit Vyper. Dieses Verständnis eröffnet eine Welt voller Möglichkeiten für die Entwicklung dezentraler Anwendungen und die Teilnahme am Blockchain-Ökosystem.
Um Ihre Fähigkeiten und Kenntnisse weiter zu verbessern, sollten Sie die Erkundung der folgenden Bereiche in Betracht ziehen:
Erweiterte Solidity-Programmierung: Solidity ist eine weitere beliebte Programmiersprache für Ethereum-Smart-Contracts. Das Erlernen von Solidity erweitert Ihre Fähigkeit, mit bestehenden Verträgen zu arbeiten und einen Beitrag zur Ethereum-Community zu leisten. Schauen Sie sich unseren Kurs hier an: [Link zum Solidity-Kurs einfügen, wenn online]
Entwicklung dezentraler Anwendungen (DApp): Tauchen Sie tiefer in die Entwicklung vollständiger dezentraler Anwendungen ein, indem Sie Smart Contracts mit Front-End-Entwicklung mithilfe von Frameworks wie Web3.js, React oder Vue.js kombinieren. Dadurch können Sie interaktive Benutzeroberflächen erstellen, die mit Ihren Smart Contracts interagieren.
Sicherheit und Prüfung: Entdecken Sie Best Practices für die Sicherung intelligenter Verträge und die Durchführung gründlicher Code-Prüfungen. Das Verständnis potenzieller Schwachstellen und die Minderung von Risiken gewährleisten die Zuverlässigkeit und Sicherheit Ihrer Smart Contracts.
Blockchain-Interoperabilität: Untersuchen Sie die Integration verschiedener Blockchain-Netzwerke und -Protokolle. Erfahren Sie mehr über kettenübergreifende Kommunikation und die Entwicklung interoperabler Smart Contracts, die mit mehreren Blockchains interagieren können.
Denken Sie daran, dass sich die Blockchain-Technologie ständig weiterentwickelt und es wichtig ist, über die neuesten Fortschritte auf dem Laufenden zu bleiben. Treten Sie mit der Blockchain-Community in Kontakt, beteiligen Sie sich aktiv an Diskussionen und erkunden Sie neue Konzepte und Technologien, um informiert und auf dem neuesten Stand zu bleiben.