Подгружаем

Ontology Как разработать смарт- контракт с помощью Python в сети Ontology.

Часть вторая.

«Все упомянутые логотипы и торговые марки являются собственностью соответствующих компаний.»
Оригинал текста. Перевод hashrate-and-shares.ru.

Предисловие.

В предыдущей статье мы познакомились с Blockchain & Block API смарт- контракта Ontology. Возможно, некоторые из вас уже пытались написать с помощью Python и запустить смарт- контракты в сети Ontology. Если у Вас возникли проблемы во время использования SmartX, Вы можете связаться с нами.

Сегодня мы обсудим, как использовать второй модуль— Storage API. Storage API имеет пять связанных API, которые позволяют добавление, удаление и изменения в постоянном хранилище в смарт- контрактах на блокчейне.

На страницу монеты.

Ниже краткое описание данных пяти API:

Название API Return Value Описание
Storage.GetContract StorageContext Контекст, в котором выполняется текущий смарт- контракт, обычно является текущим хешем смарт- контракта.
Storage.GetReadOnlyContext Read-only StorageContext То же самое, что и выше. Но контракт доступен только для чтения, что означает— он может только вызывать Get API.
Storage.Get (StorageContext, key) byte[] Читать данные в соответствии со значением ключа.
Storage.Put (StorageContext, key, value) void Сохранить данные.
Storage.Delete (StorageContext, key) void Удалить данные в соответствии со значением ключа.
Давайте более подробно разберём, как использовать данные пять API. Сначала создайте новый контракт SmartX, а затем выполните нижеперечисленные действия. Как обычно, в конце статьи мы представим ссылку на исходный код на Github.
EXMO affiliate program
Stex

1. Как использовать Storage API.

1.1 GetContext & GetReadOnlyContext.

GetContext и GetReadOnlyContext получают контекст, в котором выполняется текущий смарт- контракт. Return value является обратным текущему хешу смарт- контракта. Как следует из названия, GetReadOnlyContext берёт контекст режима только для чтения. В нижеприведённом примере return value является обратным хешу контракта, отображаемому в верхнем правом углу.

1.2 Put.

Функция Put является ответственной за хранение данных в блокчейне в форме словаря. Как показано, Put принимает три параметра. GetContext берёт контекст текущего выполняемого смарт- контракта, key— это значение ключа, которое необходимо, чтобы сохранить данные, а value— это значением данных, которые необходимо сохранить. Обратите внимание, если значение ключа уже находится в хранилище, то функция обновит его соответствующее значение.

1.3 Get.

Функция Get является ответственной за чтение данных в текущем блокчейне посредством значения ключа. В нижеприведённом примере Вы можете заполнить значение ключа в панели параметров справа, чтобы выполнить функцию и считать данные, соответствующие значению ключа в блокчейне.

1.4 Delete.

Функция Delete является ответственной за удаление данных в блокчейне посредством значения ключа. В нижеприведённом примере Вы можете заполнить значение ключа для выполнения функции в панели параметров справа и удалить данные, соответствующие значению ключа в блокчейне.

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. Оставайтесь с нами!

Вы разработчик? Присоединяйтесь к нашему техническому сообществу на Discord. Кроме того, загляните в Центр разработчиков на нашем сайте, там вы можете найти инструменты разработчика, документацию и многое другое.


EXMO affiliate program
Stex
Stex

Информация взята с сайта https://medium.com и других открытых источников.

08.11.2019

hashrate-and-shares.ru

hashrate-and-shares.ru не гарантирует точность представленных данных и не несет ответственности за любые торговые или иные решения. Информация, представленная на данном сайте, носит общий характер и не является финансовой рекомендацией или консультацией. Ничто на этом сайте не призывает вкладывать средства в тот или иной проект, ICO, пирамиды или что- то подобное, продавать или удерживать криптовалюты или иные активы. Торговля несет в себе большие риски, проконсультируйтесь с финансовым консультантом, любые действия производятся на Ваш страх и риск. Пожалуйста, ознакомьтесь c полным отказом от ответственности.