
这是先前在Ontology Medium博客上发布的官方教程
激动地将其发布给Habr读者。 随时提出任何相关问题,并为教程材料提出更好的格式
前言
在前面的第1部分中,我们介绍了本体智能合约的
Blockchain&Block API 。 今天,我们将讨论如何使用第二个模块:
Storage API 。 存储API具有五个相关的API,可以在区块链智能合约中添加,删除和更改持久性存储。 以下是这五个API的简要说明:

让我们仔细看看如何使用这五个API。 首先,创建一个新的合同
SmartX ,然后执行以下步骤。 通常,在文章结尾,我们将提供源代码的GitHub链接。
2如何使用存储API
2.1 GetContext和GetReadOnlyContext
GetContext和GetReadOnlyContext获取运行当前智能合约的上下文。 返回值与当前智能合约哈希相反。 顾名思义,
GetReadOnlyContext获取只读模式的上下文。 在下面的示例中,返回值与右上角显示的合同哈希相反。

2.2放
Put函数负责以字典的形式将数据存储在区块链上。 如图所示,Put接受三个参数。
GetContext获取当前运行的智能合约的上下文,键是需要存储数据的键值,值是需要存储的数据的值。 请注意,如果键值已在存储中,则该函数将更新其相应的值。

2.3获取
Get函数负责通过键值读取现有区块链中的数据。 在下面的示例中,您可以在右侧的参数面板中填写键值以运行该函数,并读取与区块链中的键值对应的数据:

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

3 Storage API示例代码
以下代码给出了使用五个API的详细示例:
GetContext; 得到 放 删掉 和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)
后记
区块链存储是整个区块链系统的核心。
Ontology Storage API的使用非常简单且对开发人员友好。另一方面,存储是黑客关注的焦点,例如我们在前一篇文章中提到的安全威胁:
存储注入攻击 ,开发人员在编写与存储相关的代码时必须特别注意代码安全性。
在
此处找到有关GitHub的详细教程。
在下一篇文章中,我们将讨论如何使用
Runtime API 。 敬请期待!
您是开发人员吗? 确保您已加入
Discord上的我们的技术社区。 另外,请访问我们网站上的
开发人员中心,在那里您可以找到开发人员工具,文档等。
在其他地方找到本体
本体网站GitHub /
不和谐电报(
英文 /
俄文 )
Twitter /
Reddit /