
Zuvor habe ich den Ontology Smart Contract in eingeführt
Teil 1: Blockchain & Block API und
Teil 2: Speicher-APITeil 3: Laufzeit-APILassen Sie uns heute darüber sprechen, wie Sie einen nativen Smart-Vertrag für Ontology über die
native API aufrufen. Eine der typischsten Funktionen beim Aufrufen eines nativen Vertrags ist die Übertragung von Vermögenswerten.
Einführung
Die native API verfügt nur über eine API. Wenn Sie die Invoke-Funktion verwenden, müssen Sie die integrierte Statusfunktion verwenden, um die Parameter zu kapseln. Im Folgenden erfahren Sie, wie Sie die Funktionen verwenden.

Lassen Sie uns nun näher auf die Verwendung dieser beiden APIs eingehen. 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 nativen API
Wie üblich müssen Sie die beiden Funktionen wie folgt importieren, bevor Sie sie verwenden können.
from ontology.interop.Ontology.Native import Invoke from ontology.builtins import state
Liste der Ontology Native Contract
Derzeit sind 6 native Ontology-Verträge für Entwickler verfügbar. Unten finden Sie eine Liste der 6 nativen Verträge, die von der nativen API aufgerufen werden können.

Im Vertrag müssen Sie nur die Vertragsadresse in ein Bytearray-Format konvertieren und aufrufen.
Wenn Sie beispielsweise einen ONT-Token-Vertrag aufrufen müssen, können Sie zuerst die Adresse des ONT-Token-Vertrags in das Bytearray-Format konvertieren und dann die Invoke-Funktion aufrufen. Beim Aufruf der Invoke-Funktion sind die importierten Parameter die Versionsnummer, die Vertragsadresse, die aufgerufene Vertragsmethode und die von der Statusfunktion gekapselten transferbezogenen Parameter.
Ein besonderer Punkt, der hier zu beachten ist, ist, dass bei einer Vertragsübertragung für ONG die gefüllte Menge das 10-fache der tatsächlichen Menge beträgt. Das heißt, wenn Sie 10 ONG übertragen müssen, muss die Menge 10¹⁰ eingegeben werden. Wenn Sie eine Brieftasche wie ONTO oder Cyano zum Überweisen verwenden, geben Sie als Überweisungsbetrag ein.
contract_address_ONT = bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01') param = state(from_acct, to_acct, ont_amount) res = Invoke(1, contract_address_ONT, 'transfer', [param])
Vertragscode übertragen
Im Folgenden finden Sie ein detailliertes Beispiel für die Verwendung von Python zur
Übertragung von ONT und ONG . Im folgenden Code ist der Parametertyp des importierten Sendekontos und der Empfangsadresse eine Zeichenfolge. Darüber hinaus kann es auch mit einer Adresse mit Kontoparameter geliefert werden, wodurch die Gasgebühr für das Aufrufen des Vertrags gespart wird. Der Prozess ist wie folgt:
- Definieren Sie die Vertragsadressvariablen contract_address_ONT und contract_address_ONG.
- Konvertieren Sie die Sende- und Empfangsadresse vom base58-Format in das bytearray-Format.
- Überprüfen Sie die Unterschrift und stellen Sie sicher, dass die Absenderadresse mit der Vertragsaufrufadresse übereinstimmt.
- Die Statusfunktion kapselt die Übertragungsparameter.
- Die Invoke-Funktion ruft den nativen Vertrag ONT Token und ONG Token zur Übertragung auf.
- Stellen Sie fest, ob die Übertragung erfolgreich war, indem Sie res zurückgeben. Wenn der Rückgabewert b '\ x01' ist, ist die Übertragung erfolgreich und das Ereignis "Übertragung erfolgreich" wird ausgegeben.
from ontology.interop.System.Runtime import Notify, CheckWitness from ontology.interop.Ontology.Runtime import Base58ToAddress from ontology.interop.Ontology.Native import Invoke from ontology.builtins import state
Übe auf SmartX
Sie können das obige
Codebeispiel auch unter
SmarX kompilieren und ausführen,
indem Sie die folgenden Schritte
ausführen :
- Kompilieren Sie den Vertrag. Erstellen Sie zunächst ein Projekt unter SmartX und kompilieren Sie den Code in diesem Projekt.

- Stellen Sie den Vertrag bereit. Wenn Sie ein Test-Token benötigen, um den Vertrag bereitzustellen, bewerben Sie sich hier . Das Bereitstellungsergebnis lautet wie folgt:

- Führen Sie die Übertragungsfunktion aus. Bevor Sie die Übertragungsfunktion ausführen, müssen Sie die Parameter nach Bedarf konfigurieren. Im folgenden Beispiel müssen Sie die Sende- und Empfangsadresse sowie den übertragenen ONT- und ONG-Betrag eingeben:

- Übertragung erfolgreich. Nachdem Sie die Parameter richtig konfiguriert haben, ist die Übertragung beim Ausführen der Übertragungsfunktion erfolgreich. Das übertragene Token wird in der obigen Empfangsadresse angezeigt:

Zusammenfassung
In diesem Artikel haben wir die
native API der Ontology-Blockchain vorgestellt. Entwickler können diese API verwenden, um native Ontology-Verträge aufzurufen. Im nächsten Artikel werden wir die
Upgrade-API vorstellen, um zu untersuchen, wie Sie einen Vertrag in Ontology Smart Contracts aktualisieren können.
Das Tutorial auf GitHub finden Sie
hier .
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