Lektion 2

Verstehen der Syntax und Grundkonzepte von Vyper

Bereiten Sie sich darauf vor, in Zukunft mit Vyper tiefer in die Welt der intelligenten Ethereum-Verträge einzutauchen. In Lektion 3 werden wir uns anspruchsvollere Vyper-Prinzipien ansehen. Wir werden einen praxisorientierteren Ansatz verfolgen und uns auf die Gestaltung, Implementierung und Interaktion mit Smart Contracts im Ethereum-Netzwerk konzentrieren.

Einführung in die Syntax von Vyper

Computer kommunizieren wie Menschen in verschiedenen Sprachen. Solidity und Vyper sind zwei bemerkenswerte Sprachen im Bereich der Ethereum-Blockchain. Wir haben Vyper, eine Programmiersprache für intelligente Verträge von Ethereum, vorgestellt und sie in Lektion 1 mit Solidity verglichen. Stattdessen werden wir in diesem Abschnitt tiefer auf die Syntax von Vyper eingehen, die der von Python auffallend ähnlich ist. Eines der Ziele von Vyper ist es, die Codierung intelligenter Verträge zu vereinfachen und gleichzeitig eine gute Sicherheit zu gewährleisten. Die Syntax soll so einfach und unkompliziert wie möglich sein. Als Python-Programmierer werden Sie sich wie zu Hause fühlen. Auch wenn Sie es nicht sind, ist die Python-ähnliche Syntax von Vyper einfach zu erlernen. Schauen wir uns die wichtigsten syntaktischen Komponenten von Vyper an.

Python 
 # Dies ist ein Kommentar in Vyper 
 @external 
 def meet(name: string[10]) -> string[30]: 
 return concat("Hello, ", name, "!")

Grundlegende Datentypen in Vyper

Datentypen sind die Bausteine jeder Programmiersprache. Sie definieren, welche Art von Daten in einem Programm gespeichert und bearbeitet werden können. Sehen wir uns einige grundlegende Datentypen an, die Vyper anbietet:

  • Boolean: Dies ist ein binärer Datentyp, der einen von zwei möglichen Werten haben kann, wahr oder falsch. Beispiel: flag: bool = True
  • Ganzzahlen: Vyper unterstützt Ganzzahlen, also ganze Zahlen, die entweder positiv, negativ oder Null sein können. Es gibt sie in verschiedenen Größen von 8 bis 256 Bit, wobei die gebräuchlichste int128 ist. Beispiel: count: int128 = 10
  • Dezimal: Dies wird zur Darstellung von Gleitkommazahlen verwendet, also Zahlen, die einen Dezimalpunkt haben. Beispiel: price: decimal = 123.45
  • Bytes und String: Bytes sind Folgen von Bytedaten, während Strings Folgen von Unicode-Zeichen sind. Beispiel: name: string[20] = 'Alice'
  • Listen und Arrays: Listen sind eine Sammlung von Elementen desselben Datentyps. Arrays hingegen sind eine spezielle Art von Liste, bei der die Länge fest ist. Beispiel: numbers: int128[5] = [1, 2, 3, 4, 5]
    Jeder dieser Datentypen hat seinen eigenen Platz beim Schreiben intelligenter Verträge. Sie müssen für jedes Datenelement, das Sie speichern möchten, den richtigen Datentyp auswählen, basierend darauf, welche Art von Vorgängen Sie mit diesen Daten ausführen möchten.

Um es noch einmal zusammenzufassen: Einige in Vyper verfügbare Werte:

  • bool
  • int128
  • uint256
  • Dezimalstellen
  • Adresse
  • Bytes32
  • Bytes
  • Zeichenfolge
Python 
 # @version ^0.3.7 

 b: public(bool) 
 i: public(int128) # -2 ** 127 bis (2 ** 127 - 1) 
 u: public(uint256) # 0 bis 2 * * 256 - 1 
 dec: public(decimal) # -2 ** 127 bis (2 ** 127 - 1), 10 Dezimalstellen 
 addr: public(address) 
 b32: public(bytes32) 
 bs: public(Bytes [100]) 
 s: public(String[100]) 


 @external 
 def __init__(): 
 self.b = Falsch 
 self.i = -1 
 self.u = 123 
 self.dec = 3,14 
 self.addr = 0x704534A22F03Ea46f76A07a195568D115E2e6d52 
 self.b32 = 0xada1b75f8ae9a65dcc16f95678ac203030505c6b465c8206 e26ae84b525cdacb 
 self.bs = b"\x01" 
 self.s = „Hallo Vyper“

Funktionen in Vyper

Funktionen in Vyper sind, wie in vielen anderen Sprachen auch, Blöcke aus wiederverwendbarem Code, die eine bestimmte Aufgabe ausführen. Sie bieten eine bessere Modularität für Ihre Anwendung und ermöglichen die Wiederverwendbarkeit von Code.

In Vyper können Sie eine Funktion mit dem Schlüsselwort def definieren, genau wie in Python. Funktionen verfügen außerdem über eine Liste von Parametern und einen Rückgabetyp. Hier ist eine einfache Vyper-Funktion:

Python 
 @external 
 def add(a: int128, b: int128) -> int128: 
 return a + b

Der @externalDekorator macht diese Funktion von außerhalb des Vertrags aufrufbar (durch eine Transaktion oder einen anderen Vertrag). Ohne diesen Dekorator wäre die Funktion nur innerhalb des Vertrags aufrufbar, in dem sie definiert ist.

Interne und externe Funktionen

@internal Funktionen können nur innerhalb des Vertrags aufgerufen werden.

@external Funktionen können nur von außerhalb des Vertrags aufgerufen werden.

Beispiel:

Python 
 # @version ^0.3.7 

 # Interne Funktionen können nur innerhalb dieses Vertrags aufgerufen werden 
 @internal 
 @pure 
 def _add(x: uint256, y: uint256) -> uint256: 
 return x + y 


 @external 
 @view 
 def extFunc() -> bool: 
 return True 


 # Externe Funktionen können nur von außerhalb dieses Vertrags aufgerufen werden 
 @external 
 @view 
 def avg(x: uint256, y: uint256) -> uint256: 
 # kann keine andere externe Funktion aufrufen 
 # self.extFunc()

    # kann interne Funktionen aufrufen 
 z: uint256 = self._add(x, y) 

 return (x + y) / 2 


 @internal 
 @pure 
 def _sqr(x: uint256) -> uint256: 
 return x * x 


 @external 
 @view 
 def sumOfSquares(x: uint256, y: uint256) -> uint256: 
 return self._sqr(x) + self._sqr(y)

Kontrollstrukturen in Vyper

Kontrollstrukturen werden verwendet, um unterschiedliche Aktionen basierend auf unterschiedlichen Entscheidungen auszuführen. Vyper bietet mehrere Kontrollstrukturen, einschließlich if-, for-Schleife und while-Schleife.

Die if Anweisung ist die grundlegendste Kontrollstruktur. Es führt einen Codeblock nur aus, wenn eine angegebene Bedingung wahr ist.

Python 
 @external 
 def is_greater_than_ten(a: int128) -> bool: 
 wenn a > 10: 
 True zurückgibt 
 sonst: 
 False zurückgibt

Die for Schleife in Vyper hat dieselbe Syntax wie in Python. Sie können eine Reihe von Anweisungen einmal für jedes Element in einer Liste, einem Tupel, einer Menge usw. ausführen.

Python 
 Zahlen: int128[5] = [1, 2, 3, 4, 5] 

 @external 
 def sum_numbers() -> int128: 
 sum: int128 = 0 
 for i in range(5): 
 sum + = self.numbers[i]
    Rückgabesumme

Die while Schleife in Vyper führt wiederholt eine Zielanweisung aus, solange eine bestimmte Bedingung wahr ist.

Python 
 @external 
 def count_to_ten() -> int128: 
 count: int128 = 0 
 while count < 10: 
 count += 1 
 return count

Fehlerbehandlung in Vyper

Bei der Programmierung ist die Fehlerbehandlung von entscheidender Bedeutung, um mit Laufzeitfehlern umzugehen und dem Benutzer aussagekräftige Fehlermeldungen bereitzustellen. Vyper verwendet die assert Anweisung, um Fehler zu behandeln.

Python 
 @external 
 def Divide(a: Dezimalzahl, b: Dezimalzahl) -> Dezimalzahl: 
 Assert b != 0, „Kann nicht durch Null dividiert werden“ 
 a / b zurückgeben

Wenn b im obigen Code Null ist, wird die Fehlermeldung „Kann nicht durch Null geteilt werden“ ausgegeben und die Transaktion wird rückgängig gemacht. Andernfalls wird mit der Divisionsoperation fortgefahren.

Vyper stellt auch die revert Anweisung bereit, mit der die Ausführung des aktuellen Aufrufs gestoppt und Statusänderungen rückgängig gemacht werden können, während gleichzeitig eine Fehlermeldung ausgegeben wird.

Das ist ein kurzer Überblick über die Syntax und die Grundprinzipien von Vyper. Der Schlüssel zur Beherrschung von Vyper ist wie bei jeder Programmiersprache die Übung. Ich empfehle, diese Techniken zum Schreiben einfacher Anwendungen zu verwenden. In der folgenden Sitzung erfahren Sie, wie Sie mit Vyper Smart Contracts erstellen und verwalten. Pass auf!

Herzlichen Glückwunsch zum erfolgreichen Abschluss von Lektion 2! Sie haben enorme Fortschritte beim Verständnis der Vyper-Syntax und der grundlegenden Konstrukte gemacht. Wir haben eine Einführung in die Vyper-Syntax, grundlegende Datentypen und -funktionen, Kontrollstrukturen und Fehlerbehandlung in Vyper durchgesehen. Denken Sie daran, dass jede dieser Komponenten die Grundlage jedes Vyper-Programms ist. Es ist von entscheidender Bedeutung, diese Kernkomponenten genau zu verstehen. Der beste Weg, dies zu erreichen, ist Übung und Erkundung. Erstellen Sie einfache Programme, die das einbeziehen, was Sie heute gelernt haben. Beim Programmieren gibt es keine Alternative zu praktischer Erfahrung.

Bereiten Sie sich darauf vor, in Zukunft mit Vyper tiefer in die Welt der intelligenten Ethereum-Verträge einzutauchen. In Lektion 3 werden wir uns anspruchsvollere Vyper-Prinzipien ansehen. Wir werden einen praxisorientierteren Ansatz verfolgen und uns auf die Gestaltung, Implementierung und Interaktion mit Smart Contracts im Ethereum-Netzwerk konzentrieren. Verstehen Sie, dass die Welt der Blockchain-Technologie groß ist und sich ständig verändert. Als Blockchain-Ingenieur endet Ihre Entdeckungs- und Lernreise nie wirklich. Sie sind auf dem Weg zur Meisterschaft und jeder Schritt vorwärts, egal wie klein, ist ein Schritt voraus. Setzen Sie Ihre hervorragenden Bemühungen fort, wir sehen uns in Lektion 3!

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

Verstehen der Syntax und Grundkonzepte von Vyper

Bereiten Sie sich darauf vor, in Zukunft mit Vyper tiefer in die Welt der intelligenten Ethereum-Verträge einzutauchen. In Lektion 3 werden wir uns anspruchsvollere Vyper-Prinzipien ansehen. Wir werden einen praxisorientierteren Ansatz verfolgen und uns auf die Gestaltung, Implementierung und Interaktion mit Smart Contracts im Ethereum-Netzwerk konzentrieren.

Einführung in die Syntax von Vyper

Computer kommunizieren wie Menschen in verschiedenen Sprachen. Solidity und Vyper sind zwei bemerkenswerte Sprachen im Bereich der Ethereum-Blockchain. Wir haben Vyper, eine Programmiersprache für intelligente Verträge von Ethereum, vorgestellt und sie in Lektion 1 mit Solidity verglichen. Stattdessen werden wir in diesem Abschnitt tiefer auf die Syntax von Vyper eingehen, die der von Python auffallend ähnlich ist. Eines der Ziele von Vyper ist es, die Codierung intelligenter Verträge zu vereinfachen und gleichzeitig eine gute Sicherheit zu gewährleisten. Die Syntax soll so einfach und unkompliziert wie möglich sein. Als Python-Programmierer werden Sie sich wie zu Hause fühlen. Auch wenn Sie es nicht sind, ist die Python-ähnliche Syntax von Vyper einfach zu erlernen. Schauen wir uns die wichtigsten syntaktischen Komponenten von Vyper an.

Python 
 # Dies ist ein Kommentar in Vyper 
 @external 
 def meet(name: string[10]) -> string[30]: 
 return concat("Hello, ", name, "!")

Grundlegende Datentypen in Vyper

Datentypen sind die Bausteine jeder Programmiersprache. Sie definieren, welche Art von Daten in einem Programm gespeichert und bearbeitet werden können. Sehen wir uns einige grundlegende Datentypen an, die Vyper anbietet:

  • Boolean: Dies ist ein binärer Datentyp, der einen von zwei möglichen Werten haben kann, wahr oder falsch. Beispiel: flag: bool = True
  • Ganzzahlen: Vyper unterstützt Ganzzahlen, also ganze Zahlen, die entweder positiv, negativ oder Null sein können. Es gibt sie in verschiedenen Größen von 8 bis 256 Bit, wobei die gebräuchlichste int128 ist. Beispiel: count: int128 = 10
  • Dezimal: Dies wird zur Darstellung von Gleitkommazahlen verwendet, also Zahlen, die einen Dezimalpunkt haben. Beispiel: price: decimal = 123.45
  • Bytes und String: Bytes sind Folgen von Bytedaten, während Strings Folgen von Unicode-Zeichen sind. Beispiel: name: string[20] = 'Alice'
  • Listen und Arrays: Listen sind eine Sammlung von Elementen desselben Datentyps. Arrays hingegen sind eine spezielle Art von Liste, bei der die Länge fest ist. Beispiel: numbers: int128[5] = [1, 2, 3, 4, 5]
    Jeder dieser Datentypen hat seinen eigenen Platz beim Schreiben intelligenter Verträge. Sie müssen für jedes Datenelement, das Sie speichern möchten, den richtigen Datentyp auswählen, basierend darauf, welche Art von Vorgängen Sie mit diesen Daten ausführen möchten.

Um es noch einmal zusammenzufassen: Einige in Vyper verfügbare Werte:

  • bool
  • int128
  • uint256
  • Dezimalstellen
  • Adresse
  • Bytes32
  • Bytes
  • Zeichenfolge
Python 
 # @version ^0.3.7 

 b: public(bool) 
 i: public(int128) # -2 ** 127 bis (2 ** 127 - 1) 
 u: public(uint256) # 0 bis 2 * * 256 - 1 
 dec: public(decimal) # -2 ** 127 bis (2 ** 127 - 1), 10 Dezimalstellen 
 addr: public(address) 
 b32: public(bytes32) 
 bs: public(Bytes [100]) 
 s: public(String[100]) 


 @external 
 def __init__(): 
 self.b = Falsch 
 self.i = -1 
 self.u = 123 
 self.dec = 3,14 
 self.addr = 0x704534A22F03Ea46f76A07a195568D115E2e6d52 
 self.b32 = 0xada1b75f8ae9a65dcc16f95678ac203030505c6b465c8206 e26ae84b525cdacb 
 self.bs = b"\x01" 
 self.s = „Hallo Vyper“

Funktionen in Vyper

Funktionen in Vyper sind, wie in vielen anderen Sprachen auch, Blöcke aus wiederverwendbarem Code, die eine bestimmte Aufgabe ausführen. Sie bieten eine bessere Modularität für Ihre Anwendung und ermöglichen die Wiederverwendbarkeit von Code.

In Vyper können Sie eine Funktion mit dem Schlüsselwort def definieren, genau wie in Python. Funktionen verfügen außerdem über eine Liste von Parametern und einen Rückgabetyp. Hier ist eine einfache Vyper-Funktion:

Python 
 @external 
 def add(a: int128, b: int128) -> int128: 
 return a + b

Der @externalDekorator macht diese Funktion von außerhalb des Vertrags aufrufbar (durch eine Transaktion oder einen anderen Vertrag). Ohne diesen Dekorator wäre die Funktion nur innerhalb des Vertrags aufrufbar, in dem sie definiert ist.

Interne und externe Funktionen

@internal Funktionen können nur innerhalb des Vertrags aufgerufen werden.

@external Funktionen können nur von außerhalb des Vertrags aufgerufen werden.

Beispiel:

Python 
 # @version ^0.3.7 

 # Interne Funktionen können nur innerhalb dieses Vertrags aufgerufen werden 
 @internal 
 @pure 
 def _add(x: uint256, y: uint256) -> uint256: 
 return x + y 


 @external 
 @view 
 def extFunc() -> bool: 
 return True 


 # Externe Funktionen können nur von außerhalb dieses Vertrags aufgerufen werden 
 @external 
 @view 
 def avg(x: uint256, y: uint256) -> uint256: 
 # kann keine andere externe Funktion aufrufen 
 # self.extFunc()

    # kann interne Funktionen aufrufen 
 z: uint256 = self._add(x, y) 

 return (x + y) / 2 


 @internal 
 @pure 
 def _sqr(x: uint256) -> uint256: 
 return x * x 


 @external 
 @view 
 def sumOfSquares(x: uint256, y: uint256) -> uint256: 
 return self._sqr(x) + self._sqr(y)

Kontrollstrukturen in Vyper

Kontrollstrukturen werden verwendet, um unterschiedliche Aktionen basierend auf unterschiedlichen Entscheidungen auszuführen. Vyper bietet mehrere Kontrollstrukturen, einschließlich if-, for-Schleife und while-Schleife.

Die if Anweisung ist die grundlegendste Kontrollstruktur. Es führt einen Codeblock nur aus, wenn eine angegebene Bedingung wahr ist.

Python 
 @external 
 def is_greater_than_ten(a: int128) -> bool: 
 wenn a > 10: 
 True zurückgibt 
 sonst: 
 False zurückgibt

Die for Schleife in Vyper hat dieselbe Syntax wie in Python. Sie können eine Reihe von Anweisungen einmal für jedes Element in einer Liste, einem Tupel, einer Menge usw. ausführen.

Python 
 Zahlen: int128[5] = [1, 2, 3, 4, 5] 

 @external 
 def sum_numbers() -> int128: 
 sum: int128 = 0 
 for i in range(5): 
 sum + = self.numbers[i]
    Rückgabesumme

Die while Schleife in Vyper führt wiederholt eine Zielanweisung aus, solange eine bestimmte Bedingung wahr ist.

Python 
 @external 
 def count_to_ten() -> int128: 
 count: int128 = 0 
 while count < 10: 
 count += 1 
 return count

Fehlerbehandlung in Vyper

Bei der Programmierung ist die Fehlerbehandlung von entscheidender Bedeutung, um mit Laufzeitfehlern umzugehen und dem Benutzer aussagekräftige Fehlermeldungen bereitzustellen. Vyper verwendet die assert Anweisung, um Fehler zu behandeln.

Python 
 @external 
 def Divide(a: Dezimalzahl, b: Dezimalzahl) -> Dezimalzahl: 
 Assert b != 0, „Kann nicht durch Null dividiert werden“ 
 a / b zurückgeben

Wenn b im obigen Code Null ist, wird die Fehlermeldung „Kann nicht durch Null geteilt werden“ ausgegeben und die Transaktion wird rückgängig gemacht. Andernfalls wird mit der Divisionsoperation fortgefahren.

Vyper stellt auch die revert Anweisung bereit, mit der die Ausführung des aktuellen Aufrufs gestoppt und Statusänderungen rückgängig gemacht werden können, während gleichzeitig eine Fehlermeldung ausgegeben wird.

Das ist ein kurzer Überblick über die Syntax und die Grundprinzipien von Vyper. Der Schlüssel zur Beherrschung von Vyper ist wie bei jeder Programmiersprache die Übung. Ich empfehle, diese Techniken zum Schreiben einfacher Anwendungen zu verwenden. In der folgenden Sitzung erfahren Sie, wie Sie mit Vyper Smart Contracts erstellen und verwalten. Pass auf!

Herzlichen Glückwunsch zum erfolgreichen Abschluss von Lektion 2! Sie haben enorme Fortschritte beim Verständnis der Vyper-Syntax und der grundlegenden Konstrukte gemacht. Wir haben eine Einführung in die Vyper-Syntax, grundlegende Datentypen und -funktionen, Kontrollstrukturen und Fehlerbehandlung in Vyper durchgesehen. Denken Sie daran, dass jede dieser Komponenten die Grundlage jedes Vyper-Programms ist. Es ist von entscheidender Bedeutung, diese Kernkomponenten genau zu verstehen. Der beste Weg, dies zu erreichen, ist Übung und Erkundung. Erstellen Sie einfache Programme, die das einbeziehen, was Sie heute gelernt haben. Beim Programmieren gibt es keine Alternative zu praktischer Erfahrung.

Bereiten Sie sich darauf vor, in Zukunft mit Vyper tiefer in die Welt der intelligenten Ethereum-Verträge einzutauchen. In Lektion 3 werden wir uns anspruchsvollere Vyper-Prinzipien ansehen. Wir werden einen praxisorientierteren Ansatz verfolgen und uns auf die Gestaltung, Implementierung und Interaktion mit Smart Contracts im Ethereum-Netzwerk konzentrieren. Verstehen Sie, dass die Welt der Blockchain-Technologie groß ist und sich ständig verändert. Als Blockchain-Ingenieur endet Ihre Entdeckungs- und Lernreise nie wirklich. Sie sind auf dem Weg zur Meisterschaft und jeder Schritt vorwärts, egal wie klein, ist ein Schritt voraus. Setzen Sie Ihre hervorragenden Bemühungen fort, wir sehen uns in Lektion 3!

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.