Ինչպես գրել խելացի պայմանագիր Python-ում Ontology ցանցում: Մաս 3. Runtime API

Ինչպես գրել խելացի պայմանագիր Python-ում Ontology ցանցում: Մաս 3. Runtime API

Սա Python-ում խելացի պայմանագրեր ստեղծելու մասին ուսուցողական հոդվածների 3-րդ մասն է Ontology blockchain ցանցում։ Նախորդ հոդվածներում մենք ծանոթացանք

  1. Blockchain & Block API
  2. Պահպանման API.

Այժմ, երբ դուք ունեք պատկերացում, թե ինչպես կարելի է զանգահարել համապատասխան մշտական ​​պահպանման API՝ Python-ի միջոցով Ontology ցանցում խելացի պայմանագիր մշակելիս, եկեք անցնենք սովորելու, թե ինչպես օգտագործել: Runtime API (Պայմանագրի կատարման API): Runtime API-ն ունի 8 առնչվող API, որոնք ապահովում են ընդհանուր ինտերֆեյսներ պայմանագրի կատարման համար և օգնում են մշակողներին առբերել, վերափոխել և վավերացնել տվյալները:

Ստորև բերված է 8 API տվյալների համառոտ նկարագրությունը.

Ինչպես գրել խելացի պայմանագիր Python-ում Ontology ցանցում: Մաս 3. Runtime API

Եկեք ավելի սերտ նայենք, թե ինչպես օգտագործել 8 API-ի տվյալները: Մինչ այս, դուք կարող եք ստեղծել նոր պայմանագիր Ontology խելացի պայմանագրերի մշակման գործիքում SmartX և հետևեք ստորև ներկայացված հրահանգներին:

Ինչպես օգտագործել Runtime API-ը

Ներմուծման երկու եղանակ կա Runtime API՝ 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-ին

Notify ֆունկցիան հեռարձակում է իրադարձությունը ողջ ցանցով: Ստորև բերված օրինակում Notify ֆունկցիան կվերադարձնի «բարև բառ» վեցանկյուն տողը և կհեռարձակի այն ամբողջ ցանցով:

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

Դուք կարող եք տեսնել սա տեղեկամատյաններում.

Ինչպես գրել խելացի պայմանագիր Python-ում Ontology ցանցում: Մաս 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 և Deserialize

Սա սերիալացման և ապասերիալիզացիայի զույգ ֆունկցիաներ է: 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():

Ավելին կարդացեք Գութուբ

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-ի համար:

Դուք ծրագրավորող եք: Միացեք մեր տեխնոլոգիական համայնքին Discord. Բացի այդ, նայեք Մշակողների կենտրոն Օնտոլոգիա, այնտեղ կարող եք գտնել ավելի շատ գործիքներ, փաստաթղթեր և շատ ավելին:

Բաց առաջադրանքներ մշակողների համար: Կատարեք առաջադրանքը և ստացեք պարգև:

Դիմել Ուսանողների համար օնտոլոգիայի տաղանդի ծրագրի համար

Ontology- ը

Օնտոլոգիայի կայք - GitHub - Discord - Telegram ռուսերեն - Twitter - Փակցնելուց

Source: www.habr.com

Добавить комментарий