
Энэ бол ухаалаг гэрээ хөгжүүлэх хэрэглүүрийг ашиглан Ontology блокчейн сүлжээнд Python хэл дээр ухаалаг гэрээ байгуулах тухай боловсролын цуврал нийтлэлийн эхний хэсэг юм. .
Энэ нийтлэлд бид Ontology ухаалаг гэрээний API-тай танилцаж эхлэх болно. Ontology ухаалаг гэрээний API нь 7 модульд хуваагдана:
- Blockchain & Block API,
- Runtime API
- Хадгалах API
- Төрөлх API
- API шинэчлэх,
- Execution Engine API болон
- Статик ба динамик дуудлагын API.
Blockchain & Block API нь Ontology ухаалаг гэрээний системийн үндсэн хэсэг юм. Blockchain API нь блокийн одоогийн өндрийг авах гэх мэт блокчейн асуулгын үндсэн үйлдлүүдийг дэмждэг бол Block API нь тухайн блокийн гүйлгээний тоог асуух гэх мэт блок асуулгын үндсэн үйлдлүүдийг дэмждэг.
Эхэлцгээе!
Эхлэхийн тулд шинэ гэрээ байгуулна уу , дараа нь доорх зааврыг дагана уу.
1. Blockchain API-г хэрхэн ашиглах талаар
Ухаалаг гэрээний функцийн лавлагаа нь Python-ын лавлагаатай ижил байна. Шаардлагатай бол та холбогдох функцуудыг оруулж болно. Жишээлбэл, дараах мэдэгдэлд блокны одоогийн өндрийг авах GetHeight функц, блокийн гарчгийг авах GetHeader функцийг танилцуулж байна.
from ontology.interop.System.Blockchain import GetHeight, GetHeaderӨндөр авах
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 functionGetHeader
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 headerGetTransactionByHash
GetTransactionByHash нь гүйлгээний хэш ашиглан гүйлгээг сэргээхэд хэрэглэгддэг. Гүйлгээний хэш хаяг руу илгээгдэнэ GetTransactionByHash bytearray форматаар параметр болгон. Энэ функцын гол түлхүүр нь hex формат дахь гүйлгээний хэшийг bytearray форматаар гүйлгээний хэш болгон хувиргах явдал юм. Энэ бол чухал алхам юм. Үгүй бол та тухайн блок хэштэй блок байхгүй гэсэн алдаа гарах болно. Үүнийг bytearray формат руу хөрвүүлэхийн тулд hex форматын гүйлгээний хэшийг жишээ болгон авч үзье. Жишээ нь дараах байдлаар харагдаж байна.
9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1Эхлээд гүйлгээний хэшийг буцаана уу:
c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279Хөгжүүлэгчид SmartX-аас олгосон Hex Number(little endian)Number хөрвүүлэх хэрэгслийг ашиглан энэ алхмыг хийж болно.
Дараа нь гарсан үр дүнг bytearray формат руу хөрвүүлнэ:
{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}Үүнийг SmartX-аас өгсөн String Byte Array хөрвүүлэх хэрэгслийг ашиглан хийж болно. Эцэст нь, үүссэн байт массивыг дараах шиг мөр болгон хөрвүүлнэ.
xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9fГүйлгээний хэшээр гүйлгээ хийдэг GetTransactionByHash функцийн жишээг доор харуулав.
from ontology.interop.System.Blockchain import GetTransactionByHash
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
tx=GetTransactionByHash(tx_hash)
return txGetTransactionHeight
GetTransactionHeight нь гүйлгээний хэш ашиглан гүйлгээний өндрийг авахад ашиглагддаг. Дээрх жишээнээс хэшийг авч үзье:
from ontology.interop.System.Blockchain import GetTransactionHeight
def demo():
# tx_hash="9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1"
tx_hash=bytearray(b"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f")
height=GetTransactionHeight(tx_hash)
return heightГэрээ авах
Хөгжүүлэгчид GetContract функцийг ашиглан гэрээг хэшээр дамжуулан авах боломжтой. Гэрээний хэш хөрвүүлэх үйл явц нь дээр дурдсан гүйлгээний хэш хөрвүүлэлтийн процесстой ижил байна.
from ontology.interop.System.Blockchain import GetContract
def demo():
# contract_hash="d81a75a5ff9b95effa91239ff0bb3232219698fa"
contract_hash=bytearray(b"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8")
contract=GetContract(contract_hash)
return contractGetBlock
GetBlock нь блок авахад ашиглагддаг. Тодорхой блок авах хоёр арга бий.
1. Блокны өндрөөр блок авах:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block=GetBlock(1408)
return block2. Блок хэшээр блок авах:
from ontology.interop.System.Blockchain import GetBlock
def demo():
block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')
block=GetBlock(block_hash)2. Block API-г хэрхэн ашиглах талаар
Block API-д гурван боломжит функц байдаг: Гүйлгээ авах, 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 функцийг ашиглан тухайн блок дахь бүх гүйлгээг татаж авах боломжтой.
from ontology.interop.System.Blockchain import GetBlock
from ontology.interop.System.Block import GetTransactions
def demo():
block=GetBlock(1408)
txs=GetTransactions(block)
return txsGetTransactionByIndex
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Бүрэн гарын авлагыг манай вэбсайтаас авах боломжтой .
Дараах үгс
Blockchain & Block API нь ухаалаг гэрээний салшгүй хэсэг юм, учир нь та үүнийг блокчэйн өгөгдөлд асуулга хийх, ухаалаг гэрээн дэх өгөгдлийг блоклоход ашиглах боломжтой. Ирээдүйн нийтлэлүүдэд бид үлдсэн API-г хэрхэн ашиглах талаар ярилцаж, Ontology блокчейнтэй хэрхэн харьцаж байгааг ойлгох болно.
Уг нийтлэлийг Hashrate&Shares сэтгүүлийн редакторууд ялангуяа Орос улсад онтологиод зориулан орчуулсан.
Та хөгжүүлэгч мөн үү? Манай технологийн нийгэмлэгт нэгдээрэй . Бас нэг үзээрэй Манай вэбсайтаас та хөгжүүлэгчийн хэрэгсэл, баримт бичиг болон бусад зүйлийг олж авах боломжтой.
Ontology
- /
- цахилгаан /
- /
Эх сурвалж: www.habr.com
