ProHoster > блог > адміністраванне > Як напісаць смарт-кантракт на Python у сетцы Ontology. Частка 2: Storage API
Як напісаць смарт-кантракт на Python у сетцы Ontology. Частка 2: Storage API
Гэта другая частка з серыі навучальных артыкулаў аб стварэнні смарт-кантрактаў на Python у блокчейн сеткі Ontology. У папярэднім артыкуле мы пазнаёміліся з Blockchain & Block API смарт-кантракта Ontology.
Сёння мы абмяркуем, як выкарыстоўваць другі модуль- API захоўвання. Storage API мае пяць звязаных API, якія дазваляюць даданне, выдаленне і змены ў пастаянным сховішчы ў смарт-кантрактах на блокчейне.
Ніжэй кароткае апісанне дадзеных пяці API:
Давайце больш падрабязна разбяром, як выкарыстоўваць гэтыя пяць API.
GetContext и GetReadOnlyContext атрымліваюць кантэкст, у якім выконваецца бягучы смарт-кантракт. Return value з'яўляецца зваротным бягучаму хешу смарт-кантракту. Як вынікае з назвы, GetReadOnlyContext бярэ кантэкст рэжыму толькі для чытання. У ніжэйпрыведзеным прыкладзе return value з'яўляецца зваротным хешу кантракта, які адлюстроўваецца ў верхнім правым куце.
Ставіць
Функцыя Ставіць з'яўляецца адказнай за захоўванне дадзеных у блокчейне ў форме слоўніка. Як паказана, Ставіць прымае тры параметры. GetContext бярэ кантэкст бягучага выкананага смарт-кантракту, key-гэта значэнне ключа, якое неабходна, каб захаваць дадзеныя, а value-гэта значэннем дадзеных, якія неабходна захаваць. Звярніце ўвагу, калі значэнне ключа ўжо знаходзіцца ў сховішчы, то функцыя абновіць яго адпаведнае значэнне.
Функцыя Атрымліваць з'яўляецца адказнай за чытанне дадзеных у бягучым блокчейне пасродкам значэння ключа. У ніжэйпрыведзеным прыкладзе Вы можаце запоўніць значэнне ключа ў панэлі параметраў справа, каб выканаць функцыю і лічыць дадзеныя, якія адпавядаюць значэнню ключа ў блокчейне.
Выдаляць
Функцыя Выдаляць з'яўляецца адказнай за выдаленне дадзеных у блокчейне пасродкам значэння ключа. У ніжэйпрыведзеным прыкладзе Вы можаце запоўніць значэнне ключа для выканання функцыі ў панэлі параметраў справа і выдаліць дадзеныя, якія адпавядаюць значэнню ключа ў блокчейне.
2. Прыклад кода Storage API
Ніжэй прыведзены код дае дэталёвы прыклад выкарыстання пяці API: GetContext, Get, Put, Delete і GetReadOnlyContext. Вы можаце паспрабаваць запусціць дадзеныя API у SmartX.
from ontology.interop.System.Storage import GetContext, Get, Put, Delete, GetReadOnlyContext
from ontology.interop.System.Runtime import Notify
def Main(operation,args):
if operation == 'get_sc':
return get_sc()
if operation == 'get_read_only_sc':
return get_read_only_sc()
if operation == 'get_data':
key=args[0]
return get_data(key)
if operation == 'save_data':
key=args[0]
value=args[1]
return save_data(key, value)
if operation == 'delete_data':
key=args[0]
return delete_data(key)
return False
def get_sc():
return GetContext()
def get_read_only_sc():
return GetReadOnlyContext()
def get_data(key):
sc=GetContext()
data=Get(sc,key)
return data
def save_data(key, value):
sc=GetContext()
Put(sc,key,value)
def delete_data(key):
sc=GetContext()
Delete(sc,key)
пасляслоўе
Блокчейн-сховішча з'яўляецца ядром усёй блокчейн-сістэмы. Ontology Storage API просты ва ўжыванні і зручны для распрацоўшчыкаў.
З іншага боку, на сховішча сфакусаваныя напады хакераў, напрыклад, пагроза бяспецы, аб якой мы згадвалі ў адной з папярэдніх артыкулаў. storage injection attack, распрацоўшчыкі абавязаны надаваць асаблівую ўвагу бяспекі пры напісанні кода, які звязаны са сховішчам. Вы можаце знайсці поўнае кіраўніцтва на нашым GitHub тут.
У наступным артыкуле мы абмяркуем як выкарыстоўваць Runtime API.
Артыкул быў перакладзены рэдакцыяй Hashrate&Shares спецыяльна для OntologyRussia. клік
Вы распрацоўшчык? Далучайцеся да нашай тэхнічнай супольнасці на дысананс. Акрамя таго, зазірніце ў Цэнтр распрацоўшчыкаў Ontology, там можна знайсці больш інструментаў, дакументацыю і многае іншае.