区块链联盟链的区块数据存储系统及方法
技术领域
本发明涉及区块链盟主链技术领域,特别涉及一种区块链联盟链的区块数据存储系统及方法。
背景技术
基于区块链技术有公有链、联盟链和私有链三种形式,联盟链本质上仍然是一种私有链,只不过它比单个小组织开发的私有链更大,却又没有公有链这么大的规模,可以理解为它是介于私有链和公有链之间的一种区块链,是指其共识过程受到预选节点控制的区块链。作为部分去中心化的盟主链在区块数据存储时,也必须满足分布式总账的存储要求。在大数据和多节点业务场景下,现有的解决方案有两种实现分布式总账的存储方式:第一种是重资产的模式,资产化的业务数据以分布式总账的方式存储在各个节点;第二种是轻资产的模式,资产化的业务数据的摘要信息以分布式总账的方式存储在各个节点,原始业务数据留存在第三方平台。对于第一种存储模式,对区块链平台各节点的存储空间要求都一样的很高;对于第二种存储模式,虽然极大的降低了对区块链平台各节点的存储空间要求,但是由于原始业务数据留存在第三方平台,增加了后期使用资产化数据的复杂度和可用性。
发明内容
本发明实施例提供了一种区块链联盟链的区块数据存储系统及方法,解决了现有技术中盟主链在区块数据存储时对存储空间要求高、后期使用资产化数据的复杂度大和可用性小的技术问题。
本发明实施例提供的区块链联盟链的区块数据存储系统包括:第三方平台、盟主节点、多个签名者节点和参与者节点;
所述第三方平台用于:将创建事务和区块的请求发送至所述盟主节点,其中,所述创建事务和区块的请求包括原始业务数据和原始业务数据的签名;
所述盟主节点用于:接收所述创建事务和区块的请求,进行创建事务操作:对原始业务数据的签名进行验签,当验签通过时,根据创建事务请求触发智能合约生成事务数据,所述事务数据为业务数据的摘要信息,并生成全局属性的业务数据,将全局属性的业务数据和本地属性的原始业务数据进行存储;进行创建区块操作:将生成区块请求发送至所述签名者节点,其中,所述生成区块请求包括全局属性的事务数据和全局属性的业务数据;
所述多个签名者节点分别用于:接收所述生成区块请求,对全局属性的事务数据和全局属性的业务数据进行一致性共识校验,校验通过后,将生成区块请求响应消息发送至所述盟主节点,所述生成区块请求响应消息中包括证据信息,证据信息包括节点公钥和数字签名信息;
所述盟主节点还用于:继续进行创建区块操作:接收多个签名者节点返回的多个生成区块请求响应消息,当多个生成区块请求响应消息的数量满足一致性共识要求的签名个数时,生成区块,其中区块中包括全局属性的事务数据、全局属性的业务数据和证据数据,将所述区块同步至所述签名者节点和所述参与者节点;
所述盟主节点还用于:将业务数据的编号和创建事务和区块的请求执行结果返回给第三方平台,其中,业务数据的编号为根据原始业务数据计算出的摘要信息;
所述第三方平台还用于:接收业务数据的编号和创建事务和区块的请求执行结果。
本发明实施例提供的区块链联盟链的区块数据存储方法包括:
第三方平台将创建事务和区块的请求发送至盟主节点,其中,所述创建事务和区块的请求包括原始业务数据和原始业务数据的签名;
盟主节点接收所述创建事务和区块的请求,进行创建事务操作:对原始业务数据的签名进行验签,当验签通过时,根据创建事务请求触发智能合约生成事务数据,所述事务数据为业务数据的摘要信息,并生成全局属性的业务数据,将全局属性的业务数据和本地属性的原始业务数据进行存储;进行创建区块操作:将生成区块请求发送至所述签名者节点,其中,所述生成区块请求包括全局属性的事务数据和全局属性的业务数据;
签名者节点接收所述生成区块请求,对全局属性的事务数据和全局属性的业务数据进行一致性共识校验,校验通过后,将生成区块请求响应消息发送至所述盟主节点,所述生成区块请求响应消息中包括证据信息,证据信息包括节点公钥和数字签名信息;
盟主节点继续进行创建区块操作,接收多个签名者节点返回的多个生成区块请求响应消息,当多个生成区块请求响应消息的数量满足一致性共识要求的签名个数时,生成区块,其中区块中包括全局属性的事务数据、全局属性的业务数据和证据数据,将所述区块同步至所述签名者节点和参与者节点;
盟主节点将业务数据的编号和创建事务和区块的请求执行结果返回给第三方平台,其中,业务数据的编号为根据原始业务数据计算出的摘要信息;
第三方平台接收业务数据的编号和创建事务和区块的请求执行结果。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述所述方法的计算机程序。
在本发明实施例中,存储本地属性的原始业务数据到盟主节点,将全局属性的事务数据、全局属性的业务数据同步到各签名者节点,和现有重资产和轻资产两种方案相比较,降低了对区块链平台各节点的存储空间要求,同时也可以简单方便的使用资产化数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种区块链联盟链的区块数据存储系统结构框图;
图2是本发明实施例提供的一种盟主节点结构框图;
图3是本发明实施例提供的一种签名者节点结构框图;
图4是本发明实施例提供的一种参与者节点结构框图;
图5是本发明实施例提供的一种第三方业务平台结构框图;
图6是本发明实施例提供的一种业务数据资产化存储到盟主节点的流程图;
图7是本发明实施例提供的一种验证资产化业务数据真伪的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中,提供了一种区块链联盟链的区块数据存储系统,如图1所示,该系统包括:第三方平台4、盟主节点1、签名者节点2(多个)和参与者节点3(根据需要也可以是多个);
所述第三方平台用于:将创建事务和区块的请求发送至所述盟主节点,其中,所述创建事务和区块的请求包括原始业务数据和原始业务数据的签名;
所述盟主节点用于:接收所述创建事务和区块的请求,进行创建事务操作:对原始业务数据的签名进行验签,当验签通过时,根据创建事务请求触发智能合约生成事务数据,所述事务数据为业务数据的摘要信息,并生成全局属性的业务数据,将全局属性的业务数据和本地属性的原始业务数据进行存储;进行创建区块操作:将生成区块请求发送至所述签名者节点,其中,所述生成区块请求包括全局属性的事务数据和全局属性的业务数据;
所述多个签名者节点分别用于:接收所述生成区块请求,对全局属性的事务数据和全局属性的业务数据进行一致性共识校验,校验通过后,将生成区块请求响应消息发送至所述盟主节点,所述生成区块请求响应消息中包括证据信息,证据信息包括节点公钥和数字签名信息;
所述盟主节点还用于:继续进行创建区块操作:接收多个签名者节点返回的多个生成区块请求响应消息,当多个生成区块请求响应消息的数量满足一致性共识要求的签名个数时,生成区块,其中区块中包括全局属性的事务数据、全局属性的业务数据和证据数据,将所述区块同步至所述签名者节点和所述参与者节点;
所述盟主节点还用于:将业务数据的编号和创建事务和区块的请求执行结果返回给第三方平台,其中,业务数据的编号为根据原始业务数据计算出的摘要信息;
所述第三方平台还用于:接收业务数据的编号和创建事务和区块的请求执行结果。
在本发明实施例中,所述第三方平台还用于:将验证业务数据真伪请求发送至所述盟主节点,所述验证业务数据真伪请求包括业务数据的编号;
所述盟主节点还用于:接收所述验证业务数据真伪请求,根据业务数据的编号在本地查找到对应的事务数据和区块,将一致性共识校验请求发送至所述签名者节点;
所述多个签名者节点还分别用于:接收所述一致性共识校验请求,对区块中的数据进行一致性共识校验,将一致性共识校验请求响应消息发送至所述盟主节点。具体的,按照如下方式进行一致性共识校验:由签名节点根据区块数据进行一致性共识校验,在校验时,采用证据信息中的节点公钥、数字签名信息对原始业务数据的数据签名进行验签。
所述盟主节点还用于:接收多个签名者节点返回的多个一致性共识校验请求响应消息,当多个一致性共识校验请求响应消息中表明校验通过的个数符合一致性共识要求的校验通过节点个数时,表明一致性共识校验通过;根据事务数据查找对应的原始业务数据,确定原始业务数据的摘要信息,将所述原始业务数据的摘要信息与事务数据进行比对,当所述原始业务数据的摘要信息与事务数据一致时,表明业务数据的真伪验证通过,将验证通过消息、事务数据和原始业务数据返回至所述第三方平台;
所述第三方平台还用于:接收验证通过消息、事务数据和原始业务数据。
在本发明实施例中,所述盟主节点还用于:将链审计请求发送至所述多个签名者节点;
所述多个签名者节点还分别用于:接收所述链审计请求,采用二叉默克尔树算法对区块链中的所有区块进行审计避免断链和分叉,获得审计结果,将所述审计结果返回至所述盟主节点;
所述盟主节点还用于:接收所述审计结果。
在本发明实施例中,如图2所示,所述盟主节点1可以包括:
对外服务接口模块1-1:向第三方平台提供创建事务和验证资产化业务数据真伪的服务接口。
区块链基础模块1-2:提供区块盟主节点的通用基础功能,包括节点、资产账户、资产、事务、块和智能合约的管理。
本地业务数据存储模块1-3:存储资产化业务数据对应的原始业务数据。
具体的,对外服务接口模块1-1用于:接收创建事务和区块的请求;将生成区块请求发送至所述签名者节点,其中,所述生成区块请求包括全局属性的事务数据和全局属性的业务数据;接收多个签名者节点返回的多个生成区块请求响应消息;将所述区块同步至所述签名者节点和所述参与者节点;将业务数据的编号和创建事务和区块的请求执行结果返回给第三方平台,其中,业务数据的编号为根据原始业务数据计算出的摘要信息;
区块链基础模块1-2用于:对原始业务数据的签名进行验签,当验签通过时,根据创建事务请求触发智能合约生成事务数据,所述事务数据为业务数据的摘要信息,并生成全局属性的业务数据;当多个生成区块请求响应消息的数量满足一致性共识要求的签名个数时,生成区块,其中区块中包括全局属性的事务数据、全局属性的业务数据和证据数据;
本地业务数据存储模块1-3用于:存储全局属性的业务数据和本地属性的原始业务数据。
所述对外服务接口模块1-1还用于:接收所述验证业务数据真伪请求;将一致性共识校验请求发送至所述签名者节点;接收多个签名者节点返回的多个一致性共识校验请求响应消息;将验证通过消息、事务数据和原始业务数据返回至所述第三方平台;
所述区块链基础模块1-2还用于:当多个一致性共识校验请求响应消息中表明校验通过的个数符合一致性共识要求的校验通过节点个数时,表明一致性共识校验通过;根据事务数据查找对应的原始业务数据,确定原始业务数据的摘要信息,将所述原始业务数据的摘要信息与事务数据进行比对,当所述原始业务数据的摘要信息与事务数据一致时,表明业务数据的真伪验证通过。
在本发明实施例中,如图3所示,所述签名者节点2包括:
接口模块2-1:和其他节点之间通信。
区块链基础模块2-2:用于提供区块盟主节点的通用基础功能,包括节点、资产账户、资产、事务、块和智能合约的管理。
具体的,接口模块2-1用于:接收所述生成区块请求;校验通过后,将生成区块请求响应消息发送至所述盟主节点,所述生成区块请求响应消息中包括证据信息,证据信息包括节点公钥和数字签名信息;接收所述一致性共识校验请求,将一致性共识校验请求响应消息发送至所述盟主节点;
区块链基础模块2-2用于:对全局属性的事务数据和全局属性的业务数据进行一致性共识校验;对区块中的数据进行一致性共识校验和链审计。
在本发明实施例中,如图4所示,所述参与者节点3包括:
接口模块3-1,用于和其他节点之间通信。
区块链基础模块3-2,用于提供区块盟主节点的通用基础功能,包括节点、资产账户、资产、事务、块和智能合约的管理。特别的,参与者节点不参与资产的生成等事务,仅使用事务执行后的结果数据。
在本发明实施例中,如图5所示,第三方业务平台包括:
调用区块链服务接口模块4-1:调用区块链盟主节点的服务接口,使用需要资产化的业务数据为参数,用于事务和区块的生成。
业务模块4-2:特定业务系统的业务功能。
基于同一发明构思,本发明实施例中还提供了一种区块链联盟链的区块数据存储方法,如下面的实施例所述。由于区块链联盟链的区块数据存储方法解决问题的原理与区块链联盟链的区块数据存储系统相似,因此区块链联盟链的区块数据存储方法的实施可以参见区块链联盟链的区块数据存储系统的实施,重复之处不再赘述。
图6是本发明实施例的区块链联盟链的区块数据存储方法流程图,指的就是如图3所示,包括:
步骤601:第三方平台将创建事务和区块的请求发送至盟主节点,其中,所述创建事务和区块的请求包括原始业务数据和原始业务数据的签名;
步骤602:盟主节点接收所述创建事务和区块的请求,进行创建事务操作:对原始业务数据的签名进行验签,当验签通过时,根据创建事务请求触发智能合约生成事务数据,所述事务数据为业务数据的摘要信息,并生成全局属性的业务数据,将全局属性的业务数据和本地属性的原始业务数据进行存储;进行创建区块操作:将生成区块请求发送至所述签名者节点,其中,所述生成区块请求包括全局属性的事务数据和全局属性的业务数据;
步骤603:签名者节点接收所述生成区块请求,对全局属性的事务数据和全局属性的业务数据进行一致性共识校验,校验通过后,将生成区块请求响应消息发送至所述盟主节点,所述生成区块请求响应消息中包括证据信息,证据信息包括节点公钥和数字签名信息;
步骤604:盟主节点继续进行创建区块操作,接收多个签名者节点返回的多个生成区块请求响应消息,当多个生成区块请求响应消息的数量满足一致性共识要求的签名个数时,生成区块,其中区块中包括全局属性的事务数据、全局属性的业务数据和证据数据,将所述区块同步至所述签名者节点和参与者节点;
步骤605:盟主节点将业务数据的编号和创建事务和区块的请求执行结果返回给第三方平台,其中,业务数据的编号为根据原始业务数据计算出的摘要信息;
步骤606:第三方平台接收业务数据的编号和创建事务和区块的请求执行结果。
在本发明实施例中,如图7所示,该区块链联盟链的区块数据存储方法还包括:
步骤701:第三方平台将验证业务数据真伪请求发送至所述盟主节点,所述验证业务数据真伪请求包括业务数据的编号;
步骤702:盟主节点接收所述验证业务数据真伪请求,根据业务数据的编号在本地查找到对应的事务数据和区块,将一致性共识校验请求发送至所述签名者节点;
步骤703:签名者节点接收所述一致性共识校验请求,对区块中的数据进行一致性共识校验,将一致性共识校验请求响应消息发送至所述盟主节点;
步骤704:盟主节点接收多个签名者节点返回的多个一致性共识校验请求响应消息,当多个一致性共识校验请求响应消息中表明校验通过的个数符合一致性共识要求的校验通过节点个数时,表明一致性共识校验通过;根据事务数据查找对应的原始业务数据,确定原始业务数据的摘要信息,将所述原始业务数据的摘要信息与事务数据进行比对,当所述原始业务数据的摘要信息与事务数据一致时,表明业务数据的真伪验证通过,将验证通过消息、事务数据和原始业务数据返回至所述第三方平台;
步骤705:第三方平台接收验证通过消息、事务数据和原始业务数据。
在本发明实施例中,该区块链联盟链的区块数据存储方法还包括:
盟主节点将链审计请求发送至所述多个签名者节点;
多个签名者节点接收所述链审计请求,采用二叉默克尔树算法对区块链中的所有区块进行审计,获得审计结果,将所述审计结果返回至所述盟主节点;
盟主节点接收所述审计结果。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述所述方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述所述方法的计算机程序。
综上所述,本发明提出的区块链联盟链的区块数据存储系统及方法通过定义区块全局属性和本地属性,全局属性数据同步到各节点,本地属性数据保存在盟主节点的协议,以及利用区块本地属性的特点,存储资产化的业务数据的原始数据到区块的本地属性数据,存储资产化的业务数据的摘要信息到区块的全局属性数据,和现有重资产和轻资产两种方案相比较,降低了对区块链平台各节点的存储空间要求,同时也可以简单方便的使用资产化数据。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。