ProHoster > Blog > башкаруу > Онтология тармагында 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 и онтология.аралаш.онтология.иштөө убактысы. Онтология жолу жаңы кошулган 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 функциясы он алтылык сапты "саламатсызбы, сөздү" кайтарып берет жана аны бүт тармакка таркатат.
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
GetCurrentBlockHash API
GetCurrentBlockHash функциясы учурдагы блоктун хэштерин кайтарат.
Бул сериалдаштыруу жана сериялаштыруу функцияларынын жуптары. Сериялаштыруу функциясы объектти байт массивинин объектисине, ал эми 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 коддолгон дарегине айлантат.
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
Көбүрөөк маалыматты төмөнкү даректен тапса болот Guthub. Кийинки макалада биз тааныштырабыз Жергиликтүү APIOntology акылдуу келишимдеринде активдерди кантип өткөрүп берүүнү үйрөнүү.
Макала редакция тарабынан которулган Hashrate & Shares өзгөчө OntologyRussia үчүн.
Сиз иштеп чыгуучусузбу? Биздин технологиялык коомчулукка кошулуңуз келишпестиктерге. Ошондой эле, карап көрүңүз Иштеп чыгуучу борбор Онтология, сиз ал жерден көбүрөөк куралдарды, документтерди жана башка көп нерселерди таба аласыз.