
Dies ist ein offizielles Tutorial, das zuvor im Ontology Medium-Blog veröffentlicht wurde
Aufgeregt, es für Habr-Leser zu veröffentlichen. Sie können gerne verwandte Fragen stellen und ein besseres Format für Lernmaterialien vorschlagen
Vorwort
In diesem Artikel werden wir mit der Einführung der Smart Contract API von Ontology beginnen. Die Smart Contract API der Ontology ist in 7 Module unterteilt:
In diesem Artikel stellen wir
die Blockchain & Block-API vor , die den grundlegendsten Teil des Smart Contract-Systems von Ontology darstellt. Die Blockchain-API unterstützt grundlegende Blockchain-Abfrageoperationen, z. B. das Abrufen der aktuellen Blockhöhe, während die Block-API grundlegende Blockabfrageoperationen unterstützt, z. B. das Abfragen der Anzahl von Transaktionen für einen bestimmten Block.
Fangen wir an!Erstellen Sie zunächst einen neuen Vertrag in
SmartX und befolgen
Sie dann die nachstehenden Anweisungen.
1. Verwendung der Blockchain-API
Verweise auf intelligente Vertragsfunktionen sind identisch mit den Referenzen von Python. Entwickler können bei Bedarf die entsprechenden Funktionen einführen. In der folgenden Anweisung werden beispielsweise
GetHeight , die Funktion zum
Abrufen der aktuellen Blockhöhe, und
GetHeader , die Funktion zum
Abrufen des Blockheaders, vorgestellt.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
1.1. Getheight
Mit GetHeight können Sie die neueste Blockhöhe abrufen, wie im folgenden Beispiel gezeigt. Im letzteren Beispiel wird der Einfachheit halber die Hauptfunktion weggelassen, Sie können sie jedoch bei Bedarf hinzufügen.
from ontology.interop.System.Runtime import Notify from ontology.interop.System.Blockchain import GetHeight def Main(operation): if operation == 'demo': return demo() return False def demo(): height=GetHeight() Notify(height)
1.2 GetHeader
Sie können GetHeader verwenden, um den Blockheader abzurufen, und der Parameter ist die Blockhöhe eines Blocks. Hier ist ein Beispiel:
from ontology.interop.System.Runtime import Notify from ontology.interop.System.Blockchain import GetHeader def demo(): block_height=10 header=GetHeader(block_height) Notify(header) return header
1.3 GetTransactionByHash
Sie können die
GetTransactionByHash- Funktion verwenden, um Transaktionen über den Transaktions-Hash
abzurufen . Der Transaktions-Hash wird als Parameter im Bytearray-Format an GetTransactionByHash gesendet. Der Schlüssel zu dieser Funktion ist, wie ein Transaktions-Hash im Hex-Format in einen Transaktions-Hash im Bytearray-Format konvertiert wird. Dies ist ein wichtiger Schritt. Andernfalls wird eine Fehlermeldung angezeigt, die darauf hinweist, dass dieser Block-Hash keinen Block enthält.
Nehmen wir als Beispiel den Transaktions-Hash im Hex-Format, um ihn in das Bytearray-Format zu konvertieren. Das Beispiel lautet wie folgt:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1
Kehren Sie zunächst den Transaktions-Hash um:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279
Entwickler können diesen Schritt mit dem von SmartX bereitgestellten Konvertierungswerkzeug
Hex Number (Little Endian) <--> Number implementieren.
Konvertieren Sie es dann in das Bytearray-Format:
{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}
Entwickler können dies mit dem von SmartX bereitgestellten Konvertierungstool
String <--> Byte Array tun. Konvertieren Sie abschließend den resultierenden Bytearray in die entsprechende Zeichenfolge:
\xc1\x89\x0c\x4d\x73\x06\x26\xdf\xaa\x94\x49\x41\x9d\x66\x25\x05\xea\xb3\xbd\xa2\xe1\xf0\x1f\x89\x46\x3c\xc1\xa4\xa3\x0a\x27\x9f
Unten finden Sie ein Beispiel für die Funktion
GetTransactionByHash , mit der eine Transaktion über einen Transaktions-Hash
abgerufen wird:
from ontology.interop.System.Blockchain import GetTransactionByHash def demo():
1.4 GetTransactionHeight
Entwickler können die
GetTransactionHeight- Funktion verwenden, um die Transaktionshöhe über den Transaktions-Hash
abzurufen . Nehmen wir den Hash im obigen Beispiel:
from ontology.interop.System.Blockchain import GetTransactionHeight def demo():
1.5 GetContract
Mit der GetContract-Funktion können Sie einen Vertrag über einen Vertrags-Hash abrufen. Der Konvertierungsprozess des Vertrags-Hashs steht im Einklang mit dem oben erwähnten Transaktions-Hash-Konvertierungsprozess.
from ontology.interop.System.Blockchain import GetContract def demo():
1.6 GetBlock
Sie können die GetBlock-Funktion verwenden, um den Block abzurufen. Es gibt zwei Möglichkeiten, einen bestimmten Block zu erhalten:
1. Holen Sie sich den Block nach Blockhöhe:
from ontology.interop.System.Blockchain import GetBlock def demo(): block=GetBlock(1408) return block
2. Holen Sie sich den Block für Block-Hash:
from ontology.interop.System.Blockchain import GetBlock def demo(): block_hash=bytearray(b'\x16\xe0\xc5\x40\x82\x79\x77\x30\x44\xea\x66\xc8\xc4\x5d\x17\xf7\x17\x73\x92\x33\x6d\x54\xe3\x48\x46\x0b\xc3\x2f\xe2\x15\x03\xe4') block=GetBlock(block_hash)
2 Verwenden der Block-API
In der Block-API stehen drei Funktionen zur Verfügung:
GetTransactions, GetTransactionCount und GetTransactionByIndex . Wir werden sie einzeln vorstellen.
2.1 GetTransactionCount
Mit der Funktion
GetTransactionCount können Sie die Anzahl der Transaktionen für einen bestimmten Block
abrufen .
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactionCount def demo(): block=GetBlock(1408) count=GetTransactionCount(block) return count
2.2 GetTransactions
Mit der Funktion
GetTransactions können Sie alle Transaktionen in einem bestimmten Block
abrufen .
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactions def demo(): block=GetBlock(1408) txs=GetTransactions(block) return txs
2.3 GetTransactionByIndex
Mit der Funktion
GetTransactionByIndex können Sie bestimmte Transaktionen in einem bestimmten Block
abrufen .
from ontology.interop.System.Blockchain import GetBlock from ontology.interop.System.Block import GetTransactionByIndex def demo(): block=GetBlock(1408) tx=GetTransactionByIndex(block,0)
Das komplette Tutorial auf unserem GitHub finden Sie
hier .
Nachwort
Die Blockchain & Block-API ist der unverzichtbarste Bestandteil intelligenter Verträge, da Sie damit Blockchain-Daten abfragen und Daten in intelligenten Verträgen blockieren können. In den nächsten Artikeln werden wir diskutieren, wie andere APIs verwendet werden, um ihre Interaktion mit der Ontologie-Blockchain zu untersuchen.
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 /
Russisch )
Twitter /
Reddit /