Wie schreibe ich einen intelligenten Vertrag mit Python über Ontologie? Teil 2: Speicher-API

Bild
Dies ist ein offizielles Tutorial, das zuvor im Ontology Medium-Blog veröffentlicht wurde
Aufgeregt, es für Habr-Leser zu veröffentlichen. Sie können gerne verwandte Fragen stellen und ein besseres Format für Lernmaterialien vorschlagen

Vorwort


Zuvor haben wir in Teil 1 die Blockchain & Block-API des intelligenten Vertrags von Ontology eingeführt. Heute werden wir diskutieren, wie das zweite Modul verwendet wird: Speicher-API . Die Speicher-API verfügt über fünf verwandte APIs, die das Hinzufügen, Löschen und Ändern von dauerhaftem Speicher in Blockchain-Smart-Verträgen ermöglichen. Hier ist eine kurze Beschreibung der fünf APIs:

Bild

Schauen wir uns die Verwendung dieser fünf APIs genauer an. Erstellen Sie zunächst einen neuen SmartX- Vertrag und führen Sie dann die folgenden Schritte aus. Normalerweise geben wir am Ende des Artikels den GitHub-Link des Quellcodes an.

2 Verwenden der Speicher-API


2.1 GetContext & GetReadOnlyContext


GetContext & GetReadOnlyContext ruft den Kontext ab, in dem der aktuelle Smart-Vertrag ausgeführt wird. Der Rückgabewert ist die Umkehrung des aktuellen Hash für intelligente Verträge. Wie der Name schon sagt, erhält GetReadOnlyContext den Kontext des schreibgeschützten Modus. Im folgenden Beispiel ist der Rückgabewert die Umkehrung des Vertrags-Hashs, der in der oberen rechten Ecke angezeigt wird.

Bild

2.2 Put


Die Put- Funktion ist dafür verantwortlich, die Daten in Form eines Wörterbuchs in der Blockchain zu speichern. Wie gezeigt, akzeptiert Put drei Parameter. GetContext ruft den Kontext des aktuellen Smart Contract ab, der Schlüssel ist der Schlüsselwert, der zum Speichern von Daten benötigt wird, und value ist der Wert der Daten, die gespeichert werden müssen. Bitte beachten Sie, dass die Funktion den entsprechenden Wert aktualisiert, wenn der Schlüsselwert bereits gespeichert ist.

Bild

2.3 Holen


Die Get- Funktion ist dafür verantwortlich, die Daten in der vorhandenen Blockchain durch den Schlüsselwert zu lesen. Im folgenden Beispiel können Sie den Schlüsselwert im Parameterfeld rechts eingeben, um die Funktion auszuführen und die Daten zu lesen, die dem Schlüsselwert in der Blockchain entsprechen:

Bild

2.4 Löschen


Die Löschfunktion ist dafür verantwortlich, die Daten in der Blockchain über den Schlüsselwert zu löschen. Im folgenden Beispiel können Sie den Schlüsselwert eingeben, um die Funktion im Parameterfenster rechts auszuführen, und die Daten löschen, die dem Schlüsselwert in der Blockchain entsprechen:

Bild

3 Beispielcode für die Speicher-API


Der folgende Code enthält ein detailliertes Beispiel für die Verwendung von fünf APIs: GetContext; Holen Sie sich Put; Löschen und GetReadOnlyContext . Sie können versuchen, diese APIs unter SmartX auszuführen .

from ontology.interop.System.Storage import GetContext, Get, Put, Delete, GetReadOnlyContext from ontology.interop.System.Runtime import Notify def Main(operation,args): if operation == 'get_sc': return get_sc() if operation == 'get_read_only_sc': return get_read_only_sc() if operation == 'get_data': key=args[0] return get_data(key) if operation == 'save_data': key=args[0] value=args[1] return save_data(key, value) if operation == 'delete_data': key=args[0] return delete_data(key) return False def get_sc(): return GetContext() def get_read_only_sc(): return GetReadOnlyContext() def get_data(key): sc=GetContext() data=Get(sc,key) return data def save_data(key, value): sc=GetContext() Put(sc,key,value) def delete_data(key): sc=GetContext() Delete(sc,key) 

Nachwort


Blockchain-Speicher ist der Kern des gesamten Blockchain-Systems. Die Verwendung der Ontology Storage API ist sehr einfach und entwicklerfreundlich.

Auf der anderen Seite steht der Speicher im Mittelpunkt von Hackern, wie beispielsweise der Sicherheitsbedrohung, die wir in einem früheren Artikel erwähnt haben: Speicherinjektionsangriff . Entwickler müssen beim Schreiben von speicherbezogenem Code besonders auf die Codesicherheit achten.

Das ausführliche Tutorial zu GitHub finden Sie hier .

Im nächsten Artikel werden wir die Verwendung der Runtime-API erläutern . Bleib dran!



Bist du ein Entwickler? Stellen Sie sicher, dass Sie unserer Tech-Community auf Discord beigetreten sind. Besuchen Sie auch das Developer Center auf unserer Website. Dort finden Sie Entwicklertools, Dokumentation und mehr.



Finden Sie die Ontologie woanders


Ontologie-Website
Github / Zwietracht
Telegramm ( Englisch / Russisch )
Twitter / Reddit /

Source: https://habr.com/ru/post/de470720/


All Articles