ProHoster > блог > адміністраванне > Як напісаць смарт-кантракт на Python у сетцы Ontology. Частка 3: Runtime API
Як напісаць смарт-кантракт на Python у сетцы Ontology. Частка 3: Runtime API
Гэта 3-я частка з серыі навучальных артыкулаў аб стварэнні смарт-кантрактаў на Python у блокчейн сеткі Ontology. У папярэдніх артыкулах мы пазнаёміліся з
Цяпер, калі Вы маеце ўяўленне аб тым, як выклікаць прыдатнае API для пастаяннага сховішча пры распрацоўцы смарт-кантракту з дапамогай Python у сетцы Ontology, давайце пяройдзем да знаёмства з тым, як выкарыстоўваць. Runtime API (Contract Execution API). Runtime API мае 8 звязаных API, якія падаюць агульныя інтэрфейсы для выканання кантракту і дапамагаюць распрацоўнікам атрымліваць, пераўтвараць і правяраць дадзеныя.
Ніжэй кароткае апісанне дадзеных 8 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
Notify API
Функцыя Notify транслюе падзею па ўсёй сетцы. У ніжэйпрыведзеным прыкладзе функцыя Notify верне hex- радок "hello word" і перадасць яго па ўсёй сетцы.
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
Гэта пара функцый серыялізацыі і дэсерыялізацыі. Функцыя Serialize пераўтварае аб'ект у аб'ект bytearray, а функцыя Deserialize пераўтварае bytearray у першапачатковы аб'ект. Ніжэй прыведзены ўзор кода ажыццяўляе пераўтварэнне ўваходных параметраў і захоўвае іх у пастаянным сховішчы кантракту. Ён таксама здабывае дадзеныя са сталага сховішча кантракту і пераўтворыць іх у першапачатковы аб'ект.
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 пераўтворыць адрас у форме bytearray у закадаваны адрас 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 API, Каб асвоіць, як перадаваць актывы ў смарт-кантрактах Ontology.
Артыкул быў перакладзены рэдакцыяй Hashrate&Shares спецыяльна для OntologyRussia.
Вы распрацоўшчык? Далучайцеся да нашай тэхнічнай супольнасці на дысананс. Акрамя таго, зазірніце ў Цэнтр распрацоўшчыкаў Ontology, там можна знайсці больш інструментаў, дакументацыю і многае іншае.