ProHoster > Блог > басқарма > Онтология желісінде Python тілінде смарт келісімшартты қалай жазуға болады. 3-бөлім: Runtime API
Онтология желісінде Python тілінде смарт келісімшартты қалай жазуға болады. 3-бөлім: Runtime API
Бұл Ontology блокчейн желісінде Python тілінде смарт-келісімшарттарды жасау туралы білім беру мақалаларының сериясының 3-ші бөлімі. Алдыңғы мақалаларда біз танысқан болатынбыз
Енді сізде Ontology желісіндегі Python көмегімен смарт-келісімшартты жасау кезінде сәйкес тұрақты сақтау API-сына қалай қоңырау шалу керектігі туралы идея бар болғандықтан, оны пайдалануды үйренуге көшейік. Runtime API (Келісімшартты орындау API). Runtime API-де келісім-шартты орындау үшін ортақ интерфейстерді қамтамасыз ететін және әзірлеушілерге деректерді шығарып алуға, түрлендіруге және тексеруге көмектесетін 8 қатысты API бар.
Төменде 8 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")
Сіз мұны журналдардан көре аласыз:
GetTime API
GetTime функциясы ағымдағы уақыт белгісін қайтарады, ол функция шақырылған Unix уақытын қайтарады. Өлшем бірлігі – екінші.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint num
Бұл сериялау және сериядан шығару функцияларының жұбы. Серияландыру функциясы нысанды байт массиві нысанына түрлендіреді, ал сериялық жою функциясы байт массивін бастапқы нысанға түрлендіреді. Төмендегі код үлгісі кіріс параметрлерді түрлендіреді және оларды келісім-шарттың тұрақты сақтауында сақтайды. Ол сондай-ақ келісім-шарттың тұрақты сақтауынан деректерді шығарып алады және оны бастапқы нысанға түрлендіреді.
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 кодталған мекенжайға түрлендіреді.
CheckWitness(fromAcct) функциясының екі функциясы бар:
Ағымдағы функцияның шақырушысы fromAcct екенін тексеріңіз. Егер иә болса (яғни қолтаңбаны тексеру өтті), функция қайтарады.
Ағымдағы функцияны шақыратын нысан келісім-шарт екенін тексеріңіз. Егер бұл келісім-шарт болса және функция шарттан орындалса, онда тексеруден өтеді. Яғни, fromAcct 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 смарт келісімшарттарындағы активтерді тасымалдау жолын үйрену.
Сіз әзірлеушісіз бе? Біздің технологиялық қауымдастыққа қосылыңыз Арасындағы айырмашылық. Сондай-ақ, қараңыз Әзірлеушілер орталығы Онтология, сіз одан басқа құралдарды, құжаттаманы және т.б. таба аласыз.