
Ez az első része a Python intelligens szerződések létrehozásáról szóló oktatóanyagok sorozatának az Ontology blokklánc hálózaton az intelligens szerződésfejlesztő eszköz használatával. .
Ebben a cikkben az Ontology smart contract API-val kezdjük az ismerkedést. Az Ontology intelligens szerződés API 7 modulra oszlik:
- Blockchain & Block API,
- futásidejű API,
- tárolási API,
- natív API,
- Frissítés API,
- Execution Engine API és
- Statikus és dinamikus hívás API.
A Blockchain & Block API az Ontology intelligens szerződéses rendszer fő része. A Blockchain API támogatja az alapvető blokklánc lekérdezési műveleteket, például az aktuális blokk magasságának lekérését, míg a Block API az alapvető blokklekérdezési műveleteket, például az adott blokkhoz tartozó tranzakciók számának lekérdezését.
Kezdjük el!
Először hozzon létre egy új szerződést majd kövesse az alábbi utasításokat.
1. A Blockchain API használata
Az intelligens szerződéses funkciókra mutató hivatkozások megegyeznek a Python-hivatkozásokkal. Szükség szerint megadhatja a megfelelő funkciókat. Például a következő utasítás bemutat egy GetHeight függvényt az aktuális blokk magasságának lekéréséhez, és egy GetHeader függvényt a blokk fejlécének lekéréséhez.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderGetHeight
A GetHeight a blokklánc utolsó blokksorszámának lekérésére szolgál, amint az az alábbi példában látható. Az utolsó példában a kényelem kedvéért elhagyjuk a Main funkciót, de szükség esetén hozzáadhatja.
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) # print height
return height #return height after running the functionGetHeader
A GetHeader a blokkfejléc lekérésére szolgál, a paraméter a blokk sorozatszáma a blokkláncban. Példa:
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 headerGetTransactionByHash
A GetTransactionByHash a tranzakció lekérésére szolgál tranzakciókivonattal. A tranzakció kivonatát a rendszer a következő címre küldi: GetTransactionByHash paraméterként bytearray formátumban. Ennek a funkciónak a kulcsa a hexadecimális formátumú tranzakciókivonat konvertálása bytearray formátumú tranzakciós hash-re. Ez egy fontos lépés. Ellenkező esetben hibaüzenetet kaphat, amely azt jelzi, hogy nincs blokk ezzel a blokk-kivonattal. Példaként vegyük a hexadecimális formátumú tranzakció hash-t a bytearray formátumba való konvertálásához. Egy példa így néz ki:
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Először fordítsa meg a tranzakció kivonatát:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279A fejlesztők ezt a lépést a SmartX által biztosított Hex Number(little endian)Number konverziós eszközzel hajthatják végre.
Ezután konvertálja az eredményt bytearray formátumba:
{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}Ezt a SmartX által biztosított String Byte Array konvertáló eszközzel lehet megtenni. Végül alakítsa át a kapott bytearray-t egy hasonló karakterláncra:
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fA következő példa a GetTransactionByHash függvényre, amely a tranzakció kivonatát használja fel:
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return txGetTransactionHeight
A GetTransactionHeight a tranzakció magasságának lekérésére szolgál a tranzakció hash-en keresztül. Vegyük a hash-t a fenti példából:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightGetContract
A fejlesztők a GetContract funkció segítségével szerződést köthetnek a szerződés hash-jén keresztül. A szerződés hash-konverziós folyamata megegyezik a fent említett tranzakció-kivonat-konverziós folyamattal.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
A GetBlock blokk megszerzésére szolgál. Egy adott blokk megszerzésének két módja van.
1. Blokk lekérése blokkmagasság szerint:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Blokkenkénti hash lekérése:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. A Blokk API használata
A Block API-ban három funkció érhető el: GetTransactions, GetTransactionCountÉs GetTransactionByIndex. Egyenként bontjuk le őket.
GetTransactionCount
A GetTransactionCount az adott blokkhoz tartozó tranzakciók számának lekérésére szolgál.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionCount
def demo():
block=GetBlock(1408)
count=GetTransactionCount(block)
return countGetTransactions
A fejlesztők a GetTransactions funkcióval lekérhetik az adott blokkban lévő összes tranzakciót.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions
def demo():
block=GetBlock(1408)
txs=GetTransactions(block)
return txsGetTransactionByIndex
A GetTransactionByIndex egy adott tranzakció lekérésére szolgál egy adott blokkban.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactionByIndex
def demo():
block=GetBlock(1408)
tx=GetTransactionByIndex(block,0) # index starts from 0.
return txA teljes útmutató megtalálható nálunk .
utószó
A Blockchain & Block API az intelligens szerződések nélkülözhetetlen része, mivel segítségével blokklánc-adatokat kérhet, illetve blokkolhat adatokat az intelligens szerződésekben. A következő cikkekben megvitatjuk, hogyan kell használni a többi API-t, és megtudjuk, hogyan működnek együtt az Ontology blokklánccal.
A cikket a Hashrate&Shares szerkesztői fordították le kifejezetten az OntologyRussia számára.
Ön fejlesztő? Csatlakozz technológiai közösségünkhöz a címen . Továbbá, vessen egy pillantást weboldalunkon, ahol fejlesztői eszközöket, dokumentációt és egyebeket találhat.
ontológia
- /
- Telegram /
- /
Forrás: will.com
