Онтология желісінде Python тілінде смарт келісімшартты қалай жазуға болады. 3-бөлім: Runtime API

Онтология желісінде Python тілінде смарт келісімшартты қалай жазуға болады. 3-бөлім: Runtime API

Бұл Ontology блокчейн желісінде Python тілінде смарт-келісімшарттарды жасау туралы білім беру мақалаларының сериясының 3-ші бөлімі. Алдыңғы мақалаларда біз танысқан болатынбыз

  1. Blockchain & Block API
  2. Storage 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 хабарландыруы

Хабарландыру функциясы оқиғаны бүкіл желіге таратады. Төмендегі мысалда Хабарландыру функциясы он алтылық жолды «сәлем сөз» қайтарады және оны бүкіл желіге таратады.

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

Серияландыру және сериядан шығару

Бұл сериялау және сериядан шығару функцияларының жұбы. Серияландыру функциясы нысанды байт массиві нысанына түрлендіреді, ал сериялық жою функциясы байт массивін бастапқы нысанға түрлендіреді. Төмендегі код үлгісі кіріс параметрлерді түрлендіреді және оларды келісім-шарттың тұрақты сақтауында сақтайды. Ол сондай-ақ келісім-шарттың тұрақты сақтауынан деректерді шығарып алады және оны бастапқы нысанға түрлендіреді.

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) функциясының екі функциясы бар:

  • Ағымдағы функцияның шақырушысы 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

Қосымша ақпаратты мына жерден алуға болады Гутхуб. Келесі мақалада біз таныстырамыз Native APIOntology смарт келісімшарттарындағы активтерді тасымалдау жолын үйрену.

Мақаланы редакция аударған Хешрейт және бөлісулер әсіресе онтология Ресей үшін.

Сіз әзірлеушісіз бе? Біздің технологиялық қауымдастыққа қосылыңыз Арасындағы айырмашылық. Сондай-ақ, қараңыз Әзірлеушілер орталығы Онтология, сіз одан басқа құралдарды, құжаттаманы және т.б. таба аласыз.

Әзірлеушілерге арналған ашық тапсырмалар. Тапсырманы орындап, сыйлық алыңыз.

Тапсырыс беру студенттерге арналған онтология дарындылық бағдарламасы үшін

Онтология

Онтология сайты - GitHub - Арасындағы айырмашылық - Telegram орысша - Twitter - Reddit

Ақпарат көзі: www.habr.com

пікір қалдыру