ProHoster > Блог > администрация > Как да напиша интелигентен договор в Python в мрежата Ontology. Част 1: Blockchain & Block API
Как да напиша интелигентен договор в Python в мрежата Ontology. Част 1: Blockchain & Block API
Това е първата част от поредица от уроци за създаване на интелигентни договори на Python в блокчейн мрежата Ontology с помощта на инструмента за разработка на интелигентни договори. SmartX.
В тази статия ще започнем нашето запознаване с API за интелигентни договори на Ontology. API за интелигентен договор Ontology е разделен на 7 модула:
Blockchain & Block API,
API по време на изпълнение,
API за съхранение,
роден API,
API за надграждане,
API на Execution Engine и
API за статично и динамично повикване.
Blockchain & Block API е основната част от системата за интелигентни договори Ontology. Blockchain API поддържа основни операции за заявки в блокчейн, като получаване на текущата височина на блока, докато Block API поддържа основни операции за заявки за блокове, като например запитване за броя на транзакциите за даден блок.
Да започваме!
Първо създайте нов договор в SmartXи след това следвайте инструкциите по-долу.
1. Как да използвате Blockchain API
Връзките към функциите на интелигентния договор са идентични с връзките на Python. Можете да въведете съответните функции, ако е необходимо. Например следният оператор въвежда функция GetHeight за получаване на текущата височина на блока и функция GetHeader за получаване на заглавката на блока.
from ontology.interop.System.Blockchain import GetHeight, GetHeader
GetHeight
GetHeight се използва за получаване на последния пореден номер на блок в блокчейна, както е показано в примера по-долу. В последния пример ще пропуснем основната функция за удобство, но можете да я добавите, ако е необходимо.
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 се използва за получаване на заглавката на блока, параметърът е серийният номер на блока в блокчейна. Пример:
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 се използва за получаване на транзакция чрез хеш транзакция. Хешът на транзакцията се изпраща до GetTransactionByHash като параметри във формат bytearray. Ключът към тази функция е да преобразува хеша на транзакцията в шестнадесетичен формат в хеша на транзакцията във формат bytearray. Това е важна стъпка. В противен случай ще получите грешка, която показва, че няма блок с този хеш на блока. Нека вземем хеша на транзакцията в шестнадесетичен формат като пример, за да го преобразуваме във формат bytearray. Пример изглежда така:
Това може да се направи с помощта на инструмента за преобразуване на String Byte Array, предоставен от SmartX. Накрая преобразувайте получения bytearray в подобен низ:
Разработчиците могат да използват функцията GetContract, за да получат договор чрез хеша на договора. Процесът на преобразуване на хеша на договора е същият като процеса на преобразуване на хеша на транзакция, споменат по-горе.
GetBlock се използва за получаване на блок. Има два начина да получите конкретен блок.
1. Вземете блок по блок височина:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block
2. Вземете хеш блок по блок:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)
2. Как да използвате Block API
Има три налични функции в Block API: GetTransactions, GetTransactionCountИ GetTransactionByIndex. Ще ги разделим един по един.
GetTransactionCount
GetTransactionCount се използва за получаване на броя транзакции за даден блок.
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
Разработчиците могат да използват функцията GetTransactions, за да получат всички транзакции в даден блок.
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 се използва за получаване на конкретна транзакция в даден блок.
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
Пълно ръководство можете да намерите на нашия GitHub.
послеслов
Blockchain & Block API е незаменима част от интелигентните договори, тъй като можете да ги използвате, за да изисквате данни от блокчейн и да блокирате данни в интелигентни договори. В бъдещи статии ще обсъдим как да използваме останалите API и ще разберем как те взаимодействат с блокчейна Ontology.
Статията е преведена от редакторите на Hashrate&Shares специално за OntologyRussia. кликване
Вие сте разработчик? Присъединете се към нашата техническа общност на раздор. Освен това разгледайте Център за разработчици на нашия уебсайт, където можете да намерите инструменти за разработчици, документация и др.