ProHoster > Blogs > Administrācija > Kā uzrakstīt viedo līgumu Python ontoloģijas tīklā. 1. daļa: Blockchain un Block API
Kā uzrakstīt viedo līgumu Python ontoloģijas tīklā. 1. daļa: Blockchain un Block API
Šī ir pirmā daļa no apmācību sērijas par Python viedo līgumu izveidi Ontology blokķēdes tīklā, izmantojot viedo līgumu izstrādes rīku. SmartX.
Šajā rakstā mēs sāksim iepazīšanos ar Ontology viedo līgumu API. Ontoloģijas viedā līguma API ir sadalīta 7 moduļos:
Blockchain & Block API,
izpildlaika API,
krātuves API,
vietējā API,
jaunināšanas API,
Execution Engine API un
Statiskā un dinamiskā zvana API.
Blockchain & Block API ir Ontology viedo līgumu sistēmas galvenā daļa. Blockchain API atbalsta pamata blokķēdes vaicājumu darbības, piemēram, pašreizējā bloka augstuma noteikšanu, savukārt Block API atbalsta pamata bloku vaicājumu darbības, piemēram, vaicājumu par darījumu skaitu konkrētam blokam.
Sāksim!
Vispirms izveidojiet jaunu līgumu SmartXun pēc tam izpildiet tālāk sniegtos norādījumus.
1. Kā lietot Blockchain API
Saites uz viedo līgumu funkcijām ir identiskas Python saitēm. Ja nepieciešams, varat ievadīt atbilstošās funkcijas. Piemēram, šis paziņojums ievieš funkciju GetHeight, lai iegūtu pašreizējo bloka augstumu, un GetHeader funkcija, lai iegūtu bloka galveni.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight izmanto, lai iegūtu pēdējo bloka kārtas numuru blokķēdē, kā parādīts tālāk esošajā piemērā. Pēdējā piemērā mēs izlaidīsim funkciju Galvenā, taču, ja nepieciešams, varat to pievienot.
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
GetHeader tiek izmantots, lai iegūtu bloka galveni, parametrs ir bloka sērijas numurs blokķēdē. Piemērs:
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
GetTransactionByHash tiek izmantots, lai iegūtu darījumu, izmantojot darījumu jaucējfunkciju. Darījuma hash tiek nosūtīts uz GetTransactionByHash kā parametri bytearray formātā. Šīs funkcijas galvenais uzdevums ir transakcijas hash konvertēšana hex formātā uz transakcijas jaucējfunkciju bytearray formātā. Tas ir svarīgs solis. Pretējā gadījumā jūs saņemsit kļūdu, kas norāda, ka nav neviena bloka ar šo bloka jaucējfunkciju. Ņemsim transakcijas jaucējfunkciju hex formātā kā piemēru, lai to pārvērstu bytearray formātā. Piemērs izskatās šādi:
Izstrādātāji var izmantot funkciju GetContract, lai iegūtu līgumu, izmantojot līguma jaucējkodu. Līguma jaucējkoda konvertēšanas process ir tāds pats kā iepriekš minētais darījuma jaucējkoda konvertēšanas process.
GetBlock tiek izmantots, lai iegūtu bloku. Ir divi veidi, kā iegūt konkrētu bloku.
1. Saņemt bloku pēc bloka augstuma:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Iegūstiet bloku pēc bloka hash:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Kā izmantot Block API
Bloķēšanas API ir pieejamas trīs funkcijas: GetTransactions, GetTransactionCountUn GetTransactionByIndex. Mēs tos sadalīsim pa vienam.
GetTransactionCount
GetTransactionCount tiek izmantots, lai iegūtu konkrēta bloka darījumu skaitu.
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
Izstrādātāji var izmantot funkciju GetTransactions, lai iegūtu visus darījumus noteiktā blokā.
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
GetTransactionByIndex izmanto, lai iegūtu konkrētu darījumu noteiktā blokā.
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 ir neaizstājama viedo līgumu sastāvdaļa, jo varat tos izmantot, lai pieprasītu blokķēdes datus un bloķētu datus viedos līgumos. Nākamajos rakstos mēs apspriedīsim, kā izmantot pārējās API, un uzzināsim, kā tās mijiedarbojas ar Ontoloģijas blokķēdi.
Rakstu speciāli OntologyRussia tulkojuši Hashrate&Shares redaktori. raudāt
Vai jūs esat izstrādātājs? Pievienojieties mūsu tehnoloģiju kopienai vietnē Neatbilstība. Apskatiet arī Izstrādātāju centrs mūsu vietnē, kur varat atrast izstrādātāju rīkus, dokumentāciju un daudz ko citu.