CN114328544A - 基于区块链的司法数据存储方法、系统、设备及存储介质 - Google Patents
基于区块链的司法数据存储方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN114328544A CN114328544A CN202210201081.6A CN202210201081A CN114328544A CN 114328544 A CN114328544 A CN 114328544A CN 202210201081 A CN202210201081 A CN 202210201081A CN 114328544 A CN114328544 A CN 114328544A
- Authority
- CN
- China
- Prior art keywords
- node
- chain
- block
- storage
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文涉及区块链技术领域,尤其涉及一种基于区块链的司法数据存储方法、系统、设备及存储介质。包括,客户端获取跨部门的司法数据的事务请求,将事务请求发送到链下存储节点;链下存储节点根据智能合约执行事务请求,得到执行记录,并将执行记录发送到链上节点;链上节点根据存储的部分区块对多个执行记录进行共识验证,并在得到提案区块后存储所述提案区块,所述部分区块为链下存储节点存储的全部区块中指定时间段内的指定数量的区块;当链上节点对提案区块进行存储后,将提案区块发送给链下存储节点进行存储。通过本文实施例,使用链上共识验证、链下存储计算的方式降低了区块链链上存储负担,为实现司法数据存储提供了高性能和高扩展性。
Description
技术领域
本文涉及区块链技术领域,尤其涉及一种基于区块链的司法数据存储方法、系统、设备及存储介质。
背景技术
在全球化信息进程不断加快的时代背景下,司法系统也逐步进入网络化时代,随着司法领域信息化的发展,出现了越来越多的业务数据,体量庞大的司法数据带来了各司法部门或机构之间数据共享的难题。
目前的数据共享方案有两种类型,第一种类型是医疗数据共享场景,只是完成了区块链间的数据互操作性,该方案保留数据的索引在区块链上,而面对大量的链上数据,链上存储会变得庞大,不仅可扩展性差,还会影响系统执行性能;第二种类型是将数据库技术和区块链技术结合,打造共享平台,但这种方案无法解决区块链技术本身存在的可扩展性问题,且使用区块链进行存储会导致区块链数据庞大,导致性能低下,因此这两种方案都不适用于司法多模态数据共享。
现在亟需一种基于区块链的司法数据存储方法,从而解决将现有的区块链技术应用到司法数据的共享中存在区块链的链上数据庞大,导致数据共享性能低的问题。
发明内容
为解决将现有的区块链技术应用到司法数据的共享中存在区块链的链上数据庞大,导致数据共享性能低的问题,本文实施例提供了一种基于区块链的司法数据存储方法、系统、设备及存储介质,实现了司法数据的共享,降低了链上的数据存储,提高了司法数据共享的性能。
为了解决上述技术问题,本文的具体技术方案如下:
一方面,本文实施例提供了一种基于区块链的司法数据存储方法,包括,
客户端获取跨部门的司法数据的事务请求,将所述事务请求发送到链下存储节点;
所述链下存储节点根据智能合约执行所述事务请求,得到执行记录,并将所述执行记录发送到链上节点;
所述链上节点根据所述链上节点的存储区中存储的部分区块对多个所述执行记录进行共识验证,并在得到提案区块后存储所述提案区块,所述部分区块为所述链下存储节点存储的全部区块中指定时间段内的指定数量的区块;
当所述链上节点对所述提案区块进行存储后,将所述提案区块发送给所述链下存储节点进行存储。
进一步地,所述链下存储节点根据智能合约执行所述事务请求,得到执行记录进一步包括,
在可信执行环境中根据所述智能合约执行所述事务请求,得到包括读写集的执行结果,并在所述链下存储节点的存储区中获取相关辅助数据;
在可信执行环境中通过所述读写集中的读集合和默克尔证明创建默克尔根;
根据所述默克尔根和所述可信执行环境中存储的世界状态快照对所述事务请求中的事务进行验证;
当验证通过后,对所述事务请求中的事务进行签名,得到证明;
根据所述执行结果、相关辅助数据和证明形成所述执行记录。
进一步地,所述链上节点根据所述链上节点的存储区中存储的部分区块对多个所述执行记录进行共识验证,得到提案区块进一步包括,
所述链上节点进行raft共识,得到领导者节点和跟随者节点;
所述领导者节点对多个所述执行记录进行验证,验证通过后,根据验证后的所述执行记录生成所述提案区块并将所述提案区块存储在所述领导者节点的存储区内,将所述提案区块发送给所述跟随者节点;
所述跟随者节点对多个所述执行记录进行验证,验证通过后将所述提案区块存储在所述跟随者节点的存储区内。
进一步地,对所述执行记录进行验证进一步包括,
根据所述链上节点存储的k个区块的临时状态数据以及所述相关辅助数据验证所述事务请求中的事务是否最新,其中所述k个区块为所述链上节点存储的部分区块中的一部分或者全部;
根据所述可信执行环境验证所述证明是否有效;
根据所述执行结果中的读写集、所述临时状态数据中记录的所述k个区块的只包含写集合的部分默克尔树验证所述相关辅助数据的默克尔树的默克尔写是否有效;
根据多个所述执行记录的执行结果中的读写集验证多个所述事务请求中的事务是否冲突。
进一步地,所述默克尔写包括更新操作和整理操作;
根据验证后的所述执行记录生成所述提案区块进一步包括,
根据所述临时状态数据、所述执行结果中的读写集、所述证明对所述相关辅助数据的部分默克尔树进行更新操作;
根据所述临时状态数据和所述执行结果中的读写集对所述相关辅助数据的部分默克尔树进行整理操作;
将多个写证明和多个读写集中的写集合合并入所述更新操作和整理操作后的所述相关辅助数据的部分默克尔树,并计算所述提案区块。
进一步地,将所述提案区块发送给所述跟随者节点进一步包括,
所述领导者节点对所述提案区块的默克尔写证明进行压缩,并将压缩所述默克尔写证明的所述提案区块发送给所述跟随者节点。
进一步地,所述领导者节点对所述提案区块的默克尔写证明进行压缩进一步包括,
确定所述提案区块中与所述提案区块的前一个区块相同的数据,根据所述相同的数据生成所述默克尔写证明;或,
确定所述提案区块的默克尔树与所述提案区块的前一个区块的默克尔树相同的部分,根据所述相同的部分生成所述默克尔写证明;或,
将所述提案区块中多个事务的默克尔写证明绑定在一起,生成一个默克尔写证明。
另一方面,本文实施例还提供了一种基于区块链的司法数据存储系统,包括客户端、链下存储节点以及链上存储节点;
所述客户端、链下存储节点和链上节点存储司法数据时,执行上述的方法。
另一方面,本文实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在存储器上的计算机程序,处理器执行所述计算机程序时实现上述的方法。
最后,本文实施例还提供了一种计算机存储介质,其上存储有计算机程序,计算机程序被计算机设备的处理器运行时,执行上述的方法。
利用本文实施例,当客户端接收到跨部门司法数据的事务请求时,将事务请求发送到链下存储节点,链下存储节点存储全部的区块,并根据智能合约执行事务请求,得到执行记录后将执行记录发送给链上节点,链上节点仅存储部分区块,链上节点根据存储的部分区块对每一个执行记录进行共识验证,根据多个验证通过后的执行记录生成提案区块,然后记录在链上节点的部分区块中,当链上节点对提案区块进行存储后,将提案区块发送给链下存储节点,链下存储节点将提案区块存储在全部的区块中。通过本文实施例的方法,改进了区块链的结构,实现了在链下存储节点中执行事务请求,由链上节点对链下存储节点的执行记录进行共识验证,并存储在链上节点的部分区块中,然后在将提案区块发送给链下存储节点,链下存储节点将提案区块存储在全部区块中,降低了区块链的链上存储负担,为区块链可扩展性提供了可能,且这种功能分层的方案带来了性能的提升,为实现司法数据存储提供了高性能和高扩展性。
附图说明
为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1所示为本文实施例一种基于区块链的司法数据存储方法的实施系统示意图;
图2所示为本文实施例一种基于区块链的司法数据存储方法的流程图;
图3所示为本文实施例链下存储节点根据智能合约执行事务请求,得到执行记录的过程;
图4所示为本文实施例链上节点根据存储的部分区块对多个执行记录进行共识验证,得到提案区块的过程;
图5所示为本文实施例根据验证后的所述执行记录生成所述提案区块的过程;
图6所示为本文实施例一种基于区块链的司法数据存储系统的结构示意图;
图7所示为本文实施例计算机设备的结构示意图。
【附图标记说明】:
101、客户端;
102、服务器;
103、区块链网络;
601、客户端;
602、链下存储节点;
603、链上节点;
702、计算机设备;
704、处理设备;
706、存储资源;
708、驱动机构;
710、输入/输出模块;
712、输入设备;
714、输出设备;
716、呈现设备;
718、图形用户接口;
720、网络接口;
722、通信链路;
724、通信总线。
具体实施方式
下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
如图1所示为本文实施例一种基于区块链的司法数据存储方法的实施系统示意图,可以包括:客户端101和服务器102以及区块链网络103,区块链网络103和服务器102之间通过网络进行通信,网络可以包括局域网(Local Area Network,简称为LAN)、广域网(Wide Area Network,简称为WAN)、因特网或其组合,并连接至网站、用户设备(例如计算设备)和后端系统。客户端101可以向服务器102发起跨部门的司法数据的事务请求,服务器102将司法数据的事务请求传输到区块链网络103,并存储客户端101的事务请求中的司法数据。其中,服务器102上部署有面向司法数据的数据处理系统。可选地,服务器102可以是云计算系统的节点(图中未显示),或者每个服务器102可以是单独的云计算系统,包括由网络互连并作为分布式处理系统工作的多台计算机。其中,每个服务器102与各司法部门对应,服务器102可以运行任何适当的计算系统,使其能够作为区块链网络103中的节点。
此外,需要说明的是,图1所示的仅仅是本公开提供的一种应用环境,在实际应用中,还可以包括其他应用环境,例如对各医院的医疗数据进行存储也可以在客户端101、服务器102和区块链网络103上实现,本说明书不做限制。
具体地,本文实施例提供了一种基于区块链的司法数据存储方法,改进了区块链的结构,使用链上验证共识、链下存储计算的方式,降低了区块链链上存储负担。图2所示为本文实施例一种基于区块链的司法数据存储方法的流程图。在本图中描述了基于区块链存储司法数据的过程,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。具体的如图2所示,所述方法可以包括:
步骤201:客户端获取跨部门的司法数据的事务请求,将所述事务请求发送到链下存储节点;
步骤202:所述链下存储节点根据智能合约执行所述事务请求,得到执行记录,并将所述执行记录发送到链上节点;
步骤203:所述链上节点根据所述链上节点的存储区中存储的部分区块对多个所述执行记录进行共识验证,并在得到提案区块后存储所述提案区块,所述部分区块为所述链下存储节点存储的全部区块中指定时间段内的指定数量的区块;
步骤204:当所述链上节点对所述提案区块进行存储后,将所述提案区块发送给所述链下存储节点进行存储。
通过本文实施例的方法,当客户端接收到跨部门司法数据的事务请求时,将事务请求发送到链下存储节点,链下存储节点存储全部区块,并根据智能合约执行事务请求,得到执行记录后将执行记录发送给链上节点,链上节点仅存储部分区块,链上节点根据存储的部分区块对每一个执行记录进行共识验证,根据多个验证通过后的执行记录生成提案区块,然后记录在链上节点的部分区块中,当链上节点对提案区块进行存储后,将提案区块发送给链下存储节点,链下存储节点将提案区块存储在全部的区块中。通过本文实施例的方法,改进了区块链的结构,实现了在链下存储节点中执行事务请求,由链上节点对链下存储节点的执行记录进行共识验证,并存储在链上节点的部分区块中,然后在将提案区块发送给链下存储节点,链下存储节点将提案区块存储在全部区块中,降低了区块链的链上存储负担,为区块链可扩展性提供了可能,且这种功能分层的方案带来了性能的提升,为实现司法数据存储提供了高性能和高扩展性。
在本文实施例中,区块链的链上节点与司法部门对应,所述司法数据的事务请求中包括具体事务和签名,其中具体事务包括操作类型和对应的操作数据,例如增加新的司法数据、修改已有的司法数据或删除已有的司法数据等,可以通过现有技术中的签名算法对具体事务进行签名,从而保证事务不会被篡改。步骤202所述的智能合约通常是一种以信息化方式传播、验证或执行合同的计算机协议,该智能合约通常为写在区块链上的链码,该链码可以对司法数据进行编码。在具体实施时,智能合约可以指定背书策略,该背书策略通常需要指定背书节点对事务进行背书,可以理解为背书节点可以验证或声明事务请求是否合法。
在本文实施例中,链下存储节点存储全部区块,链上存储节点存储部分区块,该部分区块为链下存储节点存储的全部区块中的部分区块,具体地,该部分区块为全部区块中指定时间段内的指定数量的区块,例如全部区块中距离当前时间节点最近的指定数量的区块。
客户端每获取到一个司法数据的事务请求,则将司法数据的事务请求发送给链下存储节点,链下存储节点根据智能合约执行该事务请求,通过事务请求中的签名验证事务请求是否被篡改,链下存储节点将执行记录发送给链上节点,链上节点对该事务请求的执行记录进行共识验证,当链上节点成功验证指定数量的执行记录后,链上指定的一个节点将多个执行记录打包生成一个提案区块,链上的各节点分别将该提案区块存储在各自存储区内的部分区块内,然后将该提案区块发送给链下存储节点,链下存储节点首先验证该多个事务请求的执行记录,然后将该提案区块存储在全部区块内,完成司法数据的存储。
在本文的一些其他实施例中,对于跨链的事务请求,首先在各自区块链的链下存储节点之间同步事务请求,然后各自的链下存储节点分别根据智能合约执行该事务请求,然后分别发送到各自区块链的链上节点进行共识验证,生成提案区块后,各区块链的链上节点同时将该提案区块进行存储。
根据本文的一个实施例,为了提高司法数据存储的安全性,如图3所示,步骤202所述链下存储节点根据智能合约执行所述事务请求,得到执行记录进一步包括,
步骤301:在可信执行环境中根据所述智能合约执行所述事务请求,得到包括读写集的执行结果,并在链下存储节点的存储区中获取相关辅助数据;
步骤302:在可信执行环境中通过所述读写集中的读集合和默克尔证明创建默克尔根;
步骤303:根据所述默克尔根和所述可信执行环境中存储的世界状态快照对所述事务请求中的事务进行验证;
步骤304:当验证通过后,对所述事务请求中的事务进行签名,得到证明;
步骤305:根据所述执行结果、相关辅助数据和证明形成所述执行记录。
在本文实施例中,区块链的链下存储节点在可信执行环境(Trustedexecutionenvironment, TEE)中执行事务,TEE可以保证外部无法窥探隐私相关的数据,从而提高司法数据存储的安全性。
在智能合约执行过程中记录读写集,得到包括读写集的执行结果,并在TEE中获取相关辅助数据,所述相关辅助数据包括链下存储节点中存储的全部区块中接近当前时间节点的指定数量的区块的数据。在TEE内部通过读写集中的读集合和默克尔证明创建默克尔根,可以理解为,所述默克尔证明为哈希算法,即默克尔树中叶子节点的哈希,叶子节点即事务,多个读集合的哈希生成一个父节点,多个父节点的根节点就是所述默克尔根,默克尔证明可以是每一个父节点的值。若默克尔根和记录在TEE内部的世界状态快照相匹配则验证通过,并对事务请求中的事务进行签名,得到步骤304所述的证明。可以理解为,所述世界状态快照为链下存储节点中存储的全部区块的所有数据的最新值,而默克尔树是包括历史数据和最新数据,将默克尔根中记录的最新数据和世界状态快照中最新的数据进行比较,若比较通过则验证通过,然后通过现有技术的加密算法对事务请求中的事务进行签名,得到证明,从而防止数据被篡改。最后,将步骤301得到的执行结果、相关辅助性数据以及步骤304得到的证明作为步骤202所述的执行记录。
在本文实施例中,步骤203所述的共识验证方法可以是现有技术中的工作量证明机制、权益证明机制等,但共识计算可能会消耗大量计算资源,需要用Raft、可行拜占庭容错PBFT等分布式共识协议替代能耗非常高的PoW工作量共识协议,因此,根据本文的一个实施例,如图4所示,步骤203中所述链上节点根据所述链上节点的存储区中存储的部分区块对多个所述执行记录进行共识验证,得到提案区块进一步包括,
步骤401:所述链上节点进行raft共识,得到领导者节点和跟随者节点;
步骤402:所述领导者节点对多个所述执行记录进行验证,验证通过后,根据验证后的所述执行记录生成所述提案区块并将所述提案区块存储在所述领导者节点的存储区内,将所述提案区块发送给所述跟随者节点;
步骤403:所述跟随者节点对多个所述执行记录进行验证,验证通过后将所述提案区块存储在所述跟随者节点的存储区内。
在本文实施例中,raft使用心跳机制来触发选举,当链上各节点启动时,初始状态均为跟随者,每一个链上节点都有一个定时器,在定时器的超时时间内,如果某个节点没有超时的情况下收到来自领导者节点或候选节点的任何远程过程调用(RPC),则重启定时器,如果超时,则开始一次选举,领导者节点给所有的跟随者节点发送RPC消息进行复制日志或通知跟随者节点自己为领导者节点,不用选举心跳,如果某个候选节点获得超过半数的节点的投票,则候选节点选举成为新的领导者节点。本说明书实施例所述的raft共识机制为本领域常用的技术手段,此处不再赘述。
选举出领导者节点后,领导者节点对每个执行记录进行验证,然后将验证通过后的多个执行记录打包生成提案区块,并将提案区块存储在领导者节点中的部分区块中,然后领导者节点将提案区块发送给各跟随者节点,跟随者节点再对各执行记录进行验证,验证通过后,将领导者节点发送的提案区块存储在各自存储的部分区块中。
需要说明的是,还可以在领导者节点和跟随者节点接收到链下存储节点发送的执行记录后,分别对执行记录进行验证,在领导者节点生成提案区块并存储后,将提案区块发送给各跟随者节点以及链下存储节点,链上的全部跟随者节点验证并存储该提案区块,同时链下存储节点对执行记录进行验证,验证通过后,链下存储节点存储该提案区块。若领导者节点对执行记录的验证结果为不通过时,则不生成提案区块,且将状态回滚至上一个区块状态,若存在一个或多个跟随者节点验证执行记录不通过,则领导者节点持续发送同步信息直至区块状态复制成功。
根据本文的一个实施例,对所述执行记录进行验证进一步包括,
根据所述链上节点存储的k个区块的临时状态数据以及所述相关辅助数据验证所述事务请求中的事务是否最新,其中所述k个区块为所述链上节点存储的部分区块中的一部分或者全部;
根据所述可信执行环境验证所述证明是否有效;
根据所述执行结果中的读写集、所述临时状态数据中记录的所述k个区块的只包含写集合的部分默克尔树验证所述相关辅助数据的默克尔树的默克尔写是否有效;
根据多个所述执行记录的执行结果中的读写集验证多个所述事务请求中的事务是否冲突。
在本文实施例中,链上存储最近的k个区块的临时状态数据,其中k为系统参数,k个区块为所述链上节点存储的部分区块中的一部分或者全部,由所有的链上节点维护该临时状态数据,以跟踪临时状态数据中的默克尔树的状态和不同事务之间的依赖关系,使其不仅能够处理并发控制以确保并行事务之间的原子性、一致性、隔离性以及持久性(ACID特性),还能确保链上数据在区块链网络中的所有节点之间得到集体维护和同步,该临时状态数据包括区块的块高度与相应读写集之间的映射、读写集与相关块高度列表的映射以及记录该k个块只包含写集合的部分默克尔树。
对所述执行记录进行验证包括事务是否最新、TEE签名(即步骤304的证明)是否有效、默克尔写是否有效以及事务是否冲突。
根据所述链上节点存储的k个区块的临时状态数据以及所述相关辅助数据验证所述事务请求中的事务是否最新,具体地,可以计算相关辅助数据中的当前事务所在的区块高度与链上节点存储的k个区块的临时状态数据中的最新区块的区块高度的差值,若该差值小于k,则认为该事务为最新,验证通过。
根据可信执行环境验证所述证明是否有效,具体地,可以调用可信执行环境提供的验证接口,将所述证明输入到验证接口中,可信执行环境返回证明的有效性验证结果。
根据所述执行结果中的读写集、所述临时状态数据中记录的所述k个区块的只包含写集合的部分默克尔树验证所述相关辅助数据的默克尔树的默克尔写是否有效,具体地,验证默克尔写是否有效只需要验证链下发送数据的默克尔写证明和默克尔树的根证明,使用默克尔写证明和相关辅助数据,沿着默克尔树路径进行计算,若和默克尔根证明相等则验证通过,否则验证失败;所有验证通过后进行事务的提交时,需要对默克尔树进行操作,其中包括更新操作和整理操作。
根据所述多个执行记录的执行结果中的读写集验证所述多个事务请求中的事务是否冲突,具体地,可以通过乐观并发控制方法和可串行化快照隔离方法验证事务是否冲突。其中,乐观并发控制方法检查读写集是否被最近提交的事务更新,若未被更新,则说明事务之间不存在冲突,若被更新,则删除该事务,然后执行后续生成提案区块的操作;可串行化快照隔离方法首先检查当前块的事务的写集是否被最近提交的事务更新,如果当前块的事务的写集没有被最近提交的事务更新,则验证通过,然后判断当前事务是否存在读写依赖,若存在读写依赖,则根据读写依赖交换其操作顺序,例如,如果当前区块里存在先写后读的事务,则交换其操作顺序,改为先读后写,然后执行后续生成提案区块的操作。
根据本文的一个实施例,如图5所示,步骤402根据验证后的所述执行记录生成所述提案区块进一步包括,
步骤501:根据所述临时状态数据、所述执行结果中的读写集、所述证明对所述相关辅助数据的部分默克尔树进行更新操作;
步骤502:根据所述临时状态数据和所述执行结果中的读写集对所述相关辅助数据的部分默克尔树进行整理操作;
步骤503:将多个写证明和多个读写集中的写集合合并入所述更新操作和整理操作后的所述相关辅助数据的部分默克尔树,并计算所述提案区块。
在本文实施例中,临时状态数据中的关键结构是部分默克尔树,该部分默克尔树和链下存储节点中存储的完整默克尔树拥有相同的结构,因此具有相同的根摘要。自上而下查找临时状态数据的部分默克尔树、相关辅助数据的部分默克尔树以及证明,找到读写集中的事务在相关辅助数据的部分默克尔树中的位置或确定相关辅助数据的部分默克尔树中缺失读写集的事务的缺失子树,然后将读写集中事务的值写入到相关辅助数据的部分默克尔树中或在相关辅助数据的部分默克尔树中添加缺失子树并将读写集中事务的值写入,完成对相关辅助数据的部分默克尔树的更新操作。然后遍历相关辅助数据的部分默克尔树,删除除临时状态数据的k个区块之外的事务,删除时通过查找删除地址和写集映射地址的最大公共前缀长度,在相关辅助数据中删除树深度大于该最大公共前缀长度的树节点。最后计算经过更新和整理操作后的相关辅助数据的部分默克尔树的状态根,将该状态根作为所述提案区块的一部分。
在本文实施例中,领导者节点存储提案区块后,需要将提案区块发送给跟随者节点以及链下存储节点,为了减少网络数据传输,根据本文的一个实施例,步骤402中将所述提案区块发送给所述跟随者节点进一步包括,
所述领导者节点对所述提案区块的默克尔写证明进行压缩,并将压缩所述默克尔写证明的所述提案区块发送给所述跟随者节点。
在本文实施例中,所述默克尔写证明为写集合对应的哈希值以及沿着默克尔树到根节点所需要的兄弟节点的哈希值,将默克尔写证明进行压缩后,领导者节点发送给跟随者节点和链下存储节点的数据量就会减少,从而减少了网络的数据传输。
根据本文的一个实施例,所述领导者节点对所述提案区块的默克尔写证明进行压缩进一步包括,
确定所述提案区块中与所述提案区块的前一个区块相同的数据,根据所述相同的数据生成所述默克尔写证明;或,
确定所述提案区块的默克尔树与所述提案区块的前一个区块的默克尔树相同的部分,根据所述相同的部分生成所述默克尔写证明;或,
将所述提案区块中多个事务的默克尔写证明绑定在一起,生成一个默克尔写证明。
在本文实施例中,可以通过确定领导者节点生成的提案区块中与k个区块中的最后一个区块(即领导者节点生成的提案区块的前一个区块)相同的数据,然后将相同的数据生成所述默克尔写证明;也可以确定领导者节点生成的提案区块中默克尔树与k个区块中的最后一个区块的默克尔树相同的部分,然后将相同的默克尔树生成所述默克尔写证明;也可以将当前提案区块中多个事务的默克尔写证明绑定在一起,由于每一个事务的默克尔写证明有相同的组成,所以多个事务的默克尔写证明绑定后可以共用,即去掉相同的部分,保留不同的部分,然后生成一个默克尔写证明。需要说明的是,所述多个事务可以是当前提案区块中全部的事务,也可以是当前提案区块中的部分事务,优选地,本案的多个事务为当前提案区块中全部的事务。通过上述任一方法对默克尔写证明进行压缩,然后领导者节点将压缩默克尔写证明后的提案区块发送给跟随者节点和链下存储节点,减小了网络的数据传输。
基于同一发明构思,本说明书实施例还提供了一种基于区块链的司法数据存储系统,如图6所示,包括,客户端601、链下存储节点602以及链上节点603,进一步地,客户端601、链下存储节点602和链上节点603存储司法数据时,执行上述所述的方法。
通过上述系统所取得的有益效果与上述方法所取得的有益效果一致,本说明书实施例不做赘述。
如图7所示为本文实施例计算机设备的结构示意图,本文中的客户端601、链下存储节点602或链上节点603可以为本实施例中的计算机设备,执行上述本文的方法。计算机设备702可以包括一个或多个处理设备704,诸如一个或多个中央处理单元(CPU),每个处理单元可以实现一个或多个硬件线程。计算机设备702还可以包括任何存储资源706,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储资源706可以包括以下任一项或多种组合:任何类型的RAM,任何类型的ROM,闪存设备,硬盘,光盘等。更一般地,任何存储资源都可以使用任何技术来存储信息。进一步地,任何存储资源可以提供信息的易失性或非易失性保留。进一步地,任何存储资源可以表示计算机设备702的固定或可移除部件。在一种情况下,当处理设备704执行被存储在任何存储资源或存储资源的组合中的相关联的指令时,计算机设备702可以执行相关联指令的任一操作。计算机设备702还包括用于与任何存储资源交互的一个或多个驱动机构708,诸如硬盘驱动机构、光盘驱动机构等。
计算机设备702还可以包括输入/输出模块710(I/O),其用于接收各种输入(经由输入设备712)和用于提供各种输出(经由输出设备714)。一个具体输出机构可以包括呈现设备716和相关联的图形用户接口(GUI) 718。在其他实施例中,还可以不包括输入/输出模块710(I/O)、输入设备712以及输出设备714,仅作为网络中的一台计算机设备。计算机设备702还可以包括一个或多个网络接口720,其用于经由一个或多个通信链路722与其他设备交换数据。一个或多个通信总线724将上文所描述的部件耦合在一起。
通信链路722可以以任何方式实现,例如,通过局域网、广域网(例如,因特网)、点对点连接等、或其任何组合。通信链路722可以包括由任何协议或协议组合支配的硬连线链路、无线链路、路由器、网关功能、名称服务器等的任何组合。
需要说明的是,当所述链下存储节点602或链上节点603为本实施例所述的计算机设备702实现本说明书实施例所述的方法时,也可以不包括呈现设备716和相关联的图形用户接口(GUI) 718等。例如仅包括处理设备704、存储资源706和网络接口720组成的计算机最小系统。
对应于图2-图5中的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述步骤。
本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图2-图5所示的方法。
应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。
Claims (10)
1.一种基于区块链的司法数据存储方法,其特征在于,所述方法包括,
客户端获取跨部门的司法数据的事务请求,将所述事务请求发送到链下存储节点;
所述链下存储节点根据智能合约执行所述事务请求,得到执行记录,并将所述执行记录发送到链上节点;
所述链上节点根据所述链上节点的存储区中存储的部分区块对多个所述执行记录进行共识验证,并在得到提案区块后存储所述提案区块,所述部分区块为所述链下存储节点存储的全部区块中指定时间段内的指定数量的区块;
当所述链上节点对所述提案区块进行存储后,将所述提案区块发送给所述链下存储节点进行存储。
2.根据权利要求1所述的基于区块链的司法数据存储方法,其特征在于,所述链下存储节点根据智能合约执行所述事务请求,得到执行记录进一步包括,
在可信执行环境中根据所述智能合约执行所述事务请求,得到包括读写集的执行结果,并在所述链下存储节点的存储区中获取相关辅助数据;
在可信执行环境中通过所述读写集中的读集合和默克尔证明创建默克尔根;
根据所述默克尔根和所述可信执行环境中存储的世界状态快照对所述事务请求中的事务进行验证;
当验证通过后,对所述事务请求中的事务进行签名,得到证明;
根据所述执行结果、相关辅助数据和证明形成所述执行记录。
3.根据权利要求2所述的基于区块链的司法数据存储方法,其特征在于,所述链上节点根据所述链上节点的存储区中存储的部分区块对多个所述执行记录进行共识验证,得到提案区块进一步包括,
所述链上节点进行raft共识,得到领导者节点和跟随者节点;
所述领导者节点对多个所述执行记录进行验证,验证通过后,根据验证后的所述执行记录生成所述提案区块并将所述提案区块存储在所述领导者节点的存储区内,将所述提案区块发送给所述跟随者节点;
所述跟随者节点对多个所述执行记录进行验证,验证通过后将所述提案区块存储在所述跟随者节点的存储区内。
4.根据权利要求3所述的基于区块链的司法数据存储方法,其特征在于,对所述执行记录进行验证进一步包括,
根据所述链上节点存储的k个区块的临时状态数据以及所述相关辅助数据验证所述事务请求中的事务是否最新,其中所述k个区块为所述链上节点存储的部分区块中的一部分或者全部;
根据所述可信执行环境验证所述证明是否有效;
根据所述执行结果中的读写集、所述临时状态数据中记录的所述k个区块的只包含写集合的部分默克尔树验证所述相关辅助数据的默克尔树的默克尔写是否有效;
根据多个所述执行记录的执行结果中的读写集验证多个所述事务请求中的事务是否冲突。
5.根据权利要求4所述的基于区块链的司法数据存储方法,其特征在于,所述默克尔写包括更新操作和整理操作;
根据验证后的所述执行记录生成所述提案区块进一步包括,
根据所述临时状态数据、所述执行结果中的读写集、所述证明对所述相关辅助数据的部分默克尔树进行更新操作;
根据所述临时状态数据和所述执行结果中的读写集对所述相关辅助数据的部分默克尔树进行整理操作;
将多个写证明和多个读写集中的写集合合并入所述更新操作和整理操作后的所述相关辅助数据的部分默克尔树,并计算所述提案区块。
6.根据权利要求3所述的基于区块链的司法数据存储方法,其特征在于,将所述提案区块发送给所述跟随者节点进一步包括,
所述领导者节点对所述提案区块的默克尔写证明进行压缩,并将压缩所述默克尔写证明的所述提案区块发送给所述跟随者节点。
7.根据权利要求6所述的基于区块链的司法数据存储方法,其特征在于,所述领导者节点对所述提案区块的默克尔写证明进行压缩进一步包括,
确定所述提案区块中与所述提案区块的前一个区块相同的数据,根据所述相同的数据生成所述默克尔写证明;或,
确定所述提案区块的默克尔树与所述提案区块的前一个区块的默克尔树相同的部分,根据所述相同的部分生成所述默克尔写证明;或,
将所述提案区块中多个事务的默克尔写证明绑定在一起,生成一个默克尔写证明。
8.一种基于区块链的司法数据存储系统,其特征在于,包括客户端、链下存储节点以及链上存储节点;
所述客户端、链下存储节点和链上节点存储司法数据时,执行如权利要求1-7任意一项所述的方法。
9.一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现权利要求1-7任意一项所述的方法。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被计算机设备的处理器运行时,执行权利要求1-7任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210201081.6A CN114328544B (zh) | 2022-03-02 | 2022-03-02 | 基于区块链的司法数据存储方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210201081.6A CN114328544B (zh) | 2022-03-02 | 2022-03-02 | 基于区块链的司法数据存储方法、系统、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114328544A true CN114328544A (zh) | 2022-04-12 |
CN114328544B CN114328544B (zh) | 2022-05-24 |
Family
ID=81029777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210201081.6A Active CN114328544B (zh) | 2022-03-02 | 2022-03-02 | 基于区块链的司法数据存储方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328544B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200007312A1 (en) * | 2018-07-02 | 2020-01-02 | International Business Machines Corporation | On-chain governance of blockchain |
CN110912707A (zh) * | 2019-11-22 | 2020-03-24 | 腾讯科技(深圳)有限公司 | 基于区块链的数字证书处理方法、装置、设备及存储介质 |
CN113821564A (zh) * | 2021-09-09 | 2021-12-21 | 湖南大学 | 异构并行区块链及其链上数据与链下合约协同方法 |
-
2022
- 2022-03-02 CN CN202210201081.6A patent/CN114328544B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200007312A1 (en) * | 2018-07-02 | 2020-01-02 | International Business Machines Corporation | On-chain governance of blockchain |
CN110912707A (zh) * | 2019-11-22 | 2020-03-24 | 腾讯科技(深圳)有限公司 | 基于区块链的数字证书处理方法、装置、设备及存储介质 |
CN113821564A (zh) * | 2021-09-09 | 2021-12-21 | 湖南大学 | 异构并行区块链及其链上数据与链下合约协同方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114328544B (zh) | 2022-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10523421B2 (en) | Checkpoints for permissionless blockchains | |
Chacko et al. | Why do my blockchain transactions fail? a study of hyperledger fabric | |
US11159315B2 (en) | Generating or managing linked decentralized identifiers | |
CN109791591B (zh) | 经由区块链进行身份和凭证保护及核实的方法和系统 | |
US10460289B2 (en) | Auditing certified blockchain checkpoints | |
US20230161756A1 (en) | Scalable, secure, efficient, and adaptable distributed digital ledger transaction network | |
US11177962B2 (en) | Optimizations for verification of interactions system and method | |
US11741083B2 (en) | Cross-shard private atomic commit | |
JP7361103B2 (ja) | 演算および信用できる確認のための分散型プラットフォーム | |
CN110874739B (zh) | 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络 | |
US20200394552A1 (en) | Aggregated maching learning verification for database | |
CN112131254A (zh) | 用于区块链分类账的sql处理引擎 | |
CN115769241A (zh) | 针对经许可的区块链的隐私保护架构 | |
CN111444027B (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
US20220027319A1 (en) | Data deduplication in blockchain platforms | |
US11664973B2 (en) | Trust-varied relationship between blockchain networks | |
US20200314078A1 (en) | Inter-system linking method and node | |
CN116325833A (zh) | 将设备标识集成到区块链的许可框架中 | |
US20210297264A1 (en) | Enabling consensus in distributed transaction processing systems | |
Konashevych | Cross-blockchain protocol for public registries | |
WO2023051308A1 (zh) | 数据校验方法、装置、设备及存储介质 | |
Manevich et al. | Redacting transactions from execute-order-validate blockchains | |
CN109690550B (zh) | 数字资产架构 | |
CN114328544B (zh) | 基于区块链的司法数据存储方法、系统、设备及存储介质 | |
US20240223388A1 (en) | Method and system for atomic, consistent and accountable cross-chain rewriting |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |