
Dies ist der dritte Teil einer Reihe von Lernprogrammen zum Erstellen intelligenter Verträge in Python im Ontology-Blockchain-Netzwerk. In früheren Artikeln haben wir uns kennengelernt
- Blockchain & Block API
- Speicher-API
Nachdem Sie eine Vorstellung davon haben, wie Sie bei der Entwicklung eines intelligenten Vertrags mit Python im Ontology-Netzwerk die entsprechende persistente Speicher-API aufrufen können, lernen Sie die Verwendung der
Laufzeit-API (Contract Execution API) kennen. Die Runtime-API verfügt über 8 zugehörige APIs, die gemeinsame Schnittstellen für die Vertragsausführung bereitstellen und Entwicklern helfen, Daten zu empfangen, zu transformieren und zu validieren.
Nachfolgend finden Sie eine kurze Beschreibung der 8 API-Daten:

Sehen wir uns die Verwendung dieser 8 APIs genauer an. Zuvor können Sie einen neuen Vertrag im Ontology
SmartX- Entwicklungstool
für intelligente Verträge erstellen und die folgenden Anweisungen befolgen.
Verwendung der Runtime-API
Es gibt zwei Möglichkeiten, die
Runtime-API zu importieren
: ontology.interop.System.Runtime und
ontology.interop.Ontology.Runtime . Der Ontologiepfad enthält die kürzlich hinzugefügten APIs. Die folgenden Zeilen importieren die API-Daten.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
API benachrichtigen
Die Benachrichtigungsfunktion überträgt das Ereignis im gesamten Netzwerk. Im folgenden Beispiel gibt die Notify-Funktion die hexadezimale Zeichenfolge "Hallo Wort" zurück und überträgt sie über das 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 angibt, zu der die Funktion aufgerufen wurde. Die Einheit ist an zweiter Stelle.
from ontology.interop.System.Runtime import GetTime def demo(): time=GetTime() return time
GetCurrentBlockHash 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_hash
Serialisieren und deserialisieren
Dies sind einige Serialisierungs- und Deserialisierungsfunktionen. Die Serialize-Funktion konvertiert das Objekt in ein Bytearray-Objekt und die Deserialize-Funktion konvertiert das Bytearray in das ursprüngliche Objekt. Das folgende Codebeispiel konvertiert eingehende Parameter und speichert sie im permanenten Speicher des Vertrags. Es extrahiert auch Daten aus der dauerhaften Speicherung des Vertrags und wandelt sie in das ursprüngliche Objekt um.
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 data
Base58ToAddress und AddressToBase58
Dieses Paar von Adressübersetzungsfunktionen. Die Base58ToAddress-Funktion konvertiert die codierte Adresse von base58 in eine Adresse in Form von bytearray und AddressToBase58 konvertiert die Adresse in Form von bytearray in die codierte Adresse von base58.
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 CheckWitness (fromAcct) -Funktion hat zwei Funktionen:
- Überprüfen Sie, ob das Objekt fromAcct die aktuelle Funktion aufruft. Wenn ja (dh die Überprüfung der Signatur ist bestanden), kehrt die Funktion zurück.
- Überprüfen Sie, ob das Objekt, das die aktuelle Funktion aufruft, ein Vertrag ist. Wenn es sich um einen Vertrag handelt und die Funktion aus dem Vertrag ausgeführt wird, wird die Überprüfung bestanden. Überprüfen Sie also, ob fromAcct den Rückgabewert von GetCallingScriptHash () enthält. Die GetCallingScriptHash () -Funktion kann den Hash-Wert des Vertrags des aktuellen Smart-Vertrags übernehmen.
GetCallingScriptHash () :
Mehr zu
Guthub from ontology.interop.System.Runtime import CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress def demo(): addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z") res=CheckWitness(addr) return res
Weitere Informationen finden Sie auf
Guthub . Im nächsten Artikel werden wir die
native API vorstellen, um zu erfahren, wie Assets in Ontology-Smart-Verträgen übertragen werden.
Der Artikel wurde von Hashrate & Shares speziell für OntologyRussia übersetzt.
Sind Sie Entwickler? Treten Sie unserer Tech-Community bei
Discord bei . Weitere Tools, Dokumentationen und mehr finden Sie
im Ontology
Developer Center .
Offene Aufgaben für Entwickler. Schließen Sie die Aufgabe - erhalten Sie eine Belohnung.
Bewerben Sie sich für das Ontology Student Talent Program
Ontologie
Ontologie-Website -
GitHub -
Discord -
Telegramm Russisch -
Twitter -
Reddit