ProHoster > Блог > Administracija > Kako napisati pametni ugovor u Pythonu na mreži Ontology. Dio 1: Blockchain & Block API
Kako napisati pametni ugovor u Pythonu na mreži Ontology. Dio 1: Blockchain & Block API
Ovo je prvi dio serije edukativnih članaka o kreiranju pametnih ugovora u Pythonu na Ontology blockchain mreži pomoću alata za razvoj pametnih ugovora SmartX.
U ovom članku ćemo započeti naše upoznavanje sa Ontology Smart contract API-jem. Ontology smart contract API je podijeljen u 7 modula:
Blockchain & Block API,
Runtime API
API za pohranu
Native API
API za nadogradnju,
API za izvršni mehanizam i
API za statički i dinamički poziv.
Blockchain & Block API je ključni dio Ontology sistema pametnih ugovora. Blockchain API podržava osnovne operacije blockchain upita, kao što je dobivanje trenutne visine bloka, dok Block API podržava osnovne operacije blokova upita, kao što je ispitivanje broja transakcija za dati blok.
Hajde da počnemo!
Za početak kreirajte novi ugovor u SmartX, a zatim slijedite upute u nastavku.
1. Kako koristiti Blockchain API
Reference funkcije pametnog ugovora su identične Python referencama. Po potrebi možete unijeti relevantne funkcije. Na primjer, sljedeća izjava uvodi GetHeight, funkciju za dobivanje trenutne visine bloka, i GetHeader, funkciju za dobivanje naslova bloka.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight se koristi za dobivanje posljednjeg slijednog broja bloka u blockchainu, kao što je prikazano u primjeru ispod. U posljednjem primjeru, radi praktičnosti, preskočit ćemo glavnu funkciju, ali je možete dodati ako je potrebno.
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 se koristi za dobivanje zaglavlja bloka; primjer:
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 se koristi za dohvaćanje transakcije koristeći heš transakcije. Heš transakcije se šalje na GetTransactionByHash kao parametri u formatu bytearray. Ključ ove funkcije je pretvaranje heš transakcije u hex formatu u heš transakcije u formatu niza bajtova. Ovo je važan korak. U suprotnom biste dobili grešku koja ukazuje da ne postoji blok sa hešom tog bloka. Uzmimo heš transakcije u heksadecimalnom formatu kao primjer da ga pretvorimo u format bytearray. Primjer izgleda ovako:
Ovo se može učiniti pomoću alata za konverziju niza bajtova stringova koji pruža SmartX. Konačno, konvertirajte rezultirajući niz bajtova u niz poput ovog:
Programeri mogu koristiti funkciju GetContract za preuzimanje ugovora putem hash ugovora. Proces konverzije heširanja ugovora je isti kao proces konverzije heš transakcije koji je gore spomenut.
GetBlock se koristi za dobivanje bloka. Postoje dva načina da dobijete određeni blok.
1. Nabavite blok po visini bloka:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Nabavite blok po blok heš:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Kako koristiti Block API
Postoje tri dostupne funkcije u Block API-ju: GetTransactions, GetTransactionCounti GetTransactionByIndex. Sredićemo ih jednog po jednog.
GetTransactionCount
GetTransactionCount se koristi za dobivanje broja transakcija za dati blok.
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
Programeri mogu koristiti funkciju GetTransactions da dohvate sve transakcije u datom bloku.
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 se koristi za preuzimanje određene transakcije u datom bloku.
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
Kompletan vodič možete pronaći na našoj stranici GitHub.
Posle reči
Blockchain & Block API je nezamjenjiv dio pametnih ugovora jer ga možete koristiti za upite blockchain podataka i blokiranje podataka u pametnim ugovorima. U budućim člancima ćemo razgovarati o tome kako koristiti preostale API-je i razumjeti kako oni komuniciraju s Ontology blockchainom.
Članak su preveli urednici Hashrate&Shares posebno za OntologyRussia. plakati
Jeste li programer? Pridružite se našoj tehničkoj zajednici na Diskord. Takođe, pogledajte Centar za programere na našoj web stranici, gdje možete pronaći alate za programere, dokumentaciju i još mnogo toga.