基于智能合约的账本处理方法、装置、设备及存储介质转让专利

申请号 : CN202110822043.8

文献号 : CN113268490B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张锦喜梁增健庞启荣黄永丰

申请人 : 广东卓启云链科技有限公司

摘要 :

本申请提供一种基于智能合约的账本处理方法、装置、设备及存储介质,方法包括:获取预设账本的账本占用变量;对账本占用变量的占用变量值进行原子写操作;若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和预设账本变更操作时的操作数据;将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库。本实施例采用链上‑链下分离的数据处理策略,每次账本变更时的详细操作由操作者在本地保存,而在主网上存储简单的字段甚至仅仅是其摘要信息等元数据,使得隐私保护粒度精确到变量甚至字段级别,提高账本的隐私安全。

权利要求 :

1.一种基于智能合约的账本处理方法,其特征在于,包括:获取预设账本的账本占用变量;

对所述账本占用变量的占用变量值进行原子写操作;

若所述占用变量值原子写操作成功,则基于预设的账本状态变更函数,对所述预设账本的账本状态数据进行变更操作,得到所述预设账本变更操作后的目标元数据和所述预设账本变更操作时的操作数据;

若所述变更操作符合预设保密条件,则将第一元数据写入到所述账本变更历史数据中,所述第一元数据包含变更操作后的所述账本状态数据的哈希值;

若所述变更操作不符合所述预设保密条件,则将第二元数据写入到所述账本变更历史数据中,所述第二元数据包含变更操作后的所述账本状态数据;

将所述操作数据回传至所述目标本地数据库,并释放所述账本占用变量,所述操作数据包含所述第一元数据或所述第二元数据的明文数据。

2.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述对所述账本占用变量的占用变量值进行原子写操作,包括:监测所述账本占用变量是否被占用;

若所述账本占用变量未被占用,则将所述占用变量值变更为目标用户的用户标识,所述目标用户为对所述预设账本的账本状态数据进行变更操作的智能合约成员。

3.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述获取预设账本的账本占用变量之前,还包括:配置所述预设账本的账本状态变更函数,以及初始化所述账本状态数据,得到所述预设账本;

通过账本管理员将所述预设账本发布至区块链主网,所述账本管理员为多个智能合约成员中的一个;

控制多个所述智能合约成员对所述区块链主网上的预设账本进行签名操作,得到第一签名数据;

将所述第一签名数据存入所述预设账本的账本成员数据中。

4.根据权利要求3所述的基于智能合约的账本处理方法,其特征在于,所述通过账本管理员将所述预设账本发布至区块链主网之后,还包括:若监听到目标智能合约成员发起的管理员更换请求,则获取多个所述智能合约成员的第二签名数据;

若所述第二签名数据对应的所述智能合约成员的数量大于预设值,则基于所述第二签名数据更新所述账本成员数据,并将所述目标智能合约成员作为新的账本管理员。

5.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述将所述目标元数据写入到所述预设账本的账本变更历史数据中,以及将所述操作数据回传至目标本地数据库之后,还包括:

若监听到审计方的审计请求,则根据账本变更历史数据,获取各个智能合约成员的所述操作数据;

将所述操作数据组装为业务数据链,并将所述业务数据链返回至所述审计方。

6.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述方法还包括:

监听智能合约成员发起的函数变更请求,所述函数变更请求包含所述账本状态变更函数以及新的账本状态变更函数;

若监听到所述智能合约成员发起的函数变更请求,则将所述新的账本状态变更函数发送至账本管理员,所述新的账本状态变更函数在所述账本管理员审核通过后生效。

7.一种基于智能合约的账本处理装置,其特征在于,包括:获取模块,用于获取预设账本的账本占用变量;

原子写模块,用于对所述账本占用变量的占用变量值进行原子写操作;

变更模块,用于若所述占用变量值原子写操作成功,则基于预设的账本状态变更函数,对所述预设账本的账本状态数据进行变更操作,得到所述预设账本变更操作后的目标元数据和所述预设账本变更操作时的操作数据;

第一写入单元,用于若变更操作符合预设保密条件,则将第一元数据写入到账本变更历史数据中,第一元数据包含变更操作后的账本状态数据的哈希值;

第二写入单元,用于若变更操作不符合预设保密条件,则将第二元数据写入到账本变更历史数据中,第二元数据包含变更操作后的账本状态数据;

回传单元,用于将操作数据回传至目标本地数据库,并释放账本占用变量,操作数据包含第一元数据或第二元数据的明文数据。

8.一种计算机设备,其特征在于,包括存储器及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述计算机设备执行如权利要求1至6中任一项所述的基于智能合约的账本处理方法。

9.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的基于智能合约的账本处理方法。

说明书 :

基于智能合约的账本处理方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及计算机技术领域,具体而言,涉及一种基于智能合约的账本处理方法、装置、设备及存储介质。

背景技术

[0002] 区块链技术是实现可信互联网的关键技术,其通过链式结构记录不可篡改的区块数据,以完整追溯网上行为。但是区块链具有全网公开的特点,使得隐私保护难。在相关技
术中,基于“树”数据结构对区块进行扩展,通过树与树根分离的方式,在一定程度上保护用
户隐私,但是隐私保护粒度不够精细。
[0003] 例如,以以太坊为代表的智能合约和其使用的Merkle Patricia Tree(MPT)数据结构,是目前有效提高数据隐私性的技术。其通过为每个智能合约开辟一个基于MPT的存储
空间,调用者通过调用智能合约的成员函数,以改变智能合约中成员变量的值,然后将该变
量以“键值对”的形式保存到MPT数据结构的叶节点,最后通过自下向上依次求节点的哈希
值,直至根节点为止,并最终将根节点的哈希值保存到区块头里。当需要保护用户隐私时,
则仅将树根全网广播,否则将整棵树全网广播。可见,该技术只能保存整颗树或者只能保存
树根,无法精确到变量级别的隐私保护控制。

发明内容

[0004] 本申请实施例的目的在于提供一种基于智能合约的账本处理方法、装置、设备及存储介质,旨在解决当前智能合约的隐私保护粒度不够精细的问题。
[0005] 第一方面,本申请实施例提供了一种基于智能合约的账本处理方法,包括:
[0006] 获取预设账本的账本占用变量;
[0007] 对账本占用变量的占用变量值进行原子写操作;
[0008] 若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和预设账本变更操作
时的操作数据;
[0009] 将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库。
[0010] 在本实施例中,通过获取预设账本的账本占用变量,并对账本占用变量的占用变量值进行原子写操作,保证只有且仅有一个智能合约成员在同一时刻对账本进行变更,保
证账本变更过程的准确性;若占用变量值原子写操作成功,则基于预设的账本状态变更函
数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和
预设账本变更操作时的操作数据,最后将目标元数据写入到预设账本的账本变更历史数据
中,以及将操作数据回传至目标本地数据库,本实施例采用链上‑链下分离的数据处理策
略,每次账本变更时的详细操作由操作者在本地保存,给与操作者极大的自主性,而在主网
上存储简单的字段甚至仅仅是其摘要信息等元数据,使得隐私保护粒度精确到变量甚至字
段级别,提高账本的隐私安全。
[0011] 在一实施例中,对账本占用变量的占用变量值进行原子写操作,包括:
[0012] 监测账本占用变量是否被占用;
[0013] 若账本占用变量未被占用,则将占用变量值变更为目标用户的用户标识,目标用户为对预设账本的账本状态数据进行变更操作的智能合约成员。
[0014] 在本实施例中,通过监听并变更账本占用变量,实现在同一时刻有且仅有一个智能合约成员对账本进行变更操作,保证账本变更结果的准确性和合法性。
[0015] 在一实施例中,将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库,包括:
[0016] 若变更操作符合预设保密条件,则将第一元数据写入到账本变更历史数据中,第一元数据包含变更操作后的账本状态数据的哈希值;
[0017] 若变更操作不符合预设保密条件,则将第二元数据写入到账本变更历史数据中,第二元数据包含变更操作后的账本状态数据;
[0018] 将操作数据回传至目标本地数据库,并释放账本占用变量,操作数据包含第一元数据或第二元数据的明文数据。
[0019] 在本实施例中,基于变更操作的保密要求,选择不同类型的元数据存储在区块链中,从而实现隐私保护的可控性,将操作数据存储在本地数据库,保证用户隐私安全。
[0020] 在一实施例中,获取预设账本的账本占用变量之前,还包括:
[0021] 配置预设账本的账本状态变更函数,以及初始化账本状态数据,得到预设账本;
[0022] 通过账本管理员将预设账本发布至区块链主网,账本管理员为多个智能合约成员中的一个;
[0023] 控制多个智能合约成员对区块链主网上的预设账本进行签名操作,得到第一签名数据;
[0024] 将第一签名数据存入预设账本的账本成员数据中。
[0025] 在本实施例中,通过将账本发布至区块链主网,并由智能合约成员共同确认,以实现智能合约内的各个成员能够共同对账本进行操作。
[0026] 进一步地,通过账本管理员将预设账本发布至区块链主网之后,还包括:
[0027] 若监听到目标智能合约成员发起的管理员更换请求,则获取多个智能合约成员的第二签名数据;
[0028] 若第二签名数据对应的智能合约成员的数量大于预设值,则基于第二签名数据更新账本成员数据,并将目标智能合约成员作为新的账本管理员。
[0029] 在本实施例中,通过达到一定数量的智能合约成员签名确认,以实现账本管理员的变更。
[0030] 在一实施例中,将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库之后,还包括:
[0031] 若监听到审计方的审计请求,则根据账本变更历史数据,获取各个智能合约成员的操作数据;
[0032] 将操作数据组装为业务数据链,并将业务数据链返回至审计方。
[0033] 在本实施中,基于账本变更历史数据追溯账本变更过程,再获取各个成员在账本变更过程的操作数据,并将操作数据组装为账本变更过程的完整业务数据链供审计方审
计,实现既保护用户隐私,又能完成审计。
[0034] 在一实施例中,方法还包括:
[0035] 监听智能合约成员发起的函数变更请求,函数变更请求包含账本状态变更函数以及新的账本状态变更函数;
[0036] 若监听到智能合约成员发起的函数变更请求,则将新的账本状态变更函数发送至账本管理员,新的账本状态变更函数在账本管理员审核通过后生效。
[0037] 在本实施例中,通过账本管理员审核新的账本状态变更函数,以实现既能够自定义账本状态变更函数,又能够避免智能合约成员随意更换该函数而导致函数混乱。
[0038] 第二方面,本申请实施例提供了一种基于智能合约的账本处理装置,包括:
[0039] 获取模块,用于获取预设账本的账本占用变量;
[0040] 原子写模块,用于对账本占用变量的占用变量值进行原子写操作;
[0041] 变更模块,用于若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和预设
账本变更操作时的操作数据;
[0042] 写入模块,用于将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库。
[0043] 第三方面,本申请实施例提供了一种计算机设备,包括存储器及处理器,存储器用于存储计算机程序,处理器运行计算机程序以使计算机设备执行如上述第一方面的基于智
能合约的账本处理方法。
[0044] 第四方面,本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面的基于智能合约的账本处理方法。
[0045] 需要说明的是,上述第二方面至第四方面的有益效果参见上述第一方面的相关描述,在此不再赘述。

附图说明

[0046] 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看
作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他相关的附图。
[0047] 图1为本申请一实施例提供的基于智能合约的账本处理方法的流程示意图;
[0048] 图2为本申请另一实施例提供的基于智能合约的账本处理方法的流程示意图;
[0049] 图3为本申请实施例提供的基于智能合约的账本处理装置的结构示意图;
[0050] 图4为本申请实施例提供的计算机设备的结构示意图。

具体实施方式

[0051] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
[0052] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的
描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0053] 在相关技术中,基于“树”数据结构对区块进行扩展,通过树与树根分离的方式,在一定程度上保护用户隐私,但是隐私保护粒度不够精细。例如,以以太坊为代表的智能合约
和其使用的Merkle Patricia Tree(MPT)数据结构,是目前有效提高数据隐私性的技术。其
通过为每个智能合约开辟一个基于MPT的存储空间,调用者通过调用智能合约的成员函数,
以改变智能合约中成员变量的值,然后将该变量以“键值对”的形式保存到MPT数据结构的
叶节点,最后通过自下向上依次求节点的哈希值,并将哈希值保存至上级父节点中,直至根
节点为止,并最终将根节点的哈希值保存到区块头里。当需要保护用户隐私时,则仅将树根
全网广播,否则将整棵树全网广播。可见,该技术只能保存整颗树或者只能保存树根,无法
精确到变量级别的隐私保护控制。
[0054] 此外,“树”数据结构无法保证“树”上信息的统计灵活性,“树”数据结构通常以非对称的键值对存储数据,比如name、age和sex等字段需要存储,那么只能是其中一个字段作
为键,其他字段作为值,若要对数据进行统计操作,只能根据name来查找统计,无法通过age
和sex等字段来统计,灵活性很差。
[0055] “树”结构存在存储开销过大的问题,“树”结构通常包含根节点、中间节点和叶节点,传统区块链通常只使用叶节点来存储有用数据,大量开销花费在中间辅助节点上。
[0056] 智能合约通常保存的是某一个或某几个用户的交互过程记录,不便无条件对外公开,若基于目前的技术,只能通过频繁的对隐私数据进行加密、哈希、上链等操作,流程繁
琐,极大地降低系统性能,也不利于相关用户对数据的统计分析。
[0057] 针对上述现有技术中的问题,本申请提供了一种基于智能合约的账本处理方法,通过获取预设账本的账本占用变量,并对账本占用变量的占用变量值进行原子写操作,保
证只有且仅有一个智能合约成员在同一时刻对账本进行变更,保证账本变更过程的准确
性;若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状
态数据进行变更操作,得到预设账本变更操作后的目标元数据和预设账本变更操作时的操
作数据,最后将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传
至目标本地数据库。
[0058] 本实施例采用链上‑链下分离的数据处理策略,每次账本变更时的详细操作由操作者在本地保存,给与操作者极大的自主性,而在主网上存储简单的字段甚至仅仅是其摘
要信息等元数据,使得隐私保护粒度精确到变量甚至字段级别,提高账本的隐私安全。在链
上使用元数据数组保存账本变更后的状态,对最常用的查找、删除、求和等操作非常便捷;
在链下则使用本地数据库进行存储,各种数据统计操作更加便捷。在对账本状态进行变更
时,仅需进行一次哈希操作甚至不用操作(如在本次操作隐私要求不高时),并发性能提高
明显。
[0059] 参见图1,图1示出了本申请实施例提供的一种基于智能合约的账本处理方法的实现流程示意图。本申请实施例中下述的基于智能合约的账本处理方法可应用于计算机设
备,计算机设备包括但不限于平板电脑、桌上型计算机、超级计算机、物理服务器和云服务
器等计算机设备。本申请实施例的基于智能合约的账本处理方法,包括步骤S101至S104,详
述如下:
[0060] 步骤S101,获取预设账本的账本占用变量。
[0061] 在本步骤中,预设账本为基于智能合约的分布式账本,账本占用变量为账本内部变量,其是智能合约成员(用户/账本用户)对账本状态数据进行变更操作的凭证。
[0062] 步骤S102,对账本占用变量的占用变量值进行原子写操作。
[0063] 在本步骤中,占用变量值用于表征当前正在写账本的用户,其取值可以为空,即账本占用变量未被占用,也可以为用户标识,即账本已被用户标识对应的用户占用。原子写操
作为在同一时刻只能有一个用户对某个变量值进行更新的操作。可以理解,对于某个智能
合约成员来说,若该成员需要对账本状态数据进行变更操作,则需要先获取账本占用变量,
并将账本占用变量的占用变量值变更为该成员的用户标识。
[0064] 步骤S103,若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和预设账本
变更操作时的操作数据。
[0065] 在本步骤中,账本状态变更函数为实现账本业务的业务逻辑函数,其可以是用户自定义函数,根据不同用户的业务需求编写相对应的逻辑函数和数据结构。目标元数据为
对预设账本进行变更后的元数据数组,例如账本当前所处的状态值、账本用户的签名结果、
操作用户的用户公钥和哈希值等。操作数据为执行账本状态变更函数时的原始明文数据。
可以理解,当计算机设备按照原子写操作完成执行时表示原子写操作成功。
[0066] 示例性地,在用户本地的计算机设备上执行账本状态变更函数,基于该账本状态变更函数的业务逻辑,变更账本状态数据的值,将本次变更操作的最终结果(即账本状态数
据的当前状态值)和操作者信息作为元数据数组,将执行账本状态变更函数过程的数据作
为操作。
[0067] 步骤S104,将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库。
[0068] 在本步骤中,账本变更历史数据为预设账本的变更历史数据,其包含变更过程的操作用户和变更操作的最终结果。将每次变更操作的“最终结果(即账本状态数据的当前状
态值)和操作用户”等信息存入区块链中公开,将账本状态变更函数的具体执行细节(即账
本变量的详细操作过程)由操作用户保留在本地数据库,不上区块链,以达到公私分离和关
键信息隐藏的目的,从而将账本的隐私保护粒度精确到变量级别。
[0069] 在一实施方式中,在图1所示实施例的基础上,上述步骤S102具体包括:监测账本占用变量是否被占用;若账本占用变量未被占用,则将占用变量值变更为目标用户的用户
标识,目标用户为对预设账本的账本状态数据进行变更操作的智能合约成员。
[0070] 在本实施方式中,账本占用变量被占用时,说明账本已被占用,因此为满足原子写操作的条件,循环监测账本占用变量是否被占用,直至账本占用变量未被占用,则将占用变
量值变更为准备对账本进行变更操作的智能合约成员的用户标识。
[0071] 在一实施方式中,在图1所示实施例的基础上,上述步骤S104具体包括:若变更操作符合预设保密条件,则将第一元数据写入到账本变更历史数据中,第一元数据包含变更
操作后的账本状态数据的哈希值;若变更操作不符合预设保密条件,则将第二元数据写入
到账本变更历史数据中,第二元数据包含变更操作后的账本状态数据;将操作数据回传至
目标本地数据库,并释放账本占用变量,操作数据包含第一元数据或第二元数据的明文数
据。
[0072] 在本实施例中,目标元数据可以是第一元数据或第二元数据,第一元数据和第二元数据还包含操作用户的用户信息等。预设保密条件可以是用户预先或实时选择的条件,
例如用户选择对本次变更操作进行保密,则变更操作符合预设保密条件,即对本次变更操
作进行保密。
[0073] 可以理解的是,为了使其他成员也能够对账本进行变更操作,所以在本次变更操作完成时,释放账本占用变量,即将账本占用变量的占用变量值更新为空值或预设值。
[0074] 需要说明的是,在变更操作符合预设保密条件时,本实施例仅需要进行一次哈希操作,已得到变更操作后的账本状态数据的哈希值;而在变更操作不符合预设保密条件时,
则无需进行哈希操作。可见相比于当前技术在生成MPT、插入节点和更新节点等过程时需要
大量的哈希操作,本实施例计算量更小,耗时更短,提高账本变更过程的效率。
[0075] 在一实施方式中,在图1所示实施例的基础上,图2示出了基于智能合约的账本处理方法的另一种实现流程图,如图2所示,上述步骤S101之前还包括:配置预设账本的账本
状态变更函数,以及初始化账本状态数据,得到预设账本;通过账本管理员将预设账本发布
至区块链主网,账本管理员为多个智能合约成员中的一个;控制多个智能合约成员对区块
链主网上的预设账本进行签名操作,得到第一签名数据;将第一签名数据存入预设账本的
账本成员数据中。
[0076] 在本实施例中,账本初始化操作,包括:智能合约成员约定初始管理员,并编写管理员轮换或选举规则的函数和账本状态变更函数,以及初始化当前账本状态数据。由当前
的账本管理员将账本发布到区块链主网上,各成员分别对账本进行签名确认,确认结果保
留在账本成员数据上。本实施例通过将账本发布至区块链主网,并由智能合约成员共同确
认,以实现智能合约内的各个成员能够共同对账本进行操作。
[0077] 可选地,如图2所示,通过账本管理员将预设账本发布至区块链主网之后,还包括:若监听到目标智能合约成员发起的管理员更换请求,则获取多个智能合约成员的第二签名
数据;若第二签名数据对应的智能合约成员的数量大于预设值,则基于第二签名数据更新
账本成员数据,并将目标智能合约成员作为新的账本管理员。
[0078] 在本实施例中,各个成员监测是否存在其他成员发起的管理员更换请求,若监测到目标智能合约成员发起管理更换请求,则需要超过预设数量的用户进行签名确认,并更
新账本成员数据变量,更新完成后目标智能合约成员更改为新的账本管理员。通过签名数
据更新账本成员数据的方式,以利用签名不可抵赖、无法伪造的特点,保证管理员更换过程
的可信度。
[0079] 在一实施方式中,如图2所示,上述步骤S104之后还包括:若监听到审计方的审计请求,则根据账本变更历史数据,获取各个智能合约成员的操作数据;将操作数据组装为业
务数据链,并将业务数据链返回至审计方。
[0080] 在本实施中,由于区块链上没有保存完整的状态变更过程,只有最新的状态值,而审计时需要完整的变更过程,因此本实施例开启一个子线程,监听第三方审计机构的审计
请求,当监听到审计请求时,由当前账本管理员根据账本变历史数据,依次向相关的智能合
约成员发起数据请求,智能合约成员进行对应的操作数据返回至账本管理员,账本管理员
将接收到的所有操作数据串联为业务数据链,并返回至审计机构。
[0081] 在一实施方式中,如图2所示,上述方法还包括:监听智能合约成员发起的函数变更请求,函数变更请求包含账本状态变更函数以及新的账本状态变更函数;若监听到智能
合约成员发起的函数变更请求,则将新的账本状态变更函数发送至账本管理员,新的账本
状态变更函数在账本管理员审核通过后生效。
[0082] 在本实施例中,开启一个子线程,监测用户发起的函数变更请求,若有用户需要发布新的自定义操作,则将对应的新的账本状态变更函数的代码直接发给账本管理员,账本
管理员审核后,则新的账本状态变更函数生效。通过账本管理员审核新的账本状态变更函
数,以实现既能够自定义账本状态变更函数,又能够避免智能合约成员随意更换该函数而
导致函数混乱。
[0083] 为了执行上述方法实施例对应的方法,以实现相应的功能和技术效果,下面提供一种基于智能合约的账本处理装置。参见图3,图3是本申请实施例提供的一种基于智能合
约的账本处理装置的结构框图。为了便于说明,仅示出了与本实施例相关的部分,本申请实
施例提供的基于智能合约的账本处理装置,包括:
[0084] 获取模块301,用于获取预设账本的账本占用变量;
[0085] 原子写模块302,用于对账本占用变量的占用变量值进行原子写操作;
[0086] 变更模块303,用于若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和
预设账本变更操作时的操作数据;
[0087] 写入模块304,用于将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库。
[0088] 在一实施方式中,原子写模块302,包括:
[0089] 监测单元,用于监测账本占用变量是否被占用;
[0090] 变更单元,用于若账本占用变量未被占用,则将占用变量值变更为目标用户的用户标识,目标用户为对预设账本的账本状态数据进行变更操作的智能合约成员。
[0091] 在一实施方式中,写入模块304,包括:
[0092] 第一写入单元,用于若变更操作符合预设保密条件,则将第一元数据写入到账本变更历史数据中,第一元数据包含变更操作后的账本状态数据的哈希值;
[0093] 第二写入单元,用于若变更操作不符合预设保密条件,则将第二元数据写入到账本变更历史数据中,第二元数据包含变更操作后的账本状态数据;
[0094] 回传单元,用于将操作数据回传至目标本地数据库,并释放账本占用变量,操作数据包含第一元数据或第二元数据的明文数据。
[0095] 在一实施方式中,上述账本处理装置还包括:
[0096] 配置模块,用于配置预设账本的账本状态变更函数,以及初始化账本状态数据,得到预设账本;
[0097] 发布模块,用于通过账本管理员将预设账本发布至区块链主网,账本管理员为多个智能合约成员中的一个;
[0098] 控制模块,用于控制多个智能合约成员对区块链主网上的预设账本进行签名操作,得到第一签名数据;
[0099] 存入模块,用于将第一签名数据存入预设账本的账本成员数据中。
[0100] 可选地,上述账本处理装置还包括:
[0101] 第二获取模块,用于若监听到目标智能合约成员发起的管理员更换请求,则获取多个智能合约成员的第二签名数据;
[0102] 更新模块,用于若第二签名数据对应的智能合约成员的数量大于预设值,则基于第二签名数据更新账本成员数据,并将目标智能合约作为新的账本管理员。
[0103] 在一实施方式中,上述账本处理装置还包括:
[0104] 第三获取模块,用于若监听到审计方的审计请求,则根据账本变更历史数据,获取各个智能合约成员的操作数据;
[0105] 返回模块,用于将操作数据组装为业务数据链,并将业务数据链返回至审计方。
[0106] 在一实施例中,上述账本处理装置还包括:
[0107] 监听模块,用于监听智能合约成员发起的函数变更请求,函数变更请求包含账本状态变更函数以及新的账本状态变更函数;
[0108] 发送模块,用于若监听到智能合约成员发起的函数变更请求,则将新的账本状态变更函数发送至账本管理员,新的账本状态变更函数在账本管理员审核通过后生效。
[0109] 上述的基于智能合约的账本处理装置可实施上述方法实施例的基于智能合约的账本处理方法。上述方法实施例中的可选项也适用于本实施例,这里不再详述。本申请实施
例的其余内容可参照上述方法实施例的内容,在本实施例中,不再进行赘述。
[0110] 图4为本申请一实施例提供的计算机设备的结构示意图。如图4所示,该实施例的计算机设备4包括:至少一个处理器40(图4中仅示出一个)处理器、存储器41以及存储在所
述存储器41中并可在所述至少一个处理器40上运行的计算机程序42,所述处理器40执行所
述计算机程序42时实现上述任意方法实施例中的步骤。
[0111] 所述计算机设备4可以是平板电脑、桌上型计算机、超级计算机、个人数字助理、物理服务器和云服务器等计算设备。该计算机设备可包括但不仅限于处理器40、存储器41。本
领域技术人员可以理解,图4仅仅是计算机设备4的举例,并不构成对计算机设备4的限定,
可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括
输入输出设备、网络接入设备等。
[0112] 所称处理器40可以是中央处理单元(Central Processing Unit,CPU),该处理器40还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集
成电路 (Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 
(Field‑Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管
逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规
的处理器等。
[0113] 所述存储器41在一些实施例中可以是所述计算机设备4的内部存储单元,例如计算机设备4的硬盘或内存。所述存储器41在另一些实施例中也可以是所述计算机设备4的外
部存储设备,例如所述计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card, 
SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器
41还可以既包括所述计算机设备4的内部存储单元也包括外部存储设备。所述存储器41用
于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述
计算机程序的程序代码等。所述存储器41还可以用于暂时地存储已经输出或者将要输出的
数据。
[0114] 另外,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述任意方法实施例中的
步骤。
[0115] 本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行时实现可实现上述各个方法实施例中的步骤。
[0116] 在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图
显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、
功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一
部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执
行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于
附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也
可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每
个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基
于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0117] 另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
[0118] 所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说
对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计
算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个
人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑Only Memory)、随机存取存
储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0119] 以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的
任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和
字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图
中不需要对其进行进一步定义和解释。
[0120] 以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵
盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
[0121] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存
在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖
非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要
素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在
包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。