一种农村电子商务数据鉴证方法
技术领域
本发明涉及数据存储技术领域,尤其涉及一种农村电子商务数据鉴证方法。
背景技术
“三农”领域的基础数据信息工作早已有之。其中就有2001年底开始的“农业科技基础数据信息系统”建设,是科技部科技基础性工作专项资助的重点项目。地方政府也在行动,比如2017年重庆市部署构建统一的农业数据资源共享平台,推进农业内部行业系统集成、数据资源汇集,加强大数据关键技术研发,创新大数据管理机制体制。美国已建成农业部及其所属五大信息机构在内的农业信息网(包括国家、州、地区三级)和世界最大的农业计算机网络系统AGNET。但国内外的这些实践都是“有中心”平台,要么是政府部门,要么是某些企业或平台占据着中心位置,各种信息围绕其运行,在使用过程中明显受中心支配和约束,分散的用户缺乏话语权,且交易中信任问题普遍存在。
2008年比特币(Bitcoin)的出现让世界为之一振,区块链思维和区块链技术成为新网络时代的热门前沿。区块链系统具有分布式高冗余存储、时序数据且不可篡改和伪造、去中心化信用、自动执行的智能合约、安全和隐私保护等显著的特点,这使得区块链技术不仅可以成功应用于数字加密货币领域,同时在经济、金融和社会系统中也存在广泛的应用场景。
当前区块链节点接收到客户端向其发送的业务请求时,会将该业务请求存储在自身中。与此同时,该区块链节点还会将业务请求广播给共识网络的其他区块链节点中,其他区块链节点则相应会将接收到的业务请求存储在自身中。在共识校验阶段中,区块链节点先对自身存储的各业务请求中提取一定数量的业务请求,并进行安全性验证;当安全性验证通过后将这些业务请求打包成预处理块广播给整个共识网络中的其他区块链节点。其他区块链节点接收到该预处理块后,先对预处理块中的业务请求进行安全性验证,并在确定业务请求通过安全鉴证后进行共识校验,以决定是否通过共识校验而存储于区块链中。可见,上述过程在共识校验阶段时,区块链节点需要对待共识的各业务请求进行较为繁琐的处理后,才能将业务请求打包成预处理块广播给共识网络中的其他区块链节点。其他区块链节点也需要对该预处理块进行一定处理后,才能对该预处理块中包含的各业务请求进行共识校验。此共识过程耗费时间过长,共识校验效率低,不能满足快速发展的农村电子商务产业在数据管理、应用方面的需求。
发明内容
本发明针对现有技术存在的问题,提出了一种简化共识校验过程,提高共识校验效率的农村电子商务数据鉴证方法。
本发明是通过以下技术方案得以实现的:
一种农村电子商务数据鉴证方法,包括如下步骤:
步骤S01,区块链节点接收客户端发送的业务请求并将其存储在自身临时存储空间内;
步骤S02,对存储于区块链节点的业务请求进行安全性验证,若通过安全性验证则执行步骤S03,否则驳回业务请求,删除临时存储空间内的存储信息;
步骤S03,在满足预设条件时,对存储于区块链节点的业务请求进行预处理,得到预处理块并存储;当业务请求有多个时,所述预处理块包括主预处理块、第一分支预处理块、第二分支预处理块,所述第一分支预处理块与所述第二分支预处理块构成所述主预处理块;
步骤S04,在共识网络进行共识校验时,区块链节点提取预处理块进行共识校验,当共识校验通过时则将业务请求存储于区块链节点的非临时存储空间内,否则拒绝请求写入并删除业务请求;
所述共识校验包括数据全局完整性验证、数据局部完整性验证、综合校验;所述数据局部完整性验证是基于单个区块链节点对第一分支预处理块或第二分支预处理块进行的数据完整性验证;所述数据全局完整性验证是基于单个区块链节点对预处理块的所有数据进行数据完整性验证;所述综合校验是基于所有共识区块链节点的数据局部完整性验证或数据全局完整性验证结果进行的校验;
所述业务请求包括按预设优先级从高到低排列的业务请求队列;所述第一分支预处理块为对业务请求队列前半部分的业务请求进行的预处理,所述第二分支预处理块为对业务请求队列后半部分的业务请求进行的预处理。
作为优选,所述区块链节点包括区块链前端节点和区块链后端节点,所述区块链后端节点存储有指向区块链前端节点的链接;步骤S01具体包括:
步骤S11,区块链前端节点接收客户端发送的业务请求并将其存储于自身的临时存储空间内;
步骤S12,区块链前端节点将业务请求广播给区块链后端节点,区块链后端节点将业务请求存储于自身的临时存储空间内。
作为优选,步骤S02具体包括:
步骤S21,对存储于区块链前端节点的业务进行第一安全性验证,若通过则执行步骤S22,否则驳回业务请求,删除区块链前端节点临时存储空间内的存储信息;
步骤S22,对存储于区块链后端节点的业务进行第二安全性验证,若通过则执行步骤S03,否则驳回业务请求,删除区块链前端节点临时存储空间和区块链后端节点临时存储空间内的存储信息。
作为优选,步骤S03中预处理块的数据结构基于Merkle树构成;所述第一分支预处理块和所述第二分支预处理块为所述主预处理块的两个树分支。
作为优选,步骤S03具体包括:
步骤S31,在满足第一预设条件时,对存储于所述区块链前端节点的优先级排序位于业务请求队列前半部分的请求业务进行预处理,得到第一分支预处理块并存储于所述区块链前端节点;
步骤S32,在满足第二预设条件时,对存储于所述区块链前端节点的优先级排序位于业务请求队列后半部分的请求业务进行预处理,得到第二分支预处理块并存储于所述区块链前端节点;
步骤S33,结合第一分支预处理块和第二分支预处理块获得总预处理块。
作为优选,步骤S04在共识网络进行共识校验时,区块链后端节点提取区块链前端节点的预处理块进行共识校验:先对第一分支预处理块进行数据局部完整性验证,再对第二分支预处理块进行数据局部完整性验证,接着对主预处理块进行数据全局完整性验证,最后对所有共识区块链后端节点的数据全局完整性验证结果进行综合校验。
作为优选,所述业务请求还包括依照访问权限由低到高排列的访问权限列表;
步骤S03在步骤S32执行前还包括访问权限判断步骤,若访问权限为访问权限列表的公众访问权限等级时,在执行步骤S31后直接执行步骤S04,区块链后端节点提取区块链前端节点的第一分支预处理块进行共识校验:先对单个区块链后端节点进行数据局部完整性验证,再对所有共识区块链后端节点的数据局部完整性验证结果进行综合校验;若访问权限为访问权限列表的非公众访问权限等级时,在执行步骤S31后依次执行步骤S32、S33。
作为优选,所述步骤S32执行后直接执行步骤S04,步骤S04在共识网络进行共识校验时,区块链后端节点提取区块链前端节点的预处理块进行共识校验:先对第一分支预处理块进行数据局部完整性验证,再对第二分支预处理块进行数据局部完整性验证,接着对所有共识区块链后端节点的第一分支预处理块的数据局部完整性验证结果进行综合校验,最后对所有共识区块链后端节点的第二分支预处理块的数据局部完整性验证结果进行综合校验。
作为优选,步骤S04还包括判断第一分支预处理块的数据局部完整性验证结果的综合校验通过率与第二分支预处理块的数据局部完整性验证结果的综合校验通过率是否相等,若相等则共识校验通过并将业务请求存储于区块链节点的非临时存储空间内,否则拒绝请求写入并删除业务请求。
作为优选,所述业务请求队列包括电商执照验证请求、许可证验证请求、电商运营资产验证请求、资质验证请求、银行流水凭证查阅请求、交易记录查阅请求,且将上述请求按预设优先级从高到低排列
本发明具有以下有益效果:
本发明一种农村电子商务数据鉴证方法,将业务请求临时存储到各个共识节点后进行安全性验证,且在共识校验前进行安全性验证和预处理块的获得,之后在共识校验时提取预处理块进行共识校验,且共识校验根据需要进行数据局部完整性和数据全局完整性验证,并相应进行综合校验,以加快数据共识校验速率,满足不同访问权限用户对农村电子商务数据鉴证需求
附图说明
图1为本发明一种农村电子商务数据鉴证方法的总流程框图;
图2为图1中步骤S01的子流程框图;
图3为图1中步骤S02的子流程框图;
图4为图1中步骤S03的子流程框图。
具体实施方式
以下是本发明的具体实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施例。
在现有技术中,区块链节点对各业务请求进行共识校验时,需要先对区块链节点进行安全性验证以及预处理块生成,之后对区块链节点进行完整性验证,接着整个共识网络中的区块链节点进行综合校验。并且,在进行完整性验证时,需要对所有请求进行哈希值验证并验证预处理块的总的唯一哈希值。可见此过程较为复杂,共识校验过程耗费时间过长,导致区块链业务处理效率低下。而目前农村电子商务发展迅速,数据繁杂、多,若在进行共识校验花费时间过长,影响农村电子商务业务效率。
在进行农村电子商务数据鉴证时,因农村电子商务交易涉及的业务请求一般包含电商执照验证请求、许可证验证请求、电商运营资产验证请求、资质验证请求、银行流水凭证查阅请求、交易记录查阅请求。其中,电商执照验证请求、许可证验证请求、电商运营资产验证请求是进行交易合法性、有效性验证的基本请求,若上述请求鉴证通过,即可满足大部分方的需求。涉及更全面、更深入的请求,如审计方需要对电商方进行资质验证请求、银行流水凭证查阅请求、交易记录查阅请求,对电商方的各笔交易进行财政及合理性核实,需要对上述所有请求进行数据鉴证,所有请求均通过鉴证方能满足需求。
为此,根据不同需求以及缩短共识校验时间,本发明提出一种农村电子商务数据鉴证方法,该方法通过将安全性验证和预处理块生成提前在共识校验前进行,并在共识校验时根据请求优先级等级来进行数据局部完整性或数据全局完整性校验,进而进行基于数据局部完整性或基于数据全局完整性的结果进行综合校验。
如图1,本发明一种农村电子商务数据鉴证方法包括如下步骤:
步骤S01,区块链节点接收客户端发送的业务请求并将其存储在自身临时存储空间内。
在实际应用中,共识网络中包含有多个区块链节点。所述区块链节点包括区块链前端节点和区块链后端节点,所述区块链后端节点存储有指向所述区块链前端节点的链接。可以理解,区块链前端节点为将业务请求广播给区块链后端节点的发送端,区块链后端节点为接收区块链前点节点发送来的业务请求的接送端。而共识网络中的各个区块链节点均可以做发送端或接送端。
具体地,所述步骤S01包括:
步骤S11,区块链前端节点接收客户端发送的业务请求并将其存储于自身的临时存储空间内;
步骤S12,区块链前端节点将业务请求广播给区块链后端节点,区块链后端节点将业务请求存储于自身的临时存储空间内。
用户在业务处理过程中,通过手机、手持pad等终端中安装的app客户端向区块链前端节点(此处为共识网络中直接接收客户端发送来的区块链前端节点)发送业务请求,该区块链前端节点将接收到的客户端业务请求通过广播方式发送给区块链后端节点。之后,若区块链后端节点仍存在具有指向其的链接的其他区块链节点,则此时区块链后端节点相对于广播业务请求给下一个区块链节点而言,是作为发送端,而下一个区块链节点作为接送端。则步骤S12还可进一步理解成,区块链前端节点将业务请求广播给第一个区块链后端节点,如有后续其他节点,依次根据链接关系由前一个区块链节点广播给后一个区块链节点。
现有业务请求发送到区块链节点时,无论是区块链前端节点还是区块链的后端节点,都会在节点处进行安全性验证,且安全性验证在共识阶段进行。安全性验证为对各业务请求进行诸如非对称签名合法验证之类的安全性验证。在共识阶段进行安全性验证,影响共识阶段校验效率,并且每次进行校验都会占用区块链节点的数据运转资源。而本发明是将安全性验证提前到共识校验前且在安全校验前先将业务请求存储在各区块链节点,且将业务请求存储在临时存储空间内,既不占用区块链节点的主要数据资源,为后续安全性验证速率加快做了准备,也不破坏区块链节点内数据安全性和私密性。
步骤S02,对存储于区块链节点的业务请求进行安全性验证,若通过安全性验证则执行步骤S03,否则驳回业务请求,删除临时存储空间内的存储信息。
所述步骤S02具体包括:
步骤S21,对存储于区块链前端节点的业务请求进行第一安全性验证,若通过则执行步骤S22,否则驳回业务请求,删除区块链前端节点临时存储空间内的存储信息;
步骤S22,对存储于区块链后端节点的业务请求进行第二安全性验证,若通过则执行步骤S03,否则驳回业务请求,删除区块链前端节点临时存储空间和区块链后端节点临时存储空间内的存储信息。
安全性验证可以通过诸如RSA加密算法等非对称加密算法来实现。例如,客户端向区块链节点发送业务请求,客户端通过自己所持有的私钥对该业务请求进行加密,区块链节点通过自己持有的公钥对业务请求解析,并对解析内容验证。其中公钥可以事先从客户端获得或在客户端发送请求时一同发送而来。
第一安全性验证为进行第二安全性验证的前提。第一安全性验证,用以验证从客户端发送来的业务请求是否安全,通过验证方能将客户端发送来的业务请求继续存储于区块链前端节点的临时存储空间。考虑到后续要进行共识校验,业务请求仅是做了安全性验证,若第一安全性验证通过就存储入非临时存储空间内,占用区块链节点的存储资源,可能破坏区块链节点数据存储的安全性。
当第一安全性验证通过时,区块链接后端节点进行第二安全性验证。现有技术中的安全性验证,是客户端将业务请求发送到区块链前端节点进行第一安全性验证,在第一安全性验证通过后将业务请求存储于区块链前端节点,之后区块链前端节点将业务请求以广播方式发送给区块链后端节点,继而区块链后端节点接收到发送的业务请求进行第二安全性验证,在第二安全性验证通过后将业务请求存储于区块链前端节点。现有技术是在第一安全性验证通过后进行当前区块链节点存储步骤,继而广播进行第二安全性验证,在第二安全性验证通过后进行当前区块链节点存储步骤,这样在进行安全性验证时需要进行验证-存储-再验证-存储的多组交替数据处理步骤,数据处理较为麻烦,而本发明统一将业务请求发送存储于各个区块链节点后,再进行各区块链节点的安全验证,对验证不通过的进行删除操作。相比于现有技术而言,本发明节省了数据多种不同处理切换过程的资源损耗,且删除操作比存储操作更便捷;并且本发明的安全性验证过程在临时存储空间内进行,确保了区块链节点内数据存储的安全性。
步骤S03,在满足预设条件时,对存储于区块链节点的业务请求进行预处理,得到预处理块并存储。
当业务请求有多个时,所述预处理块包括主预处理块、第一分支预处理块、第二分支预处理块,所述第一分支预处理块与所述第二分支预处理块构成所述主预处理块。步骤S03中预处理块的数据结构基于Merkle树构成,所述第一分支预处理块和所述第二分支预处理块为所述主预处理块的两个树分支。所述预处理块具有各自特征值以及一个唯一的根特征值,由哈希算法获得。所述第一分支预处理块的根特征值与所述第二分支预处理块的根特征值共同得到所述主预处理块的根特征值。所述第一分支预处理块的各自特征值和所述第二分支预处理块的各自特征值为所述主预处理块的各自特征值。
所述预设条件可以设置为当前时刻到达下一个提取业务请求的设定时间周期,或者业务存储器中的业务请求到达设定的存储时间,或者其他条件。当满足上述预设条件后,对业务请求进行预处理,得到预处理块并存储。上述预处理块的获得在临时存储空间内进行,也可存储在临时存储空间内,以便进行后续的数据完整性验证。
以往进行预处理时,是对选定一个业务的所有业务请求进行提取并生成预处理块,也就是不论是一个请求还是多个请求,只形成主预处理块,即确定出预处理块的各自特征值以及一个唯一的根特征值,此时数据相当多,预处理过程花费一定时间。实际上,我们在进行农村电商业务处理时发现,业务请求有几种,且无需在任何情况下把所有业务请求都进行预处理。如,业务方仅需了解交易方的合法性来确定是否和交易方进行合作,则仅对同一业务下的部分业务请求进行预处理。而如何确定哪些业务请求可以做这部分处理,我们通过设置业务请求队列,以优先级排列业务请求的方式进行划分。并且考虑到每个树杈都有一个唯一的根,若将树杈分为两支,其每个支树杈都有一个唯一的分根。为了更快地进行数据鉴证,以满足不同需求,对预处理块进行分块处理,并进行数据局部完整性验证或数据全局完整性验证。为此,所述业务请求队列按预设优先级从高到低排列,如用于农村电商业务的业务请求队列一般为电商执照验证请求、许可证验证请求、电商运营资产验证请求、资质验证请求、银行流水凭证查阅请求、交易记录查阅请求。所述第一分支预处理块为对业务请求队列前半部分的业务请求进行的预处理,所述第二分支预处理块为对业务请求队列后半部分的业务请求进行的预处理。上述业务请求队列可预先从终端获得,或者通过业务请求一同发送到各个区块链节点。
步骤S03具体包括:
步骤S31,在满足第一预设条件时,对存储于所述区块链前端节点的优先级排序位于业务请求队列前半部分的请求业务进行预处理,得到第一分支预处理块并存储于所述区块链前端节点;
步骤S32,在满足第二预设条件时,对存储于所述区块链前端节点的优先级排序位于业务请求队列后半部分的请求业务进行预处理,得到第二分支预处理块并存储于所述区块链前端节点;
步骤S33,结合第一分支预处理块和第二分支预处理块获得总预处理块。
所述第一预设条件和所述第二预设条件都可以以存储时序为条件设置。对于优先级较高的前半部分业务请求,在确定出各业务请求唯一对应的根特征值,如根哈希值后,如Merkle树的一分支的根哈希值,可将此分支根哈希值与各业务请求对应的各业务请求标识,如交易流水号,打包成第一分支预处理块。对于优先级较低的后半部分业务请求,在确定出各业务请求唯一对应的根特征值,如Merkle树的另一分支的根哈希值,可将此分支根哈希值与各业务请求对应的各业务请求标识,如交易流水号,打包成第二分支预处理块。最终,总预处理块根据生成的第一分支预处理块和第二分支预处理块获得。所述第二预设条件还可在存储时序为条件的基础上,设定需求条件,即对于一般的交易方合法性验证需求仅执行步骤S31,以在共识校验时进行数据局部完整性校验;对于如交易方查询具体交易记录的更机密性需求时需要在执行步骤S31后继续执行步骤S32、S33,以在共识校验时进行数据全局完整性校验,这样可以依次生成第一分支预处理块、第二分支预处理块、总预处理块。
上述的需求条件还可以访问权限条件为基准设置,因为不同访问权限对于访问数据的机密程度不同。具体地,访问权限列表可预先从客户端获得或由业务请求发送时一并发送到各区块链节点。步骤S03在步骤S32执行前还包括访问权限判断步骤,若访问权限为访问权限列表的公众访问权限等级时,在执行步骤S31后直接执行步骤S04,区块链后端节点提取区块链前端节点的第一分支预处理块进行共识校验:先对单个区块链后端节点进行数据局部完整性验证,再对所有共识区块链后端节点的数据局部完整性验证结果进行综合校验;若访问权限为访问权限列表的非公众访问权限等级时,在执行步骤S31后依次执行步骤S32、S33。
这样本发明在进行预处理时做出了需求选择和效率提高,加快了数据鉴证效率。
步骤S04,在共识网络进行共识校验时,区块链节点提取预处理块进行共识校验,当共识校验通过时则将业务请求存储于区块链节点的非临时存储空间内,否则拒绝请求写入并删除业务请求。
所述共识校验包括数据全局完整性验证、数据局部完整性验证、综合校验;所述数据局部完整性验证是基于单个区块链节点对第一分支预处理块或第二分支预处理块进行的数据完整性验证。所述数据全局完整性验证是基于单个区块链节点对预处理块的所有数据进行数据完整性验证。所述综合校验是基于所有共识区块链节点的数据局部完整性验证或数据全局完整性验证结果进行的校验。
该步骤直接利用在共识校验前以获得的预处理块进行数据完整性验证和综合校验的共识校验过程,大大缩短了共识校验的耗时,提高了共识校验效率。
若访问权限高或数据鉴证需求深入,步骤S04在共识网络进行共识校验时,区块链后端节点提取区块链前端节点的预处理块进行共识校验:先对第一分支预处理块进行数据局部完整性验证,再对第二分支预处理块进行数据局部完整性验证,接着对主预处理块进行数据全局完整性验证,最后对所有共识区块链后端节点的数据全局完整性验证结果进行综合校验。这样分两个分支预处理块可确保预处理块生成的准确度和可靠性更高。
为了进一步提高数据完整性校验速率,所述步骤S32执行后直接执行步骤S04,步骤S04在共识网络进行共识校验时,区块链后端节点提取区块链前端节点的预处理块进行共识校验:先对第一分支预处理块进行数据局部完整性验证,再对第二分支预处理块进行数据局部完整性验证,接着对所有共识区块链后端节点的第一分支预处理块的数据局部完整性验证结果进行综合校验,最后对所有共识区块链后端节点的第二分支预处理块的数据局部完整性验证结果进行综合校验。因为树形结构下,对于二分树而言,两个分支的根节点值为一确定,则必然能唯一确定树的根节点,为此省略总预处理块的生成和数据全局完整性验证过程。
区块链后端节点对上述预处理块进行哈希完整性验证,并分别得到各自针对该预处理块的校验结果,随后,区块链后端节点将校验结果以广播方式发送给后续的区块链节点,即为相对此作为发送端的区块链后端节点而言的接送端的区块链后端节点,也是共识网络中的其他区块链节点。而共识网络中的各区块链节点接收到相互广播的各校验结果后,可通过接收到的各校验结果以及自身的校验结果,得到共识网络中各区块链节点针对该预处理块是否通过校验的综合校验结果,并将得到的综合校验结果再次广播给整个共识网络中的其他区块链节点。共识网络中的各区块链节点接收到相互广播的综合校验结果后,可进一步判断整个共识网络中,各区块链节点得出的各综合校验结果大部分是否均为校验通过,若是,则将该预处理块包含的各业务请求标识所对应的业务请求写入到区块链节点的非临时存储空间内,否则拒绝请求写入并删除业务请求。
对于省略主预处理块生成和数据全局完整性验证过程的情况,综合校验时,步骤S04还包括对第一分支预处理块的数据局部完整性验证结果的综合校验通过率与第二分支预处理块的数据局部完整性验证结果的综合校验通过率的判断,判断两者是否相等,若相等则共识校验通过并将业务请求存储于区块链节点的非临时存储空间内,否则拒绝请求写入并删除业务请求。
本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明。本发明的目的已经完整有效地实现。本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。