
Това е третата част от серията обучителни статии за създаване на смарт договори на Python в блокчейн мрежата Ontology. В предишните статии се запознахме с
- .
Сега, когато имате представа как да извикате съответното API за постоянно хранилище при разработката на смарт договор с помощта на Python в мрежата Ontology, нека да преминем към запознаването с Runtime API (API за изпълнение на договори). API за изпълнение има 8 свързани API, които предоставят общи интерфейси за изпълнение на договора и помагат на разработчиците да получават, преобразуват и проверяват данни.
По-долу е кратко описание на тези 8 API:

Нека разгледаме по-подробно как да използваме тези 8 API. Преди това можете да създадете нов договор в инструмента за разработка на смарт договори Ontology и да следвате следните инструкции.
Как да използвате API за изпълнение
Съществуват два начина за импорт на 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, GetCurrentBlockHashAPI Notify
Функцията Notify предава събитие в цялата мрежа. В следващия пример функцията Notify ще върне hex-стринг "hello world" и ще я предаде в мрежата.
from ontology.interop.System.Runtime import Notify
def demo():
Notify("hello world")Можете да видите това в логовете:

API GetTime
Функцията GetTime връща текущата времева отметка, която предоставя Unix времето, в което функцията е била извикана. Единицата за измерване е секунда.
from ontology.interop.System.Runtime import GetTime
def demo():
time=GetTime()
return time # return a uint numAPI GetCurrentBlockHash
Функцията GetCurrentBlockHash връща хеш на текущия блок.
from ontology.interop.Ontology.Runtime import GetCurrentBlockHash
def demo():
block_hash = GetCurrentBlockHash()
return block_hashSerialize и Deserialize
Това е двойка функции за сериализация и десериализация. Функцията Serialize преобразува обект в обект bytearray, а функцията Deserialize преобразува bytearray обратно в оригиналния обект. Примерният код по-долу осъществява преобразуване на входящите параметри и ги запазва в постоянното хранилище на договора. Той също така извлича данни от постоянното хранилище на договора и ги преобразува обратно в оригиналния обект.
от ontology.interop.System.Runtime импортировать GetTime, CheckWitness, Log, Notify, Serialize, Deserialize
от ontology.interop.System.Storage импортировать Put, Get, GetContext
def Main(operation, args):
ако operation == 'serialize_to_bytearray':
data = args[0]
return serialize_to_bytearray(data)
ако 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 dataBase58ToAddress и AddressToBase58
Тази двойка функции преобразува адреси. Функцията Base58ToAddress преобразува кодиран адрес base58 в адрес в формат bytearray, а AddressToBase58 преобразува адрес в формат bytearray в кодиран адрес base58.
от ontology.interop.Ontology.Runtime импортировать Base58ToAddress, AddressToBase58
def demo():
base58_addr="AV1GLfVzw28vtK3d1kVGxv5xuWU59P6Sgn"
addr=Base58ToAddress(base58_addr)
Log(addr)
base58_addr=AddressToBase58(addr)
Log(base58_addr)CheckWitness
Функцията CheckWitness(fromAcct) има две функционалности:
- Потвърдете, ако обектът, извикващ текущата функция, е fromAcct. Ако да (т.е. проверката за подпис е премината), функцията връща.
- Проверете, ако обектът, извикващ текущата функция, е контракт. Ако е контракт и функцията се извършва от контракта, то проверката е премината. Тоест, потвърдете, ако fromAcct е стойността, върната от GetCallingScriptHash(). Функцията GetCallingScriptHash() може да вземе хеш стойността на текущия смарт контракт.
GetCallingScriptHash():
Научете повече на
от ontology.interop.System.Runtime импортировать CheckWitness
от ontology.interop.Ontology.Runtime импортировать Base58ToAddress
def demo():
addr=Base58ToAddress("AW8hN1KhHE3fLDoPAwrhtjD1P7vfad3v8z")
res=CheckWitness(addr)
return resПовече информация можете да намерите на . В следващата статия ще представим Native API, за да се научите как да прехвърляте активи в смарт контракта на Ontology.
Статията беше преведена от редакцията специално за OntologyRussia.
Вие разработчик? Присъединете се към нашето техническо общество на . Освен това, погледнете в Ontology, там можете да намерите повече инструменти, документация и много други.
Завършете задачата — получете награда.
за програмата за таланти на Ontology за студенти
Ontology
— — — — —
Източник: habr.com
