ProHoster > Blogi > Haldamine > Kuidas ontoloogiavõrgus Pythonis nutikat lepingut kirjutada. 1. osa: Blockchain & Block API
Kuidas ontoloogiavõrgus Pythonis nutikat lepingut kirjutada. 1. osa: Blockchain & Block API
See on esimene osa harivate artiklite sarjast, mis käsitleb nutikate lepingute loomist Pythonis ontoloogia plokiahela võrgus, kasutades nutikate lepingute arendustööriista SmartX.
Selles artiklis alustame tutvumist ontoloogia nutika lepingu API-ga. Ontoloogia nutika lepingu API on jagatud 7 mooduliks:
Blockchain & Block API,
Runtime API
Storage API
Native API
Uuenda API,
Execution Engine API ja
Staatilise ja dünaamilise kõne API.
Blockchain & Block API on Ontology nutika lepingusüsteemi põhiosa. Blockchaini API toetab põhilisi plokiahela päringutoiminguid, näiteks ploki praeguse kõrguse saamist, samas kui Block API toetab põhilisi plokipäringu toiminguid, nagu näiteks antud ploki tehingute arvu päring.
Alustame!
Alustuseks looge uus leping SmartXja järgige allolevaid juhiseid.
1. Kuidas kasutada Blockchaini API-d
Nutikate lepingufunktsioonide viited on identsed Pythoni viidetega. Vajadusel saate sisestada asjakohaseid funktsioone. Näiteks järgmine lause tutvustab funktsiooni GetHeight, ploki praeguse kõrguse saamiseks ja GetHeader, ploki pealkirja hankimise funktsiooni.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeighti kasutatakse plokiahela viimase ploki järjekorranumbri saamiseks, nagu on näidatud allolevas näites. Viimases näites jätame mugavuse huvides vahele põhifunktsiooni, kuid saate selle vajadusel lisada.
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
Ploki päise saamiseks kasutatakse GetHeaderit; parameetriks on ploki seerianumber plokiahelas. Näide:
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
GetTransactionByHashi kasutatakse tehingu toomiseks tehinguräsi abil. Tehingu räsi saadetakse aadressile GetTransactionByHash parameetritena bytearray formaadis. Selle funktsiooni võti on teisendada tehingu räsi kuueteistkümnendvormingus tehinguräsi bytearray-vormingus. See on oluline samm. Vastasel juhul saate tõrketeate, mis näitab, et selle ploki räsiga pole ühtegi plokki. Võtame näiteks kuueteistkümnendvormingus tehinguräsi, et teisendada see bytearray-vormingusse. Näide näeb välja selline:
Arendajad saavad lepingu räsi kaudu lepingu hankimiseks kasutada funktsiooni GetContract. Lepingu räsi teisendamise protsess on sama, mis ülalmainitud tehingu räsi teisendamise protsess.
GetBlocki kasutatakse ploki saamiseks. Konkreetse ploki saamiseks on kaks võimalust.
1. Hankige plokk ploki kõrguse järgi:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Hankige plokkide kaupa räsi:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Kuidas kasutada Block API-t
Block API-s on saadaval kolm funktsiooni: GetTransactions, GetTransactionCountJa GetTransactionByIndex. Sorteerime need ükshaaval välja.
GetTransactionCount
GetTransactionCounti kasutatakse antud ploki tehingute arvu saamiseks.
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
Arendajad saavad kasutada funktsiooni GetTransactions, et tuua kõik antud ploki tehingud.
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
GetTransactionByIndexi kasutatakse antud plokis konkreetse tehingu toomiseks.
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
Blockchain & Block API on nutikate lepingute asendamatu osa, kuna saate seda kasutada plokiahela andmete päringute tegemiseks ja andmete blokeerimiseks nutikates lepingutes. Järgmistes artiklites arutame, kuidas kasutada ülejäänud API-sid ja mõista, kuidas need ontoloogia plokiahelaga suhtlevad.
Artikli tõlkisid Hashrate&Sharesi toimetajad spetsiaalselt OntologyRussia jaoks. nutma
Kas olete arendaja? Liituge meie tehnikakogukonnaga aadressil Erimeelsused. Samuti vaadake Arendaja keskus meie veebisaidil, kust leiate arendajatööriistu, dokumentatsiooni ja palju muud.