
这是关于在Ontology区块链网络上使用Python创建智能合约的系列教程的第二部分。 在上一篇文章中,我们遇到了Ontology
Blockchain&Block API智能合约
API 。
今天,我们将讨论如何使用第二个模块-
存储API 。 存储API具有五个相关的API,这些API允许在区块链上的智能合约中添加,删除和修改持久性存储。
以下是这五个API的简要说明:

让我们仔细看看如何使用这五个API。
0.创建一个新的
SmartX合同
1.如何使用Storage API
GetContext和GetReadOnlyContext
GetContext和
GetReadOnlyContext获取在其中执行当前智能合约的上下文。 返回值是智能合约当前哈希值的倒数。 顾名思义,
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