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, "!")
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:
flag: bool = True
int128
ist. Beispiel: count: int128 = 10
price: decimal = 123.45
name: string[20] = 'Alice'
numbers: int128[5] = [1, 2, 3, 4, 5]
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 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 @external
Dekorator 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.
@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 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
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!
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, "!")
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:
flag: bool = True
int128
ist. Beispiel: count: int128 = 10
price: decimal = 123.45
name: string[20] = 'Alice'
numbers: int128[5] = [1, 2, 3, 4, 5]
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 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 @external
Dekorator 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.
@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 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
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!