这是关于在本体区块链网络上使用 Python 创建智能合约的一系列教育文章的第二部分。 在上一篇文章中我们认识了
今天我们将讨论如何使用第二个模块—— 存储 API。 存储API有五个相关的API,允许对区块链上的智能合约中的持久存储进行添加、删除和更改。
下面简单介绍一下这五个API:
让我们仔细看看如何使用这五个 API。
0. 让我们创建一个新合约
1. 如何使用存储API
获取上下文和获取只读上下文
获取上下文 и 获取只读上下文 获取当前智能合约执行的上下文。 返回值是当前智能合约哈希值的倒数。 顾名思义, 获取只读上下文 获取只读上下文。 在下面的示例中,返回值是右上角显示的合约哈希值的倒数。
把
功能 把 负责以字典的形式将数据存储在区块链上。 如图所示, 把 采用三个参数。 获取上下文 获取当前运行的智能合约的上下文,key是保存数据所需的key的值,value是需要保存的数据的值。 请注意,如果键的值已在存储中,则该函数将更新其相应的值。
积极
功能 积极 负责通过key值读取当前区块链中的数据。 在下面的例子中,您可以在右侧的选项面板中填写键值来执行函数并读取区块链中键值对应的数据。
删除
功能 删除 负责通过键值删除区块链中的数据。 在下面的例子中,您可以在右侧的选项面板中填写该功能的键值,并删除区块链中该键值对应的数据。
2. 存储API代码示例
下面的代码给出了五个 API 的使用的详细示例:GetContext、Get、Put、Delete 和 GetReadOnlyContext。 您可以尝试运行 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易于使用且对开发人员友好。
另一方面,存储是黑客攻击的重点,比如我们在之前的一篇文章中提到的安全威胁——
在下一篇文章中我们将讨论如何使用 运行时 API.
该文章由 Hashrate&Shares 的编辑特别为 OntologyRussia 翻译。
单击
你是开发者吗? 加入我们的技术社区
本体论
来源: habr.com