首页> 中国专利> 一种基于区块链智能合约的医疗数据资产发布管理的方法和存储设备

一种基于区块链智能合约的医疗数据资产发布管理的方法和存储设备

摘要

本发明涉及区块链技术领域,特别涉及一种基于区块链智能合约的医疗数据资产发布管理的方法和存储设备。所述一种基于区块链智能合约的医疗数据资产发布管理的方法,包括步骤:预定义不同操作的逻辑条件,所述不同操作包括以下中的一种或多种:授权、转让、废止;响应医疗数据资产发布操作指令,调用逻辑条件注册函数进行所述逻辑条件发布;调用数据资产注册函数进行医疗数据资产发布。上述步骤,通过逻辑条件机制简易定制授权、转让和废止行为模式,提供可拓展的逻辑条件,支持更多不同的个性化操作,且成本低。

著录项

  • 公开/公告号CN112700852A

    专利类型发明专利

  • 公开/公告日2021-04-23

    原文格式PDF

  • 申请/专利权人 福州数据技术研究院有限公司;

    申请/专利号CN202110017069.5

  • 发明设计人 闾海荣;周容辰;李艳;石顺中;

    申请日2021-01-07

  • 分类号G16H40/20(20180101);G06Q20/38(20120101);G06F16/903(20190101);

  • 代理机构35219 福州市景弘专利代理事务所(普通合伙);

  • 代理人魏小霞;林祥翔

  • 地址 350000 福建省福州市长乐区数字福建产业园东湖路33号6#楼

  • 入库时间 2023-06-19 10:43:23

说明书

技术领域

本发明涉及区块链技术领域,特别涉及一种基于区块链智能合约的医疗数据资产发布管理的方法和存储设备。

背景技术

医疗数据作为重要的数据资产类型,涉及大量个人隐私,在安全可信的区块链平台上进行认证和共享交易是必然趋势。同时,随着数据主权越来越被大众和法律重视,传统的第三方数据托管将逐渐演化为数据主体自主掌控,医疗数据的采集和使用必须经过患者主动授权。两种因素共同促使大众直接参与区块链医疗数据共享交易,发布和管理自己的医疗数据资产。

当前区块链系统基本依托图灵完备的智能合约机制来实现业务需求,提供可信的执行结果,但是,智能合约的编写难度较高,风险较大,需要对区块链原理清楚明晰的专业人员,以保证其安全性和可靠性。由于智能合约编写漏洞导致的区块链安全事故比比皆是。

因此,通过编写智能合约实现医疗数据资产发布和管理给不从事区块链的普通患者带来了极高的技术门槛和极大的隐私泄露风险。一种解决方式是咨询和雇佣专业机构和人员,虽然可以有效地降低风险,但也造成了额外的成本。另一种解决方式是直接调用区块链平台提供基础的资产上链和授权等智能合约,这种固化的智能合约只能完成简单的资产发布和授权操作,不满足复杂多变的用户需求,丧失了智能合约的定制化和自动化能力,难以适用实际应用场景。这使得区块链难以介入和普及日常医疗数据共享交易场景,无法发挥数据资产保护作用,大众只能继续依赖第三方的信誉和服务,无法安全行使自己的医疗数据主权。

发明内容

为此,需要提供一种基于区块链智能合约的医疗数据资产发布管理的方法,用以解决现有区块链在医疗数据领域所支持的操作过于单一,而如果要实现更多的操作,对使用者而言成本高的技术问题,具体技术方案如下:

一种基于区块链智能合约的医疗数据资产发布管理的方法,包括步骤:

预定义不同操作的逻辑条件,所述不同操作包括以下中的一种或多种:授权、转让、废止;

响应医疗数据资产发布操作指令,调用逻辑条件注册函数进行所述逻辑条件发布;

调用数据资产注册函数进行医疗数据资产发布。

进一步的,所述“预定义不同操作的逻辑条件”,具体还包括步骤:

确认数据类型,根据所述数据类型编写不同操作的逻辑条件。

进一步的,所述“调用逻辑条件注册函数进行所述逻辑条件发布”,具体还包括步骤:

逻辑条件注册函数根据不同操作的逻辑条件生成逻辑条件哈希地址,将所述不同操作的逻辑条件和所述逻辑条件哈希地址以逻辑条件资产的形式上链,并返回逻辑条件哈希地址;

所述“调用数据资产注册函数进行医疗数据资产发布”,具体还包括步骤:

数据资产注册函数根据元数据和逻辑条件哈希地址生成数据资产哈希地址,上链数据资产并返回数据资产哈希地址;

所述数据资产包括以下中的一种或多种:自验证的数据资产哈希地址、元数据、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性、失效时间、缓存数据。

进一步的,还包括步骤:

响应医疗数据资产查询操作指令,调用数据资产键值查询函数进行数据资产查询,调用逻辑条件键值查询函数进行逻辑条件查询;

或响应医疗数据资产授权操作指令,调用数据资产授权函数;

或响应医疗数据资产转让操作指令,调用数据资产转让函数;

或响应医疗数据资产废止操作指令,调用数据资产废止函数;

或响应医疗数据资产逻辑条件变更操作指令,调用数据资产逻辑条件变更函数;

或响应医疗数据资产授权确认指令,调用授权资产键值查询函数进行授权资产查询。

进一步的,所述“逻辑条件注册函数根据不同操作的逻辑条件生成逻辑条件哈希地址”,具体还包括步骤:

对不同操作的逻辑条件进行二进制编码后拼接求哈希值,取所述哈希值前预设个字节生成逻辑条件哈希地址。

为解决上述技术问题,还提供了一种存储设备,具体技术方案如下:

一种存储设备,其中存储有指令集,所述指令集用于执行:

预定义不同操作的逻辑条件,所述不同操作包括以下中的一种或多种:授权、转让、废止;

响应医疗数据资产发布操作指令,调用逻辑条件注册函数进行所述逻辑条件发布;

调用数据资产注册函数进行医疗数据资产发布。

进一步的,所述指令集还用于执行:所述“预定义不同操作的逻辑条件”,具体还包括步骤:

确认数据类型,根据所述数据类型编写不同操作的逻辑条件。

进一步的,所述指令集还用于执行:所述“调用逻辑条件注册函数进行所述逻辑条件发布”,具体还包括步骤:

逻辑条件注册函数根据不同操作的逻辑条件生成逻辑条件哈希地址,将所述不同操作的逻辑条件和所述逻辑条件哈希地址以逻辑条件资产的形式上链,并返回逻辑条件哈希地址;

所述“调用数据资产注册函数进行医疗数据资产发布”,具体还包括步骤:

数据资产注册函数根据元数据和逻辑条件哈希地址生成数据资产哈希地址,上链数据资产并返回数据资产哈希地址;

所述数据资产包括以下中的一种或多种:自验证的数据资产哈希地址、元数据、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性、失效时间、缓存数据。

进一步的,所述指令集还用于执行:

响应医疗数据资产查询操作指令,调用数据资产键值查询函数进行数据资产查询,调用逻辑条件键值查询函数进行逻辑条件查询;

或响应医疗数据资产授权操作指令,调用数据资产授权函数;

或响应医疗数据资产转让操作指令,调用数据资产转让函数;

或响应医疗数据资产废止操作指令,调用数据资产废止函数;

或响应医疗数据资产逻辑条件变更操作指令,调用数据资产逻辑条件变更函数;

或响应医疗数据资产授权确认指令,调用授权资产键值查询函数进行授权资产查询。

进一步的,所述指令集还用于执行:所述“逻辑条件注册函数根据不同操作的逻辑条件生成逻辑条件哈希地址”,具体还包括步骤:

对不同操作的逻辑条件进行二进制编码后拼接求哈希值,取所述哈希值前预设个字节生成逻辑条件哈希地址。

本发明的有益效果是:通过预定义不同操作的逻辑条件,所述不同操作包括以下中的一种或多种:授权、转让、废止;响应医疗数据资产发布操作指令,调用逻辑条件注册函数进行所述逻辑条件发布;调用数据资产注册函数进行医疗数据资产发布。上述步骤,通过逻辑条件机制简易定制授权、转让和废止行为模式,提供可拓展的逻辑条件,支持更多不同的个性化操作,且成本低。

附图说明

图1为具体实施方式所述一种基于区块链智能合约的医疗数据资产发布管理的方法的流程图;

图2为具体实施方式所述资产与智能合约函数关系示意图;

图3为具体实施方式所述一个逻辑条件示例的匹配和验证示意图;

图4为具体实施方式所述一种存储设备的模块示意图。

附图标记说明:

400、存储设备。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

请参阅图1至图3,在本实施方式中,所述一种基于区块链智能合约的医疗数据资产发布管理的方法可应用在一种存储设备上,所述存储设备包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备等。具体技术方案如下:

步骤S101:预定义不同操作的逻辑条件,所述不同操作包括以下中的一种或多种:授权、转让、废止。

在本实施方式中,逻辑条件是一段JSON格式的文本,记录了触发操作的条件,授权、转让和废止智能合约均需要检查和验证逻辑条件。在进行数据资产的发布操作时,将对应于授权、转让和废止操作的三个逻辑条件同时输入,存储在区块链中。资产上链后,可通过变更操作,将某医疗数据资产的三个逻辑条件进行替换。逻辑条件所使用的条件语句需要预先定义,并可在本实施方式以外继续扩展,良好的设计和定义将可满足复杂的应用场景需求。以下会一一展开说明。

其中所述“预定义不同操作的逻辑条件”,具体还包括步骤:确认数据类型,根据所述数据类型编写不同操作的逻辑条件。

步骤S102:响应医疗数据资产发布操作指令,调用逻辑条件注册函数进行所述逻辑条件发布。具体还包括步骤:

逻辑条件注册函数根据不同操作的逻辑条件生成逻辑条件哈希地址,将所述不同操作的逻辑条件和所述逻辑条件哈希地址以逻辑条件资产的形式上链,并返回逻辑条件哈希地址。

步骤S103:调用数据资产注册函数进行医疗数据资产发布。具体还包括步骤:数据资产注册函数根据元数据和逻辑条件哈希地址生成数据资产哈希地址,上链数据资产并返回数据资产哈希地址;所述数据资产包括以下中的一种或多种:自验证的数据资产哈希地址、元数据、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性、失效时间、缓存数据。

通过预定义不同操作的逻辑条件,所述不同操作包括以下中的一种或多种:授权、转让、废止;响应医疗数据资产发布操作指令,调用逻辑条件注册函数进行所述逻辑条件发布;调用数据资产注册函数进行医疗数据资产发布。上述步骤,通过逻辑条件机制简易定制授权、转让和废止行为模式,提供可拓展的逻辑条件,支持更多不同的个性化操作,且成本低。

在本实施方式中,链上资产包括逻辑条件资产、数据资产和授权资产。逻辑条件资产存储了自验证的逻辑条件哈希地址和对应于授权、转让和废止的三个逻辑条件;数据资产包括了以下中的一种或多种:自验证的数据资产哈希地址、元数据、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性和失效时间等信息,以及缓存数据;授权资产存储了某数据资产对特定用户的授权信息,包括自验证的授权资产哈希地址、数据资产哈希地址、授权对象、授权起始时间和有效期等信息。

智能合约实现以下函数:逻辑条件注册、数据资产注册、数据资产授权、数据资产转让、数据资产废止、数据资产逻辑条件变更、逻辑条件键值查询、数据资产键值查询、授权资产键值查询、数据资产总查询、授权资产关联查询。故进一步的,还包括步骤:

响应医疗数据资产查询操作指令,调用数据资产键值查询函数进行数据资产查询,调用逻辑条件键值查询函数进行逻辑条件查询;

或响应医疗数据资产授权操作指令,调用数据资产授权函数;

或响应医疗数据资产转让操作指令,调用数据资产转让函数;

或响应医疗数据资产废止操作指令,调用数据资产废止函数;

或响应医疗数据资产逻辑条件变更操作指令,调用数据资产逻辑条件变更函数;

或响应医疗数据资产授权确认指令,调用授权资产键值查询函数进行授权资产查询。具体可如下:

逻辑条件注册输入授权、转让和废止的三个逻辑条件,生成逻辑条件哈希地址,以逻辑条件资产的形式上链,返回逻辑条件哈希地址;数据资产注册输入元数据、逻辑条件哈希地址等信息,生成数据资产哈希地址,初始化缓存数据,以数据资产的形式上链,返回数据资产哈希地址;数据资产授权输入数据资产哈希地址、授权描述、授权对象、有效期等信息,更新对应数据资产的缓存数据,生成授权资产哈希地址,以授权资产的形式上链,返回授权资产哈希地址;数据资产转让输入数据资产哈希地址、转让描述、转让对象等信息,更新对应数据资产的缓存数据或所有者;数据资产废止输入数据资产哈希地址、废止描述等信息,将对应数据资产的有效性设为否,更新数据资产的失效时间;数据资产逻辑条件变更输入数据资产哈希地址、逻辑条件哈希地址等信息,更新对应数据资产的逻辑条件;逻辑条件键值查询输入逻辑条件哈希地址,返回对应的授权、转让和废止三个逻辑条件;数据资产键值查询输入数据资产哈希地址,返回对应数据资产信息;授权资产键值查询输入授权资产哈希地址,返回对应授权资产信息;数据资产总查询返回所有有效的数据资产哈希地址及其部分元数据;授权资产关联查询输入数据资产哈希地址、特定时刻,返回对应数据资产在特定时刻所有有效的授权资产哈希地址及其授权对象。

其中图2展示了资产和智能合约函数关系,圆形表示资产,圆框表示智能合约函数。

进一步的,所述“逻辑条件注册函数根据不同操作的逻辑条件生成逻辑条件哈希地址”,具体还包括步骤:

对不同操作的逻辑条件进行二进制编码后拼接求哈希值,取所述哈希值前预设个字节生成逻辑条件哈希地址。具体可如下:

逻辑条件资产关键字为逻辑条件哈希地址,值存储了对应于授权、转让和废止的三个逻辑条件。这三个逻辑条件进行二进制编码后拼接求哈希值,然后取前20字节生成逻辑条件哈希地址。逻辑条件哈希地址对该地址存储的三个逻辑条件进行了自验证:获得三个逻辑条件后可重新生成哈希地址与对应的真实哈希地址进行匹配校对,如果两者不相符,则该逻辑条件资产无效。

数据资产关键字为数据资产哈希地址,值存储了数据类别、数据哈希摘要、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性和失效时间,以及特定逻辑条件产生的缓存数据。数据类别、数据哈希摘要、数据主体、注册时间进行二进制编码后拼接求哈希值,然后取前20字节生成数据资产哈希地址。数据资产哈希地址对该地址存储的数据资产固定信息进行了自验证:获得数据类别、数据哈希摘要、数据主体、注册时间后可重新生成哈希地址与对应的真实哈希地址进行匹配校对,如果两者不相符,则该数据资产无效。

授权资产关键字为授权资产哈希地址,值存储了数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期。数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期进行二进制编码后拼接求哈希值,然后取前20字节生成授权资产哈希地址。授权资产哈希地址对该地址存储的授权资产值信息进行了自验证:获得数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期后可重新生成哈希地址与对应的真实哈希地址进行匹配校对,如果两者不相符,则该授权资产无效。

以下对智能合约函数进行描述,当某步骤执行失败,默认报错,终止智能合约调用并进行状态回滚。

逻辑条件注册函数输入授权、转让和废止的三个逻辑条件,返回逻辑条件哈希地址。步骤如下:

1)如果三个逻辑条件总长度超过“逻辑条件最大字节”,报错并终止执行。

2)三个逻辑条件分别进行字符串转换二进制。

3)拼接三个二进制编码,求拼接后的SHA256哈希值,取哈希值前20字节,使用Base58编码获得哈希地址。

4)以“逻辑条件”(表示逻辑条件资产的静态变量)和哈希地址创建组合键。

5)以组合键查询当前区块链状态是否存在该资产。

6)如果不存在该资产,以组合键为键,以授权、转让和废止逻辑条件为值上链。

数据资产注册函数输入数据类别、数据哈希摘要、逻辑条件哈希地址,返回数据资产哈希地址。步骤如下:

1)获取交易创建者ID,数据主体取值交易创建者ID,所有者取值交易创建者ID。(由于数据主权,医疗数据的数据主体是天然的资产所有者和控制方,默认由数据主体发布并拥有数据资产)

2)获取交易时间戳,注册时间取值交易时间戳。

3)有效性取值真,失效时间取值空。

4)缓存数据取值空。

5)数据类别、数据哈希摘要、数据主体、注册时间分别按类型转换或解码二进制。

6)拼接四个二进制编码,求拼接后的SHA256哈希值,取哈希值前20字节,使用Base58编码获得哈希地址。

7)以“数据资产”(表示医疗数据资产的静态变量)和哈希地址创建组合键。

8)以组合键查询当前区块链状态是否存在该资产。

9)如果不存在该资产,以组合键为键,以数据类别、数据哈希摘要、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性、失效时间和缓存数据为值上链。

数据资产授权函数输入数据资产哈希地址、授权描述、授权对象,返回授权资产哈希地址。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要逻辑条件哈希地址、有效性和缓存数据。

3)如果有效性为假,报错并终止执行。

4)以“逻辑条件”(表示逻辑条件资产的静态变量)和逻辑条件哈希地址创建逻辑条件组合键。

5)以逻辑条件组合键查询三个逻辑条件,特别的,需要授权逻辑条件。

6)调用逻辑条件判断函数,输入缓存数据、授权逻辑条件和授权描述,获取是否成功、是否缓存、缓存数据和描述信息,特别的,描述信息具体为授权类别,授权起始时间和有效期。

7)若是否成功为假,报错并终止执行。

8)若是否缓存为真,更新缓存数据,并以数据资产组合键更新数据资产,结束函数执行。

9)授权类别、授权对象、授权起始时间和有效期分别按类型转换二进制。

10)拼接四个二进制编码,求拼接后的SHA256哈希值,取哈希值前20字节,使用Base58编码获得哈希地址。

11)以“授权资产”(表示授权资产的静态变量)和哈希地址创建组合键。

12)以组合键查询当前区块链状态是否存在该资产。

13)如果不存在该资产,以组合键为键,以授权类别、授权对象、授权起始时间和有效期为值上链。

14)以数据资产组合键更新数据资产,即更新缓存数据。

数据资产转让函数输入数据资产哈希地址、转让描述、转让对象。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要所有者、逻辑条件哈希地址、有效性和缓存数据。

3)如果有效性为假,报错并终止执行。

4)以“逻辑条件”(表示逻辑条件资产的静态变量)和逻辑条件哈希地址创建逻辑条件组合键。

5)以逻辑条件组合键查询三个逻辑条件,特别的,需要转让逻辑条件。

6)调用逻辑条件判断函数,输入缓存数据、转让逻辑条件和转让描述,获取是否成功、是否缓存、缓存数据和描述信息,特别的,描述信息为空。

7)若是否成功为假,报错并终止执行。

8)若是否缓存为真,更新缓存数据,并以数据资产组合键更新数据资产,结束函数执行。

9)所有者设为转让对象,并以数据资产组合键更新数据资产,包括缓存数据。

数据资产废止函数输入数据资产哈希地址、废止描述。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要所有者、逻辑条件哈希地址、有效性和缓存数据。

3)如果有效性为假,结束函数执行。

4)以“逻辑条件”(表示逻辑条件资产的静态变量)和逻辑条件哈希地址创建逻辑条件组合键。

5)以逻辑条件组合键查询三个逻辑条件,特别的,需要废止逻辑条件。

6)调用逻辑条件判断函数,输入缓存数据、废止逻辑条件和废止描述,获取是否成功、是否缓存、缓存数据和描述信息,特别的,描述信息为空。

7)若是否成功为假,报错并终止执行。

8)若是否缓存为真,更新缓存数据,并以数据资产组合键更新数据资产,结束函数执行。

9)获取交易时间戳,失效时间设为交易时间戳,并以数据资产组合键更新数据资产,包括缓存数据。

数据资产逻辑条件变更函数输入数据资产哈希地址、逻辑条件哈希地址。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要所有者、逻辑条件哈希地址、有效性和缓存数据。

3)如果有效性为假,报错并终止执行。

4)获取交易创建者ID,若与所有者不符,报错并终止执行。

5)逻辑条件哈希地址更新为输入的逻辑条件哈希地址。

6)缓存数据设为空。

7)以数据资产组合键更新数据资产。

逻辑条件键值查询函数输入逻辑条件哈希地址,返回对应的授权、转让和废止三个逻辑条件。步骤如下:

1)以“逻辑条件”(表示逻辑条件资产的静态变量)和逻辑条件哈希地址创建逻辑条件组合键。

2)以逻辑条件组合键查询三个逻辑条件。

数据资产键值查询函数输入数据资产哈希地址,返回数据类别、数据哈希摘要、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性和失效时间。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据类别、数据哈希摘要、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性和失效时间。缓存数据作为内部数据,无法查询。

授权资产键值查询函数输入授权资产哈希地址,返回数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期。步骤如下:

1)以“授权资产”(表示授权资产的静态变量)和哈希地址创建授权资产组合键。

2)以授权资产组合键查询数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期。

3)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

4)以数据资产组合键查询数据资产信息,特别的,需要有效性。

5)如果有效性为假,报错并终止执行。

数据资产总查询函数返回所有有效的数据资产哈希地址及其数据类别和注册时间。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)部分查询获取所有数据资产的组合键。

2)新建集合,逐一以组合键查询数据资产相关信息,如果其中有效性为真,则分离组合键获得数据资产哈希地址,并将数据资产哈希地址及其数据类别和注册时间加入集合。

3)集合内数据即为所有有效的数据资产哈希地址及其数据类别和注册时间。

授权资产关联查询函数输入数据资产哈希地址、特定时刻,返回对应数据资产在特定时刻所有有效的授权资产哈希地址及其授权对象。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要有效性。

3)如果有效性为假,报错并终止执行。

4)以“授权资产”(表示授权资产的静态变量)部分查询获取所有授权资产的组合键。

5)新建集合,逐一以组合键查询授权资产相关信息,如果其中数据资产哈希地址与输入相符且授权起始日期小于等于特定时刻且授权起始日期加有效期大于等于特定时刻,则分离组合键获得授权资产哈希地址,并将授权资产哈希地址及其授权对象加入集合。

6)集合内数据即为对应数据资产在特定时刻所有有效的授权资产哈希地址及其授权对象。

以下对整个医疗数据资产发布和管理操作流程进行进一步描述:

医疗数据资产发布操作如下:

1)确认数据类型。

2)设计和编写授权、转让和废止逻辑条件。

3)调用逻辑条件注册函数,获得逻辑条件哈希地址。

4)对医疗数据进行二进制编码,并求取SHA256哈希值,获得数据摘要。

5)调用数据资产注册函数,获得数据资产哈希地址。

医疗数据资产查询操作如下:

1)确认数字资产哈希地址。

2)调用数据资产键值查询函数,获得数据资产信息和逻辑条件哈希地址。

3)调用逻辑条件键值查询函数,获得逻辑条件信息。

医疗数据资产授权操作如下:

1)确认数据资产哈希地址和授权对象。

2)根据授权逻辑条件和具体情况编写授权描述。

3)调用数据资产授权函数,获得授权资产哈希地址。

医疗数据资产转让操作如下:

1)确认数据资产哈希地址和转让对象。

2)根据转让逻辑条件和具体情况编写转让描述。

3)调用数据资产转让函数。

医疗数据资产废止操作如下:

1)确认数据资产哈希地址。

2)根据废止逻辑条件和具体情况编写废止描述。

3)调用数据资产废止函数。

医疗数据资产逻辑条件变更操作如下:

1)确认数据资产哈希地址。

2)设计和编写新的授权、转让和废止逻辑条件。

3)调用逻辑条件注册函数,获得逻辑条件哈希地址。

4)调用数据资产逻辑条件变更函数。

授权确认操作如下:

1)确认授权资产哈希地址。

2)调用授权资产键值查询函数,获得授权资产信息。

上述提及了逻辑条件是一段JSON格式的文本,以下进行进一步说明:逻辑条件资产内存储的逻辑条件文本大小受“逻辑条件最大字节”参数限制,在智能合约注册时设定。数据资产则与特定的逻辑条件资产关联,以便定制化数据资产的授权、转让和废止操作的管理行为。逻辑条件在智能合约内的处理工作由逻辑条件判断函数承担,逻辑条件判断函数输入逻辑条件、描述和缓存数据,以逻辑条件为模板,对描述进行匹配和验证,验证通过后,根据对应语句内容处理缓存数据并返回是否成功、是否缓存、更新后的缓存数据和描述信息。逻辑条件的语法和语句预先定义,不同的语句匹配不同的描述,需要不同的验证方法,触发不同的操作。逻辑条件类似析取范式,基础语法如下:

1)逻辑条件由一个或多个条件组成,逻辑条件通过以下语句描述条件组合,条件的序号从上到下从“1”开始递增:

["or",[

条件1,

条件2,

……,

]]

在逻辑条件判断函数中,有四个局部变量:(是否成功,是否缓存,缓存数据,描述信息),默认值为(假,假,空,空)。从第一个条件开始检查和验证,如果验证失败即是否成功为假,则转移到下一个条件继续检查和验证,如果验证成功即是否成功为真,返回四个局部变量,终止函数执行。当已无后续条件时,返回四个局部变量的默认值。

2)每个条件可以由以下两类语句描述:

执行语句:执行语句由行为静态变量和不定参数(零个、一个或多个)组成。行为静态变量触发相应描述验证和操作,并对四个局部变量进行更新。

["action",[

参数1,

参数2,

……,

]]

与语句:与语句由两条以上(包括两条)执行语句组成。与语句的是否成功由执行语句的是否成功与操作获得;与语句的是否缓存由各子条件和执行语句的是否缓存或操作获得;缓存数据和描述信息同一关键字覆盖更新。

["and",[

执行语句1,

执行语句2,

……,

]]

描述是一段JSON格式的文本,在逻辑条件判断函数中与条件进行匹配和验证,并决定具体行为。描述与特定条件对应,即描述语句由对应条件把执行语句替换为对应的描述语句获得。描述语句记录了对应执行语句需要获取的数据和信息以用于验证和处理。

缓存数据是若干键值对的列表,每个键值对对应一个执行语句。关键字为条件序号和执行语句行为静态变量的拼接,值与执行语句相关。

以下展示四种执行语句及其对应的描述语句定义,可在智能合约注册前额外扩展更多的执行语句及其对应的描述语句以适应更多应用场景。

1)描述信息登记:

描述信息登记用于在逻辑条件中存储数据,用于返回描述信息。执行语句为:

["description",[

特定数据

]]

对应的描述语句为:

["description",[]]

在验证时,若执行语句和描述语句均为"description",则是否成功为真,描述信息设为特定数据,否则该条件返回四个局部变量的默认值。

2)特定用户验证:

特定用户验证用于验证由特定用户发起交易。执行语句为:

对应的描述语句为:

["CreatorID",[]]

在验证时,若执行语句和描述语句均为"CreatorID",查询交易创建者ID。若交易创建者ID在执行语句中,是否成功为真,否则该条件返回四个局部变量的默认值。

3)哈希令牌验证(示例使用SHA256哈希函数,其他哈希函数均可):

哈希令牌验证用于限制有效验证次数。执行语句为:

对应的描述语句为:

["SHA256Token",[字符串原文,]]

对应的缓存数据键值对为:

(条件序号+"HashToken",[哈希1,哈希2,……,])

在缓存数据键值对的值列表中,哈希1,哈希2等均为已被使用的哈希值。

在验证时,若执行语句和描述语句均为"HashToken",生成原文的SHA256哈希值。若哈希值不在缓存数据键值对的值列表中,且在执行语句中,该执行语句是否成功为真,缓存数据键值对的值列表增加此哈希值,否则该条件返回四个局部变量的默认值。

4)竞价协议:

竞价协议用于获取一定时间内最大值对应的交易创建者ID。执行语句为:

对应的描述语句为:

["CompetitionMax",[数额,]]

对应的缓存数据键值对为:

(条件序号+"CompetitionMax",(最大数额,交易创建者ID))

在验证时,若执行语句和描述语句均为"CompetitionMax",查询当前交易时间戳,和当前交易创建者ID。若时间戳在截止时间之前或相等,且数额大于等于最小值,且数额大于最大数额,则缓存数据键值对的值改为(描述的数额,当前交易创建者ID),是否成功为真,是否缓存为真。若时间戳在截止时间之后,且当前交易创建者ID与缓存数据键值对中的交易创建者ID一致,是否成功为真。除这些情况以外,该条件返回四个局部变量的默认值。

在图3中,展示一个逻辑条件示例的匹配和验证示意图。在此用OwnerID指代一个真实所有者ID,Context1,Context2指代两个真实字符串,用Hash1、Hash2指代两个字符串的SHA256哈希值。该逻辑条件实现了两种授权场景:竞价授权和受限的所有者主动授权。

请参阅图2至图4,在本实施方式中,一种存储设备400的具体实施方式如下:

一种存储设备400,其中存储有指令集,所述指令集用于执行:

预定义不同操作的逻辑条件,所述不同操作包括以下中的一种或多种:授权、转让、废止。

在本实施方式中,逻辑条件是一段JSON格式的文本,记录了触发操作的条件,授权、转让和废止智能合约均需要检查和验证逻辑条件。在进行数据资产的发布操作时,将对应于授权、转让和废止操作的三个逻辑条件同时输入,存储在区块链中。资产上链后,可通过变更操作,将某医疗数据资产的三个逻辑条件进行替换。逻辑条件所使用的条件语句需要预先定义,并可在本实施方式以外继续扩展,良好的设计和定义将可满足复杂的应用场景需求。以下会一一展开说明。

其中所述“预定义不同操作的逻辑条件”,具体还包括步骤:确认数据类型,根据所述数据类型编写不同操作的逻辑条件。

响应医疗数据资产发布操作指令,调用逻辑条件注册函数进行所述逻辑条件发布。具体还包括步骤:

逻辑条件注册函数根据不同操作的逻辑条件生成逻辑条件哈希地址,将所述不同操作的逻辑条件和所述逻辑条件哈希地址以逻辑条件资产的形式上链,并返回逻辑条件哈希地址。

调用数据资产注册函数进行医疗数据资产发布。具体还包括步骤:数据资产注册函数根据元数据和逻辑条件哈希地址生成数据资产哈希地址,上链数据资产并返回数据资产哈希地址;所述数据资产包括以下中的一种或多种:自验证的数据资产哈希地址、元数据、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性、失效时间、缓存数据。

通过预定义不同操作的逻辑条件,所述不同操作包括以下中的一种或多种:授权、转让、废止;响应医疗数据资产发布操作指令,调用逻辑条件注册函数进行所述逻辑条件发布;调用数据资产注册函数进行医疗数据资产发布。所述存储设备400,通过逻辑条件机制简易定制授权、转让和废止行为模式,提供可拓展的逻辑条件,支持更多不同的个性化操作,且成本低。

在本实施方式中,链上资产包括逻辑条件资产、数据资产和授权资产。逻辑条件资产存储了自验证的逻辑条件哈希地址和对应于授权、转让和废止的三个逻辑条件;数据资产包括了以下中的一种或多种:自验证的数据资产哈希地址、元数据、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性和失效时间等信息,以及缓存数据;授权资产存储了某数据资产对特定用户的授权信息,包括自验证的授权资产哈希地址、数据资产哈希地址、授权对象、授权起始时间和有效期等信息。

智能合约实现以下函数:逻辑条件注册、数据资产注册、数据资产授权、数据资产转让、数据资产废止、数据资产逻辑条件变更、逻辑条件键值查询、数据资产键值查询、授权资产键值查询、数据资产总查询、授权资产关联查询。进一步的,所述指令集还用于执行:响应医疗数据资产查询操作指令,调用数据资产键值查询函数进行数据资产查询,调用逻辑条件键值查询函数进行逻辑条件查询;

或响应医疗数据资产授权操作指令,调用数据资产授权函数;

或响应医疗数据资产转让操作指令,调用数据资产转让函数;

或响应医疗数据资产废止操作指令,调用数据资产废止函数;

或响应医疗数据资产逻辑条件变更操作指令,调用数据资产逻辑条件变更函数;

或响应医疗数据资产授权确认指令,调用授权资产键值查询函数进行授权资产查询。具体可如下:

逻辑条件注册输入授权、转让和废止的三个逻辑条件,生成逻辑条件哈希地址,以逻辑条件资产的形式上链,返回逻辑条件哈希地址;数据资产注册输入元数据、逻辑条件哈希地址等信息,生成数据资产哈希地址,初始化缓存数据,以数据资产的形式上链,返回数据资产哈希地址;数据资产授权输入数据资产哈希地址、授权描述、授权对象、有效期等信息,更新对应数据资产的缓存数据,生成授权资产哈希地址,以授权资产的形式上链,返回授权资产哈希地址;数据资产转让输入数据资产哈希地址、转让描述、转让对象等信息,更新对应数据资产的缓存数据或所有者;数据资产废止输入数据资产哈希地址、废止描述等信息,将对应数据资产的有效性设为否,更新数据资产的失效时间;数据资产逻辑条件变更输入数据资产哈希地址、逻辑条件哈希地址等信息,更新对应数据资产的逻辑条件;逻辑条件键值查询输入逻辑条件哈希地址,返回对应的授权、转让和废止三个逻辑条件;数据资产键值查询输入数据资产哈希地址,返回对应数据资产信息;授权资产键值查询输入授权资产哈希地址,返回对应授权资产信息;数据资产总查询返回所有有效的数据资产哈希地址及其部分元数据;授权资产关联查询输入数据资产哈希地址、特定时刻,返回对应数据资产在特定时刻所有有效的授权资产哈希地址及其授权对象。

其中图2展示了资产和智能合约函数关系,圆形表示资产,圆框表示智能合约函数。

进一步的,所述指令集还用于执行:所述“逻辑条件注册函数根据不同操作的逻辑条件生成逻辑条件哈希地址”,具体还包括步骤:

对不同操作的逻辑条件进行二进制编码后拼接求哈希值,取所述哈希值前预设个字节生成逻辑条件哈希地址。具体可如下:

逻辑条件资产关键字为逻辑条件哈希地址,值存储了对应于授权、转让和废止的三个逻辑条件。这三个逻辑条件进行二进制编码后拼接求哈希值,然后取前20字节生成逻辑条件哈希地址。逻辑条件哈希地址对该地址存储的三个逻辑条件进行了自验证:获得三个逻辑条件后可重新生成哈希地址与对应的真实哈希地址进行匹配校对,如果两者不相符,则该逻辑条件资产无效。

数据资产关键字为数据资产哈希地址,值存储了数据类别、数据哈希摘要、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性和失效时间,以及特定逻辑条件产生的缓存数据。数据类别、数据哈希摘要、数据主体、注册时间进行二进制编码后拼接求哈希值,然后取前20字节生成数据资产哈希地址。数据资产哈希地址对该地址存储的数据资产固定信息进行了自验证:获得数据类别、数据哈希摘要、数据主体、注册时间后可重新生成哈希地址与对应的真实哈希地址进行匹配校对,如果两者不相符,则该数据资产无效。

授权资产关键字为授权资产哈希地址,值存储了数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期。数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期进行二进制编码后拼接求哈希值,然后取前20字节生成授权资产哈希地址。授权资产哈希地址对该地址存储的授权资产值信息进行了自验证:获得数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期后可重新生成哈希地址与对应的真实哈希地址进行匹配校对,如果两者不相符,则该授权资产无效。

以下对智能合约函数进行描述,当某步骤执行失败,默认报错,终止智能合约调用并进行状态回滚。

逻辑条件注册函数输入授权、转让和废止的三个逻辑条件,返回逻辑条件哈希地址。步骤如下:

1)如果三个逻辑条件总长度超过“逻辑条件最大字节”,报错并终止执行。

2)三个逻辑条件分别进行字符串转换二进制。

3)拼接三个二进制编码,求拼接后的SHA256哈希值,取哈希值前20字节,使用Base58编码获得哈希地址。

4)以“逻辑条件”(表示逻辑条件资产的静态变量)和哈希地址创建组合键。

5)以组合键查询当前区块链状态是否存在该资产。

6)如果不存在该资产,以组合键为键,以授权、转让和废止逻辑条件为值上链。

数据资产注册函数输入数据类别、数据哈希摘要、逻辑条件哈希地址,返回数据资产哈希地址。步骤如下:

1)获取交易创建者ID,数据主体取值交易创建者ID,所有者取值交易创建者ID。(由于数据主权,医疗数据的数据主体是天然的资产所有者和控制方,默认由数据主体发布并拥有数据资产)

2)获取交易时间戳,注册时间取值交易时间戳。

3)有效性取值真,失效时间取值空。

4)缓存数据取值空。

5)数据类别、数据哈希摘要、数据主体、注册时间分别按类型转换或解码二进制。

6)拼接四个二进制编码,求拼接后的SHA256哈希值,取哈希值前20字节,使用Base58编码获得哈希地址。

7)以“数据资产”(表示医疗数据资产的静态变量)和哈希地址创建组合键。

8)以组合键查询当前区块链状态是否存在该资产。

9)如果不存在该资产,以组合键为键,以数据类别、数据哈希摘要、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性、失效时间和缓存数据为值上链。

数据资产授权函数输入数据资产哈希地址、授权描述、授权对象,返回授权资产哈希地址。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要逻辑条件哈希地址、有效性和缓存数据。

3)如果有效性为假,报错并终止执行。

4)以“逻辑条件”(表示逻辑条件资产的静态变量)和逻辑条件哈希地址创建逻辑条件组合键。

5)以逻辑条件组合键查询三个逻辑条件,特别的,需要授权逻辑条件。

6)调用逻辑条件判断函数,输入缓存数据、授权逻辑条件和授权描述,获取是否成功、是否缓存、缓存数据和描述信息,特别的,描述信息具体为授权类别,授权起始时间和有效期。

7)若是否成功为假,报错并终止执行。

8)若是否缓存为真,更新缓存数据,并以数据资产组合键更新数据资产,结束函数执行。

9)授权类别、授权对象、授权起始时间和有效期分别按类型转换二进制。

10)拼接四个二进制编码,求拼接后的SHA256哈希值,取哈希值前20字节,使用Base58编码获得哈希地址。

11)以“授权资产”(表示授权资产的静态变量)和哈希地址创建组合键。

12)以组合键查询当前区块链状态是否存在该资产。

13)如果不存在该资产,以组合键为键,以授权类别、授权对象、授权起始时间和有效期为值上链。

14)以数据资产组合键更新数据资产,即更新缓存数据。

数据资产转让函数输入数据资产哈希地址、转让描述、转让对象。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要所有者、逻辑条件哈希地址、有效性和缓存数据。

3)如果有效性为假,报错并终止执行。

4)以“逻辑条件”(表示逻辑条件资产的静态变量)和逻辑条件哈希地址创建逻辑条件组合键。

5)以逻辑条件组合键查询三个逻辑条件,特别的,需要转让逻辑条件。

6)调用逻辑条件判断函数,输入缓存数据、转让逻辑条件和转让描述,获取是否成功、是否缓存、缓存数据和描述信息,特别的,描述信息为空。

7)若是否成功为假,报错并终止执行。

8)若是否缓存为真,更新缓存数据,并以数据资产组合键更新数据资产,结束函数执行。

9)所有者设为转让对象,并以数据资产组合键更新数据资产,包括缓存数据。

数据资产废止函数输入数据资产哈希地址、废止描述。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要所有者、逻辑条件哈希地址、有效性和缓存数据。

3)如果有效性为假,结束函数执行。

4)以“逻辑条件”(表示逻辑条件资产的静态变量)和逻辑条件哈希地址创建逻辑条件组合键。

5)以逻辑条件组合键查询三个逻辑条件,特别的,需要废止逻辑条件。

6)调用逻辑条件判断函数,输入缓存数据、废止逻辑条件和废止描述,获取是否成功、是否缓存、缓存数据和描述信息,特别的,描述信息为空。

7)若是否成功为假,报错并终止执行。

8)若是否缓存为真,更新缓存数据,并以数据资产组合键更新数据资产,结束函数执行。

9)获取交易时间戳,失效时间设为交易时间戳,并以数据资产组合键更新数据资产,包括缓存数据。

数据资产逻辑条件变更函数输入数据资产哈希地址、逻辑条件哈希地址。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要所有者、逻辑条件哈希地址、有效性和缓存数据。

3)如果有效性为假,报错并终止执行。

4)获取交易创建者ID,若与所有者不符,报错并终止执行。

5)逻辑条件哈希地址更新为输入的逻辑条件哈希地址。

6)缓存数据设为空。

7)以数据资产组合键更新数据资产。

逻辑条件键值查询函数输入逻辑条件哈希地址,返回对应的授权、转让和废止三个逻辑条件。步骤如下:

1)以“逻辑条件”(表示逻辑条件资产的静态变量)和逻辑条件哈希地址创建逻辑条件组合键。

2)以逻辑条件组合键查询三个逻辑条件。

数据资产键值查询函数输入数据资产哈希地址,返回数据类别、数据哈希摘要、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性和失效时间。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据类别、数据哈希摘要、数据主体、注册时间、逻辑条件哈希地址、所有者、有效性和失效时间。缓存数据作为内部数据,无法查询。

授权资产键值查询函数输入授权资产哈希地址,返回数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期。步骤如下:

1)以“授权资产”(表示授权资产的静态变量)和哈希地址创建授权资产组合键。

2)以授权资产组合键查询数据资产哈希地址、授权类别、授权对象、授权起始时间和有效期。

3)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

4)以数据资产组合键查询数据资产信息,特别的,需要有效性。

5)如果有效性为假,报错并终止执行。

数据资产总查询函数返回所有有效的数据资产哈希地址及其数据类别和注册时间。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)部分查询获取所有数据资产的组合键。

2)新建集合,逐一以组合键查询数据资产相关信息,如果其中有效性为真,则分离组合键获得数据资产哈希地址,并将数据资产哈希地址及其数据类别和注册时间加入集合。

3)集合内数据即为所有有效的数据资产哈希地址及其数据类别和注册时间。

授权资产关联查询函数输入数据资产哈希地址、特定时刻,返回对应数据资产在特定时刻所有有效的授权资产哈希地址及其授权对象。步骤如下:

1)以“数据资产”(表示医疗数据资产的静态变量)和数据资产哈希地址创建数据资产组合键。

2)以数据资产组合键查询数据资产信息,特别的,需要有效性。

3)如果有效性为假,报错并终止执行。

4)以“授权资产”(表示授权资产的静态变量)部分查询获取所有授权资产的组合键。

5)新建集合,逐一以组合键查询授权资产相关信息,如果其中数据资产哈希地址与输入相符且授权起始日期小于等于特定时刻且授权起始日期加有效期大于等于特定时刻,则分离组合键获得授权资产哈希地址,并将授权资产哈希地址及其授权对象加入集合。

6)集合内数据即为对应数据资产在特定时刻所有有效的授权资产哈希地址及其授权对象。以下对整个医疗数据资产发布和管理操作流程进行进一步描述:

医疗数据资产发布操作如下:

1)确认数据类型。

2)设计和编写授权、转让和废止逻辑条件。

3)调用逻辑条件注册函数,获得逻辑条件哈希地址。

4)对医疗数据进行二进制编码,并求取SHA256哈希值,获得数据摘要。

5)调用数据资产注册函数,获得数据资产哈希地址。

医疗数据资产查询操作如下:

1)确认数字资产哈希地址。

2)调用数据资产键值查询函数,获得数据资产信息和逻辑条件哈希地址。

3)调用逻辑条件键值查询函数,获得逻辑条件信息。

医疗数据资产授权操作如下:

1)确认数据资产哈希地址和授权对象。

2)根据授权逻辑条件和具体情况编写授权描述。

3)调用数据资产授权函数,获得授权资产哈希地址。

医疗数据资产转让操作如下:

1)确认数据资产哈希地址和转让对象。

2)根据转让逻辑条件和具体情况编写转让描述。

3)调用数据资产转让函数。

医疗数据资产废止操作如下:

1)确认数据资产哈希地址。

2)根据废止逻辑条件和具体情况编写废止描述。

3)调用数据资产废止函数。

医疗数据资产逻辑条件变更操作如下:

1)确认数据资产哈希地址。

2)设计和编写新的授权、转让和废止逻辑条件。

3)调用逻辑条件注册函数,获得逻辑条件哈希地址。

4)调用数据资产逻辑条件变更函数。

授权确认操作如下:

1)确认授权资产哈希地址。

2)调用授权资产键值查询函数,获得授权资产信息。

上述提及了逻辑条件是一段JSON格式的文本,以下进行进一步说明:逻辑条件资产内存储的逻辑条件文本大小受“逻辑条件最大字节”参数限制,在智能合约注册时设定。数据资产则与特定的逻辑条件资产关联,以便定制化数据资产的授权、转让和废止操作的管理行为。逻辑条件在智能合约内的处理工作由逻辑条件判断函数承担,逻辑条件判断函数输入逻辑条件、描述和缓存数据,以逻辑条件为模板,对描述进行匹配和验证,验证通过后,根据对应语句内容处理缓存数据并返回是否成功、是否缓存、更新后的缓存数据和描述信息。逻辑条件的语法和语句预先定义,不同的语句匹配不同的描述,需要不同的验证方法,触发不同的操作。逻辑条件类似析取范式,基础语法如下:

1)逻辑条件由一个或多个条件组成,逻辑条件通过以下语句描述条件组合,条件的序号从上到下从“1”开始递增:

["or",[

条件1,

条件2,

……,

]]

在逻辑条件判断函数中,有四个局部变量:(是否成功,是否缓存,缓存数据,描述信息),默认值为(假,假,空,空)。从第一个条件开始检查和验证,如果验证失败即是否成功为假,则转移到下一个条件继续检查和验证,如果验证成功即是否成功为真,返回四个局部变量,终止函数执行。当已无后续条件时,返回四个局部变量的默认值。

2)每个条件可以由以下两类语句描述:

执行语句:执行语句由行为静态变量和不定参数(零个、一个或多个)组成。行为静态变量触发相应描述验证和操作,并对四个局部变量进行更新。

与语句:与语句由两条以上(包括两条)执行语句组成。与语句的是否成功由执行语句的是否成功与操作获得;与语句的是否缓存由各子条件和执行语句的是否缓存或操作获得;缓存数据和描述信息同一关键字覆盖更新。

["and",[

执行语句1,

执行语句2,

……,

]]

描述是一段JSON格式的文本,在逻辑条件判断函数中与条件进行匹配和验证,并决定具体行为。描述与特定条件对应,即描述语句由对应条件把执行语句替换为对应的描述语句获得。描述语句记录了对应执行语句需要获取的数据和信息以用于验证和处理。

缓存数据是若干键值对的列表,每个键值对对应一个执行语句。关键字为条件序号和执行语句行为静态变量的拼接,值与执行语句相关。

以下展示四种执行语句及其对应的描述语句定义,可在智能合约注册前额外扩展更多的执行语句及其对应的描述语句以适应更多应用场景。

1)描述信息登记:

描述信息登记用于在逻辑条件中存储数据,用于返回描述信息。执行语句为:

["description",[

特定数据

]]

对应的描述语句为:

["description",[]]

在验证时,若执行语句和描述语句均为"description",则是否成功为真,描述信息设为特定数据,否则该条件返回四个局部变量的默认值。

2)特定用户验证:

特定用户验证用于验证由特定用户发起交易。执行语句为:

对应的描述语句为:

["CreatorID",[]]

在验证时,若执行语句和描述语句均为"CreatorID",查询交易创建者ID。若交易创建者ID在执行语句中,是否成功为真,否则该条件返回四个局部变量的默认值。

3)哈希令牌验证(示例使用SHA256哈希函数,其他哈希函数均可):

哈希令牌验证用于限制有效验证次数。执行语句为:

对应的描述语句为:

["SHA256Token",[字符串原文,]]

对应的缓存数据键值对为:

(条件序号+"HashToken",[哈希1,哈希2,……,])

在缓存数据键值对的值列表中,哈希1,哈希2等均为已被使用的哈希值。

在验证时,若执行语句和描述语句均为"HashToken",生成原文的SHA256哈希值。若哈希值不在缓存数据键值对的值列表中,且在执行语句中,该执行语句是否成功为真,缓存数据键值对的值列表增加此哈希值,否则该条件返回四个局部变量的默认值。

4)竞价协议:

竞价协议用于获取一定时间内最大值对应的交易创建者ID。执行语句为:

对应的描述语句为:

["CompetitionMax",[数额,]]

对应的缓存数据键值对为:

(条件序号+"CompetitionMax",(最大数额,交易创建者ID))

在验证时,若执行语句和描述语句均为"CompetitionMax",查询当前交易时间戳,和当前交易创建者ID。若时间戳在截止时间之前或相等,且数额大于等于最小值,且数额大于最大数额,则缓存数据键值对的值改为(描述的数额,当前交易创建者ID),是否成功为真,是否缓存为真。若时间戳在截止时间之后,且当前交易创建者ID与缓存数据键值对中的交易创建者ID一致,是否成功为真。除这些情况以外,该条件返回四个局部变量的默认值。

在图3中,展示一个逻辑条件示例的匹配和验证示意图。在此用OwnerID指代一个真实所有者ID,Context1,Context2指代两个真实字符串,用Hash1、Hash2指代两个字符串的SHA256哈希值。该逻辑条件实现了两种授权场景:竞价授权和受限的所有者主动授权。

需要说明的是,尽管在本文中已经对上述各实施例进行了描述,但并非因此限制本发明的专利保护范围。因此,基于本发明的创新理念,对本文所述实施例进行的变更和修改,或利用本发明说明书及附图内容所作的等效结构或等效流程变换,直接或间接地将以上技术方案运用在其他相关的技术领域,均包括在本发明的专利保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号