Lektion 2

Werte in einem Vertrag speichern

Hallo und willkommen zurück! In unserer ersten Lektion haben wir Ihnen SmartPy und Tezos vorgestellt, indem wir einen sehr einfachen Smart Contract erstellt haben. In dieser Lektion werden wir uns eingehender mit einer der wichtigsten Komponenten jedes Tezos-Smart-Vertrags befassen: der Speicherung.

Was ist Speicher?

In einem Tezos-Smart-Vertrag ist der Speicher so etwas wie das Gedächtnis des Vertrags. Hier werden alle vertragsrelevanten Daten gespeichert. Im Wesentlichen fungiert es als Status unseres Vertrags, indem es Werte speichert, die über verschiedene Transaktionen hinweg bestehen bleiben, und es dem Smart Contract ermöglicht, sich Informationen zu „merken“. Diese Fähigkeit ermöglicht es uns, komplexe und ansprechende dezentrale Anwendungen auf der Tezos-Blockchain zu erstellen.

Speicher im Detail verstehen

Bevor wir uns in dieser Lektion mit unserem Code befassen, wollen wir das Konzept der Speicherung etwas genauer aufschlüsseln. Die Speicherung eines Vertrags ist der Zustand, der zwischen Funktionsaufrufen bestehen bleibt. Wenn Sie einen traditionellen Programmierhintergrund haben, können Sie sich das als den „globalen Zustand“ des Vertrags vorstellen. Dadurch können Benutzer über einen längeren Zeitraum fortlaufend mit einem Vertrag interagieren.

Schauen wir uns nun unseren Vertragscode für diese Lektion an:

Python 
 import smartpy as sp 

 @sp.module 
 def main(): 
 class StoreValue(sp.Contract): 
 def __init__(self, value): 
 self.data.storedValue = value 

 @sp.entrypoint 
 def replace(self, params): 
 self.data.storedValue = params.value 

 @sp.entrypoint 
 def double(self): 
 self.data.storedValue *= 2 

 @sp.entrypoint 
 def Divide(self , params): 
 Assert params.divisor > 5 
 self.data.storedValue /= params.divisor 


 if „templates“ not in __name__: 

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 Szenario = sp.test_scenario(main)
        Szenario.h1("Store Wert") 
 Szenario += c1 
 c1.replace(Wert=15) 
 Szenario.p("Some Berechnung").show(c1.data.storedValue * 12) 
 c1.replace(value=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            gültig=Falsch, Ausnahme="Falsche Bedingung: params.divisor > 5" 
 ) 
 Szenario.verify(c1.data.storedValue == 50) 
 c1.divide(Divisor=6) 
 Szenario.verify(c1.data.storedValue == 8)

Führen Sie den Code aus und brechen Sie ihn auf

In unserem Speichervertragsbeispiel haben wir mehrere Einstiegspunkte – replace, double und divide. Nach der Bereitstellung dieses Vertrags können Benutzer diese Einstiegspunkte aufrufen, um mit dem Vertrag zu interagieren.

Für die Einstiegspunkte replace und divide müssen Benutzer Parameter in der Transaktion angeben. Für replace“ ist ein value erforderlich und für divide“ ist ein Parameter „ divisor erforderlich.

Wenn Sie diesen Vertrag in der SmartPy-IDE ausführen, sehen Sie auf der rechten Seite eine visuelle Darstellung der Vorgänge und der Speicherung des Vertrags. Hier können Sie tatsächlich Benutzerinteraktionen simulieren. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Stellen Sie Ihren Vertrag bereit, indem Sie auf die Schaltfläche Deploy klicken.

  2. Nach der Bereitstellung sehen Sie den Vertrag unter Contracts dargestellt. Klick es an.

  3. Nun werden Ihnen die Einstiegspunkte für den Vertrag aufgelistet.

  4. Um replace aufzurufen, geben Sie einen Wert für params.value in das Feld ein und klicken Sie dann auf die Schaltfläche „ replace “.

  5. Um double aufzurufen, klicken Sie einfach auf die double Schaltfläche.

  6. Um divide aufzurufen, geben Sie einen Wert für params.divisor in das Feld ein und klicken Sie dann auf die Schaltfläche divide .
    Bei jeder dieser Interaktionen wird ein neuer Vorgang erstellt, der unter dem Vertrag aufgeführt wird, und Sie können nach jedem Vorgang den aktualisierten Status des Vertragsspeichers sehen.

In diesem Vertrag betonen wir das Konzept der Speicherung mit der Zeile self.data.storedValue = value. self.data ist hier die von uns vertragsgemäße Speicherung gemeint. Hier behalten wir den Status unseres Vertrags bei: ein einzelner Parameter mit dem Namen storedValue.

Wir haben auch mehrere Einstiegspunkte in diesem Vertrag. Einstiegspunkte sind im Wesentlichen öffentliche Funktionen, die es externen Parteien ermöglichen, mit dem Vertrag zu interagieren. Hier ermöglichen unsere Einstiegspunkte die Änderung des storedValue auf verschiedene Arten. Wir können ihn durch einen neuen Wert ersetzen, verdoppeln oder durch einen bestimmten Teiler dividieren.

Betrachten wir als Nächstes das von uns eingerichtete Testszenario. Wir erstellen eine Instanz unseres Vertrags mit dem Anfangswert 12 für storedValue. Anschließend rufen wir unsere Einstiegspunkte auf, um den Wert von storedValue auf verschiedene Weise zu ändern und die Ergebnisse zu validieren.

Warum ist Lagerung wichtig?

Die Möglichkeit, Werte im Speicher eines Vertrags zu speichern und zu aktualisieren, ist für den Aufbau intelligenter Tezos-Verträge von grundlegender Bedeutung. Es ermöglicht die Persistenz von Daten über verschiedene Interaktionen mit dem Vertrag hinweg. Ganz gleich, ob es darum geht, die Guthaben in einem Token-Vertrag aufrechtzuerhalten, Benutzerinformationen in einer dezentralen Anwendung zu speichern oder den Status eines Spiels in der Blockchain festzuhalten, die Speicherung ist eine Kernfunktion, die diese Funktionalitäten ermöglicht.

Der Speicher in einem Smart Contract kann einfache Werte wie Ganzzahlen, Zeichenfolgen und Boolesche Werte oder komplexere Datenstrukturen wie Listen, Karten und benutzerdefinierte Objekte enthalten. Dadurch können wir komplexe Logik- und Zustandsübergänge in unsere Verträge einbauen.

In der nächsten Lektion bauen wir weiter auf diesen Kernkonzepten auf, führen komplexere Berechnungen in Smart Contracts ein und beginnen mit der Arbeit mit komplexeren Datentypen im Speicher unseres Vertrags. Bleiben Sie also dran und denken Sie daran: Übung macht den Meister. Zögern Sie nicht, mit dem Code zu experimentieren, Änderungen vorzunehmen und die Ergebnisse zu beobachten!

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

Werte in einem Vertrag speichern

Hallo und willkommen zurück! In unserer ersten Lektion haben wir Ihnen SmartPy und Tezos vorgestellt, indem wir einen sehr einfachen Smart Contract erstellt haben. In dieser Lektion werden wir uns eingehender mit einer der wichtigsten Komponenten jedes Tezos-Smart-Vertrags befassen: der Speicherung.

Was ist Speicher?

In einem Tezos-Smart-Vertrag ist der Speicher so etwas wie das Gedächtnis des Vertrags. Hier werden alle vertragsrelevanten Daten gespeichert. Im Wesentlichen fungiert es als Status unseres Vertrags, indem es Werte speichert, die über verschiedene Transaktionen hinweg bestehen bleiben, und es dem Smart Contract ermöglicht, sich Informationen zu „merken“. Diese Fähigkeit ermöglicht es uns, komplexe und ansprechende dezentrale Anwendungen auf der Tezos-Blockchain zu erstellen.

Speicher im Detail verstehen

Bevor wir uns in dieser Lektion mit unserem Code befassen, wollen wir das Konzept der Speicherung etwas genauer aufschlüsseln. Die Speicherung eines Vertrags ist der Zustand, der zwischen Funktionsaufrufen bestehen bleibt. Wenn Sie einen traditionellen Programmierhintergrund haben, können Sie sich das als den „globalen Zustand“ des Vertrags vorstellen. Dadurch können Benutzer über einen längeren Zeitraum fortlaufend mit einem Vertrag interagieren.

Schauen wir uns nun unseren Vertragscode für diese Lektion an:

Python 
 import smartpy as sp 

 @sp.module 
 def main(): 
 class StoreValue(sp.Contract): 
 def __init__(self, value): 
 self.data.storedValue = value 

 @sp.entrypoint 
 def replace(self, params): 
 self.data.storedValue = params.value 

 @sp.entrypoint 
 def double(self): 
 self.data.storedValue *= 2 

 @sp.entrypoint 
 def Divide(self , params): 
 Assert params.divisor > 5 
 self.data.storedValue /= params.divisor 


 if „templates“ not in __name__: 

 @sp.add_test(name="StoreValue") 
 def test() : 
 c1 = main.StoreValue(12) 
 Szenario = sp.test_scenario(main)
        Szenario.h1("Store Wert") 
 Szenario += c1 
 c1.replace(Wert=15) 
 Szenario.p("Some Berechnung").show(c1.data.storedValue * 12) 
 c1.replace(value=25) 
 c1.double() 
 c1.divide(divisor=2).run(
            gültig=Falsch, Ausnahme="Falsche Bedingung: params.divisor > 5" 
 ) 
 Szenario.verify(c1.data.storedValue == 50) 
 c1.divide(Divisor=6) 
 Szenario.verify(c1.data.storedValue == 8)

Führen Sie den Code aus und brechen Sie ihn auf

In unserem Speichervertragsbeispiel haben wir mehrere Einstiegspunkte – replace, double und divide. Nach der Bereitstellung dieses Vertrags können Benutzer diese Einstiegspunkte aufrufen, um mit dem Vertrag zu interagieren.

Für die Einstiegspunkte replace und divide müssen Benutzer Parameter in der Transaktion angeben. Für replace“ ist ein value erforderlich und für divide“ ist ein Parameter „ divisor erforderlich.

Wenn Sie diesen Vertrag in der SmartPy-IDE ausführen, sehen Sie auf der rechten Seite eine visuelle Darstellung der Vorgänge und der Speicherung des Vertrags. Hier können Sie tatsächlich Benutzerinteraktionen simulieren. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Stellen Sie Ihren Vertrag bereit, indem Sie auf die Schaltfläche Deploy klicken.

  2. Nach der Bereitstellung sehen Sie den Vertrag unter Contracts dargestellt. Klick es an.

  3. Nun werden Ihnen die Einstiegspunkte für den Vertrag aufgelistet.

  4. Um replace aufzurufen, geben Sie einen Wert für params.value in das Feld ein und klicken Sie dann auf die Schaltfläche „ replace “.

  5. Um double aufzurufen, klicken Sie einfach auf die double Schaltfläche.

  6. Um divide aufzurufen, geben Sie einen Wert für params.divisor in das Feld ein und klicken Sie dann auf die Schaltfläche divide .
    Bei jeder dieser Interaktionen wird ein neuer Vorgang erstellt, der unter dem Vertrag aufgeführt wird, und Sie können nach jedem Vorgang den aktualisierten Status des Vertragsspeichers sehen.

In diesem Vertrag betonen wir das Konzept der Speicherung mit der Zeile self.data.storedValue = value. self.data ist hier die von uns vertragsgemäße Speicherung gemeint. Hier behalten wir den Status unseres Vertrags bei: ein einzelner Parameter mit dem Namen storedValue.

Wir haben auch mehrere Einstiegspunkte in diesem Vertrag. Einstiegspunkte sind im Wesentlichen öffentliche Funktionen, die es externen Parteien ermöglichen, mit dem Vertrag zu interagieren. Hier ermöglichen unsere Einstiegspunkte die Änderung des storedValue auf verschiedene Arten. Wir können ihn durch einen neuen Wert ersetzen, verdoppeln oder durch einen bestimmten Teiler dividieren.

Betrachten wir als Nächstes das von uns eingerichtete Testszenario. Wir erstellen eine Instanz unseres Vertrags mit dem Anfangswert 12 für storedValue. Anschließend rufen wir unsere Einstiegspunkte auf, um den Wert von storedValue auf verschiedene Weise zu ändern und die Ergebnisse zu validieren.

Warum ist Lagerung wichtig?

Die Möglichkeit, Werte im Speicher eines Vertrags zu speichern und zu aktualisieren, ist für den Aufbau intelligenter Tezos-Verträge von grundlegender Bedeutung. Es ermöglicht die Persistenz von Daten über verschiedene Interaktionen mit dem Vertrag hinweg. Ganz gleich, ob es darum geht, die Guthaben in einem Token-Vertrag aufrechtzuerhalten, Benutzerinformationen in einer dezentralen Anwendung zu speichern oder den Status eines Spiels in der Blockchain festzuhalten, die Speicherung ist eine Kernfunktion, die diese Funktionalitäten ermöglicht.

Der Speicher in einem Smart Contract kann einfache Werte wie Ganzzahlen, Zeichenfolgen und Boolesche Werte oder komplexere Datenstrukturen wie Listen, Karten und benutzerdefinierte Objekte enthalten. Dadurch können wir komplexe Logik- und Zustandsübergänge in unsere Verträge einbauen.

In der nächsten Lektion bauen wir weiter auf diesen Kernkonzepten auf, führen komplexere Berechnungen in Smart Contracts ein und beginnen mit der Arbeit mit komplexeren Datentypen im Speicher unseres Vertrags. Bleiben Sie also dran und denken Sie daran: Übung macht den Meister. Zögern Sie nicht, mit dem Code zu experimentieren, Änderungen vorzunehmen und die Ergebnisse zu beobachten!

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.