
Dies ist der 3. 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, da Sie eine Vorstellung davon haben, wie man die geeignete API für den permanenten Speicher bei der Entwicklung eines Smart Contracts mit Python im Ontology-Netzwerk aufruft, lassen Sie uns kennenlernen, wie man Runtime-API (Contract Execution API) verwendet. Die Runtime API hat 8 verwandte APIs, die allgemeine Schnittstellen für die Ausführung von Verträgen bereitstellen und den Entwicklern helfen, Daten zu erhalten, zu konvertieren und zu überprüfen.
Im Folgenden finden Sie eine kurze Beschreibung dieser 8 APIs:

Lassen Sie uns genauer untersuchen, wie diese 8 APIs verwendet werden. Zuvor können Sie einen neuen Vertrag im Ontology Smart Contract-Entwicklungstool erstellen und den folgenden Anweisungen folgen.
So verwenden Sie die Runtime API
Es gibt zwei Möglichkeiten, die Runtime API: ontology.interop.System.Runtime und ontology.interop.Ontology.Runtime. Der Ontology-Pfad enthält die neu hinzugefügten 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 sendet ein Ereignis über das gesamte Netzwerk. Im folgenden Beispiel wird die Notify-Funktion die hex-Zeichenfolge „hello world“ zurückgeben und sie im gesamten Netzwerk verbreiten.
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 Einheit ist die Sekunde.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numGetCurrentBlockHash API
Die GetCurrentBlockHash-Funktion 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 zur Serialisierung und Deserialisierung. Die Serialize-Funktion konvertiert ein Objekt in ein Bytearray, während die Deserialize-Funktion ein Bytearray in das ursprüngliche Objekt zurückverwandelt. Das folgende Codebeispiel konvertiert die Eingabeparameter und speichert sie im permanenten Speicher des Vertrags. Es ruft auch Daten aus dem permanenten Speicher des Vertrags ab und konvertiert sie zurück in das ursprüngliche Objekt.
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
Dieses Paar von Funktionsmethoden wandelt Adressen um. Die Funktion Base58ToAddress wandelt eine kodierte Base58-Adresse in eine Adresse im bytearray-Format um, während AddressToBase58 eine Adresse im bytearray-Format in eine kodierte Base58-Adresse umwandelt.
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 Funktionalitäten:
- Zu verifizieren, ob das Objekt, das die aktuelle Funktion aufruft, fromAcct ist. Wenn ja (d.h. die Signaturprüfung bestanden wurde), wird die Funktion zurückgegeben.
- Zu überprüfen, ob das Objekt, das die aktuelle Funktion aufruft, ein Vertrag ist. Wenn es ein Vertrag ist und die Funktion aus diesem Vertrag aufgerufen wird, dann ist die Prüfung bestanden. Das heißt, zu verifizieren, ob fromAcct den Rückgabewert von GetCallingScriptHash() entspricht. Die Funktion GetCallingScriptHash() kann den Hash des aktuellen Smart Contracts zurückgeben.
GetCallingScriptHash():
Mehr dazu auf
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resWeitere Informationen finden Sie auf . In dem nächsten Artikel werden wir Native API, um zu erlernen, wie man Vermögenswerte in Ontology-Smart Contracts überträgt.
Der Artikel wurde von der Redaktion speziell für OntologyRussia übersetzt.
Sind Sie Entwickler? Treten Sie unserer technischen Gemeinschaft bei auf . Schauen Sie auch in das Ontology, dort finden Sie weitere Werkzeuge, Dokumentation und vieles mehr.
Schließe die Aufgabe ab – erhalte eine Belohnung.
für das Ontology Talentprogramm für Studenten
Ontology
— — — — —
Quelle: habr.com
