基于智能合约的账本处理方法、装置、设备及存储介质转让专利
申请号 : CN202110822043.8
文献号 : CN113268490B
文献日 : 2021-10-12
发明人 : 张锦喜 , 梁增健 , 庞启荣 , 黄永丰
申请人 : 广东卓启云链科技有限公司
摘要 :
权利要求 :
1.一种基于智能合约的账本处理方法,其特征在于,包括:获取预设账本的账本占用变量;
对所述账本占用变量的占用变量值进行原子写操作;
若所述占用变量值原子写操作成功,则基于预设的账本状态变更函数,对所述预设账本的账本状态数据进行变更操作,得到所述预设账本变更操作后的目标元数据和所述预设账本变更操作时的操作数据;
若所述变更操作符合预设保密条件,则将第一元数据写入到所述账本变更历史数据中,所述第一元数据包含变更操作后的所述账本状态数据的哈希值;
若所述变更操作不符合所述预设保密条件,则将第二元数据写入到所述账本变更历史数据中,所述第二元数据包含变更操作后的所述账本状态数据;
将所述操作数据回传至所述目标本地数据库,并释放所述账本占用变量,所述操作数据包含所述第一元数据或所述第二元数据的明文数据。
2.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述对所述账本占用变量的占用变量值进行原子写操作,包括:监测所述账本占用变量是否被占用;
若所述账本占用变量未被占用,则将所述占用变量值变更为目标用户的用户标识,所述目标用户为对所述预设账本的账本状态数据进行变更操作的智能合约成员。
3.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述获取预设账本的账本占用变量之前,还包括:配置所述预设账本的账本状态变更函数,以及初始化所述账本状态数据,得到所述预设账本;
通过账本管理员将所述预设账本发布至区块链主网,所述账本管理员为多个智能合约成员中的一个;
控制多个所述智能合约成员对所述区块链主网上的预设账本进行签名操作,得到第一签名数据;
将所述第一签名数据存入所述预设账本的账本成员数据中。
4.根据权利要求3所述的基于智能合约的账本处理方法,其特征在于,所述通过账本管理员将所述预设账本发布至区块链主网之后,还包括:若监听到目标智能合约成员发起的管理员更换请求,则获取多个所述智能合约成员的第二签名数据;
若所述第二签名数据对应的所述智能合约成员的数量大于预设值,则基于所述第二签名数据更新所述账本成员数据,并将所述目标智能合约成员作为新的账本管理员。
5.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述将所述目标元数据写入到所述预设账本的账本变更历史数据中,以及将所述操作数据回传至目标本地数据库之后,还包括:
若监听到审计方的审计请求,则根据账本变更历史数据,获取各个智能合约成员的所述操作数据;
将所述操作数据组装为业务数据链,并将所述业务数据链返回至所述审计方。
6.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述方法还包括:
监听智能合约成员发起的函数变更请求,所述函数变更请求包含所述账本状态变更函数以及新的账本状态变更函数;
若监听到所述智能合约成员发起的函数变更请求,则将所述新的账本状态变更函数发送至账本管理员,所述新的账本状态变更函数在所述账本管理员审核通过后生效。
7.一种基于智能合约的账本处理装置,其特征在于,包括:获取模块,用于获取预设账本的账本占用变量;
原子写模块,用于对所述账本占用变量的占用变量值进行原子写操作;
变更模块,用于若所述占用变量值原子写操作成功,则基于预设的账本状态变更函数,对所述预设账本的账本状态数据进行变更操作,得到所述预设账本变更操作后的目标元数据和所述预设账本变更操作时的操作数据;
第一写入单元,用于若变更操作符合预设保密条件,则将第一元数据写入到账本变更历史数据中,第一元数据包含变更操作后的账本状态数据的哈希值;
第二写入单元,用于若变更操作不符合预设保密条件,则将第二元数据写入到账本变更历史数据中,第二元数据包含变更操作后的账本状态数据;
回传单元,用于将操作数据回传至目标本地数据库,并释放账本占用变量,操作数据包含第一元数据或第二元数据的明文数据。
8.一种计算机设备,其特征在于,包括存储器及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述计算机设备执行如权利要求1至6中任一项所述的基于智能合约的账本处理方法。
9.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的基于智能合约的账本处理方法。
说明书 :
基于智能合约的账本处理方法、装置、设备及存储介质
技术领域
背景技术
术中,基于“树”数据结构对区块进行扩展,通过树与树根分离的方式,在一定程度上保护用
户隐私,但是隐私保护粒度不够精细。
空间,调用者通过调用智能合约的成员函数,以改变智能合约中成员变量的值,然后将该变
量以“键值对”的形式保存到MPT数据结构的叶节点,最后通过自下向上依次求节点的哈希
值,直至根节点为止,并最终将根节点的哈希值保存到区块头里。当需要保护用户隐私时,
则仅将树根全网广播,否则将整棵树全网广播。可见,该技术只能保存整颗树或者只能保存
树根,无法精确到变量级别的隐私保护控制。
发明内容
时的操作数据;
证账本变更过程的准确性;若占用变量值原子写操作成功,则基于预设的账本状态变更函
数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和
预设账本变更操作时的操作数据,最后将目标元数据写入到预设账本的账本变更历史数据
中,以及将操作数据回传至目标本地数据库,本实施例采用链上‑链下分离的数据处理策
略,每次账本变更时的详细操作由操作者在本地保存,给与操作者极大的自主性,而在主网
上存储简单的字段甚至仅仅是其摘要信息等元数据,使得隐私保护粒度精确到变量甚至字
段级别,提高账本的隐私安全。
计,实现既保护用户隐私,又能完成审计。
账本变更操作时的操作数据;
能合约的账本处理方法。
附图说明
作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他相关的附图。
具体实施方式
描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
和其使用的Merkle Patricia Tree(MPT)数据结构,是目前有效提高数据隐私性的技术。其
通过为每个智能合约开辟一个基于MPT的存储空间,调用者通过调用智能合约的成员函数,
以改变智能合约中成员变量的值,然后将该变量以“键值对”的形式保存到MPT数据结构的
叶节点,最后通过自下向上依次求节点的哈希值,并将哈希值保存至上级父节点中,直至根
节点为止,并最终将根节点的哈希值保存到区块头里。当需要保护用户隐私时,则仅将树根
全网广播,否则将整棵树全网广播。可见,该技术只能保存整颗树或者只能保存树根,无法
精确到变量级别的隐私保护控制。
为键,其他字段作为值,若要对数据进行统计操作,只能根据name来查找统计,无法通过age
和sex等字段来统计,灵活性很差。
琐,极大地降低系统性能,也不利于相关用户对数据的统计分析。
证只有且仅有一个智能合约成员在同一时刻对账本进行变更,保证账本变更过程的准确
性;若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状
态数据进行变更操作,得到预设账本变更操作后的目标元数据和预设账本变更操作时的操
作数据,最后将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传
至目标本地数据库。
要信息等元数据,使得隐私保护粒度精确到变量甚至字段级别,提高账本的隐私安全。在链
上使用元数据数组保存账本变更后的状态,对最常用的查找、删除、求和等操作非常便捷;
在链下则使用本地数据库进行存储,各种数据统计操作更加便捷。在对账本状态进行变更
时,仅需进行一次哈希操作甚至不用操作(如在本次操作隐私要求不高时),并发性能提高
明显。
备,计算机设备包括但不限于平板电脑、桌上型计算机、超级计算机、物理服务器和云服务
器等计算机设备。本申请实施例的基于智能合约的账本处理方法,包括步骤S101至S104,详
述如下:
作为在同一时刻只能有一个用户对某个变量值进行更新的操作。可以理解,对于某个智能
合约成员来说,若该成员需要对账本状态数据进行变更操作,则需要先获取账本占用变量,
并将账本占用变量的占用变量值变更为该成员的用户标识。
变更操作时的操作数据。
对预设账本进行变更后的元数据数组,例如账本当前所处的状态值、账本用户的签名结果、
操作用户的用户公钥和哈希值等。操作数据为执行账本状态变更函数时的原始明文数据。
可以理解,当计算机设备按照原子写操作完成执行时表示原子写操作成功。
据的当前状态值)和操作者信息作为元数据数组,将执行账本状态变更函数过程的数据作
为操作。
态值)和操作用户”等信息存入区块链中公开,将账本状态变更函数的具体执行细节(即账
本变量的详细操作过程)由操作用户保留在本地数据库,不上区块链,以达到公私分离和关
键信息隐藏的目的,从而将账本的隐私保护粒度精确到变量级别。
标识,目标用户为对预设账本的账本状态数据进行变更操作的智能合约成员。
量值变更为准备对账本进行变更操作的智能合约成员的用户标识。
操作后的账本状态数据的哈希值;若变更操作不符合预设保密条件,则将第二元数据写入
到账本变更历史数据中,第二元数据包含变更操作后的账本状态数据;将操作数据回传至
目标本地数据库,并释放账本占用变量,操作数据包含第一元数据或第二元数据的明文数
据。
例如用户选择对本次变更操作进行保密,则变更操作符合预设保密条件,即对本次变更操
作进行保密。
则无需进行哈希操作。可见相比于当前技术在生成MPT、插入节点和更新节点等过程时需要
大量的哈希操作,本实施例计算量更小,耗时更短,提高账本变更过程的效率。
状态变更函数,以及初始化账本状态数据,得到预设账本;通过账本管理员将预设账本发布
至区块链主网,账本管理员为多个智能合约成员中的一个;控制多个智能合约成员对区块
链主网上的预设账本进行签名操作,得到第一签名数据;将第一签名数据存入预设账本的
账本成员数据中。
的账本管理员将账本发布到区块链主网上,各成员分别对账本进行签名确认,确认结果保
留在账本成员数据上。本实施例通过将账本发布至区块链主网,并由智能合约成员共同确
认,以实现智能合约内的各个成员能够共同对账本进行操作。
数据;若第二签名数据对应的智能合约成员的数量大于预设值,则基于第二签名数据更新
账本成员数据,并将目标智能合约成员作为新的账本管理员。
新账本成员数据变量,更新完成后目标智能合约成员更改为新的账本管理员。通过签名数
据更新账本成员数据的方式,以利用签名不可抵赖、无法伪造的特点,保证管理员更换过程
的可信度。
务数据链,并将业务数据链返回至审计方。
请求,当监听到审计请求时,由当前账本管理员根据账本变历史数据,依次向相关的智能合
约成员发起数据请求,智能合约成员进行对应的操作数据返回至账本管理员,账本管理员
将接收到的所有操作数据串联为业务数据链,并返回至审计机构。
合约成员发起的函数变更请求,则将新的账本状态变更函数发送至账本管理员,新的账本
状态变更函数在账本管理员审核通过后生效。
管理员审核后,则新的账本状态变更函数生效。通过账本管理员审核新的账本状态变更函
数,以实现既能够自定义账本状态变更函数,又能够避免智能合约成员随意更换该函数而
导致函数混乱。
约的账本处理装置的结构框图。为了便于说明,仅示出了与本实施例相关的部分,本申请实
施例提供的基于智能合约的账本处理装置,包括:
预设账本变更操作时的操作数据;
例的其余内容可参照上述方法实施例的内容,在本实施例中,不再进行赘述。
述存储器41中并可在所述至少一个处理器40上运行的计算机程序42,所述处理器40执行所
述计算机程序42时实现上述任意方法实施例中的步骤。
领域技术人员可以理解,图4仅仅是计算机设备4的举例,并不构成对计算机设备4的限定,
可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括
输入输出设备、网络接入设备等。
成电路 (Application Specific Integrated Circuit,ASIC)、现成可编程门阵列
(Field‑Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管
逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规
的处理器等。
部存储设备,例如所述计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,
SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器
41还可以既包括所述计算机设备4的内部存储单元也包括外部存储设备。所述存储器41用
于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述
计算机程序的程序代码等。所述存储器41还可以用于暂时地存储已经输出或者将要输出的
数据。
步骤。
显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、
功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一
部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执
行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于
附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也
可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每
个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基
于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计
算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个
人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存
储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和
字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图
中不需要对其进行进一步定义和解释。
盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖
非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要
素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在
包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。