Онтологийн сүлжээнд Python дээр ухаалаг гэрээг хэрхэн бичих вэ. 3-р хэсэг: Runtime API

Онтологийн сүлжээнд Python дээр ухаалаг гэрээг хэрхэн бичих вэ. 3-р хэсэг: Runtime API

Энэ бол Ontology блокчэйн сүлжээнд Python хэл дээр ухаалаг гэрээ байгуулах тухай боловсролын цуврал нийтлэлийн 3-р хэсэг юм. Өмнөх нийтлэлүүдэд бид танилцсан

  1. Blockchain & Block API
  2. Хадгалах API.

Одоо та Ontology сүлжээнд Python ашиглан ухаалаг гэрээ боловсруулахдаа тохирох байнгын хадгалах API-г хэрхэн дуудах талаар санаатай болсон тул хэрхэн ашиглах талаар суралцъя. Runtime API (Гэрээний гүйцэтгэлийн API). Runtime API нь гэрээг гүйцэтгэх нийтлэг интерфейсээр хангадаг, хөгжүүлэгчдэд өгөгдлийг сэргээх, өөрчлөх, баталгаажуулахад тусалдаг 8 холбогдох API-тай.

8 API өгөгдлийн товч тайлбарыг доор харуулав.

Онтологийн сүлжээнд Python дээр ухаалаг гэрээг хэрхэн бичих вэ. 3-р хэсэг: Runtime API

8 API өгөгдлийг хэрхэн ашиглах талаар нарийвчлан авч үзье. Үүнээс өмнө та Ontology ухаалаг гэрээ хөгжүүлэх хэрэгсэлд шинэ гэрээ үүсгэж болно SmartX мөн доорх зааврыг дагана уу.

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")

Та үүнийг бүртгэлээс харж болно:

Онтологийн сүлжээнд Python дээр ухаалаг гэрээг хэрхэн бичих вэ. 3-р хэсэг: Runtime API

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

Дэлгэрэнгүй мэдээллийг эндээс авах боломжтой Гутуб. Дараагийн өгүүллээр бид танилцуулах болно Төрөлх APIОнтологийн ухаалаг гэрээнд хөрөнгө шилжүүлэх талаар сурах.

Нийтлэлийг редакц орчуулав Hashrate & Share ялангуяа Онтологи Оросын хувьд.

Та хөгжүүлэгч мөн үү? Манай технологийн нийгэмлэгт нэгдээрэй Discord. Бас нэг үзээрэй Хөгжүүлэгчийн төв Онтологи, та тэндээс илүү олон хэрэгсэл, баримт бичиг болон бусад зүйлийг олох боломжтой.

Хөгжүүлэгчдэд зориулсан нээлттэй даалгавар. Даалгавраа биелүүлж, шагнал аваарай.

Өргөдөл гаргах оюутнуудад зориулсан Онтологийн авьяасын хөтөлбөрт зориулсан

Ontology

Онтологийн вэбсайт - GitHub - Discord - Орос хэл Telegram - Twitter - Reddit

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх