如何使用StorageAPI实现区块链智能合约中持久化存储的增删改查

 本期我们讨论如何使用第二个模块:Storage A     PI      (     存储      API)。Storage API 共有五个相关的 API,实现了对区块链智能合约中持久化存储的增删改查。这五个 API 的简单描述如下:

 如何使用StorageAPI实现区块链智能合约中持久化存储的增删改查_设计制作_存储技术

下面我们具体讲述一下这五个 API 的使用方法。在这之前,小伙伴们可以在本体智能合约开发工具 SmartX 中新建一个合约,跟着我们进行操作。同样,在文章最后我们将给出这次讲解的所有源代码以及视频讲解。

2. Storage API 使用方法

2.1 GetCon     te   xt & GetReadOnlyContext

GetContext & GetReadOnlyContext 获取当前智能合约运行的上下文环境,返回值为当前智能合约 hash 的反序。顾名思义,GetReadOnlyContext 获取的是只读模式的上下文环境。在下面的例子中,返回值是右上角显示的合约哈希的反序。

 如何使用StorageAPI实现区块链智能合约中持久化存储的增删改查_设计制作_存储技术

2.2 Put

Put 函数负责将数据以字典形式存入区块链。如图所示,Put 接受三个参数。其中,GetContext 获取当前智能合约的运行的上下文环境,key 是当前需要存储数据的 key 值,而 value 当前需要存储数据的 value 值。特别需要注意的是:如果 key 值在已经在存储中存在,那么该函数将更新其对应的 value 值。

 如何使用StorageAPI实现区块链智能合约中持久化存储的增删改查_设计制作_存储技术

2.3 Get

Get 函数负责通过 key 值来读取存在区块链中的数据。在下图的示例中,可以在右侧参数面板处填入 key 值运行函数,读取区块链中该 key 值对应的数据:

 如何使用StorageAPI实现区块链智能合约中持久化存储的增删改查_设计制作_存储技术

2.4 Delete

Delete 函数负责通过 key 值来删除存在区块链中的数据。在下图的示例中,可以在右侧参数面板处填入 key 值运行函数,删除区块链中该 key 值对应的数据:

 如何使用StorageAPI实现区块链智能合约中持久化存储的增删改查_设计制作_存储技术

3. Storage API 代码示例

下面的代码给出了 GetContext, Get, Put, Delete 和 GetReadOnlyContext 等五个 API 的详细使用示例,小伙伴们可以在 SmartX 试着运行一下。

f     rom   ontology.interop.System.Storage import GetContext, Get, Put, Delete, GetReadOnlyContextfrom ontology.interop.System.Run     ti   me import Not     if   y

def M     ai   n(opera  TI on,args):

if opera  TI on == ‘get_sc’:

return get_sc()

if opera  TI on == ‘get_read_only_sc’:

return get_read_only_sc()

if opera  TI on == ‘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) # 删除数据

4. 后记

区块链存储是区块链整个体系的核心,本体 Storage API 的使用方法非常简洁,对开发者非常友好。另一方面,存储是黑客攻击的重点,例如在之前的一期中我们提及的一种安全威胁:存储注入攻击 ,开发者在写存储相关代码时务必注意代码安全。
来源: 本体研究院

72
185
0
7

相关资讯

  1. 1、《济公3》丁汇宇谈剧中角色称裸戏应点到为止845
  2. 2、郑元畅晒与朱亚文李佳航聊天记录,三大男神各显神通宣传新剧1816
  3. 3、关晓彤新剧播出时间尴尬,又被质疑魔改,必扑无疑了?1775
  4. 4、《理想照耀中国》再曝新剧照,baby素颜,赵丽颖眼神爱了2739
  5. 5、林心如钟爱的减龄发型,章子怡勇敢弃用,聘请顶级团队做造型2126
  6. 6、张馨予晒结婚证公布婚讯,老公是武警指战员,称嫁给他是因为爱情4155
  7. 7、黄觉万茜二度合作,新片靠实力入围东京电影节_兔子3443
  8. 8、兔圈顶流来了!《比得兔2:逃跑计划》确认引进2366
  9. 9、18年后华语片再入围奥斯卡:《少年的你》,如此能打4024
  10. 10、景甜和许魏洲新剧《流光之城》发布了海报,cp感能get到吗?2851
全部评论(0)
我也有话说
0
收藏
点赞
顶部