ProHoster > Blog > Adminisztráció > Hogyan írjunk intelligens szerződést Pythonban az Ontológia hálózaton. 1. rész: Blockchain & Block API
Hogyan írjunk intelligens szerződést Pythonban az Ontológia hálózaton. 1. rész: Blockchain & Block API
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. SmartX.
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 SmartXmajd 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, GetHeader
GetHeight
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 function
GetHeader
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 header
GetTransactionByHash
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:
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:
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.
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 block
2. 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 count
GetTransactions
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 txs
GetTransactionByIndex
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 tx
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. kiáltás
Ön fejlesztő? Csatlakozz technológiai közösségünkhöz a címen Viszály. Továbbá, vessen egy pillantást Fejlesztői Központ weboldalunkon, ahol fejlesztői eszközöket, dokumentációt és egyebeket találhat.