
Dies ist der dritte Teil einer Reihe von Lehrartikeln über die Erstellung von Smart Contracts in Python im Ontology-Blockchain-Netzwerk. In den vorherigen Artikeln haben wir uns mit
- .
Jetzt, wo Sie eine Vorstellung davon haben, wie Sie das passende API für dauerhaften Speicher bei der Entwicklung eines Smart Contracts mit Python im Ontology-Netzwerk aufrufen, lassen Sie uns kennenlernen, wie man Runtime API (Contract Execution API) verwendet. Die Runtime API bietet 8 verwandte APIs, die allgemeine Schnittstellen für die Ausführung von Verträgen bereitstellen und Entwicklern helfen, Daten zu erhalten, zu transformieren und zu überprüfen.
Im Folgenden finden Sie eine kurze Beschreibung dieser 8 APIs:

Lassen Sie uns genauer darauf eingehen, wie Sie diese 8 APIs nutzen können. Bevor Sie beginnen, können Sie einen neuen Vertrag im Ontology-Smart-Contract-Entwicklungstool erstellen und den nachstehenden Anweisungen folgen.
So verwenden Sie die Runtime API
Es gibt zwei Möglichkeiten, die Runtime API zu importieren: ontology.interop.System.Runtime und ontology.interop.Ontology.Runtime. Der Ontology-Pfad enthält kürzlich hinzugefügte APIs. Die folgenden Zeilen importieren diese APIs.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHashNotify API
Die Notify-Funktion überträgt ein Ereignis im gesamten Netzwerk. Im folgenden Beispiel gibt die Notify-Funktion den hexadezimalen String „hello world“ zurück und sendet ihn durch das gesamte Netzwerk.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Sie können dies in den Protokollen sehen:

GetTime API
Die GetTime-Funktion gibt den aktuellen Zeitstempel zurück, der die Unix-Zeit darstellt, zu der die Funktion aufgerufen wurde. Die Maßeinheit ist die Sekunde.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # gibt eine uint-Zahl zurückGetCurrentBlockHash API
Die Funktion GetCurrentBlockHash gibt den Hash des aktuellen Blocks zurück.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize und Deserialize
Dies ist ein Paar von Funktionen für die Serialisierung und Deserialisierung. Die Serialize-Funktion wandelt ein Objekt in ein Byte-Array um, während die Deserialize-Funktion ein Byte-Array in das ursprüngliche Objekt zurückverwandelt. Das folgende Codebeispiel führt die Umwandlung der Eingabeparameter durch und speichert sie im permanenten Speicher des Vertrags. Außerdem werden Daten aus dem permanenten Speicher des Vertrags abgerufen und in das ursprüngliche Objekt umgewandelt.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.System.Storage import Put, Get, GetContext
def Main(operation, args):
if operation == 'serialize_to_bytearray':
data = args[0]
return serialize_to_bytearray(data)
if operation == 'deserialize_from_bytearray':
key = args[0]
return deserialize_from_bytearray(key)
return False
def serialize_to_bytearray(data):
sc = GetContext()
key = "1"
byte_data = Serialize(data)
Put(sc, key, byte_data)
def deserialize_from_bytearray(key):
sc = GetContext()
byte_data = Get(sc, key)
data = Deserialize(byte_data)
return dataBase58ToAddress und AddressToBase58
Diese Funktion wird verwendet, um Adressen zu konvertieren. Die Funktion Base58ToAddress wandelt eine codierte Base58-Adresse in eine Adresse im Bytearray-Format um, und AddressToBase58 konvertiert eine Adresse im Bytearray-Format zurück in eine codierte Base58-Adresse.
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
addr=Base58ToAddress(base58_addr)
Log(addr)
base58_addr=AddressToBase58(addr)
Log(base58_addr)CheckWitness
Die Funktion CheckWitness(fromAcct) hat zwei Funktionen:
- Überprüfen, ob das aufrufende Objekt fromAcct die Berechtigung hat. Wenn ja (d.h. die Signaturprüfung bestanden wurde), gibt die Funktion true zurück.
- Prüfen Sie, ob das Objekt, das die aktuelle Funktion aufruft, ein Vertrag ist. Wenn es sich um einen Vertrag handelt und die Funktion von diesem Vertrag ausgeführt wird, wurde die Verifizierung bestanden. Das bedeutet, dass geprüft wird, ob das von fromAcct zurückgegebene Ergebnis GetCallingScriptHash() ist. Die Funktion GetCallingScriptHash() kann den Hashwert des aktuellen Smart Contracts abrufen.
GetCallingScriptHash():
Weitere Informationen finden Sie auf
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resMehr Informationen finden Sie auf . In dem nächsten Artikel werden wir Native API, um zu lernen, wie man Vermögenswerte in Ontology Smart Contracts überträgt.
Der Artikel wurde von der Redaktion übersetzt speziell für OntologyRussia.
Sind Sie Entwickler? Treten Sie unserer technischen Gemeinschaft auf . Außerdem schauen Sie in das von Ontology, wo Sie weitere Werkzeuge, Dokumentationen und vieles mehr finden können.
Schließen Sie die Aufgabe ab — erhalten Sie eine Belohnung.
für das Ontology Talentprogramm für Studenten
Ontology
— — — — —
Quelle: habr.com
