ProHoster > Օրագիր > Վարչակազմը > Ինչպես գրել խելացի պայմանագիր Python-ում Ontology ցանցում: Մաս 1. Blockchain & Block API
Ինչպես գրել խելացի պայմանագիր Python-ում Ontology ցանցում: Մաս 1. Blockchain & Block API
Սա Python-ում խելացի պայմանագրեր ստեղծելու մասին ուսուցողական հոդվածների առաջին մասն է Ontology blockchain ցանցում՝ օգտագործելով խելացի պայմանագրերի մշակման գործիքը: SmartX.
Այս հոդվածում մենք կսկսենք մեր ծանոթությունը Ontology smart contract API-ի հետ: Ontology smart contract API-ն բաժանված է 7 մոդուլի.
Blockchain & Block API,
Runtime API
Պահպանման API
Մայրենի API
Թարմացնել API-ն,
Execution Engine API և
Ստատիկ և դինամիկ զանգերի 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-ն օգտագործվում է բլոկչեյնում վերջին բլոկի հաջորդականության համարը ստանալու համար, ինչպես ցույց է տրված ստորև բերված օրինակում: Վերջին օրինակում, հարմարության համար, մենք բաց կթողնենք Main ֆունկցիան, բայց անհրաժեշտության դեպքում կարող եք ավելացնել այն:
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 որպես բայթերի ձևաչափով պարամետրեր: Այս ֆունկցիայի բանալին գործարքի հեշը վեցանկյուն ձևաչափով գործարքի հեշի փոխակերպումն է բայթերի ձևաչափով: Սա կարևոր քայլ է։ Հակառակ դեպքում դուք կստանաք սխալ, որը ցույց է տալիս, որ այդ բլոկի հեշով բլոկ չկա: Եկեք որպես օրինակ վերցնենք գործարքի հեշը վեցանկյուն ձևաչափով՝ այն բայթերի ձևաչափի փոխարկելու համար: Օրինակն այսպիսի տեսք ունի.
Ծրագրավորողները կարող են օգտագործել 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-ի համար։ լաց
Դուք ծրագրավորող եք: Միացեք մեր տեխնոլոգիական համայնքին Discord. Բացի այդ, նայեք Մշակողների կենտրոն մեր կայքում, որտեղ կարող եք գտնել մշակողի գործիքներ, փաստաթղթեր և այլն: