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

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

【技术实现步骤摘要】
基于智能合约的账本处理方法、装置、设备及存储介质
本申请涉及计算机
,具体而言,涉及一种基于智能合约的账本处理方法、装置、设备及存储介质。
技术介绍
区块链技术是实现可信互联网的关键技术,其通过链式结构记录不可篡改的区块数据,以完整追溯网上行为。但是区块链具有全网公开的特点,使得隐私保护难。在相关技术中,基于“树”数据结构对区块进行扩展,通过树与树根分离的方式,在一定程度上保护用户隐私,但是隐私保护粒度不够精细。例如,以以太坊为代表的智能合约和其使用的MerklePatriciaTree(MPT)数据结构,是目前有效提高数据隐私性的技术。其通过为每个智能合约开辟一个基于MPT的存储空间,调用者通过调用智能合约的成员函数,以改变智能合约中成员变量的值,然后将该变量以“键值对”的形式保存到MPT数据结构的叶节点,最后通过自下向上依次求节点的哈希值,直至根节点为止,并最终将根节点的哈希值保存到区块头里。当需要保护用户隐私时,则仅将树根全网广播,否则将整棵树全网广播。可见,该技术只能保存整颗树或者只能保存树根,无法精确到变量级别的隐私保护控制。
技术实现思路
本申请实施例的目的在于提供一种基于智能合约的账本处理方法、装置、设备及存储介质,旨在解决当前智能合约的隐私保护粒度不够精细的问题。第一方面,本申请实施例提供了一种基于智能合约的账本处理方法,包括:获取预设账本的账本占用变量;对账本占用变量的占用变量值进行原子写操作;若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和预设账本变更操作时的操作数据;将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库。在本实施例中,通过获取预设账本的账本占用变量,并对账本占用变量的占用变量值进行原子写操作,保证只有且仅有一个智能合约成员在同一时刻对账本进行变更,保证账本变更过程的准确性;若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和预设账本变更操作时的操作数据,最后将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库,本实施例采用链上-链下分离的数据处理策略,每次账本变更时的详细操作由操作者在本地保存,给与操作者极大的自主性,而在主网上存储简单的字段甚至仅仅是其摘要信息等元数据,使得隐私保护粒度精确到变量甚至字段级别,提高账本的隐私安全。在一实施例中,对账本占用变量的占用变量值进行原子写操作,包括:监测账本占用变量是否被占用;若账本占用变量未被占用,则将占用变量值变更为目标用户的用户标识,目标用户为对预设账本的账本状态数据进行变更操作的智能合约成员。在本实施例中,通过监听并变更账本占用变量,实现在同一时刻有且仅有一个智能合约成员对账本进行变更操作,保证账本变更结果的准确性和合法性。在一实施例中,将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库,包括:若变更操作符合预设保密条件,则将第一元数据写入到账本变更历史数据中,第一元数据包含变更操作后的账本状态数据的哈希值;若变更操作不符合预设保密条件,则将第二元数据写入到账本变更历史数据中,第二元数据包含变更操作后的账本状态数据;将操作数据回传至目标本地数据库,并释放账本占用变量,操作数据包含第一元数据或第二元数据的明文数据。在本实施例中,基于变更操作的保密要求,选择不同类型的元数据存储在区块链中,从而实现隐私保护的可控性,将操作数据存储在本地数据库,保证用户隐私安全。在一实施例中,获取预设账本的账本占用变量之前,还包括:配置预设账本的账本状态变更函数,以及初始化账本状态数据,得到预设账本;通过账本管理员将预设账本发布至区块链主网,账本管理员为多个智能合约成员中的一个;控制多个智能合约成员对区块链主网上的预设账本进行签名操作,得到第一签名数据;将第一签名数据存入预设账本的账本成员数据中。在本实施例中,通过将账本发布至区块链主网,并由智能合约成员共同确认,以实现智能合约内的各个成员能够共同对账本进行操作。进一步地,通过账本管理员将预设账本发布至区块链主网之后,还包括:若监听到目标智能合约成员发起的管理员更换请求,则获取多个智能合约成员的第二签名数据;若第二签名数据对应的智能合约成员的数量大于预设值,则基于第二签名数据更新账本成员数据,并将目标智能合约成员作为新的账本管理员。在本实施例中,通过达到一定数量的智能合约成员签名确认,以实现账本管理员的变更。在一实施例中,将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库之后,还包括:若监听到审计方的审计请求,则根据账本变更历史数据,获取各个智能合约成员的操作数据;将操作数据组装为业务数据链,并将业务数据链返回至审计方。在本实施中,基于账本变更历史数据追溯账本变更过程,再获取各个成员在账本变更过程的操作数据,并将操作数据组装为账本变更过程的完整业务数据链供审计方审计,实现既保护用户隐私,又能完成审计。在一实施例中,方法还包括:监听智能合约成员发起的函数变更请求,函数变更请求包含账本状态变更函数以及新的账本状态变更函数;若监听到智能合约成员发起的函数变更请求,则将新的账本状态变更函数发送至账本管理员,新的账本状态变更函数在账本管理员审核通过后生效。在本实施例中,通过账本管理员审核新的账本状态变更函数,以实现既能够自定义账本状态变更函数,又能够避免智能合约成员随意更换该函数而导致函数混乱。第二方面,本申请实施例提供了一种基于智能合约的账本处理装置,包括:获取模块,用于获取预设账本的账本占用变量;原子写模块,用于对账本占用变量的占用变量值进行原子写操作;变更模块,用于若占用变量值原子写操作成功,则基于预设的账本状态变更函数,对预设账本的账本状态数据进行变更操作,得到预设账本变更操作后的目标元数据和预设账本变更操作时的操作数据;写入模块,用于将目标元数据写入到预设账本的账本变更历史数据中,以及将操作数据回传至目标本地数据库。第三方面,本申请实施例提供了一种计算机设备,包括存储器及处理器,存储器用于存储计算机程序,处理器运行计算机程序以使计算机设备执行如上述第一方面的基于智能合约的账本处理方法。第四方面,本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序,计算机程序被处理器执行时实现如上述第一方面的基于智能合约的账本处理方法。需要说明的是,上述第二方面至第四方面的有益效果参见上述第一方面的相关描述,在此不再赘述。附图说明为了更清楚地说明本申请实施例的技术方案,下面将对本申请实本文档来自技高网...

【技术保护点】
1.一种基于智能合约的账本处理方法,其特征在于,包括:/n获取预设账本的账本占用变量;/n对所述账本占用变量的占用变量值进行原子写操作;/n若所述占用变量值原子写操作成功,则基于预设的账本状态变更函数,对所述预设账本的账本状态数据进行变更操作,得到所述预设账本变更操作后的目标元数据和所述预设账本变更操作时的操作数据;/n将所述目标元数据写入到所述预设账本的账本变更历史数据中,以及将所述操作数据回传至目标本地数据库。/n

【技术特征摘要】
1.一种基于智能合约的账本处理方法,其特征在于,包括:
获取预设账本的账本占用变量;
对所述账本占用变量的占用变量值进行原子写操作;
若所述占用变量值原子写操作成功,则基于预设的账本状态变更函数,对所述预设账本的账本状态数据进行变更操作,得到所述预设账本变更操作后的目标元数据和所述预设账本变更操作时的操作数据;
将所述目标元数据写入到所述预设账本的账本变更历史数据中,以及将所述操作数据回传至目标本地数据库。


2.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述对所述账本占用变量的占用变量值进行原子写操作,包括:
监测所述账本占用变量是否被占用;
若所述账本占用变量未被占用,则将所述占用变量值变更为目标用户的用户标识,所述目标用户为对所述预设账本的账本状态数据进行变更操作的智能合约成员。


3.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述将所述目标元数据写入到所述预设账本的账本变更历史数据中,以及将所述操作数据回传至目标本地数据库,包括:
若所述变更操作符合预设保密条件,则将第一元数据写入到所述账本变更历史数据中,所述第一元数据包含变更操作后的所述账本状态数据的哈希值;
若所述变更操作不符合所述预设保密条件,则将第二元数据写入到所述账本变更历史数据中,所述第二元数据包含变更操作后的所述账本状态数据;
将所述操作数据回传至所述目标本地数据库,并释放所述账本占用变量,所述操作数据包含所述第一元数据或所述第二元数据的明文数据。


4.根据权利要求1所述的基于智能合约的账本处理方法,其特征在于,所述获取预设账本的账本占用变量之前,还包括:
配置所述预设账本的账本状态变更函数,以及初始化所述账本状态数据,得到所述预设账本;
通过账本管理员将所述预设账本发布至区块链主网,所述账本管理员为多个智能合约成员中的一个;
控制多个所述智能合约成员对所述区块链主网上的预设账本进行签名操作,得到第一签名数据;
将所述第一签名数据存入所述预设账本的账本成员数据中。


5.根据权利要求4所述的基于智能合约的账本处理方法,其特征在于,所述通过账本管...

【专利技术属性】
技术研发人员:张锦喜梁增健庞启荣黄永丰
申请(专利权)人:广东卓启云链科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1