Как разработать смарт-контракт с помощью 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 | Удалить данные в соответствии со значением ключа. |
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. Кроме того, загляните в Центр разработчиков на нашем сайте, там вы можете найти инструменты разработчика, документацию и многое другое.
Об Ontology
- Обзор ONTO Wallet и стейкинга криптовалюты Ontology
- Графики изменения курса ONT (Ontology) в реальном времени к USD и USDT
- Ontology — пример развития на фоне мирового кризиса и криптозимы
- Как разработать WASM-контракт с помощью Rust в сети Ontology
- Как разработать смарт-контракт с помощью Python в сети Ontology. Часть третья
Новости Ontology
На сайте
- Около блокчейна
- Как разработать WASM-контракт с помощью Rust в сети Ontology
- Playboy и KEB Hana Bank стремятся в метавселенную The Sandbox
- Zcash: подробная информация о Zcash, курс ZEC онлайн к доллару и рублю
- Децентрализованное файловое хранилище Callisto
- Графики изменения курса эфириума в реальном времени к USD и USDT
- Что такое Pirl 2.0 и какие изменения произойдут в сети Pirl
- Все статьи раздела «Разбор рынка криптовалют»
- Графики изменения курса биткоина в реальном времени к USD и USDT
- Ask Me Anything with Alejo Chababo 14.04.2019
08.11.2019