如何在本体网络上编写智能Python合同。 第2部分:存储API

图片

这是关于在Ontology区块链网络上使用Python创建智能合约的系列教程的第二部分。 在上一篇文章中,我们遇到了Ontology Blockchain&Block API智能合约API

今天,我们将讨论如何使用第二个模块- 存储API 。 存储API具有五个相关的API,这些API允许在区块链上的智能合约中添加,删除和修改持久性存储。

以下是这五个API的简要说明:

图片

让我们仔细看看如何使用这五个API。

0.创建一个新的SmartX合同

1.如何使用Storage API


GetContext和GetReadOnlyContext


GetContextGetReadOnlyContext获取在其中执行当前智能合约的上下文。 返回值是智能合约当前哈希值的倒数。 顾名思义, GetReadOnlyContext采用只读模式上下文。 在下面的示例中,返回值是右上角显示的合同哈希的倒数。

图片


Put函数负责以字典的形式将数据存储在区块链上。 如图所示, Put具有三个参数。 GetContext获取当前正在运行的智能合约的上下文,key是保存数据所需的密钥值,value是需要保存的数据的值。 请注意,如果键值已经在存储库中,则该函数将更新其对应的值。

图片 hashrate-and-shares.ru/images/obzorontology/python/functionput.png

得到


Get函数负责通过键值读取当前区块链中的数据。 在下面的示例中,您可以在右侧的参数面板中填写键值以执行该功能,并读取与区块链中的键值对应的数据。

图片

删掉


删除功能负责通过键值删除区块链中的数据。 在下面的示例中,您可以在右侧的参数面板中填写键值以执行功能,并在区块链中删除与键值对应的数据。

图片

2.样本存储API代码


下面的代码给出了使用五个API的详细示例:GetContext,Get,Put,Delete和GetReadOnlyContext。 您可以尝试在SmartX中运行API数据。

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) 

后记


区块链存储是整个区块链系统的核心。 本体存储API易于使用,并为开发人员提供了便利。

另一方面,黑客攻击主要针对存储,例如,在上一篇文章中提到的安全风险,即存储注入攻击 ,开发人员在编写与存储关联的代码时必须特别注意安全性。 您可以在我们的github上找到完整的指南。

在下一篇文章中,我们将讨论如何使用Runtime API


这篇文章是由Hashrate&Shares专为OntologyRussia翻译的。 点击

您是开发人员吗? 加入我们的Discord技术社区。 另外,请查看本体开发人员中心,以获取更多工具,文档等。


开发人员的开放任务。 关闭任务-获得奖励。

申请本体学生人才计划

本体论


本体网站 -GitHub - Discord- 电报俄语 -Twitter - Reddit

Source: https://habr.com/ru/post/zh-CN475618/


All Articles