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

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

这是关于在本体区块链网络上使用 Python 创建智能合约的一系列教育文章的第二部分。 在上一篇文章中我们认识了 区块链和区块 API 本体智能合约。

今天我们将讨论如何使用第二个模块—— 存储 API。 存储API有五个相关的API,允许对区块链上的智能合约中的持久存储进行添加、删除和更改。

下面简单介绍一下这五个API:

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

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

0. 让我们创建一个新合约 SmartX

1. 如何使用存储API

获取上下文和获取只读上下文

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

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

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

如何在本体网络上用Python编写智能合约。 第 2 部分:存储 APIhashrate-and-shares.ru/images/obzorontology/python/functionput.png

积极

功能 积极 负责通过key值读取当前区块链中的数据。 在下面的例子中,您可以在右侧的选项面板中填写键值来执行函数并读取区块链中键值对应的数据。

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

删除

功能 删除 负责通过键值删除区块链中的数据。 在下面的例子中,您可以在右侧的选项面板中填写该功能的键值,并删除区块链中该键值对应的数据。

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

2. 存储API代码示例

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

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上 在这里。

在下一篇文章中我们将讨论如何使用 运行时 API.

该文章由 Hashrate&Shares 的编辑特别为 OntologyRussia 翻译。 单击

你是开发者吗? 加入我们的技术社区 Discord. 另外,看看 开发者中心 Ontology,您可以在那里找到更多工具、文档等等。

为开发人员开放任务。 完成任务并获得奖励。

立即申请 本体人才计划学生

本体论

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

来源: habr.com

添加评论