Энэ бол Ontology блокчэйн сүлжээнд Python хэл дээр ухаалаг гэрээ байгуулах тухай боловсролын цуврал нийтлэлийн 3-р хэсэг юм. Өмнөх нийтлэлүүдэд бид танилцсан
Одоо та Ontology сүлжээнд Python ашиглан ухаалаг гэрээ боловсруулахдаа тохирох байнгын хадгалах API-г хэрхэн дуудах талаар санаатай болсон тул хэрхэн ашиглах талаар суралцъя. Runtime API (Гэрээний гүйцэтгэлийн API). Runtime API нь гэрээг гүйцэтгэх нийтлэг интерфейсээр хангадаг, хөгжүүлэгчдэд өгөгдлийг сэргээх, өөрчлөх, баталгаажуулахад тусалдаг 8 холбогдох API-тай.
8 API өгөгдлийн товч тайлбарыг доор харуулав.
8 API өгөгдлийг хэрхэн ашиглах талаар нарийвчлан авч үзье. Үүнээс өмнө та Ontology ухаалаг гэрээ хөгжүүлэх хэрэгсэлд шинэ гэрээ үүсгэж болно
Runtime API-г хэрхэн ашиглах талаар
Импортлох хоёр арга бий Runtime API: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Онтологийн зам нь шинээр нэмэгдсэн API-г агуулдаг. Доорх мөрүүд нь API өгөгдлийг импортлох болно.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash
API-д мэдэгдэх
Мэдэгдлийн функц нь үйл явдлыг сүлжээгээр дамжуулдаг. Доорх жишээн дээр Notify функц нь "hello word" гэсэн зургаан өнцөгт мөрийг буцааж, сүлжээгээр цацах болно.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")
Та үүнийг бүртгэлээс харж болно:
GetTime API
GetTime функц нь тухайн функцийг дуудсан Unix цагийг буцаадаг одоогийн цагийн тэмдгийг буцаана. Хэмжих нэгж нь хоёрдугаарт байна.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
GetCurrentBlockHash API
GetCurrentBlockHash функц нь одоогийн блокийн хэшийг буцаана.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hash
Цуврал болгох ба цувралаас гаргах
Энэ нь цуваа болон салгах хос функц юм. Serialize функц нь объектыг bytearray объект руу, Deserialize функц нь байт массивыг анхны объект руу хөрвүүлдэг. Доорх кодын жишээ нь ирж буй параметрүүдийг хөрвүүлж, гэрээний байнгын хадгалалтад хадгалдаг. Энэ нь мөн гэрээний байнгын хадгалалтаас өгөгдлийг авч, анхны объект болгон хувиргадаг.
from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.System.Storage import Put, Get, GetContext
def Main(operation, args):
if operation == 'serialize_to_bytearray':
data = args[0]
return serialize_to_bytearray(data)
if operation == 'deserialize_from_bytearray':
key = args[0]
return deserialize_from_bytearray(key)
return False
def serialize_to_bytearray(data):
sc = GetContext()
key = "1"
byte_data = Serialize(data)
Put(sc, key, byte_data)
def deserialize_from_bytearray(key):
sc = GetContext()
byte_data = Get(sc, key)
data = Deserialize(byte_data)
return data
Base58ToAddress болон AddressToBase58
Энэ хос хаяг орчуулгын функцууд. Base58ToAddress функц нь base58 кодлогдсон хаягийг bytearray хаяг руу, AddressToBase58 нь байт массив хаягийг base58 кодлогдсон хаяг руу хөрвүүлдэг.
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58
def demo():
base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
addr=Base58ToAddress(base58_addr)
Log(addr)
base58_addr=AddressToBase58(addr)
Log(base58_addr)
Гэрчийг шалгана уу
CheckWitness(fromAcct) функц нь хоёр функцтэй:
- Одоогийн функцийн дуудагч fromAcct байгаа эсэхийг шалгана уу. Хэрэв тийм бол (энэ нь гарын үсгийн баталгаажуулалтад тэнцсэн) функц буцаж ирнэ.
- Одоогийн функцийг дуудаж буй объект нь гэрээ мөн эсэхийг шалгана уу. Хэрэв энэ нь гэрээ бөгөөд үүргээ гэрээнээс гүйцэтгэж байгаа бол баталгаажуулалтад хамрагдана. Өөрөөр хэлбэл fromAcct нь GetCallingScriptHash()-ийн буцах утга эсэхийг шалгана уу. GetCallingScriptHash() функц нь одоогийн ухаалаг гэрээний гэрээний хэш утгыг авах боломжтой.
GetCallingScriptHash():
Дэлгэрэнгүй
from ontology.interop.System.Runtime import CheckWitness
from ontology.interop.Ontology.Runtime import Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return res
Дэлгэрэнгүй мэдээллийг эндээс авах боломжтой
Нийтлэлийг редакц орчуулав
Hashrate & Share ялангуяа Онтологи Оросын хувьд.
Та хөгжүүлэгч мөн үү? Манай технологийн нийгэмлэгт нэгдээрэй
Ontology
Эх сурвалж: www.habr.com