Чӣ тавр шартномаи интеллектуалиро дар Python дар шабакаи Ontology нависед. Қисми 3: API Runtime

Чӣ тавр шартномаи интеллектуалиро дар Python дар шабакаи Ontology нависед. Қисми 3: API Runtime

Ин қисми 3-юми як қатор мақолаҳои таълимӣ оид ба эҷоди шартномаҳои интеллектуалӣ дар Python дар шабакаи blockchain Ontology мебошад. Дар мақолаҳои қаблӣ мо бо он шинос шуда будем

  1. Blockchain & Block API
  2. API-и нигаҳдорӣ.

Акнун, ки шумо тасаввуроте доред, ки чӣ гуна API-и мувофиқи нигаҳдории доимиро ҳангоми таҳияи шартномаи интеллектуалӣ бо истифода аз Python дар шабакаи Ontology даъват кунед, биёед ба омӯзиши тарзи истифода гузарем. API-и вақти корӣ (API иҷроиши шартнома). Runtime API дорои 8 API-и алоқаманд аст, ки интерфейсҳои умумиро барои иҷрои шартнома таъмин мекунанд ва ба таҳиягарон дар ҷустуҷӯ, табдил додан ва тасдиқи маълумот кӯмак мекунанд.

Дар зер тавсифи мухтасари маълумоти API 8 оварда шудааст:

Чӣ тавр шартномаи интеллектуалиро дар Python дар шабакаи Ontology нависед. Қисми 3: API Runtime

Биёед дида бароем, ки чӣ тавр истифода бурдани маълумоти 8 API. Пеш аз ин, шумо метавонед дар асбоби таҳияи шартномаи интеллектуалии Ontology шартномаи нав созед SmartX ва дастурҳои зерро иҷро кунед.

Чӣ тавр истифода бурдани API Runtime

Ду роҳи воридот вуҷуд дорад API Runtime: ontology.interop.System.Runtime и ontology.interop.Ontology.Runtime. Роҳи Ontology дорои API-ҳои нав иловашуда мебошад. Сатрҳои зер маълумоти API-ро ворид мекунанд.

from ontology.interop.System.Runtime import GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
from ontology.interop.Ontology.Runtime import Base58ToAddress, AddressToBase58, GetCurrentBlockHash

Огоҳонидани API

Функсияи огоҳӣ ҳодисаро дар тамоми шабака пахш мекунад. Дар мисоли зер, функсияи огоҳӣ сатри шонздаҳгонаи "салом калима" -ро бармегардонад ва онро дар тамоми шабака пахш мекунад.

from ontology.interop.System.Runtime import Notify
def demo():
    Notify("hello world")

Шумо инро дар гузоришҳо мебинед:

Чӣ тавр шартномаи интеллектуалиро дар Python дар шабакаи Ontology нависед. Қисми 3: API Runtime

API GetTime

Функсияи 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 объектро ба объекти байтӣ табдил медиҳад ва функсияи 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-ро ба суроғаи байтиаррей табдил медиҳад ва 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) ду вазифа дорад:

  • Тафтиш кунед, ки оё зангзанандаи функсияи ҷорӣ азAcct аст. Агар ҳа (яъне тафтиши имзо гузашт), функсия бармегардад.
  • Санҷед, ки оё объекте, ки функсияи ҷорӣро даъват мекунад, шартнома аст. Агар он шартнома бошад ва вазифа аз шартнома иҷро шуда бошад, пас санҷиш гузаронида мешавад. Яъне, санҷед, ки оё fromAcct арзиши баргардонидани GetCallingScriptHash() аст. Функсияи GetCallingScriptHash() метавонад арзиши хэши шартномаи шартномаи интеллектуалии кунуниро бигирад.

GetCallingScriptHash():

More on Гутуб

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 модарӣомӯхтани тарзи интиқоли дороиҳо дар шартномаҳои интеллектуалии Ontology.

Маколаро редакция тарчима кардааст Hashrate & Shares махсусан барои OntologyRussia.

Оё шумо таҳиягар ҳастед? Ба ҷомеаи техникии мо ҳамроҳ шавед Беимкон. Ҳамчунин, як назар кунед Маркази таҳиякунанда Онтология, шумо метавонед дар он ҷо асбобҳо, ҳуҷҷатҳо ва ғайраро пайдо кунед.

Вазифаҳои кушода барои таҳиягарон. Супоришро иҷро кунед ва мукофот гиред.

Муроҷиат кунед барои барномаи истеъдодҳои онтология барои донишҷӯён

Ontology

Вебсайти онтология - GitHub - Беимкон - Телеграммаи русӣ - Twitter - аз бойгонӣ

Манбаъ: will.com

Илова Эзоҳ