
Einführung
Zuvor habe ich den Ontology Smart Contract in eingeführt
Teil 1: Blockchain & Block API und
Teil 2: Speicher-APIWenn Sie nun eine Idee haben, wie Sie die relevante API für dauerhaften Speicher bei der Entwicklung eines Python-Smart-Vertrags für Ontology aufrufen können, fahren Sie mit der
Laufzeit-API (Contract Execution API) fort. Die Runtime-API verfügt über 8 verwandte APIs, die allgemeine Schnittstellen für die Vertragsausführung bereitstellen und Entwicklern helfen, Daten abzurufen, zu konvertieren und zu validieren. Hier ist eine kurze Beschreibung dieser 8 APIs:

Schauen wir uns die Verwendung dieser 8 APIs genauer an. Zuvor können Sie im Ontology Smart Contract Development Tool
SmartX einen neuen Vertrag
erstellen und die folgenden Anweisungen befolgen. Wie üblich werde ich am Ende des Artikels einen Link zum Quellcode bereitstellen.
Verwendung der Laufzeit-API
Es gibt zwei Pfade zum Importieren der Runtime-API:
ontology.interop.System.Runtime und
ontology.interop.Ontology.Runtime . Der Ontologiepfad enthält neu 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, GetCurrentBlockHash
API benachrichtigen
Die
Benachrichtigungsfunktion sendet Ereignisse an das gesamte Netzwerk. Im folgenden Beispiel gibt die
Benachrichtigungsfunktion eine Hex-Zeichenfolge "Hallo Welt" zurück und sendet sie an das gesamte Netzwerk.
from ontology.interop.System.Runtime import Notify def demo(): Notify("hello world")
Sie können es in
Protokollen anzeigen:

GetTime API
Die
GetTime- Funktion gibt den aktuellen Zeitstempel zurück, der die Unix-Zeit zurückgibt, 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 & Deserialisieren
Dies ist ein Paar von Serialisierungs- und Deserialisierungsfunktionen. Die
Serialize- Funktion serialisiert ein Objekt in ein Byte-Array-Objekt, und die
Deserialize- Funktion deserialisiert das Byte-Array in das ursprüngliche Objekt. Das folgende Codebeispiel implementiert die Serialisierung eingehender Parameter und speichert sie im dauerhaften Speicher des Vertrags. Außerdem werden Daten aus dem dauerhaften Speicher des Vertrags extrahiert und deserialisiert.
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 & AddressToBase58
Dies ist ein Paar von Adresskonvertierungsfunktionen. Die
Base58ToAddress- Funktion konvertiert die Base58-codierte Adresse in eine Byte-Array-Formularadresse, und AddressToBase58 konvertiert die Byte-Array-Formularadresse in eine Base58-codierte 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
CheckWitness- Funktion
(fromAcct) verfügt über zwei Funktionen:
- Überprüfen Sie, ob der aktuelle Funktionsaufrufer fromAcct ist. Wenn ja (dh Signaturüberprüfung bestanden), kehrt die Funktion zurück.
- Überprüfen Sie, ob der aktuelle Funktionsaufrufer 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 der Rückgabewert von GetCallingScriptHash () ist. Die Funktion GetCallingScriptHash () kann den Vertrags-Hash-Wert des aktuellen Smart-Vertrags abrufen.
GetCallingScriptHash ():
Ontologie Python-Compiler
from ontology.interop.System.Runtime import CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress def demo(): addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z") res=CheckWitness(addr) return res
Das vollständige Tutorial finden Sie
hier .
Zusammenfassung
In diesem Artikel habe ich die
Runtime-API der Ontology-Blockchain vorgestellt, die im Smart-Vertrag von Ontology Python sehr wichtig ist. Im nächsten Artikel werden wir uns die
native API ansehen, um zu untersuchen, wie Assets in intelligenten Ontology-Verträgen übertragen werden.
Dies ist ein offizielles Tutorial, das zuvor im Ontology Medium-Blog veröffentlicht wurde
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-WebsiteGithub /
ZwietrachtTelegramm
Englisch /
RussischTwitter /
Reddit