CN117909406A - 基于分层区块链的数据处理方法、装置以及可读存储介质 - Google Patents
基于分层区块链的数据处理方法、装置以及可读存储介质 Download PDFInfo
- Publication number
- CN117909406A CN117909406A CN202211246555.5A CN202211246555A CN117909406A CN 117909406 A CN117909406 A CN 117909406A CN 202211246555 A CN202211246555 A CN 202211246555A CN 117909406 A CN117909406 A CN 117909406A
- Authority
- CN
- China
- Prior art keywords
- service
- block
- data
- verification
- consensus
- 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.)
- Pending
Links
- 238000003860 storage Methods 0.000 title claims abstract description 84
- 238000003672 processing method Methods 0.000 title abstract description 17
- 238000012795 verification Methods 0.000 claims abstract description 499
- 238000012545 processing Methods 0.000 claims abstract description 392
- 238000004458 analytical method Methods 0.000 claims abstract description 114
- 238000000034 method Methods 0.000 claims abstract description 85
- 238000004891 communication Methods 0.000 claims description 53
- 238000005111 flow chemistry technique Methods 0.000 claims description 42
- 238000006243 chemical reaction Methods 0.000 claims description 38
- 238000004590 computer program Methods 0.000 claims description 18
- 230000003993 interaction Effects 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 7
- 210000001503 joint Anatomy 0.000 abstract description 7
- 239000003795 chemical substances by application Substances 0.000 description 172
- 230000008569 process Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 19
- 230000008859 change Effects 0.000 description 13
- 238000005206 flow analysis Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 7
- 230000008014 freezing Effects 0.000 description 6
- 238000007710 freezing Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 4
- 238000012550 audit Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 239000010432 diamond Substances 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012552 review Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000002441 reversible effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 208000022417 sinus histiocytosis with massive lymphadenopathy Diseases 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于分层区块链的数据处理方法、装置以及可读存储介质,该方法包括:在业务流处理器基于关联关系从共识节点上获取到具有最大区块高度的待校验区块时,对待校验区块进行区块校验,得到区块校验结果;若区块校验结果指示校验成功,则将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果;对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,基于逻辑分析结果向共识节点进行业务反馈。采用本申请,可以实现基于实时数据流的业务模式与区块链的无缝对接,且提升实时业务流式分析和实时业务反馈的性能。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种基于分层区块链的数据处理方法、装置以及可读存储介质。
背景技术
目前,与区块链系统相关的实时数据流分析通常是由外部业务系统执行,例如,在区块链系统生成相应的账本后,外部业务系统可以主动拉取其账本数据进行业务逻辑分析和相关业务反馈。然而,由于区块链具有概率确定性(例如最长链机制),在区块链系统中,一般状态生效和交易提交均有一定的时延,故而外部业务系统往往会采用异步读取的方式来获取需要的账本数据,但是这种读取方式实际上与原本的基于实时数据流的业务模式存在一定冲突,以至于在基于实时数据流的业务模式与区块链进行对接时,二者之间的数据交互效果不佳,进而导致相关的实时业务流式分析和实时业务反馈的性能下降。
发明内容
本申请实施例提供了一种基于分层区块链的数据处理方法、装置以及可读存储介质,可以实现基于实时数据流的业务模式与区块链的无缝对接,且提升实时业务流式分析和实时业务反馈的性能。
本申请实施例一方面提供了一种基于分层区块链的数据处理方法,该方法由业务流处理器执行,分层区块链包含核心共识网络中的区块链,核心共识网络中的共识节点与业务流处理器具有关联关系,该方法包括:
在业务流处理器基于关联关系从共识节点上获取到具有最大区块高度的待校验区块时,对待校验区块进行区块校验,得到区块校验结果;
若区块校验结果指示校验成功,则将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果;
对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,基于逻辑分析结果向共识节点进行业务反馈。
本申请实施例一方面提供了一种基于分层区块链的数据处理方法,该方法由核心共识网络中的共识节点执行,分层区块链包含核心共识网络中的区块链,核心共识网络中的业务流处理器与共识节点具有关联关系,该方法包括:
在共识节点基于关联关系获取到业务流处理器发送的数据读取请求时,根据数据读取请求,将共识节点中具有最大区块高度的待校验区块返回至业务流处理器,以使业务流处理器对校验区块进行区块校验,得到区块校验结果;当区块校验结果指示校验成功时,业务流处理器用于将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,且对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果;业务流处理器用于对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,逻辑分析结果用于指示业务流处理器向共识节点进行业务反馈;
获取由业务流处理器所返回的反馈业务交易;反馈业务交易是由业务流处理器基于逻辑分析结果所生成的;
对反馈业务交易进行交易验证,当反馈业务交易验证成功时,基于反馈业务交易对共识节点上部署的与反馈业务相关联的业务合约的合约状态进行更改。
本申请实施例一方面提供了一种基于分层区块链的数据处理装置,该装置运行在业务流处理器中,其中,分层区块链包含核心共识网络中的区块链,核心共识网络中的共识节点与业务流处理器具有关联关系,该装置包括:
区块校验模块,用于在业务流处理器基于关联关系从共识节点上获取到具有最大区块高度的待校验区块时,对待校验区块进行区块校验,得到区块校验结果;
流失处理模块,用于若区块校验结果指示校验成功,则将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果;
业务反馈模块,用于对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,基于逻辑分析结果向共识节点进行业务反馈。
其中,上述业务流处理器包括共识节点代理,关联关系包括共识节点代理与共识节点之间的数据交互关系;该装置还包括:
数据请求模块,用于基于数据交互关系,通过共识节点代理向共识节点发送数据读取请求,以使共识节点根据数据读取请求返回共识节点的区块存储状态以及核心共识网络中具有最大区块高度的待处理区块;
区块确定模块,用于基于共识节点的区块存储状态对待处理区块进行区块确定性验证,得到区块确定性验证结果;当区块确定性验证结果为确定性成功验证结果时,将确定性成功验证结果所指示的具有第一区块状态的待处理区块作为待校验区块。
其中,共识节点的节点数量为N个,N为正整数;一个共识节点对应于一个区块存储状态;上述区块确定模块包括:
节点确定单元,用于根据N个共识节点分别对应的区块存储状态,将N个共识节点中已存储有待处理区块的共识节点作为目标共识节点;目标共识节点的节点数量小于或等于N;
第一验证单元,用于若目标共识节点的节点数量大于节点数量阈值,则将待处理区块的区块状态确定为第一区块状态,将具有第一区块状态的待处理区块作为确定性成功验证结果;
第二验证单元,用于若目标共识节点的节点数量小于或等于节点数量阈值,则将待处理区块的区块状态确定为第二区块状态,将具有第二区块状态的待处理区块作为确定性失败验证结果;
验证结果确定单元,用于将确定性成功验证结果或确定性失败验证结果作为区块确定性验证结果。
其中,上述区块校验模块包括:
节点验签单元,用于通过共识节点代理获取与待校验区块相关联的节点签名集合以及N个共识节点分别对应的节点公钥,基于获取到的N个节点公钥对节点签名集合进行节点签名验证,得到节点验签结果;节点签名集合包括N个共识节点中的每个共识节点分别对待校验区块进行签名所得到的节点签名信息;
树根校验单元,用于若节点验签结果指示验签成功,则对待校验区块中的默克尔树根进行树根校验,得到树根校验结果;
交易校验单元,用于若树根校验结果指示树根校验成功,则对待校验区块中与默克尔树根相关联的交易数据进行交易校验,得到交易校验结果;
校验成功单元,用于若交易校验结果指示交易校验成功,则确定待校验区块校验成功,将校验成功的待校验区块作为区块校验成功结果;
校验结果确定单元,用于基于节点验签结果、树根校验结果、交易校验结果以及区块校验成功结果,确定区块校验结果。
其中,上述校验结果确定单元具体用于若节点验签结果指示验签失败,或者,树根校验结果指示树根校验失败,或者,交易校验结果指示交易校验失败,则确定待校验区块校验失败,将校验失败的待校验区块作为区块校验失败结果;将区块校验成功结果或区块校验失败结果作为区块校验结果。
其中,上述流失处理模块包括:
业务数据获取单元,用于通过业务流处理器中的共识节点代理,从待校验区块所在的共识节点的节点内存中读取待校验区块的交易数据以及与交易数据相关联的合约数据,将读取到的交易数据和合约数据作为与待校验区块相关联的业务数据;
数据流存储单元,用于将业务数据以数据流的方式发送至业务流处理器中的流处理队列进行存储,将存储在流处理队列中的业务数据作为业务数据流;
流失处理单元,用于通过业务流处理器中的流失处理组件以及与流失处理组件相关联的转换处理引擎,对业务数据流进行流失处理,得到业务数据对应的流失处理结果。
其中,上述流失处理单元包括:
数据流切分子单元,用于通过业务流处理器中的流失处理组件从流处理队列中拉取业务数据流,基于切分时间间隔对拉取到的业务数据流进行数据流切分,得到至少两个子业务数据流;
数据转换子单元,用于将至少两个子业务数据流传输至与流失处理组件相关联的转换处理引擎进行数据转换处理,得到每个子业务数据流对应的转换处理结果,将得到的至少两个转换处理结果作为业务数据对应的流失处理结果。
其中,流处理队列是基于流代理组件所构建的,共识节点上部署有与反馈业务相关联的业务合约,业务合约中注册有业务流处理器所包含的共识节点代理的代理公钥;该装置还包括:
第一签名模块,用于当共识节点代理获取到包含有代理公钥的第一公钥证书时,生成数据推送请求,基于代理公钥对应的代理私钥对数据推送请求进行签名,得到第一签名信息;
第一发送模块,用于将数据推送请求和第一签名信息发送至共识节点,以使共识节点在对第一签名信息验签成功后,基于数据推送请求对第一公钥证书进行证书验证,得到第一证书验证结果;
第一通信模块,用于若第一证书验证结果指示验证成功,则确定共识节点代理具备数据推送权限,在共识节点代理与流代理组件之间建立第一通信连接;第一通信连接用于将共识节点代理获取到的业务数据传输至流代理组件。
其中,流处理队列是基于流代理组件所构建的,共识节点上部署有与反馈业务相关联的业务合约,业务合约中注册有业务流处理器所包含的流失处理组件的组件公钥;该装置还包括:
第二签名模块,用于当流失处理组件获取到包含有组件公钥的第二公钥证书时,生成数据拉取请求,基于组件公钥对应的组件私钥对数据拉取请求进行签名,得到第二签名信息;
第二发送模块,用于将数据拉取请求和第二签名信息发送至共识节点,以使共识节点在对第二签名信息验签成功后,基于数据拉取请求对第二公钥证书进行证书验证,得到第二证书验证结果;
第二通信模块,用于若第二证书验证结果指示验证成功,则确定流失处理组件具备数据拉取权限,在流失处理组件与流代理组件之间建立第二通信连接;第二通信连接用于将流代理组件所存储的业务数据流传输至流失处理组件。
其中,业务流处理器还包括共识节点代理和业务控制组件,业务控制组件中包含有与目标业务逻辑相关联的业务处理引擎;共识节点上部署有与反馈业务相关联的业务合约,业务合约中注册有业务处理引擎的引擎私钥;
上述业务反馈模块包括:
逻辑分析单元,用于基于目标业务逻辑,调用业务处理引擎对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果;
反馈签名单元,用于根据逻辑分析结果生成业务反馈消息,基于引擎私钥对业务反馈消息进行签名,得到引擎签名信息,通过业务控制组件的组件接口将引擎签名信息和业务反馈消息返回至共识节点代理;
引擎验签单元,用于通过共识节点代理对引擎签名信息进行引擎签名验证,得到引擎验签结果;
消息转发单元,用于若引擎验签结果指示验签成功,则将业务反馈消息转发至共识节点。
其中,上述消息转发单元包括:
组装签名子单元,用于若引擎验签结果指示验签成功,则对业务反馈消息进行交易组装处理,得到反馈业务交易,基于共识节点代理的代理私钥对反馈业务交易进行签名,得到代理签名信息;
交易转发子单元,用于将代理签名信息和反馈业务交易转发至共识节点,以使共识节点对代理签名信息和引擎签名信息进行共识,且在代理签名信息和引擎签名信息均共识通过时,基于反馈业务交易对业务合约的合约状态进行更改。
本申请实施例一方面提供了一种基于分层区块链的数据处理装置,该装置运行在核心共识网络中的共识节点中,其中,分层区块链包含核心共识网络中的区块链,核心共识网络中的业务流处理器与共识节点具有关联关系,该装置包括:
区块获取模块,用于在共识节点基于关联关系获取到业务流处理器发送的数据读取请求时,根据数据读取请求,将共识节点中具有最大区块高度的待校验区块返回至业务流处理器,以使业务流处理器对校验区块进行区块校验,得到区块校验结果;当区块校验结果指示校验成功时,业务流处理器用于将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,且对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果;业务流处理器用于对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,逻辑分析结果用于指示业务流处理器向共识节点进行业务反馈;
反馈获取模块,用于获取由业务流处理器所返回的反馈业务交易;反馈业务交易是由业务流处理器基于逻辑分析结果所生成的;
状态变更模块,用于对反馈业务交易进行交易验证,当反馈业务交易验证成功时,基于反馈业务交易对共识节点上部署的与反馈业务相关联的业务合约的合约状态进行更改。
其中,上述状态变更模块,包括:
签名获取单元,用于获取与反馈业务交易相关联的代理签名信息和引擎签名信息;反馈业务交易是由业务流处理器中的共识节点代理对业务反馈消息进行交易组装处理后所得到的,代理签名信息是由共识节点代理基于代理私钥对反馈业务交易进行签名所得到的;业务反馈消息是由业务流处理器中的业务控制组件所包含的业务处理引擎根据逻辑分析结果所生成的消息,引擎签名信息是由业务处理引擎基于引擎私钥对业务反馈消息进行签名所得到的;
第一共识单元,用于对代理签名信息进行共识,得到第一共识结果;
第二共识单元,用于当第一共识结果指示代理签名信息共识通过时,对引擎签名信息进行共识,得到第二共识结果;
验证成功单元,用于当第二共识结果指示引擎签名信息共识通过时,确定反馈业务交易验证成功。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
处理器与存储器相连,其中,存储器用于存储计算机程序,计算机程序被处理器执行时,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的方法。
在本申请实施例中,分层区块链包含有核心共识网络中的区块链,且核心共识网络中包含有具有关联关系的共识节点和业务流处理器,其中,在业务流处理器基于该关联关系从共识节点上获取到具有最大区块高度的待校验区块时,可以对待校验区块进行区块校验,以得到区块校验结果。进一步,若该区块校验结果指示校验成功,则可以将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,进而可以对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果。随后,可以对该流失处理结果进行业务逻辑分析,从而得到业务数据对应的逻辑分析结果,并可以基于该逻辑分析结果向共识节点进行业务反馈。由此可见,在核心共识网络中,业务流处理器可以在保证链上链下数据一致性和可靠性的前提下,即时获取到区块链上的实时数据流(即业务数据流)进行快速的业务逻辑分析以及相应的业务反馈,从而可以实现基于实时数据流的业务模式与区块链的无缝对接。此外,由于在业务逻辑分析之前先对业务数据流进行了流失处理,以对得到的流失处理结果进行低延迟处理和分析,因此可以进一步提升实时业务流式分析和实时业务反馈的性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链网络分层结构的示意图;
图2是本申请实施例提供的一种基于分层区块链的数据处理场景示意图;
图3是本申请实施例提供的一种基于分层区块链的数据处理方法的流程示意图;
图4是本申请实施例提供的一种流处理队列的部署逻辑示意图;
图5是本申请实施例提供的一种基于分层区块链的数据处理方法的流程示意图;
图6是本申请实施例提供的一种基于分层区块链的数据处理方法的交互流程示意图;
图7是本申请实施例提供的一种税务区块链中实时业务流反馈的系统架构图;
图8是本申请实施例提供的一种区块链电子票据场景下的系统架构图;
图9是本申请实施例提供的一种基于分层区块链的数据处理装置的结构示意图;
图10是本申请实施例提供的一种基于分层区块链的数据处理装置的结构示意图;
图11是本申请实施例提供的一种计算机设备的结构示意图;
图12是本申请实施例提供的一种数据处理系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,图1是本申请实施例提供的一种区块链网络分层结构的示意图。图1所示的区块链网络分层结构可以应用于区块链系统。其中,区块链(Blockchain)是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链。本申请实施例中的区块链网络分层结构可以参见图1所示的区块链网络1W,该区块链网络1W对应的完整区块链业务体系可以由图1所示的业务网络(即业务层)、核心共识网络(即核心共识层)以及路由网络(即路由代理层)所组成。
可以理解,本申请实施例可以通过区块链网络1W中的路由网络对业务网络和核心共识网络进行网络隔离。例如,可以通过路由网络中的路由节点,对点对点(Peer To Peer,简称P2P)网络进行网络分层,以形成“业务网络—核心共识网络”这样的分层结构,进而能够提高区块链上数据的保密性和安全性。其中,路由网络中的路由节点的节点数量可以为一个或者多个,在此不做限定。例如,如图1所示,该路由网络具体可以包括节点120a、节点120b、节点120c、…、节点120k。
可以理解的是,本申请实施例中的业务网络(也可称为见证网络)与核心共识网络彼此独立,业务网络可以由一个或者多个节点构成,这里将不对业务网络中的节点数量进行限制。例如,如图1所示,业务网络具体可以包括节点110a、节点110b、节点110c、…、节点110n。在本申请实施例中,可以将处于业务网络中的节点称之为业务节点,这里的业务节点不需要参与记账共识,主要用于执行交易业务,以得到与该交易业务相关联的交易数据,并及时进行数据的清分同步。其中,业务节点可以为包含有完整的区块链数据库的全量节点(Full Node),也可以为存储区块链数据库中的部分数据的轻量节点(Lightweight Node),这类节点可以通过“简化交易验证(Simplified Payment Verification,简称SPV)”的方式完成交易校验,因此也可以称之为SPV节点,这里将不对业务节点的类型进行限定。例如,在一些实施例中,为了减少业务节点的存储空间的浪费,业务节点可以为轻量节点,该业务节点不需要存储完整的交易数据,而是通过身份认证的方式,从核心共识网络中获得区块头数据和部分授权可见的区块数据(例如,与该业务节点自身相关联的交易数据)。
可以理解的是,本申请实施例中的核心共识网络也可以由一个或者多个节点构成,这里将不对核心共识网络中的节点数量进行限制。例如,如图1所示,核心共识网络具体可以包括节点130a、节点130b、节点130c、…、节点130m。在本申请实施例中,可以将处于核心共识网络中的节点称之为共识节点(即记账节点),这里的共识节点可以运行有区块链共识协议。其中,本申请实施例中的共识节点可以为包含有完整的区块链数据库的全量节点,该共识节点可以参与校验、广播交易数据以及区块信息,且会发现和维持与其他节点的连接。
应当理解,本申请实施例可以将路由节点、业务节点以及共识节点统称为区块链网络中的区块链节点。其中,区块链节点可以为接入该区块链网络中的服务器,也可以为接入该区块链网络中的对象终端,这里对区块链节点的具体形式不做限定。其中,这里的服务器可以是独立的一个物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。对象终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、掌上电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备(例如智能手表、智能手环等)、智能电脑、智能车载等与业务对象相关联的智能终端。这里的业务对象是指区块链业务体系的参与方,例如可以包括请求执行交易业务的用户、请求部署智能合约的用户、相关业务管理部门等。
可以理解的是,图1所示的业务网络和核心共识网络可以处于不同的网络环境,例如,在一些实施例中,业务节点可以部署在处于公网的业务网络中,而运行区块链共识协议的共识节点则可以部署在私有的核心共识网络中,二者可以通过路由边界进行交互。在这种情况下,由于核心共识网络处于相对安全的私有云中,其互相访问本就有共识机制保证安全,不需要额外加入身份管理和网络控制;而业务节点处于公共网络中,可能会被其他不确定的网络终端访问,因此业务节点以及其他可能的节点接入核心共识网络中的行为需要被严格控制。可选的,在另外一些实施例中,业务节点和共识节点也可以不通过路由节点而直接进行数据传输,这里不进行限定。
此外,需要说明的是,区块链系统中可以部署智能合约,该智能合约在区块链系统中可以理解为是一种区块链各节点(例如共识节点)可以理解并执行的代码,可以执行任意逻辑并得到结果。本申请实施例可以将部署在共识节点上且与反馈业务相关联的智能合约统称为业务合约,业务对象(例如请求执行交易业务的用户)可以通过其持有的对象终端上的客户端发起合约调用请求(也可称为交易业务请求)的方式,调用共识节点上已经部署好的业务合约。应当理解,区块链系统中可以包括一个或多个智能合约,这些智能合约(例如业务合约)可以以合约标识(例如标识号(Identity document,ID)或名称,还可以包括合约地址或合约函数名(也可以称为合约方法名))来进行区分,而客户端发起的合约调用请求中,也可以携带智能合约的标识号或名称,以此指定区块链需要运行的智能合约。而若客户端所指定的智能合约为需要读取数据的合约,则相关节点可以访问本地存储来进行数据的读取。对于需要上链的交易,最后各个共识节点会互相验证执行结果是否一致(也就是进行共识),若一致则可以将执行结果存入各自的本地账本中,并将执行结果返回至客户端。
为便于理解,本申请实施例可以将采用区块链网络分层结构进行维护的区块链称为分层区块链,该分层区块链可以包括核心共识网络中的区块链(也可称为目标区块链)和业务网络中的区块链(也可称为本地区块链)。在“业务网络—核心共识网络”这样的分层结构下,为了实现基于实时数据流的业务模式与区块链的无缝对接,本申请实施例在核心共识网络中增加了业务流处理器(例如,如图1所示的业务流处理器130),可以通过该业务流处理器在核心共识网络中进行实时业务流式分析并进行实时业务反馈。需要说明的是,本申请实施例中的业务流处理器130与核心共识网络中的每个共识节点之间均具有关联关系,例如,业务流处理器130与节点130a具有关联关系,业务流处理器130与节点130m具有关联关系。因此,该业务流处理器可以基于这些关联关系,从多个共识节点中均匀读取相关的业务数据进行实时处理,例如,业务流处理器130可以从共识节点130a上获取与当前最新区块相关联的业务数据来进行实时处理。可以理解,这里的业务流处理器可以是独立的一个物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器,在此不做限定。
具体来说,业务流处理器可以基于与共识节点之间的关联关系,从共识节点上获取到具有最大区块高度的待校验区块,其中,该待校验区块为核心共识网络中具有最大区块高度且已经被确认的区块。进一步,业务流处理器可以对该待校验区块进行区块校验,以得到对应的区块校验结果。可以理解,若该区块校验结果指示校验成功,则可以将与该待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,进而可以对流处理队列中的业务数据流进行流失处理,以得到业务数据对应的流失处理结果。随后,可以快速且高效地对该流失处理结果进行业务逻辑分析,从而得到业务数据对应的逻辑分析结果,并可以进一步基于该逻辑分析结果向共识节点进行业务反馈,以便后续共识节点可以根据该业务反馈实时改变相关业务合约的合约状态。可以理解的是,本申请实施例中的业务流处理器可以在保证链上链下数据一致性和可靠性的前提下,即时获取到区块链上的实时数据流(即业务数据流)进行快速的业务逻辑分析以及相应的业务反馈,从而可以便捷地为基于实时数据流的业务模式提供与区块链的无缝对接,且可以提升实时业务流式分析和实时业务反馈的性能。
为便于理解,进一步地,请参见图2,图2是本申请实施例提供的一种基于分层区块链的数据处理场景示意图。如图2所示,本申请实施例中的共识节点20A可以为核心共识网络中部署有业务合约的共识节点,该共识节点20A可以为上述图1所示的核心共识网络中的任意一个共识节点,例如,共识节点130a。本申请实施例中的业务流处理器20B与共识节点20A具有关联关系,该业务流处理器20B可以为上述图1所示的核心共识网络中的业务流处理器130。
在本申请实施例中,核心共识网络中的每个共识节点均可以存储一条相同的区块链,但由于网络传输延迟、数据处理能力差异等原因,每个共识节点的节点内存的数据更新(例如,新区块的添加)会存在时间差,因此,同一时刻从不同的共识节点上所读取到的最新的区块高度也可能是不一致的。为了获取到可靠的、实时的业务数据,业务流处理器20B可以先通过收集核心共识网络中的每个共识节点的区块存储状态,来确定核心共识网络中具有最大区块高度的区块是否已经被这些共识节点确认。例如,以共识节点20为例进行说明,该共识节点20可以为全量节点,其可存储完整的区块,假设该共识节点20上存储有区块链20,如图2所示,该区块链20可以包括m个区块,即区块1、区块2、…、区块m,共识节点20的区块存储状态可以指示共识节点20的区块链20中存储了哪些区块,可以理解,此时区块链20上的节点最大块高为m,也就是说,共识节点20当前已经存储的最新区块的区块高度为m。类似的,还可以获取核心共识网络中其他共识节点的区块存储状态,以便确定整个核心共识网络中具有最大区块高度的区块,为便于区分,本申请实施例可以将具有最大区块高度的区块作为待处理区块。如图2所示,假设核心共识网络中当前的最大区块高度为m,则可以将该最大区块高度所对应的区块m作为待处理区块。进一步,为了判断区块m是否已经被核心共识网络中的共识节点所确认,业务流处理器20B可以基于获取到的区块存储状态对该区块m进行区块确定性验证,以得到区块m对应的区块确定性验证结果201,例如,可以通过判断已存储有区块m的共识节点的节点数量是否达到预设的节点数量阈值来确定区块确定性验证结果。
可以理解,当区块确定性验证结果201指示验证成功时,可以将验证成功的区块m作为后续需要进行区块校验的待校验区块,为便于说明,后续将用待校验区块202来表示已通过区块确定性验证的区块m。在本申请实施例中,为了确保链上链下数据的一致性,业务流处理器20B需要进一步对待校验区块202进行区块校验,具体可以包括对相关的节点签名信息的校验、对待校验区块202中的默克尔树根的校验以及在待校验区块202中与该默克尔树根相关联的交易数据的校验,最终可以得到待校验区块202对应的区块校验结果203。
可以理解,当该区块校验结果203指示校验成功时,业务流处理器20B可以获取与该待校验区块202相关联的业务数据204,其中,该业务数据204可以包括待校验区块202中的交易数据以及与该交易数据相关联的合约数据,这里的交易数据可以是由业务网络中的一个或多个业务节点执行交易业务所生成的交易数据,相应的,这里的合约数据可以包括调用对应业务合约来执行交易业务后各相关业务对象的数据状态。其中,该交易业务可以为资产转移业务,该资产转移业务可以用于转移电子票据、游戏金币、游戏钻石等虚拟资产,这里将不对虚拟资产的类型进行限定。又或者,这里的交易业务可以为文件转移业务,该文件转移业务可以用于转移电子合同、电子公文等各类形式的电子文件,此外,这里的交易业务还可以为查询业务、存储业务等,本申请对此不做限定。例如,该业务数据204中的交易数据可以包括业务对象1向业务对象2转移虚拟资产(例如,电子票据、游戏金币、游戏钻石等)时所生成的交易数据A1,与该交易数据A1相关的合约数据A2则可以为业务对象1向业务对象2转移一定资产量的虚拟资产后,业务对象1的剩余资产量和业务对象2的剩余资产量。
进一步地,业务流处理器20B可以将该业务数据204以数据流的方式发送至业务流处理器20B中的流处理队列205进行存储,其中,该流处理队列205可以为具有分布式、高吞吐量、高扩展性等特点的消息队列。由于流处理队列205会不断接收到共识节点上的实时数据(例如,业务数据204),因此可以将流处理队列205中的业务数据作为业务数据流(例如,业务数据流206)。
进一步地,业务流处理器20B可以对流处理队列205中的业务数据流206进行流失处理,具体来说,可以对业务数据流206进行数据流切分以及数据转换处理,从而可以将流处理转换为一系列连续的微批处理,最终可以批量化地得到对应的流失处理结果207。随后,可以通过调用在业务流处理器20B中部署的业务处理引擎,对得到的流失处理结果207进行业务逻辑分析,从而可以得到业务数据204对应的逻辑分析结果208,进而业务流处理器20B可以基于该逻辑分析结果208向共识节点20A进行业务反馈,以使共识节点20A可以在链上进行相应的调整。
可以理解的是,在实际应用中,业务对象可以根据业务需要,在业务流处理器20B中添加不同的业务处理引擎来引入不同的业务逻辑,从而实现相应的业务反馈,其中,针对不同的交易业务可以执行不同的业务反馈,同一交易业务也可以执行多种业务反馈,这里不做限定。例如,假设业务对象3(例如,税务管理者)在业务流处理器20B中添加了一个与开票控制规则相关的业务处理引擎B,该开票控制规则可用于指示具有开票权限的业务对象(例如,业务对象4,可为开票服务商)在一定时间段内所能开具的电子票据的票据数量阈值,业务流处理器20B可以不断接收到由业务对象4所开具的电子票据,并通过业务处理引擎B对接收到的电子票据的数量进行实时统计,假设在上午10:00至11:00所统计到的电子票据的数量已经达到了开票控制规则所指示的票据数量阈值(例如,100张),那么业务流处理器20B可以向共识节点20A反馈对业务对象4的开票行为进行限制。
由此可见,本申请实施例中的业务流处理器20B可以在保证链上链下数据一致性和可靠性的前提下,即时获取到区块链20上的实时数据(如业务数据204)进行快速的业务逻辑分析以及相应的业务反馈,从而可以便捷地为基于实时数据流的业务模式提供与区块链的无缝对接。此外,由于业务流处理器20B在业务逻辑分析之前先对业务数据流206进行了流失处理,以对得到的流失处理结果207进行低延迟处理和分析,因此可以进一步提升实时业务流式分析和实时业务反馈的性能。
应当理解,本申请实施例提供的方法可以应用于转移虚拟资产(例如电子票据、游戏金币、游戏钻石)、转移电子文件(例如电子合同、电子公文)等业务场景,或者其他需要实时审计分析和实时业务反馈的业务场景。
此外,可以理解的是,在本申请的具体实施方式中,可能涉及到用户、企业、机构等业务对象的业务数据(例如,用户的开票信息、征信信息、退税信息等,企业的进出亏、企业资质等信息),当本申请以上实施例运用到具体产品或技术中时,需要获得用户、企业、机构等业务对象的许可或同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
其中,在“业务网络—核心共识网络”这样的分层结构下,核心共识网络中的业务流处理器能够获取到具有最大区块高度的待校验区块,并在对待校验区块校验成功时,对流处理队列中与待校验区块相关联的业务数据流进行流失处理、业务逻辑分析以及业务反馈的具体实现方式可以参见下述图3-图8所对应的实施例。
进一步地,请参见图3,图3是本申请实施例提供的一种基于分层区块链的数据处理方法的流程示意图。如图3所示,该方法可以由业务流处理器执行,该业务流处理器可以为部署在核心共识网络中的服务器,也可以为接入至核心共识网络中的对象终端,这里对业务流处理器的具体形式不做限定,该业务流处理器可以为上述图1所示的核心共识网络中的业务流处理器130。该方法至少可以包括以下步骤S101-步骤S103:
步骤S101,在业务流处理器基于关联关系从共识节点上获取到具有最大区块高度的待校验区块时,对待校验区块进行区块校验,得到区块校验结果;
可以理解的是,本申请实施例中的分层区块链可以包含核心共识网络中的区块链,且核心共识网络中的共识节点与业务流处理器(也可称为业务流处理处理系统)具有关联关系,因此,业务流处理器可以基于该关联关系从共识节点上获取实时数据。
其中,业务流处理器可以包括共识节点代理,上述关联关系则可以包括该共识节点代理与共识节点之间的数据交互关系,即该共识节点代理可用于与共识节点进行数据交互,例如从共识节点中读取实时数据以及后续协助向共识节点进行业务反馈。可以理解,这里的共识节点代理可以为核心共识网络中的共识节点提供统一代理,即提供读取数据的负载均衡,以便业务流处理器可以从多个共识节点中均匀读取实时数据。共识节点代理的数量可以为一个或多个,本申请实施例对此不进行限定,可选的,当业务流处理器中存在多个共识节点代理时,可以用不同的共识节点代理处理不同的反馈业务,例如,共识节点代理1可用于风险判断相关的反馈业务,共识节点代理2可用于业务冻结相关的反馈业务,从而可以增加业务流处理器的吞吐量、加强实时数据处理能力。
基于此,业务流处理器可以基于与共识节点之间的关联关系,从共识节点上获取具有最大区块高度的待校验区块。在一种实施方式中,业务流处理器可以基于上述数据交互关系,通过共识节点代理向共识节点发送数据读取请求,该数据读取请求可以由共识节点代理生成并发送,从而共识节点可以根据该数据读取请求返回所有共识节点的区块存储状态以及核心共识网络中具有最大区块高度的待处理区块,这里的区块存储状态可用于指示对应共识节点当前已存储的所有区块或者当前已存储的最新的区块,例如,若某个共识节点已经将区块1、区块2、…、区块8均写入存储,则相应的区块存储状态可以包括这8个区块(即区块1~区块8)分别对应的区块高度,或者,也可以为最新的区块8所对应的区块高度。此外,本申请实施例中的待处理区块是指所有共识节点已存储的区块中具有最大区块高度的区块,同时也是具有最大生成时间戳的区块,为便于理解,此处可以将一个共识节点当前所存储的最新区块的区块高度作为该共识节点对应的节点最大块高,例如,假设核心共识网络包括共识节点1、共识节点2以及共识节点3,共识节点1和共识节点2对应的节点最大块高均为8,而共识节点3对应的节点最大块高为7,那么此时核心共识网络中的最大区块高度为8,因此,数据读取请求可以用于指示这些共识节点将块高8对应的区块作为待处理区块。
进一步地,业务流处理器中的共识节点代理可以基于上述共识节点的区块存储状态对待处理区块进行区块确定性验证,以得到区块确定性验证结果,为便于理解,可以假设核心共识网络中的共识节点的节点数量为N个,其中,N为正整数,且一个共识节点对应于一个区块存储状态,则共识节点代理可以根据N个共识节点分别对应的区块存储状态,将这N个共识节点中已存储有待处理区块的共识节点作为目标共识节点,其中,目标共识节点的节点数量小于或等于N,也就是说,当某个共识节点的区块存储状态指示该共识节点对应的节点最大块高等于上述最大区块高度时,可以将该共识节点作为目标共识节点。可以理解,可选的,若目标共识节点的节点数量大于节点数量阈值,则可以将待处理区块的区块状态确定为第一区块状态,且可以将具有第一区块状态的待处理区块作为确定性成功验证结果,其中,该第一区块状态可用于指示待处理区块已经得到确认;反之,可选的,若目标共识节点的节点数量小于或等于节点数量阈值,则可以将待处理区块的区块状态确定为第二区块状态,且可以将具有第二区块状态的待处理区块作为确定性失败验证结果,其中,该第二区块状态可用于指示待处理区块未得到确认。最终,可以将确定性成功验证结果或确定性失败验证结果作为区块确定性验证结果。可以理解,当该区块确定性验证结果为确定性成功验证结果时,可以将确定性成功验证结果所指示的具有第一区块状态的待处理区块作为用于进行区块校验的待校验区块。
需要说明的是,本申请实施例中的分层区块链可以采用具有即时确定性的区块链共识协议,与具有概率确定性的区块链共识协议相比,新增加的区块不需要等待6个区块确认,而是可以在满足大部分共识节点达成一致的时候(例如,达成一致的共识节点的节点数量达到指定阈值)完成确认,从而可以提高区块确认效率。在本申请实施例中,区块确定性验证也可以称为区块确定性判定,主要用于确认可作为业务处理的实时数据所在的区块(待处理区块)已经完全完成共识阶段,被最终确认,可以理解,在区块链分叉的情况下,通过区块确定性验证可以判断待处理区块是否在最长链上。在一些实施例中,共识节点的节点数量N=3F+1,其中,F为核心共识网络中最大作恶节点数量,当具有最大区块高度的待处理区块已被(3F+1)个共识节点中的(2F+1)(即节点数量阈值)以上数量的共识节点(即目标共识节点)写入永久存储时,或者说,当目标共识节点的节点数量与N的比值大于2/3时,方可确认该待处理区块已经通过共识。上述可知,采用本申请实施例提供的方法,可以提升业务流处理器对实时数据的获取效率,且确保获取到的实时数据在链上和链下的一致性。
在本申请实施例中,共识节点代理可以为业务流处理器中的服务器,也可以为业务流处理器内部的功能模块,这里对共识节点代理的具体形式不做限定。共识节点代理可以随机地与任意一个共识节点进行数据交互,例如,在T1时刻,共识节点代理可以从共识节点1上读取数据;在T2时刻,共识节点代理可以从共识节点2上读取数据;而接收到数据读取请求的共识节点(例如,共识节点1)可以将该数据读取请求广播至其他共识节点进行请求校验,例如,每个共识节点均可以对由共识节点代理对数据读取请求进行签名所得到的请求签名信息进行验签,以便验证共识节点代理的身份权限,当校验通过时,该共识节点(例如,共识节点1)可以根据该数据读取请求,将获取到的每个共识节点的区块存储状态以及相应的待处理区块返回至共识节点代理。
可选的,在另一种实施方式中,业务流处理器中的共识节点代理可以先获取N个共识节点中的每个共识节点分别对应的区块存储状态,进而可以根据得到的N个区块存储状态来确定最大区块高度,例如,可以根据每个区块存储状态确定对应共识节点的节点最大块高,并可以将N个节点最大块高中数值最大的节点最大块高作为最大区块高度。随后,共识节点代理可以根据这N个区块存储状态,将N个共识节点中已存储有该最大区块高度所对应的区块的共识节点作为目标共识节点。可以理解,当目标共识节点的节点数量大于节点数量阈值时,共识节点代理可以基于该最大区块高度生成数据读取请求,并可将该数据读取请求发送至共识节点,这里的数据读取请求可用于指示共识节点将具有该最大区块高度的区块作为待处理区块,且将该待处理区块返回至共识节点代理。
可以理解的是,业务流处理器通过共识节点代理向共识节点发送数据读取请求后,如上述所说,共识节点可以根据该数据读取请求返回共识节点的区块存储状态以及完整的待处理区块,或者,为了节约传输带宽,共识节点也可以返回共识节点的区块存储状态,在共识节点代理基于该区块存储状态对待处理区块进行区块确定性验证后,再根据得到的区块确定性验证结果选择是否向共识节点请求相关数据,例如,若区块确定性验证结果为确定性成功验证结果,则共识节点代理可以在共识节点上获取与待校验区块相关的数据,例如后续进行区块校验所需的数据、校验成功后需要传输至流处理队列的业务数据等。
进一步地,为了保证链上和链下的数据完整性和一致性,业务流处理器需要对待校验区块进行区块校验,以得到区块校验结果,其具体过程可以为:通过共识节点代理获取与待校验区块相关联的节点签名集合以及N个共识节点分别对应的节点公钥,这里的N个共识节点可以组成共识节点委员会,相应的,节点签名集合也可以称为共识节点委员会签名集合(简称QC),该节点签名集合可以包括N个共识节点中每个参与共识的共识节点分别通过各自的节点私钥对待校验区块进行签名所得到的节点签名信息,可用于在存在拜占庭节点的区块链系统中判定数据状态是否确认达成一致。随后,业务流处理器可以基于获取到的N个节点公钥对该节点签名集合进行节点签名验证,从而得到节点验签结果。其中,一个共识节点对应的节点公钥可以用于验证节点签名集合中的一个节点签名信息,为便于理解,这里以验证其中一个节点签名信息Q为例进行说明:在待校验区块打包上链的过程中,共识节点P可以对待校验区块中的全部区块内容(包括区块头信息和区块主体)或部分区块内容(例如,区块主体)进行哈希运算,以得到待校验区块的摘要信息H,进而可以基于共识节点P的节点私钥对该摘要信息H进行数字签名,得到待校验区块对应的节点签名信息Q。进一步地,在业务流处理器通过共识节点代理D获取到待校验区块和节点签名信息Q时,可以获取共识节点P的节点公钥,进而可以基于该节点公钥对节点签名信息Q进行节点签名验证,以得到对应的子验签结果。其中,可以理解的是,共识节点代理D可以基于共识节点P的节点公钥对该节点签名信息Q中的数字签名进行验签,得到待校验区块的摘要信息H,并可利用与共识节点P相同的哈希算法对待校验区块中的相同区块内容进行哈希运算,从而可以得到待校验区块的摘要信息h。进一步地,共识节点代理D可以将验签后所得到的摘要信息H与进行哈希运算所得到的摘要信息h进行比对,得到子验签结果。若该子验签结果指示摘要信息H与摘要信息h不相同,则可以理解为节点签名信息Q验签失败;若该子验签结果指示摘要信息H与摘要信息h相同,则可以理解为节点签名信息Q验签成功。可以理解,在对节点签名集合中的N个节点签名信息均进行节点签名验证后,可以得到每个节点签名信息分别对应的子验签结果,将这N个子验签结果作为节点验签结果。其中,当N个子验签结果均指示验签成功时,业务流处理器可以确定节点签名集合验签成功,说明待校验区中的区块内容没有被恶意篡改,是真实有效的;当N个子验签结果中存在指示验签失败的子验签结果时,业务流处理器可以确定节点签名集合验签失败。
进一步,若节点验签结果指示验签成功,则可以对待校验区块进行树根校验和交易校验,以验证待校验区块中数据的完整性和一致性。可以理解,共识节点代理可以对待校验区块中的默克尔树根进行树根校验,得到树根校验结果,若该树根校验结果指示树根校验成功,则可以进一步对待校验区块中与该默克尔树根相关联的交易数据进行交易校验,得到交易校验结果。
在一些实施例中,共识节点代理可以在每个共识节点上分别获取与待校验区块相关联的待比对树根,该待比对树根可以由共识节点基于待校验区块中的交易数据所对应的交易哈希值来确定,随后可以将获取到的N个待比对树根分别与待校验区块中的默克尔树根进行树根比对,得到树根校验结果。若该树根校验结果指示N个待比对树根中包含的与该默克尔树根一致的待比对树根的数量大于树根数量阈值,则共识节点代理可以确定树根校验成功;反之,若该树根校验结果指示N个待比对树根中包含的与该默克尔树根一致的待比对树根的数量小于或等于树根数量阈值,则共识节点代理可以确定树根校验失败。其中,树根数量阈值可以根据实际需要进行设置,这里不做限定,例如,当N=3F+1时,树根数量阈值可以设置为(2F+1)。
可以理解,当上述树根校验结果指示树根校验成功时,共识节点代理可以在每个共识节点上分别获取与上述待比对树根相关联的待比对交易数据,该待比对交易数据可以由共识节点并行执行被打包进待校验区块的交易列表而得到,这里的交易列表可以包括一个或多个待校验交易,此处将不对待校验交易的数量进行限定,基于此,获取到的每一组待比对交易数据会包含有一个或多个待校验交易分别对应的交易数据。随后,可以将获取到的N组待比对交易数据分别与待校验区块中的交易数据进行交易比对,得到交易校验结果。若该交易校验结果指示N组待比对交易数据中包含的与该交易数据一致的待比对交易数据的数量大于交易数量阈值,则共识节点代理可以确定交易校验成功;反之,若该交易校验结果指示N组待比对交易数据中包含的与该交易数据一致的待比对交易数据的数量小于或等于交易数量阈值,则共识节点代理可以确定交易校验失败。其中,交易数量阈值可以根据实际需要进行设置,这里不做限定,例如,当N=3F+1时,交易数量阈值可以设置为(2F+1)。需要说明的是,交易比对的内容还包括对与交易数据相关联的合约数据的比对,这里的合约数据可以包括调用指定业务合约执行待校验交易后所生成的写数据集,每个共识节点调用相同的业务合约来执行同一个待校验交易并得到对应的待比对交易数据后,均可以从共识节点上获取到与该待比对交易数据相关联的待比对合约数据,进而可以将获取到的N组待比对合约数据分别与上述合约数据进行比对,最终结合交易数据比对的结果可以确定交易校验结果。可以理解,当待比对交易数据A与交易数据X一致,且该待比对交易数据A相关联的待比对合约数据B与交易数据X相关联的合约数据Y一致时,才确定待比对交易数据A与交易数据X真的一致。
可选的,在另一些实施例中,也可以在共识节点确定待比对树根后,由每个共识节点各自将得到的待比对树根与默克尔树根进行树根比对,并向共识节点代理返回自己的树根比对结果,随后共识节点代理可以对得到的N个树根比对结果进行统计,得到树根校验结果。当该树根校验结果指示N个树根比对结果中包含的比对一致结果的数量大于树根数量阈值时,共识节点代理可以确定树根校验成功。类似的,在上述树根校验结果指示树根校验成功时,每个共识节点可以各自将得到的待比对交易数据与交易数据进行交易比对,并向共识节点代理返回自己的交易比对结果,随后共识节点代理可以对得到的N个交易比对结果进行统计,得到交易校验结果。当该交易校验结果指示N个交易比对结果中包含的比对一致结果的数量大于交易数量阈值时,共识节点代理可以确定交易校验成功。
进一步地,若上述交易校验结果指示交易校验成功,则可以确定待校验区块校验成功,共识节点代理可以将校验成功的待校验区块作为区块校验成功结果,也就是说,只有在节点验签结果指示验签成功,且树根校验结果指示树根校验成功,同时交易校验结果指示交易校验成功时,共识节点代理才可以最终确定待校验区块校验成功。
可以理解,共识节点代理还可以基于上述节点验签结果、树根校验结果、交易校验结果以及区块校验成功结果,确定待校验区块的区块校验结果。具体的,若节点验签结果指示验签失败,或者,树根校验结果指示树根校验失败,或者,交易校验结果指示交易校验失败,则可以确定待校验区块校验失败,共识节点代理可以将校验失败的待校验区块作为区块校验失败结果,最终,可以将区块校验成功结果或区块校验失败结果作为区块校验结果。
上述可知,由于区块链系统可能存在恶意节点(即作恶节点)欺骗共识节点代理,因此共识节点代理需要获取实时数据所在区块QC(即节点签名集合),并根据共识节点委员会的成员情况进行QC校验(即区块校验),只有通过QC校验的数据才会向下推送。
步骤S102,若区块校验结果指示校验成功,则将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果;
具体的,在区块校验结果指示校验成功时,可以通过业务流处理器中的共识节点代理,从待校验区块所在的共识节点的节点内存中读取待校验区块的交易数据(也可称为账本数据)以及与该交易数据相关联的合约数据,并可以将读取到的交易数据和合约数据作为与待校验区块相关联的业务数据。
在一些实施例中,业务节点可以在执行一笔目标交易时,根据该目标交易的交易执行结果,得到对应的交易数据(例如,交易数据X)。例如,在某一患者前往位于区域A的医院进行就诊时,位于区域A的业务节点可以针对本次就诊所花费的虚拟资产开具一张电子票据,进而可以基于该电子票据生成相应的交易数据。可以理解,业务节点可以通过调用指定的业务合约来执行目标交易,例如,业务节点可以向共识节点发起合约调用请求,以获取用于执行目标交易的业务合约,进而可以基于该业务合约,从业务节点的节点内存中读取该目标交易对应的读数据集,随后可以基于该读数据集执行目标交易,从而得到目标交易对应的交易执行结果,进而可以将该交易执行结果写入目标交易对应的写数据集,此时可以将得到的写数据集作为对应的合约数据(例如,合约数据Y)。业务节点可以将目标交易、执行该目标交易所得到的交易数据和合约数据等一并发送至共识节点,在共识节点从相关的交易池中获取到包含有该目标交易的交易列表时,可以将该交易列表以及与该交易列表相关的全部数据(例如交易数据、交易执行结果、读数据集、写数据集等)或部分数据(例如交易数据)均打包进区块,本申请实施例对打包进区块的数据内容不进行限定。可以理解,共识节点可以将最终得到的区块(例如,待校验区块)以及未打包进区块的相关数据均存储至自身的节点内存中。
可以理解的是,每个共识节点的节点内存均可以包括本地缓存(也可称为块缓存,每个区块都对应于一个块缓存)和本地存储,本地缓存的读写速度相对较快,因此共识节点可以优先在本地缓存中进行读/写操作,这样可以提高区块链网络的整体性能;而本地存储用于数据(例如区块)的持久化存储,共识节点可以先将需要存储的数据写入对应的本地缓存中,但考虑到本地缓存的局限性(例如掉电会导致数据丢失),后续可以通过异步写操作逐渐将相关数据写入本地存储(例如,本地数据库),以最终保障数据的可靠性和持久化。因此,共识节点代理可以从共识节点的本地缓存中读取待校验区块的交易数据以及与该交易数据相关联的合约数据,若在该共识节点的本地缓存中读取失败,则可以进一步尝试从该共识节点的本地存储中读取待校验区块的交易数据以及与该交易数据相关联的合约数据。其中,共识节点代理可以将读取到的交易数据和合约数据作为与待校验区块相关联的业务数据。
进一步,共识节点代理可以将得到的业务数据以数据流(即连续到达的无穷序列)的方式发送至业务流处理器中的流处理队列进行存储,并可以将存储在该流处理队列中的业务数据作为业务数据流。可以理解,由于共识节点代理不停地记录和获取区块链账本高度的最新状态(即区块存储状态),并批量获取最新交易数据和合约数据,因此,本申请实施例通过流处理队列提供了具有高吞吐量、高扩展性的消息队列服务,用以支持高效的实时数据处理。其中,流处理队列可以由流代理组件构建得到,这里的流代理组件具体可以为kafka(一种高吞吐量的分布式发布订阅消息系统),还可以为其他形式的组件,这里对流代理组件的形式和数量均不做限定。
进一步,可以通过业务流处理器中的流失处理组件以及与该流失处理组件相关联的转换处理引擎,对业务数据流进行流失处理,从而得到业务数据对应的流失处理结果,也就是说,将业务数据存入流处理队列后,可以触发后续的流失处理,即消息(业务数据流)被流失处理组件消费。这里的流失处理组件和转换处理引擎均可以为业务流处理器内部的功能模块,也可以为业务流处理器中单独部署的服务器,本申请实施例对二者的形式不做限定。需要说明的是,流失处理/流处理是指将不断流动的输入数据分成独立的单元进行处理的方式,流处理是对流数据的低延迟处理和分析,且可以减少资源浪费。
在一些实施例中,流失处理组件可以为Spark Streaming,转换处理引擎可以为Spark Engine,Spark Streaming是Spark(一种开源的类Hadoop MapReduce的通用并行框架,专门用于大数据量下的迭代式计算)最初的流处理框架,可使用微批处理的形式来进行流处理,其可实现实时数据的快速扩展、高吞吐量、高容错处理,适用于大量数据的快速处理。Spark Streaming使用离散流(discretized stream)作为抽象表示,称为DStream,可以理解,DStream与DStream之间是相互独立的,而DStream内部的数据是连续的,其内部是一系列RDD(Resilient Distributed Dataset),因此,任何对DStream的操作都会转变为对底层RDD的操作(通过算子,例如map)。基于此,对业务数据流进行流失处理的具体过程可以为:首先,通过业务流处理器中的流失处理组件(例如,Spark Streaming)从流处理队列中拉取业务数据流,进而可以基于切分时间间隔对拉取到的业务数据流进行数据流切分,得到至少两个子业务数据流(即离散流DStream)。其中,可以根据实际情况设置切分时间间隔的具体大小,本申请实施例对此不进行限定,例如,若将切分时间间隔设置为5秒,那么每隔5秒就可以得到一个子业务数据流。进一步,可以将至少两个子业务数据流传输至与流失处理组件相关联的转换处理引擎(例如,Spark Engine)进行数据转换处理,以得到每个子业务数据流对应的转换处理结果,此时可以将得到的至少两个转换处理结果作为业务数据对应的流失处理结果,这里可以理解为使用Spark Engine对每个DStream中的RDD均进行数据转换处理,并且批量返回RDD操作的结果。可以理解,与原始的业务数据流相比,经过数据转换处理后得到的转换处理结果更有利于后续的业务逻辑分析。
其中,本申请实施例中的流失处理组件以及转换处理引擎可共同用于对实时数据的ETL(extract提取、transform转换、load加载)处理和存储,以便将分散的业务数据流抽取到临时中间层后,进行清洗、转换、集成,最后加载到业务流处理器的业务控制组件中,成为便于进行实时的业务逻辑分析的数据。
为便于理解,请一并参见图4,图4是本申请实施例提供的一种流处理队列的部署逻辑示意图。如图4所示,可以通过部署M个流代理组件来构建具有高水平扩展和高吞吐量的分布式流处理队列,例如可以包括流代理组件K1、流代理组件K2、…、流代理组件KM,其中,M为正整数,这里的每个流代理组件均可以为kafka,从而可以构成kafka集群,该集群中的所有节点都是对等的。如图4所示,基于kafka的流处理队列可以将参与方分为三类:(1)生产者(Producer):负责生产消息并发送给消息代理;(2)消息代理(Broker):每个Broker即一个kafka服务实例,多个Broker构成一个kafka集群,生产者发布的消息将保存在Broker中,消费者将从Broker中拉取消息进行消费;(3)消费者(Consumer):负责消费Broker中的Topic(主题)消息,每个Consumer实例归属于一个消费群组(Consumer Group)。其中,kafka中可将消息分类,每一类的消息称为一个Topic,消费者可以对不同的Topic进行不同的处理。一个Topic可以分为多个Partition(分区),每个Partition是一个有序的队列,Partition中的每条消息都存在一个有序的偏移量(Offest),同一个Consumer Group中,只有一个Consumer实例可消费某个Partition的消息。
基于此,在本申请实施例中,共识节点代理可以作为生产者,负责将从共识节点上获取到的业务数据推送给流代理组件,流代理组件可以作为消息代理,负责保存共识节点代理发送过来的业务数据,而流失处理组件则可以作为消费者,负责从流代理组件上拉取业务数据流进行流失处理。如图4所示,共识节点代理的数量可以为一个或多个,这里不进行限定,例如多个共识节点代理可以包括共识节点代理41a、共识节点代理41b、共识节点代理41c以及共识节点代理41d,每个共识节点代理均可以与一个流代理组件建立通信连接,例如,共识节点代理41a可以与流代理组件K1建立通信连接,共识节点代理41b可以与流代理组件K2建立通信连接,共识节点代理41c可以与流代理组件K2建立通信连接,共识节点代理41d可以与流代理组件KM建立通信连接,以便不同共识节点代理之间可以并行地将自己获取到的业务数据推送至对应的流代理组件。类似的,流失处理组件的数量也可以为一个或多个,这里不进行限定,例如多个流失处理组件可以包括流失处理组件42a、流失处理组件42b、流失处理组件42c、流失处理组件42d,每个流失处理组件均可以与一个流代理组件建立通信连接,例如,流失处理组件42a可以与流代理组件K1建立通信连接,流失处理组件42b可以与流代理组件K2建立通信连接,流失处理组件42c可以与流代理组件K3建立通信连接,流失处理组件42d可以与流代理组件KM建立通信连接,以便不同流失处理组件之间可以并行地从对应的流代理组件上拉取业务数据流进行流失处理。其中,上述通信连接可以为TLS(Transport Layer Security,安全传输层协议)连接或采用其他通信协议的通信连接。
此外,图4所示的分布式服务组件集群40(例如ZooKeeper,是一个分布式的、开源的分布式应用程序协调服务)可以为流处理队列提供一致性服务,通过分布式服务组件集群40管理kafka集群,如:Broker列表管理、Partition与Broker的关系、Partition与Consumer的关系、Producer与Consumer负载均衡、消费进度Offset记录、消费者注册等,所以为了达到高可用,ZooKeeper自身也必须是集群,这里对该集群中ZooKeeper的数量不进行限定。
如图4所示,每个共识节点代理均可以采用不同的形式接入到流处理队列中,例如,共识节点代理41a、共识节点代理41b和共识节点代理41c均可以为前端(Front End),共识节点代理41d可以为提供某种服务的节点。此外,不同消费者所拉取到的数据也可以有不同用途,例如,流失处理组件42a可以将拉取到的业务数据流传输到另外的分布式集群(例如Hadoop集群)进行分布式处理,流失处理组件42b可以对拉取到的业务数据流进行实时观测和统计,流失处理组件42c可以将拉取到的业务数据流提供给其他服务,流失处理组件42d可以将拉取到的业务数据流进一步加载到数据仓库。
可以理解,采用如图4所示的部署方式,可以实现对流处理队列中的业务数据流的分布式处理,从而可以有效提升实时业务流式分析和实时业务反馈的效率,例如,一个流代理组件(如kafka)可以处理一个流处理队列,每个流代理组件均可以对其接收到的业务数据进行分类,例如,在电子票据相关的业务中,可以按照指定的分类规则来对电子票据进行分类,比如按照企业类型(如企业规模、企业主营领域等)对电子票据进行分类,或者,根据票据类型(可包括但不限于增值税发票、通用发票、交通发票或其他税务发票)对电子票据进行分类,以便后续可以对不同种类的电子票据进行不同处理。
需要说明的是,共识节点代理和流失处理组件需要先在链上业务合约中注册相应的公钥,然后申请对应的公钥证书,在业务数据流的产生和消费过程中,需要凭借预计链上身份所颁发的公钥证书进行通信连接(例如TLS连接),从而保证只有链上指定的共识节点代理和流失处理组件才能进行数据推拉,具体实现过程可以参见后续图6所对应实施例中的步骤S305-步骤S312。
步骤S103,对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,基于逻辑分析结果向共识节点进行业务反馈。
可以理解,业务流处理器可以对转换处理引擎输出的转换处理结果进行实时的业务逻辑分析,该业务逻辑分析的过程可以由业务流处理器中的业务控制组件执行,这里的业务控制组件(也可称为业务控制单元)可以为一个模块集合框架,业务参与方(即业务对象)可以通过添加不同的处理引擎,来添加不同的处理逻辑。在本申请实施例中,业务控制组件可以为业务流处理器内部的功能模块,也可以为业务流处理器中独立部署的服务器,本申请实施例对此不做限定。
其中,业务控制组件中可以包含有与目标业务逻辑相关联的业务处理引擎,该业务处理引擎可以由业务对象预先导入,相关的目标业务逻辑是业务对象所希望执行的一种特定的逻辑规则,可以理解,业务控制组件中还可以包含有与其他业务逻辑相关联的业务处理引擎,这里将不对业务控制组件中的业务处理引擎的数量进行限定。此外,共识节点上部署有与反馈业务相关联的业务合约,该业务合约中注册有上述业务处理引擎的引擎私钥。可以理解,执行某些特定的交易业务(例如,转移电子票据)时需要调用链上的业务合约,而反馈业务则是指,基于区块链数据实时风控管理的需要,对重要的交易业务进行实时审计分析、并向链上业务合约进行反馈操作的业务,在税务区块链中,反馈业务可以包括但不限于风险判断、业务冻结、告警下发、开票控制、退税审查等业务。
基于此,业务流处理器对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,并基于该逻辑分析结果向共识节点进行业务反馈的具体过程可以为:业务流处理器可以基于上述目标业务逻辑,调用业务处理引擎对流失处理结果进行业务逻辑分析,从而得到业务数据对应的逻辑分析结果,例如,当目标业务逻辑为与退税审查有关的业务逻辑(即一种退税审查规则)时,对应的业务处理引擎可以基于该目标业务逻辑对接收到的电子票据(例如纳税明细)进行实时统计,从而可以得到业务对象A在某一年度的已缴纳税额B1,且可以根据业务对象A的退税申报信息确定业务对象A在该年度的应缴纳税额B2,获取已缴纳税额B1与应缴纳税额B2之间的税额差值,若税额差值为正数,则表示业务对象A可以申请退税;若税额差值为0,则表示业务对象A既不需要退税也不需要补税;若税额差值为负数,则表示业务对象A需要补税。进一步,业务处理引擎可以根据得到的逻辑分析结果生成业务反馈消息,同时,为了防止该消息被恶意篡改,该业务处理引擎还可以基于已经在业务合约中注册过的引擎私钥,对业务反馈消息进行签名,从而得到引擎签名信息,随后,该业务处理引擎可以通过业务控制组件的组件接口将上述引擎签名信息和业务反馈消息一并返回至共识节点代理。其中,业务处理引擎可以基于引擎私钥对业务反馈消息的第一摘要信息(例如,摘要信息H1)进行数字签名,从而得到引擎签名信息,业务反馈消息的第一摘要信息则可以通过对该业务反馈消息进行哈希运算得到。进一步地,可以通过共识节点代理对该引擎签名信息进行引擎签名验证,得到引擎验签结果,若该引擎验签结果指示验签成功,则共识节点代理可以将业务反馈消息转发至共识节点;反之,若该引擎验签结果指示验签失败,则共识节点代理可以丢弃该业务反馈消息,或者,也可以向业务处理引擎返回验签失败提示消息,以便业务处理引擎可以发起新的业务反馈消息。其中,在共识节点代理接收到引擎签名信息和业务反馈消息时,可以获取其引擎私钥对应的引擎公钥,并可以基于该引擎公钥对引擎签名信息中的数字签名进行验签,得到业务反馈消息的第一摘要信息(例如,摘要信息H1),且可以利用与业务处理引擎相同的哈希算法对业务反馈消息进行哈希运算,得到业务反馈消息的第二摘要信息(例如,摘要信息h1),进而可以将验签后所得到的第一摘要信息与进行哈希运算所得到的第二摘要信息进行比对,得到引擎验签结果。若该引擎验签结果指示第一摘要信息与第二摘要信息相同,则可以确定引擎签名信息验签成功;反之,若该引擎验签结果指示第一摘要信息与第二摘要信息不相同,则可以确定引擎签名信息验签失败。
可以理解,本申请实施例中的共识节点代理还可实现反向流式反馈上链的功能,也就是执行业务控制组件的反馈,即在引擎验签结果指示验签成功时,共识节点代理可将业务反馈消息转发至核心共识网络中的共识节点,具体过程可以为:若引擎验签结果指示验签成功,则共识节点代理可以对业务反馈消息进行交易组装处理,得到反馈业务交易,其中,这里的交易组装处理可以理解为将业务反馈消息中携带的业务反馈操作封装为交易的形式,以便共识节点可以更高效地执行反馈业务交易所指示的业务反馈操作。此外,共识节点代理中配置了代理私钥(也可称为业务管理员私钥),因此,可以基于该代理私钥对反馈业务交易进行签名,得到代理签名信息。其中,共识节点代理可以对反馈业务交易进行哈希运算,以得到反馈业务交易的摘要信息,进而可以基于代理私钥对反馈业务交易的摘要信息进行数字签名,从而可以得到代理签名信息。进一步,共识节点代理可以将得到的代理签名信息和反馈业务交易转发至共识节点,以使共识节点可以对代理签名信息和引擎签名信息进行共识,且在代理签名信息和引擎签名信息均共识通过时,基于反馈业务交易对业务合约的合约状态进行更改,具体实现过程可以参见下述图5所对应实施例中的步骤S203。
上述可知,共识节点代理可以将业务控制组件中的业务反馈操作(例如风险判定、业务冻结、告警下发等)进行交易组装和签名,并将得到的反馈业务交易发回共识节点中,从而实时改变链上业务合约的合约状态。可以理解的是,链上业务合约中的内容本身没有被改变,共识节点改变业务合约的合约状态可以理解为改变请求调用该业务合约的业务对象的状态,也可以理解为改变某个业务对象调用该业务合约中的某个方法的权限(例如可以通过与业务合约相关联的权限合约进行指示)。例如,假设业务对象A之前调用业务合约E来进行某项交易业务(如资产转移业务),正常情况下,业务对象A调用业务合约E时处于非冻结状态,可以正常转移虚拟资产,但是在业务流处理器向共识节点进行业务反馈操作(例如,发现业务对象A的账户异常,反馈针对业务对象A的业务冻结)后,共识节点可以根据该业务反馈操作变更业务合约E的合约状态,限制了业务对象A再次调用业务合约E的权限,因此业务对象A调用业务合约E时将处于冻结状态。
可以理解的是,本申请实施例可支持动态变更业务处理引擎,即业务参与方可以随时向业务控制组件导入一个或多个业务处理引擎,且可以不断变更其业务逻辑,同时,每个业务处理引擎均可以调用业务控制组件的基础接口(即组件接口),执行基于逻辑分析结果的反馈行为,例如风险判断、业务冻结、告警下发等。此外,业务控制组件可以通过链上可信身份进行业务反馈,可以理解,业务控制组件中的每个业务处理引擎都需要配置在链上业务合约中注册过的身份秘钥(即每个业务处理引擎的引擎私钥),在发送业务冻结交易、通过链下发告警等业务反馈时,业务控制组件会向共识节点代理发送相关的业务反馈消息,此时需要使用配置的身份秘钥进行签名,共识节点代理和共识节点均会对该身份签名(即引擎签名信息)进行验证,只有符合身份权限的业务反馈消息才可以被反馈到链上,进而改变业务合约的合约状态。
例如,在风险停开场景下,假设有一个业务处理引擎为敏感词汇过滤引擎,该敏感词汇过滤引擎可加载启动在业务控制组件中,并不断接收到链上的电子票据,敏感词汇过滤引擎可以对接收到的电子票据的内容进行敏感词汇检测处理,如果检测到某个企业C开具的电子票据内容中出现敏感词汇,则可以通过敏感词汇过滤引擎配置的身份秘钥X对业务反馈消息D进行签名,反馈对企业C进行停开,该业务反馈消息D经过共识节点代理被转发上链,链上业务合约在验证身份秘钥X对应的身份是风险停开审查,具有反馈并执行停开的权限时,便可以根据该反馈对企业C进行实时的链上停开。
上述可知,本申请实施例提供了一种分层区块链(例如,税务区块链)中共识节点实时业务流反馈方案,可以在核心共识网络中进行实时业务流式分析并进行实时业务反馈。采用本申请实施例提供的实时业务处理并反馈到链上的服务架构,可便于区块链业务体系参与方对重要业务做实时审计分析,并可向链上业务合约进行反馈操作。由于整个实时业务流式分析和业务反馈的流程,链下的流处理队列,以及业务处理引擎身份等是和链上的业务合约中的权限所绑定的,因此可以实现链上链下业务处理权限的一致性和可靠性,且实现基于实时数据流的业务模式与区块链的无缝对接。此外,由于在业务逻辑分析之前先对业务数据流进行了流失处理,以对得到的流失处理结果进行低延迟处理和分析,因此还可以提高业务逻辑分析和业务反馈的效率以及准确性,从而可以提升实时业务流式分析和实时业务反馈的性能。
进一步地,请参见图5,图5是本申请实施例提供的一种基于分层区块链的数据处理方法的流程示意图。如图5所示,该方法可以由核心共识网络中的共识节点执行,该共识节点可以为接入至核心共识网络中的服务器,也可以为接入至核心共识网络中的对象终端,这里对共识节点的具体形式不做限定,该共识节点可以为上述图1所示的核心共识网络中的任意一个共识节点,例如,节点130a。该方法至少可以包括以下步骤S201-步骤S203:
步骤S201,在共识节点基于关联关系获取到业务流处理器发送的数据读取请求时,根据数据读取请求,将共识节点中具有最大区块高度的待校验区块返回至业务流处理器,以使业务流处理器对校验区块进行区块校验,得到区块校验结果;
在本申请实施例中,分层区块链可包含核心共识网络中的区块链,该核心共识网络中的业务流处理器与任意一个共识节点均具有关联关系。可以理解,核心共识网络中的某个共识节点可以基于与业务流处理器之间的关联关系,获取业务流处理器发送过来的数据读取请求,进而可以将该数据读取请求广播至其他共识节点进行请求校验,在数据读取请求校验通过时,就可以根据该数据读取请求,将所有共识节点的区块存储状态以及核心共识网络中具有最大区块高度的待处理区块返回至业务流处理器。其中,每个共识节点均可以对由业务流处理器中的共识节点代理对该数据读取请求进行签名所得到的请求签名信息进行验签,以便验证共识节点代理的身份权限,当校验通过(例如,有2/3以上的共识节点均判定请求签名信息验签成功)时,共识节点可以根据该数据读取请求,将获取到的每个共识节点的区块存储状态以及相应的待处理区块返回至共识节点代理,以便共识节点代理可以基于上述共识节点的区块存储状态对待处理区块进行区块确定性验证,并在区块确定性验证结果为确定性成功验证结果时确定待校验区块,其具体实现过程可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
随后,业务流处理器中的共识节点代理可以对该校验区块进行区块校验,得到区块校验结果,当该区块校验结果指示校验成功时,业务流处理器用于将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,且对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果。其中,业务流处理器可用于对流失处理结果进行业务逻辑分析,以得到业务数据对应的逻辑分析结果,该逻辑分析结果可用于指示业务流处理器向共识节点进行业务反馈。其具体实现过程可以参见上述图3所对应实施例中的步骤S101-步骤S103,这里不再进行赘述。
步骤S202,获取由业务流处理器所返回的反馈业务交易;
可以理解,在业务流处理器中的业务控制组件基于逻辑分析结果生成业务反馈消息后,可以对该业务反馈消息进行签名,得到引擎签名信息,随后可以将引擎签名信息和业务反馈消息返回至共识节点代理,并在引擎签名信息验签成功时,由共识节点代理对该业务反馈消息进行交易组装处理和签名,随后将得到的代理签名信息和反馈业务交易转发至共识节点,该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
步骤S203,对反馈业务交易进行交易验证,当反馈业务交易验证成功时,基于反馈业务交易对共识节点上部署的与反馈业务相关联的业务合约的合约状态进行更改。
具体的,某个共识节点在接收到业务流处理器所返回的反馈业务交易时,也可以获取与该反馈业务交易相关联的代理签名信息和引擎签名信息。其中,反馈业务交易是由业务流处理器中的共识节点代理对业务反馈消息进行交易组装处理后所得到的,代理签名信息是由共识节点代理基于代理私钥对反馈业务交易进行签名所得到的;业务反馈消息是由业务流处理器中的业务控制组件所包含的业务处理引擎根据逻辑分析结果所生成的消息,引擎签名信息是由业务处理引擎基于引擎私钥对业务反馈消息进行签名所得到的,其具体实现过程可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
进一步地,获取到代理签名信息和引擎签名信息的共识节点可以将这两个签名信息广播至其他共识节点,且所有共识节点均需要参与对代理签名信息和引擎签名信息的共识,以验证反馈业务交易的身份权限,具体过程可以为:首先,可以对代理签名信息进行共识,得到第一共识结果。其中,该代理签名信息是由共识节点代理基于代理私钥对反馈业务交易的第三摘要信息(例如,摘要信息H2)进行数字签名后得到的,反馈业务交易的第三摘要信息则是由共识节点代理对反馈业务交易进行哈希运算得到的,基于此,每个共识节点均可以对获取到的代理签名信息进行代理签名验证,为便于理解,假设共识节点的节点数量为N个,以N个共识节点中的共识节点i为例进行说明,该共识节点i可以为N个共识节点中的任意一个共识节点,i为小于或等于N的正整数。在共识节点i获取到代理签名信息时,可以获取共识节点代理的代理公钥,并可以基于该代理公钥对该代理签名信息中的数字签名进行验签,得到反馈业务交易的第三摘要信息(例如,摘要信息H2),且可以利用与共识节点代理相同的哈希算法对反馈业务交易进行哈希运算,得到反馈业务交易的第四摘要信息(例如,摘要信息h2),进而可以将验签后所得到的第三摘要信息与进行哈希运算所得到的第四摘要信息进行比对,得到代理验签结果i。可以理解,若代理验签结果i指示第三摘要信息与第四摘要信息相同,则可以确定共识节点i验签成功;反之,若代理验签结果i指示第三摘要信息与第四摘要信息不相同,则可以确定共识节点i验签失败。
可以理解,当N个共识节点均对代理签名信息进行代理签名验证后,可以得到N个代理验签结果,本申请实施例可以将N个代理验签结果作为第一共识结果。可选的,若该第一共识结果指示N个代理验签结果中包含的指示验签成功的代理验签结果的数量大于结果数量阈值,则可以确定代理签名信息共识通过,说明上述反馈业务交易是由共识节点代理验证和转发的;可选的,若该第一共识结果指示N个代理验签结果中包含的指示验签成功的代理验签结果的数量小于或等于结果数量阈值,则可以确定代理签名信息共识未通过。
进一步地,当第一共识结果指示代理签名信息共识通过时,共识节点可以对引擎签名信息进行共识,得到第二共识结果。其中,该引擎签名信息是由业务处理引擎基于引擎私钥对业务反馈消息的第五摘要信息(例如,摘要信息H3)进行数字签名后得到的,业务反馈消息的第五摘要信息则是由业务处理引擎对业务反馈消息进行哈希运算得到的,基于此,每个共识节点均可以对获取到的引擎签名信息进行引擎签名验证,为便于理解,仍以共识节点i为例进行说明,具体过程可以为:在共识节点i获取到引擎签名信息时,可以获取业务处理引擎的引擎公钥,并可以基于该引擎公钥对该引擎签名信息中的数字签名进行验签,得到业务反馈消息的第五摘要信息(例如,摘要信息H3),且可以利用与业务处理引擎相同的哈希算法对业务反馈消息进行哈希运算,得到业务反馈消息的第六摘要信息(例如,摘要信息h3),进而可以将验签后所得到的第五摘要信息与进行哈希运算所得到的第六摘要信息进行比对,得到引擎验签结果i。可以理解,若引擎验签结果i指示第五摘要信息与第六摘要信息相同,则可以确定共识节点i验签成功;反之,若引擎验签结果i指示第五摘要信息与第六摘要信息不相同,则可以确定共识节点i验签失败。
可以理解,当N个共识节点均对引擎签名信息进行引擎签名验证后,可以得到N个引擎验签结果,本申请实施例可以将N个引擎验签结果作为第二共识结果。可选的,若该第二共识结果指示N个引擎验签结果中包含的指示验签成功的引擎验签结果的数量大于结果数量阈值,则可以确定引擎签名信息共识通过,说明上述业务反馈消息是由业务处理引擎发出的,且内容真实有效,符合业务处理引擎在链上业务合约中指定的身份权限;可选的,若该第二共识结果指示N个引擎验签结果中包含的指示验签成功的引擎验签结果的数量小于或等于结果数量阈值,则可以确定引擎签名信息共识未通过。
其中,结果数量阈值可以根据实际需要进行设置,这里不做限定,例如,当N=3F+1时,结果数量阈值可以设置为(2F+1)。
可以理解,当第二共识结果指示引擎签名信息共识通过时,共识节点可以确定反馈业务交易验证成功,进而可以基于该反馈业务交易对共识节点上部署的与反馈业务相关联的业务合约的合约状态进行更改。针对业务合约的合约状态的阐述,可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
需要说明的是,对于同一个共识节点来说,只有在对应的代理验签结果和引擎验签结果均指示验签成功时,该共识节点才可以确定自身对反馈业务交易的交易验证是成功的,也就是说,在N个共识节点中,对代理签名信息验签成功的共识节点与对引擎签名信息验签成功的共识节点是存在重合的,且重合的共识节点的数量要大于上述结果数量阈值,才可以认为反馈业务交易验证成功。
由此可见,在核心共识网络中,本申请实施例通过在链下对业务数据进行实时的业务逻辑分析,并向链上的业务合约进行实时的业务反馈,实现了基于实时数据流的业务模式与区块链的无缝对接,同时可以在保证链上链下数据一致性和可靠性的前提下,有效提升实时业务流式分析和实时业务反馈的性能。
进一步地,请参见图6,图6是本申请实施例提供的一种基于分层区块链的数据处理方法的交互流程示意图。如图6所示,该方法可以由核心共识网络中的业务流处理器和共识节点共同执行,其中,该业务流处理器可以为上述图1所示的核心共识网络中的业务流处理器130,该共识节点可以为上述图1所示的核心共识网络中的任意一个共识节点,例如,节点130a。该方法至少可以包括以下步骤:
步骤S301,业务流处理器基于与共识节点之间的关联关系,通过共识节点代理向共识节点发送数据读取请求;
该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
步骤S302,共识节点根据数据读取请求,将共识节点的区块存储状态以及核心共识网络中具有最大区块高度的待处理区块返回至业务流处理器中的共识节点代理;
该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S101,或者,可以参见上述图5所对应实施例中的步骤S201,这里不再进行赘述。
步骤S303,业务流处理器中的共识节点代理基于共识节点的区块存储状态对待处理区块进行区块确定性验证,得到区块确定性验证结果,且当区块确定性验证结果为确定性成功验证结果时,将待处理区块作为待校验区块;
该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
步骤S304,业务流处理器中的共识节点代理对待校验区块进行区块校验,得到区块校验结果;
该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
步骤S305,业务流处理器中的共识节点代理向共识节点发送数据推送请求和第一签名信息;
可以理解,业务流处理器中的流处理队列是基于流代理组件所构建的,共识节点上部署有与反馈业务相关联的业务合约,且该业务合约中注册有业务流处理器所包含的共识节点代理的代理公钥,因此共识节点代理可以申请对应的公钥证书,为便于区分,可以将该公钥证书称为第一公钥证书。本申请实施例中的公钥证书,可以指公钥证书体系(PKI,Public Key Infrastructure),在证书体系中,证书是一个公钥拥有者的身份证明,由权威机构进行颁发(CA,Certificate Authority)。基于公钥证书体系可以实现非对称加密和对于信息的数字签名。这里的公钥证书体系可以包括公私钥密码、x509证书、CA证书签发中心等等。
当共识节点代理获取到包含有代理公钥的第一公钥证书时,可以生成数据推送请求,并可以基于代理公钥对应的代理私钥对该数据推送请求进行签名,从而得到第一签名信息。其中,共识节点代理可以通过对数据推送请求进行哈希运算,得到该数据推送请求的摘要信息(可称为第七摘要信息,例如,摘要信息H4),进而可以对该数据推送请求的摘要信息进行数字签名,得到第一签名信息。随后,共识节点代理可以将数据推送请求和第一签名信息发送至共识节点。
步骤S306,共识节点在对第一签名信息验签成功后,基于数据推送请求对第一公钥证书进行证书验证,得到第一证书验证结果,将第一证书验证结果返回至业务流处理器;
具体的,某个共识节点在接收到数据推送请求和第一签名信息后,可以将数据推送请求和第一签名信息广播至其他共识节点,随后每个共识节点均可以对第一签名信息进行验签,此处以N个共识节点中的共识节点i(i为小于或等于N的正整数)为例进行说明:共识节点i可以获取代理公钥,并可以基于该代理公钥对第一签名信息中的数字签名进行验签,得到数据推送请求的摘要信息(即第七摘要信息,例如,摘要信息H4),且可以利用与共识节点代理相同的哈希算法对数据推送请求进行哈希运算,得到数据推送请求的摘要信息(可称为第八摘要信息,例如,摘要信息h4),进而可以将验签后所得到的第七摘要信息与进行哈希运算所得到的第八摘要信息进行比对,得到第一验签结果i。可以理解,若第一验签结果i指示第七摘要信息与第八摘要信息相同,则可以确定共识节点i验签成功;反之,若第一验签结果i指示第七摘要信息与第八摘要信息不相同,则可以确定共识节点i验签失败。
可以理解,当N个共识节点均对第一签名信息进行验签后,可以得到N个第一验签结果,可选的,若这N个第一验签结果中包含的指示验签成功的第一验签结果的数量大于第一数量阈值,则表示共识节点对第一签名信息验签成功;反之,可选的,若这N个第一验签结果中包含的指示验签成功的第一验签结果的数量小于或等于第一数量阈值,则表示共识节点对第一签名信息验签失败。其中,第一数量阈值可以根据实际需要进行设置,这里不做限定,例如,当N=3F+1时,第一数量阈值可以设置为(2F+1)。
进一步地,当共识节点对第一签名信息验签成功后,可以基于数据推送请求对第一公钥证书进行证书验证,得到第一证书验证结果。其中,每个共识节点都可以比对共识节点代理当前所使用的第一公钥证书与共识节点代理预先提交到链上的第一公钥证书是否一致,例如比对第一公钥证书中的代理公钥是否一致,比对证书内容是否一致,还包括验证第一公钥证书的有效性、验证证书版本等等。
随后,可以将第一证书验证结果返回至业务流处理器。其中,当第一证书验证结果指示N个共识节点中包含的验证成功的共识节点的数量大于第一数量阈值时,表示共识节点对第一公钥证书验证成功,反之则表示共识节点对第一公钥证书验证失败。可以理解的是,对第一公钥证书进行证书验证的过程就是对共识节点代理进行身份验证的过程,只有具有合法证书的共识节点代理才是可信任的,才可以保证后续建立的第一通信连接是安全可靠的。
步骤S307,若第一证书验证结果指示验证成功,则业务流处理器在共识节点代理与流代理组件之间建立第一通信连接;
可以理解,若第一证书验证结果指示验证成功,则可以确定共识节点代理具备数据推送权限,因此可以在共识节点代理与流代理组件之间建立第一通信连接(例如,TLS连接),该第一通信连接可用于将共识节点代理获取到的业务数据传输至流代理组件。
步骤S308,业务流处理器中的流失处理组件向共识节点发送数据拉取请求和第二签名信息;
与上述步骤S305中的处理过程类似,业务合约中注册有业务流处理器所包含的流失处理组件的组件公钥,因此流失处理组件可以申请对应的公钥证书,为便于区分,可以将该公钥证书称为第二公钥证书。当流失处理组件获取到包含有组件公钥的第二公钥证书时,可以生成数据拉取请求,并可以基于组件公钥对应的组件私钥对该数据拉取请求进行签名,从而得到第二签名信息。其中,流失处理组件可以通过对数据拉取请求进行哈希运算,得到该数据拉取请求的摘要信息(可称为第九摘要信息,例如,摘要信息H5),进而可以对该数据拉取请求的摘要信息进行数字签名,得到第二签名信息。随后,流失处理组件可以将数据拉取请求和第二签名信息发送至共识节点。
步骤S309,共识节点在对第二签名信息验签成功后,基于数据拉取请求对第二公钥证书进行证书验证,得到第二证书验证结果,将第二证书验证结果返回至业务流处理器;
与上述步骤S306中的处理过程类似,某个共识节点在接收到数据拉取请求和第二签名信息后,可以将数据拉取请求和第二签名信息广播至其他共识节点,随后每个共识节点均可以对第二签名信息进行验签,此处仍以共识节点i为例进行说明:共识节点i可以获取组件公钥,并可以基于该组件公钥对第二签名信息中的数字签名进行验签,得到数据拉取请求的摘要信息(即第九摘要信息,例如,摘要信息H5),且可以利用与流失处理组件相同的哈希算法对数据拉取请求进行哈希运算,得到数据拉取请求的摘要信息(可称为第十摘要信息,例如,摘要信息h5),进而可以将验签后所得到的第九摘要信息与进行哈希运算所得到的第十摘要信息进行比对,得到第二验签结果i。可以理解,若第二验签结果i指示第九摘要信息与第十摘要信息相同,则可以确定共识节点i验签成功;反之,若第二验签结果i指示第九摘要信息与第十摘要信息不相同,则可以确定共识节点i验签失败。
可以理解,当N个共识节点均对第二签名信息进行验签后,可以得到N个第二验签结果,可选的,若这N个第二验签结果中包含的指示验签成功的第二验签结果的数量大于第二数量阈值,则表示共识节点对第二签名信息验签成功;反之,可选的,若这N个第二验签结果中包含的指示验签成功的第二验签结果的数量小于或等于第二数量阈值,则表示共识节点对第二签名信息验签失败。其中,第二数量阈值可以根据实际需要进行设置,这里不做限定,例如,当N=3F+1时,第二数量阈值可以设置为(2F+1)。
进一步地,当共识节点对第二签名信息验签成功后,可以基于数据拉取请求对第二公钥证书进行证书验证,得到第二证书验证结果。其中,每个共识节点都可以比对流失处理组件当前所使用的第二公钥证书与流失处理组件预先提交到链上的第二公钥证书是否一致,例如比对第二公钥证书中的组件公钥是否一致,比对证书内容是否一致,还包括验证第二公钥证书的有效性、验证证书版本等等。
随后,可以将第二证书验证结果返回至业务流处理器。其中,当第二证书验证结果指示N个共识节点中包含的验证成功的共识节点的数量大于第二数量阈值时,表示共识节点对第二公钥证书验证成功,反之则表示共识节点对第二公钥证书验证失败。可以理解的是,对第二公钥证书进行证书验证的过程就是对流失处理组件进行身份验证的过程,只有具有合法证书的流失处理组件才是可信任的,才可以保证后续建立的第二通信连接是安全可靠的。
步骤S310,若第二证书验证结果指示验证成功,则业务流处理器在流失处理组件与流代理组件之间建立第二通信连接;
可以理解,若第二证书验证结果指示验证成功,则可以确定流失处理组件具备数据拉取权限,因此可以在流失处理组件与流代理组件之间建立第二通信连接(例如,TLS连接),该第二通信连接可用于将流代理组件所存储的业务数据流传输至流失处理组件。
步骤S311,若区块校验结果指示校验成功,则业务流处理器中的共识节点代理通过第一通信连接,将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列;
该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
步骤S312,业务流处理器中的流失处理组件通过第二通信连接,从流处理队列中拉取业务数据流,通过流失处理组件以及转换处理引擎对业务数据流进行流失处理,得到业务数据对应的流失处理结果;
该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
步骤S313,业务流处理器通过业务处理引擎对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,基于逻辑分析结果生成反馈业务交易,将反馈业务交易发送至共识节点;
该步骤的具体实现过程可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
步骤S314,共识节点对反馈业务交易进行交易验证;
该步骤的具体实现过程可以参见上述图5所对应实施例中的步骤S203,这里不再进行赘述。
步骤S315,当反馈业务交易验证成功时,共识节点基于反馈业务交易对共识节点上部署的与反馈业务相关联的业务合约的合约状态进行更改。
该步骤的具体实现过程可以参见上述图5所对应实施例中的步骤S203,这里不再进行赘述。此外,对采用相同方法的有益效果描述,也不再进行赘述。
为便于理解,进一步地,请参见图7,图7是本申请实施例提供的一种税务区块链中实时业务流反馈的系统架构图。该税务区块链是一种分层区块链,包括彼此隔离的业务网络和核心共识网络,如图7所示,业务网络可以包括多个业务节点,这里对业务节点的数量不做限定,例如可以包括业务节点701a、业务节点701b、业务节点701c、业务节点701d以及业务节点701e,在税务区块链中,每个业务节点都有各自的等级和职能,例如,业务节点701a、业务节点701b和业务节点701c均可以为省级以下(如市级/县级/乡镇级等)的税务业务轻量节点(也可称为税务业务SPV节点),可用于执行某些具体的税务业务,例如,业务节点701a可以统计其所在区域内的所有企业在本年度所需缴纳的税额;而业务节点701d和业务节点701e可以为省级轻量节点(也可称为省级SPV节点),具有比省级以下的轻量节点更高的权限,可以对业务节点701a、业务节点701b和业务节点701c进行管理。核心共识网络可以包括多个共识节点,这里对共识节点的数量不做限定,例如可以包括共识节点702a、共识节点702b、共识节点702c、…、共识节点702n,这些共识节点可以对业务节点提交的交易进行验证,并在验证通过后打包上链,例如,某个业务对象缴纳指定税额后,相关的业务节点可以为该业务对象开具一张电子票据,并可以将该电子票据上传至共识节点进行处理。
此外,核心共识网络还可以包括业务流处理器,如图7所示,业务流处理器与核心共识网络中的每个共识节点均具有关联关系,业务流处理器可以包括以下几个部分:共识节点代理703、流处理队列704、流失处理组件705、与流失处理组件705相关联的转换处理引擎706、业务控制组件707。其中,共识节点代理703可以为业务流处理器提供读取数据的负载均衡,以便业务流处理器可以从多个共识节点中均匀读取实时数据。共识节点代理703中主要实现三个核心逻辑,分别为区块确定性判定(即对待处理区块进行区块确定性验证)、数据QC校验(即对待校验区块进行区块校验)以及反向流式反馈上链(即将业务控制组件707中的业务反馈操作进行交易组装和签名,并将得到的反馈业务交易转发至共识节点)。共识节点代理703可以从共识节点上批量获取最新的交易数据和合约数据,并将其存入流处理队列704中,这里的流处理队列704可以通过部署kafka集群得到,以便实现对实时数据的分布式处理。触发流失处理后,流失处理组件705可以主动从流处理队列704中拉取业务数据流,并可以使用微批处理的形式来进行流处理,该流失处理组件705具体可以为SparkStreaming,它可以基于预设的切分时间间隔对拉取到的业务数据流进行数据流切分,得到至少两个子业务数据流。转换处理引擎706具体可以为Spark Engine,可以对流失处理组件705得到的子业务数据流进行数据转换处理,最终得到流失处理结果。业务控制组件707中可以添加一个或多个业务处理引擎,这里将不对业务处理引擎的数量进行限定,例如可以包括业务处理引擎707a、业务处理引擎707b、…、业务处理引擎707m,每个业务处理引擎可以对应一套业务逻辑/逻辑规则,例如,通过业务处理引擎707a可以在业务控制组件707中引入与开票控制相关的业务逻辑,通过业务处理引擎707b可以在业务控制组件707中引入与退税审查相关的业务逻辑。业务控制组件707可以调用相应的业务处理引擎,对转换处理引擎706输出的流失处理结果进行实时的业务逻辑分析,并可以凭借其链上可信身份对共识节点进行业务反馈,例如风险判断、业务冻结、告警下发等。其中,业务流处理器中的每个功能模块所执行的具体工作可以参见上述图3所对应的实施例,这里不再进行赘述。
可以理解,基于税务区块链的数据实时风控管理需要,本申请实施例在核心共识网络中增加了基于Spark的实时业务流处理系统(即业务流处理器),通过对交易数据和合约数据的实时处理,税务管理者(例如各地的税局)在实时流处理的业务控制组件中添加对应的业务处理引擎,引入需要的业务逻辑,即可完成实时风控处理。
为便于理解,进一步地,请参见图8,图8是本申请实施例提供的一种区块链电子票据场景下的系统架构图。如图8所示,本申请实施例中的业务层、路由代理层以及核心共识网络层组成了整个完整区块链业务体系。图8所示的核心链1、核心链2、…以及核心链N分别为不同区域的税局所维护的目标区块链。例如,本申请实施例中的业务数据(例如,业务数据G)可以包括在执行电子票据转移业务时所生成的交易数据和合约数据。
可以理解的是,当区块链被用于政务机构(例如,税务系统)或者商业机构的一些场景中,为了提高数据的保密性和安全性,可以采用本申请实施例中的“业务网络—核心共识网络”这一分层区块链结构。
其中,业务层处于见证网络(即业务网络)中,该业务层中的业务节点可以包括电子税局对应的终端设备、企业用户对应的终端设备以及消费用户对应的终端设备。其中,电子税局可以是指税局专网中的地方税局,企业用户可以为公有云中的开票服务商、报销服务商或者零售企业(例如,KA企业,即大型零售客户和重点零售客户企业)等,消费用户可以为私有云中的支付服务商、流转服务商或者零售企业等。其中,该业务网络中的业务节点主要用于执行交易业务,不参与记账共识。可以理解的是,业务节点能够在执行电子票据转移业务时,生成用于向中继节点发送的交易数据和合约数据。
其中,路由代理层中的N个中继节点(即路由节点)可以用于对业务层和核心共识网络层进行网络隔离。其中,每个中继节点可以具有点对点服务(即P2P服务)、路由服务、证书缓存、认证服务。可以理解的是,点对点服务是指在P2P网络中的服务,基于一类特定的网络协议,P2P网络中的网络节点之间不需要一个中心节点来维护网络状态,而是每个节点通过和相邻节点的广播交互来维护全网的节点状态或者是其相邻节点连接状态。路由服务是节点具有的基本功能,可以用于节点之间的通信。与证书缓存相关联的证书,可以指公钥证书体系(PKI),在证书体系中,证书是一个公钥拥有者的身份证明,由权威机构进行颁发(CA)。认证服务可以用于验证接收到的数据的数据格式、节点合法性等。可以理解的是,在本申请实施例中,中继节点可以将业务节点生成的交易数据和合约数据转发至共识节点。
其中,核心共识网络层中的共识节点(即记账节点)可以为税务专网中的可信节点。可以理解的是,每个共识节点均具有打包出块的能力,即可以对中继节点发送的交易数据进行打包出块,对中继节点发送的合约数据进行存储,或者,对中继节点发送的交易数据以及合约数据均进行打包出块,以成功写入核心共识网络层中的目标区块链中。此外,可以在核心共识网络层中添加业务流处理器,该业务流处理器与共识节点具有关联关系,在业务流处理器基于该关联关系从共识节点上获取到具有最大区块高度的待校验区块时,可以对待校验区块进行区块校验,若该待校验区块校验成功,则业务流处理器可以将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,以对流处理队列中的业务数据流进行流失处理,从而得到业务数据对应的流失处理结果。业务流处理器还可以对流失处理结果进行业务逻辑分析,并可以基于得到的逻辑分析结果向共识节点进行业务反馈。相应的,共识节点可以根据业务流处理器发送的数据读取请求,将共识节点中具有最大区块高度的待校验区块返回至业务流处理器,并可以对业务流处理器所返回的反馈业务交易进行交易验证,当反馈业务交易验证成功时,可以基于反馈业务交易对共识节点上部署的与反馈业务相关联的业务合约的合约状态进行更改。由此可见,在核心共识网络中,业务流处理器可以在保证链上链下数据一致性和可靠性的前提下,即时获取到区块链上的实时数据流(即业务数据流)进行快速的业务逻辑分析以及相应的业务反馈,从而可以实现基于实时数据流的业务模式与区块链的无缝对接,同时可以提升实时业务流式分析和实时业务反馈的性能。
请参见图9,是本申请实施例提供的一种基于分层区块链的数据处理装置的结构示意图。该基于分层区块链的数据处理装置1可以是运行于计算机设备的一个计算机程序(包括程序代码),例如该基于分层区块链的数据处理装置1为一个应用软件;该装置可以用于执行本申请实施例提供的基于分层区块链的数据处理方法中的相应步骤。在本申请实施例中,该装置可以运行在业务流处理器中,该业务流处理器可以为上述图2所对应实施例中的业务流处理器20B,其中,分层区块链可以包含核心共识网络中的区块链,该核心共识网络中的共识节点与业务流处理器具有关联关系。如图9所示,该基于分层区块链的数据处理装置1可以包括:区块校验模块101、流失处理模块102、业务反馈模块103、数据请求模块104、区块确定模块105、第一签名模块106、第一发送模块107、第一通信模块108、第二签名模块109、第二发送模块110、第二通信模块111;
区块校验模块101,用于在业务流处理器基于关联关系从共识节点上获取到具有最大区块高度的待校验区块时,对待校验区块进行区块校验,得到区块校验结果;
其中,该区块校验模块101可以包括:节点验签单元1011、树根校验单元1012、交易校验单元1013、校验成功单元1014、校验结果确定单元1015;
节点验签单元1011,用于通过共识节点代理获取与待校验区块相关联的节点签名集合以及N个共识节点分别对应的节点公钥,基于获取到的N个节点公钥对节点签名集合进行节点签名验证,得到节点验签结果;节点签名集合包括N个共识节点中的每个共识节点分别对待校验区块进行签名所得到的节点签名信息;
树根校验单元1012,用于若节点验签结果指示验签成功,则对待校验区块中的默克尔树根进行树根校验,得到树根校验结果;
交易校验单元1013,用于若树根校验结果指示树根校验成功,则对待校验区块中与默克尔树根相关联的交易数据进行交易校验,得到交易校验结果;
校验成功单元1014,用于若交易校验结果指示交易校验成功,则确定待校验区块校验成功,将校验成功的待校验区块作为区块校验成功结果;
校验结果确定单元1015,用于基于节点验签结果、树根校验结果、交易校验结果以及区块校验成功结果,确定区块校验结果;
其中,该校验结果确定单元1015具体用于若节点验签结果指示验签失败,或者,树根校验结果指示树根校验失败,或者,交易校验结果指示交易校验失败,则确定待校验区块校验失败,将校验失败的待校验区块作为区块校验失败结果;将区块校验成功结果或区块校验失败结果作为区块校验结果。
其中,节点验签单元1011、树根校验单元1012、交易校验单元1013、校验成功单元1014、校验结果确定单元1015的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
流失处理模块102,用于若区块校验结果指示校验成功,则将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果;
其中,该流失处理模块可以包括:业务数据获取单元1021、数据流存储单元1022、流失处理单元1023;
业务数据获取单元1021,用于通过业务流处理器中的共识节点代理,从待校验区块所在的共识节点的节点内存中读取待校验区块的交易数据以及与交易数据相关联的合约数据,将读取到的交易数据和合约数据作为与待校验区块相关联的业务数据;
数据流存储单元1022,用于将业务数据以数据流的方式发送至业务流处理器中的流处理队列进行存储,将存储在流处理队列中的业务数据作为业务数据流;
流失处理单元1023,用于通过业务流处理器中的流失处理组件以及与流失处理组件相关联的转换处理引擎,对业务数据流进行流失处理,得到业务数据对应的流失处理结果。
其中,该流失处理单元1023可以包括:数据流切分子单元10231、数据转换子单元10232;
数据流切分子单元10231,用于通过业务流处理器中的流失处理组件从流处理队列中拉取业务数据流,基于切分时间间隔对拉取到的业务数据流进行数据流切分,得到至少两个子业务数据流;
数据转换子单元10232,用于将至少两个子业务数据流传输至与流失处理组件相关联的转换处理引擎进行数据转换处理,得到每个子业务数据流对应的转换处理结果,将得到的至少两个转换处理结果作为业务数据对应的流失处理结果。
其中,数据流切分子单元10231、数据转换子单元10232的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
其中,业务数据获取单元1021、数据流存储单元1022、流失处理单元1023的具体功能实现方式可以参见上述图3所对应实施例中的步骤S102,这里不再进行赘述。
业务反馈模块103,用于对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,基于逻辑分析结果向共识节点进行业务反馈;
在一种实施方式中,业务流处理器还包括共识节点代理和业务控制组件,业务控制组件中包含有与目标业务逻辑相关联的业务处理引擎;共识节点上部署有与反馈业务相关联的业务合约,业务合约中注册有业务处理引擎的引擎私钥;
该业务反馈模块103可以包括:逻辑分析单元1031、反馈签名单元1032、引擎验签单元1033、消息转发单元1034;
逻辑分析单元1031,用于基于目标业务逻辑,调用业务处理引擎对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果;
反馈签名单元1032,用于根据逻辑分析结果生成业务反馈消息,基于引擎私钥对业务反馈消息进行签名,得到引擎签名信息,通过业务控制组件的组件接口将引擎签名信息和业务反馈消息返回至共识节点代理;
引擎验签单元1033,用于通过共识节点代理对引擎签名信息进行引擎签名验证,得到引擎验签结果;
消息转发单元1034,用于若引擎验签结果指示验签成功,则将业务反馈消息转发至共识节点;
其中,该消息转发单元1034可以包括:组装签名子单元10341、交易转发子单元10342;
组装签名子单元10341,用于若引擎验签结果指示验签成功,则对业务反馈消息进行交易组装处理,得到反馈业务交易,基于共识节点代理的代理私钥对反馈业务交易进行签名,得到代理签名信息;
交易转发子单元10342,用于将代理签名信息和反馈业务交易转发至共识节点,以使共识节点对代理签名信息和引擎签名信息进行共识,且在代理签名信息和引擎签名信息均共识通过时,基于反馈业务交易对业务合约的合约状态进行更改。
其中,组装签名子单元10341、交易转发子单元10342的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
其中,逻辑分析单元1031、反馈签名单元1032、引擎验签单元1033、消息转发单元1034的具体功能实现方式可以参见上述图3所对应实施例中的步骤S103,这里不再进行赘述。
在一种实施方式中,上述业务流处理器包括共识节点代理,关联关系包括共识节点代理与共识节点之间的数据交互关系;
数据请求模块104,用于基于数据交互关系,通过共识节点代理向共识节点发送数据读取请求,以使共识节点根据数据读取请求返回共识节点的区块存储状态以及核心共识网络中具有最大区块高度的待处理区块;
区块确定模块105,用于基于共识节点的区块存储状态对待处理区块进行区块确定性验证,得到区块确定性验证结果;当区块确定性验证结果为确定性成功验证结果时,将确定性成功验证结果所指示的具有第一区块状态的待处理区块作为待校验区块;
在一种实施方式中,共识节点的节点数量为N个,N为正整数;一个共识节点对应于一个区块存储状态;上述区块确定模块105可以包括:节点确定单元1051、第一验证单元1052、第二验证单元1053、验证结果确定单元1054;
节点确定单元1051,用于根据N个共识节点分别对应的区块存储状态,将N个共识节点中已存储有待处理区块的共识节点作为目标共识节点;目标共识节点的节点数量小于或等于N;
第一验证单元1052,用于若目标共识节点的节点数量大于节点数量阈值,则将待处理区块的区块状态确定为第一区块状态,将具有第一区块状态的待处理区块作为确定性成功验证结果;
第二验证单元1053,用于若目标共识节点的节点数量小于或等于节点数量阈值,则将待处理区块的区块状态确定为第二区块状态,将具有第二区块状态的待处理区块作为确定性失败验证结果;
验证结果确定单元1054,用于将确定性成功验证结果或确定性失败验证结果作为区块确定性验证结果。
其中,节点确定单元1051、第一验证单元1052、第二验证单元1053、验证结果确定单元1054的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101,这里不再进行赘述。
在一种实施方式中,流处理队列是基于流代理组件所构建的,共识节点上部署有与反馈业务相关联的业务合约,业务合约中注册有业务流处理器所包含的共识节点代理的代理公钥;
第一签名模块106,用于当共识节点代理获取到包含有代理公钥的第一公钥证书时,生成数据推送请求,基于代理公钥对应的代理私钥对数据推送请求进行签名,得到第一签名信息;
第一发送模块107,用于将数据推送请求和第一签名信息发送至共识节点,以使共识节点在对第一签名信息验签成功后,基于数据推送请求对第一公钥证书进行证书验证,得到第一证书验证结果;
第一通信模块108,用于若第一证书验证结果指示验证成功,则确定共识节点代理具备数据推送权限,在共识节点代理与流代理组件之间建立第一通信连接;第一通信连接用于将共识节点代理获取到的业务数据传输至流代理组件。
在一种实施方式中,流处理队列是基于流代理组件所构建的,共识节点上部署有与反馈业务相关联的业务合约,业务合约中注册有业务流处理器所包含的流失处理组件的组件公钥;
第二签名模块109,用于当流失处理组件获取到包含有组件公钥的第二公钥证书时,生成数据拉取请求,基于组件公钥对应的组件私钥对数据拉取请求进行签名,得到第二签名信息;
第二发送模块110,用于将数据拉取请求和第二签名信息发送至共识节点,以使共识节点在对第二签名信息验签成功后,基于数据拉取请求对第二公钥证书进行证书验证,得到第二证书验证结果;
第二通信模块111,用于若第二证书验证结果指示验证成功,则确定流失处理组件具备数据拉取权限,在流失处理组件与流代理组件之间建立第二通信连接;第二通信连接用于将流代理组件所存储的业务数据流传输至流失处理组件。
其中,区块校验模块101、流失处理模块102、业务反馈模块103、数据请求模块104、区块确定模块105、第一签名模块106、第一发送模块107、第一通信模块108、第二签名模块109、第二发送模块110、第二通信模块111的具体功能实现方式可以参见上述图3所对应实施例中的步骤S101-步骤S103,以及上述图6所对应实施例中的步骤S301-步骤S315,这里不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
请参见图10,是本申请实施例提供的一种基于分层区块链的数据处理装置的结构示意图。该基于分层区块链的数据处理装置2可以是运行于计算机设备的一个计算机程序(包括程序代码),例如该基于分层区块链的数据处理装置2为一个应用软件;该装置可以用于执行本申请实施例提供的基于分层区块链的数据处理方法中的相应步骤。在本申请实施例中,该装置可以运行在核心共识网络中的共识节点中,该共识节点可以为上述图2所对应实施例中的共识节点20A,其中,分层区块链可以包含核心共识网络中的区块链,该核心共识网络中的业务流处理器与共识节点具有关联关系。如图10所示,该基于分层区块链的数据处理装置2可以包括:区块获取模块21、反馈获取模块22、状态变更模块23;
区块获取模块21,用于在共识节点基于关联关系获取到业务流处理器发送的数据读取请求时,根据数据读取请求,将共识节点中具有最大区块高度的待校验区块返回至业务流处理器,以使业务流处理器对校验区块进行区块校验,得到区块校验结果;当区块校验结果指示校验成功时,业务流处理器用于将与待校验区块相关联的业务数据以数据流的方式发送至业务流处理器中的流处理队列,且对流处理队列中的业务数据流进行流失处理,得到业务数据对应的流失处理结果;业务流处理器用于对流失处理结果进行业务逻辑分析,得到业务数据对应的逻辑分析结果,逻辑分析结果用于指示业务流处理器向共识节点进行业务反馈;
反馈获取模块22,用于获取由业务流处理器所返回的反馈业务交易;反馈业务交易是由业务流处理器基于逻辑分析结果所生成的;
状态变更模块23,用于对反馈业务交易进行交易验证,当反馈业务交易验证成功时,基于反馈业务交易对共识节点上部署的与反馈业务相关联的业务合约的合约状态进行更改。
其中,上述状态变更模块23可以包括:签名获取单元231、第一共识单元232、第二共识单元233、验证成功单元234;
签名获取单元231,用于获取与反馈业务交易相关联的代理签名信息和引擎签名信息;反馈业务交易是由业务流处理器中的共识节点代理对业务反馈消息进行交易组装处理后所得到的,代理签名信息是由共识节点代理基于代理私钥对反馈业务交易进行签名所得到的;业务反馈消息是由业务流处理器中的业务控制组件所包含的业务处理引擎根据逻辑分析结果所生成的消息,引擎签名信息是由业务处理引擎基于引擎私钥对业务反馈消息进行签名所得到的;
第一共识单元232,用于对代理签名信息进行共识,得到第一共识结果;
第二共识单元233,用于当第一共识结果指示代理签名信息共识通过时,对引擎签名信息进行共识,得到第二共识结果;
验证成功单元234,用于当第二共识结果指示引擎签名信息共识通过时,确定反馈业务交易验证成功。
其中,签名获取单元231、第一共识单元232、第二共识单元233、验证成功单元234的具体功能实现方式可以参见上述图5所对应实施例中的步骤S203,这里不再进行赘述。
其中,区块获取模块21、反馈获取模块22、状态变更模块23的具体功能实现方式可以参见上述图5所对应实施例中的步骤S201-步骤S203,或者可以参见上述图6所对应实施例中的步骤S301-步骤S315,这里不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
请参见图11,是本申请实施例提供的一种计算机设备的结构示意图。如图11所示,该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在如图11所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以执行前文图3、图5、图6任一个所对应实施例中对该基于分层区块链的数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的基于分层区块链的数据处理装置1和基于分层区块链的数据处理装置2所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3、图5、图6任一个所对应实施例中对基于分层区块链的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
上述计算机可读存储介质可以是前述任一实施例提供的基于分层区块链的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
此外,这里需要指出的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图3、图5、图6任一个所对应实施例提供的方法。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
进一步的,请参见图12,图12是本申请实施例提供的一种数据处理系统的结构示意图。该数据处理系统3可以包含数据处理装置1a和数据处理装置2a。其中,数据处理装置1a可以为上述图9所对应实施例中的基于分层区块链的数据处理装置1,可以理解的是,该数据处理装置1a可以集成在上述图2所对应实施例中的业务流处理器20B,因此,这里将不再进行赘述。其中,数据处理装置2a可以为上述图10所对应实施例中的基于分层区块链的数据处理装置2,可以理解的是,该数据处理装置2a可以集成在上述图2对应实施例中的共识节点20A,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的数据处理系统实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (18)
1.一种基于分层区块链的数据处理方法,其特征在于,所述方法由业务流处理器执行,所述分层区块链包含核心共识网络中的区块链,所述核心共识网络中的共识节点与所述业务流处理器具有关联关系,所述方法包括:
在所述业务流处理器基于所述关联关系从所述共识节点上获取到具有最大区块高度的待校验区块时,对所述待校验区块进行区块校验,得到区块校验结果;
若所述区块校验结果指示校验成功,则将与所述待校验区块相关联的业务数据以数据流的方式发送至所述业务流处理器中的流处理队列,对所述流处理队列中的业务数据流进行流失处理,得到所述业务数据对应的流失处理结果;
对所述流失处理结果进行业务逻辑分析,得到所述业务数据对应的逻辑分析结果,基于所述逻辑分析结果向所述共识节点进行业务反馈。
2.根据权利要求1所述的方法,其特征在于,所述业务流处理器包括共识节点代理,所述关联关系包括所述共识节点代理与所述共识节点之间的数据交互关系;所述方法还包括:
基于所述数据交互关系,通过所述共识节点代理向所述共识节点发送数据读取请求,以使所述共识节点根据所述数据读取请求返回所述共识节点的区块存储状态以及所述核心共识网络中具有最大区块高度的待处理区块;
基于所述共识节点的区块存储状态对所述待处理区块进行区块确定性验证,得到区块确定性验证结果;
当所述区块确定性验证结果为确定性成功验证结果时,将所述确定性成功验证结果所指示的具有第一区块状态的待处理区块作为待校验区块。
3.根据权利要求2所述的方法,其特征在于,所述共识节点的节点数量为N个,N为正整数;一个共识节点对应于一个区块存储状态;
所述基于所述共识节点的区块存储状态对所述待处理区块进行区块确定性验证,得到区块确定性验证结果,包括:
根据N个共识节点分别对应的区块存储状态,将所述N个共识节点中已存储有所述待处理区块的共识节点作为目标共识节点;所述目标共识节点的节点数量小于或等于N;
若所述目标共识节点的节点数量大于节点数量阈值,则将所述待处理区块的区块状态确定为第一区块状态,将具有所述第一区块状态的待处理区块作为确定性成功验证结果;
若所述目标共识节点的节点数量小于或等于所述节点数量阈值,则将所述待处理区块的区块状态确定为第二区块状态,将具有所述第二区块状态的待处理区块作为确定性失败验证结果;
将所述确定性成功验证结果或所述确定性失败验证结果作为区块确定性验证结果。
4.根据权利要求2所述的方法,其特征在于,所述对所述待校验区块进行区块校验,得到区块校验结果,包括:
通过所述共识节点代理获取与所述待校验区块相关联的节点签名集合以及所述N个共识节点分别对应的节点公钥,基于获取到的N个节点公钥对所述节点签名集合进行节点签名验证,得到节点验签结果;所述节点签名集合包括所述N个共识节点中的每个共识节点分别对所述待校验区块进行签名所得到的节点签名信息;
若所述节点验签结果指示验签成功,则对所述待校验区块中的默克尔树根进行树根校验,得到树根校验结果;
若所述树根校验结果指示树根校验成功,则对所述待校验区块中与所述默克尔树根相关联的交易数据进行交易校验,得到交易校验结果;
若所述交易校验结果指示交易校验成功,则确定所述待校验区块校验成功,将校验成功的待校验区块作为区块校验成功结果;
基于所述节点验签结果、所述树根校验结果、所述交易校验结果以及所述区块校验成功结果,确定区块校验结果。
5.根据权利要求4所述的方法,其特征在于,所述基于所述节点验签结果、所述树根校验结果、所述交易校验结果以及所述区块校验成功结果,确定区块校验结果,包括:
若所述节点验签结果指示验签失败,或者,所述树根校验结果指示树根校验失败,或者,所述交易校验结果指示交易校验失败,则确定所述待校验区块校验失败,将校验失败的待校验区块作为区块校验失败结果;
将所述区块校验成功结果或所述区块校验失败结果作为区块校验结果。
6.根据权利要求1所述的方法,其特征在于,所述将与所述待校验区块相关联的业务数据以数据流的方式发送至所述业务流处理器中的流处理队列,对所述流处理队列中的业务数据流进行流失处理,得到所述业务数据对应的流失处理结果,包括:
通过所述业务流处理器中的共识节点代理,从所述待校验区块所在的共识节点的节点内存中读取所述待校验区块的交易数据以及与所述交易数据相关联的合约数据,将读取到的所述交易数据和所述合约数据作为与所述待校验区块相关联的业务数据;
将所述业务数据以数据流的方式发送至所述业务流处理器中的流处理队列进行存储,将存储在所述流处理队列中的业务数据作为业务数据流;
通过所述业务流处理器中的流失处理组件以及与所述流失处理组件相关联的转换处理引擎,对所述业务数据流进行流失处理,得到所述业务数据对应的流失处理结果。
7.根据权利要求6所述的方法,其特征在于,所述通过所述业务流处理器中的流失处理组件以及与所述流失处理组件相关联的转换处理引擎,对所述业务数据流进行流失处理,得到所述业务数据对应的流失处理结果,包括:
通过所述业务流处理器中的流失处理组件从所述流处理队列中拉取所述业务数据流,基于切分时间间隔对拉取到的所述业务数据流进行数据流切分,得到至少两个子业务数据流;
将所述至少两个子业务数据流传输至与所述流失处理组件相关联的转换处理引擎进行数据转换处理,得到每个子业务数据流对应的转换处理结果,将得到的至少两个转换处理结果作为所述业务数据对应的流失处理结果。
8.根据权利要求1所述的方法,其特征在于,所述流处理队列是基于流代理组件所构建的,所述共识节点上部署有与反馈业务相关联的业务合约,所述业务合约中注册有所述业务流处理器所包含的共识节点代理的代理公钥;所述方法还包括:
当所述共识节点代理获取到包含有所述代理公钥的第一公钥证书时,生成数据推送请求,基于所述代理公钥对应的代理私钥对所述数据推送请求进行签名,得到第一签名信息;
将所述数据推送请求和所述第一签名信息发送至所述共识节点,以使所述共识节点在对所述第一签名信息验签成功后,基于所述数据推送请求对所述第一公钥证书进行证书验证,得到第一证书验证结果;
若所述第一证书验证结果指示验证成功,则确定所述共识节点代理具备数据推送权限,在所述共识节点代理与所述流代理组件之间建立第一通信连接;所述第一通信连接用于将所述共识节点代理获取到的所述业务数据传输至所述流代理组件。
9.根据权利要求1所述的方法,其特征在于,所述流处理队列是基于流代理组件所构建的,所述共识节点上部署有与反馈业务相关联的业务合约,所述业务合约中注册有所述业务流处理器所包含的流失处理组件的组件公钥;所述方法还包括:
当所述流失处理组件获取到包含有所述组件公钥的第二公钥证书时,生成数据拉取请求,基于所述组件公钥对应的组件私钥对所述数据拉取请求进行签名,得到第二签名信息;
将所述数据拉取请求和所述第二签名信息发送至所述共识节点,以使所述共识节点在对所述第二签名信息验签成功后,基于所述数据拉取请求对所述第二公钥证书进行证书验证,得到第二证书验证结果;
若所述第二证书验证结果指示验证成功,则确定所述流失处理组件具备数据拉取权限,在所述流失处理组件与所述流代理组件之间建立第二通信连接;所述第二通信连接用于将所述流代理组件所存储的所述业务数据流传输至所述流失处理组件。
10.根据权利要求1所述的方法,其特征在于,所述业务流处理器还包括共识节点代理和业务控制组件,所述业务控制组件中包含有与目标业务逻辑相关联的业务处理引擎;所述共识节点上部署有与反馈业务相关联的业务合约,所述业务合约中注册有所述业务处理引擎的引擎私钥;
所述对所述流失处理结果进行业务逻辑分析,得到所述业务数据对应的逻辑分析结果,基于所述逻辑分析结果向所述共识节点进行业务反馈,包括:
基于所述目标业务逻辑,调用所述业务处理引擎对所述流失处理结果进行业务逻辑分析,得到所述业务数据对应的逻辑分析结果;
根据所述逻辑分析结果生成业务反馈消息,基于所述引擎私钥对所述业务反馈消息进行签名,得到引擎签名信息,通过所述业务控制组件的组件接口将所述引擎签名信息和所述业务反馈消息返回至所述共识节点代理;
通过所述共识节点代理对所述引擎签名信息进行引擎签名验证,得到引擎验签结果;
若所述引擎验签结果指示验签成功,则将所述业务反馈消息转发至所述共识节点。
11.根据权利要求10所述的方法,其特征在于,所述若所述引擎验签结果指示验签成功,则将所述业务反馈消息转发至所述共识节点,包括:
若所述引擎验签结果指示验签成功,则对所述业务反馈消息进行交易组装处理,得到反馈业务交易,基于所述共识节点代理的代理私钥对所述反馈业务交易进行签名,得到代理签名信息;
将所述代理签名信息和所述反馈业务交易转发至所述共识节点,以使所述共识节点对所述代理签名信息和所述引擎签名信息进行共识,且在所述代理签名信息和所述引擎签名信息均共识通过时,基于所述反馈业务交易对所述业务合约的合约状态进行更改。
12.一种基于分层区块链的数据处理方法,其特征在于,所述方法由核心共识网络中的共识节点执行,所述分层区块链包含所述核心共识网络中的区块链,所述核心共识网络中的业务流处理器与所述共识节点具有关联关系,所述方法包括:
在所述共识节点基于所述关联关系获取到所述业务流处理器发送的数据读取请求时,根据所述数据读取请求,将所述共识节点中具有最大区块高度的待校验区块返回至所述业务流处理器,以使所述业务流处理器对所述校验区块进行区块校验,得到区块校验结果;当所述区块校验结果指示校验成功时,所述业务流处理器用于将与所述待校验区块相关联的业务数据以数据流的方式发送至所述业务流处理器中的流处理队列,且对所述流处理队列中的业务数据流进行流失处理,得到所述业务数据对应的流失处理结果;所述业务流处理器用于对所述流失处理结果进行业务逻辑分析,得到所述业务数据对应的逻辑分析结果,所述逻辑分析结果用于指示所述业务流处理器向所述共识节点进行业务反馈;
获取由所述业务流处理器所返回的反馈业务交易;所述反馈业务交易是由所述业务流处理器基于所述逻辑分析结果所生成的;
对所述反馈业务交易进行交易验证,当所述反馈业务交易验证成功时,基于所述反馈业务交易对所述共识节点上部署的与反馈业务相关联的业务合约的合约状态进行更改。
13.根据权利要求12所述的方法,其特征在于,所述对所述反馈业务交易进行交易验证,包括:
获取与所述反馈业务交易相关联的代理签名信息和引擎签名信息;所述反馈业务交易是由所述业务流处理器中的共识节点代理对业务反馈消息进行交易组装处理后所得到的,所述代理签名信息是由所述共识节点代理基于代理私钥对所述反馈业务交易进行签名所得到的;所述业务反馈消息是由所述业务流处理器中的业务控制组件所包含的业务处理引擎根据所述逻辑分析结果所生成的消息,所述引擎签名信息是由所述业务处理引擎基于引擎私钥对所述业务反馈消息进行签名所得到的;
对所述代理签名信息进行共识,得到第一共识结果;
当所述第一共识结果指示所述代理签名信息共识通过时,对所述引擎签名信息进行共识,得到第二共识结果;
当所述第二共识结果指示所述引擎签名信息共识通过时,确定所述反馈业务交易验证成功。
14.一种基于分层区块链的数据处理装置,其特征在于,所述装置运行在业务流处理器中,所述分层区块链包含核心共识网络中的区块链,所述核心共识网络中的共识节点与所述业务流处理器具有关联关系,所述装置包括:
区块校验模块,用于在所述业务流处理器基于所述关联关系从所述共识节点上获取到具有最大区块高度的待校验区块时,对所述待校验区块进行区块校验,得到区块校验结果;
流失处理模块,用于若所述区块校验结果指示校验成功,则将与所述待校验区块相关联的业务数据以数据流的方式发送至所述业务流处理器中的流处理队列,对所述流处理队列中的业务数据流进行流失处理,得到所述业务数据对应的流失处理结果;
业务反馈模块,用于对所述流失处理结果进行业务逻辑分析,得到所述业务数据对应的逻辑分析结果,基于所述逻辑分析结果向所述共识节点进行业务反馈。
15.一种基于分层区块链的数据处理装置,其特征在于,所述装置运行在核心共识网络中的共识节点中,所述分层区块链包含所述核心共识网络中的区块链,所述核心共识网络中的业务流处理器与所述共识节点具有关联关系,所述装置包括:
区块获取模块,用于在所述共识节点基于所述关联关系获取到所述业务流处理器发送的数据读取请求时,根据所述数据读取请求,将所述共识节点中具有最大区块高度的待校验区块返回至所述业务流处理器,以使所述业务流处理器对所述校验区块进行区块校验,得到区块校验结果;当所述区块校验结果指示校验成功时,所述业务流处理器用于将与所述待校验区块相关联的业务数据以数据流的方式发送至所述业务流处理器中的流处理队列,且对所述流处理队列中的业务数据流进行流失处理,得到所述业务数据对应的流失处理结果;所述业务流处理器用于对所述流失处理结果进行业务逻辑分析,得到所述业务数据对应的逻辑分析结果,所述逻辑分析结果用于指示所述业务流处理器向所述共识节点进行业务反馈;
反馈获取模块,用于获取由所述业务流处理器所返回的反馈业务交易;所述反馈业务交易是由所述业务流处理器基于所述逻辑分析结果所生成的;
状态变更模块,用于对所述反馈业务交易进行交易验证,当所述反馈业务交易验证成功时,基于所述反馈业务交易对所述共识节点上部署的与反馈业务相关联的业务合约的合约状态进行更改。
16.一种计算机设备,其特征在于,包括:处理器和存储器;
所述处理器与所述存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使所述计算机设备执行权利要求1-13任一项所述的方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,该计算机程序适于由处理器加载并执行,以使具有所述处理器的计算机设备执行权利要求1-13任一项所述的方法。
18.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中,该计算机指令适于由处理器读取并执行,以使具有所述处理器的计算机设备执行权利要求1-13任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211246555.5A CN117909406A (zh) | 2022-10-12 | 2022-10-12 | 基于分层区块链的数据处理方法、装置以及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211246555.5A CN117909406A (zh) | 2022-10-12 | 2022-10-12 | 基于分层区块链的数据处理方法、装置以及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117909406A true CN117909406A (zh) | 2024-04-19 |
Family
ID=90682534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211246555.5A Pending CN117909406A (zh) | 2022-10-12 | 2022-10-12 | 基于分层区块链的数据处理方法、装置以及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117909406A (zh) |
-
2022
- 2022-10-12 CN CN202211246555.5A patent/CN117909406A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11055136B2 (en) | Prioritization in a permissioned blockchain | |
CN113711536B (zh) | 从区块链网络中提取数据 | |
AU2019302940B2 (en) | Implementing a blockchain-based web service | |
Yang et al. | Smart-toy-edge-computing-oriented data exchange based on blockchain | |
CN111598566A (zh) | 基于混合跨链的网络支付系统 | |
CN113347164B (zh) | 基于区块链的分布式共识系统及方法、设备、存储介质 | |
CN115769241A (zh) | 针对经许可的区块链的隐私保护架构 | |
US20230370285A1 (en) | Block-chain-based data processing method, computer device, computer-readable storage medium | |
CN113037824B (zh) | 一种面向云计算的高性能区块链的构建方法 | |
US11550796B2 (en) | Coexistence mediator for facilitating blockchain transactions | |
CN114610504A (zh) | 消息处理方法、装置、电子设备及存储介质 | |
WO2023005500A1 (zh) | 跨链交易处理方法、装置、电子设备以及存储介质 | |
CN117909406A (zh) | 基于分层区块链的数据处理方法、装置以及可读存储介质 | |
US11640392B2 (en) | Blockchain endorsement agreement | |
Xu et al. | A review of the technology and application of deposit and traceability based on blockchain | |
CN116708463B (zh) | 基于多区块链的信息处理方法、装置、设备以及介质 | |
Fang et al. | A blockchain consensus mechanism for marine data management system | |
CN115701078B (zh) | 跨链交易处理方法、装置、电子设备以及存储介质 | |
Li et al. | Research and implementation of blockchain warehouse receipt trading platform based on BFT | |
WO2024093593A1 (zh) | 基于多区块链的数据处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品 | |
CN115618429B (zh) | 一种基于平行区块链的产品全生命周期管理系统 | |
CN116760632B (zh) | 数据处理方法、装置、设备及可读存储介质 | |
EP4375850A1 (en) | Multi-blockchain data processing method and apparatus, and device, system and medium | |
CN116862679B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
US20220182443A1 (en) | Minimizing the impact of malfunctioning peers on blockchain |
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 |