掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及区块链技术领域,尤其涉及一种交易区块校验方法、装置、设备及存储介质。

背景技术

在HyperLedger Fabric1.0版本的流程中,由于提交提案的应用是相互独立的,可能会在某一个时间段内大量提交交易提案,在排序节点对交易并没有执行任何校验,只是单纯地对交易进行排序和打包,为了避免非法交易被写入账本,同时避免交易重放攻击,所有的重担都落在了提交节点上,在提交节点将区块写入账本之前需要立即进行一次全体交易的校验,该操作非常耗费CPU资源,在区块链使用高峰期会降低区块链运行效率,甚至造成区块链网络拥堵,提交节点有可能发生内存溢出,导致程序崩溃。

有的解决方案是将提交节点的服务器性能提升,但这种方法也增加了区块链使用的成本,并且,无论服务器性能如何提升,只要提交节点保持这样的工作状态,在某一个数量级下总是会出现任务堆积的状况,并不能从根本上解决问题。

发明内容

本发明的主要目的是通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

本发明第一方面提供了一种交易区块校验方法,包括:服务端接收客户端的交易请求,服务端根据所述交易请求构建所述交易信息的交易提案,其中,所述交易提案包括交易数据;生成所述交易提案的数字签名,基于所述数字签名对所述交易提案进行签名,并将签名后的所述交易提案发送至对应背书节点;接收所述背书节点返回的背书信息后,向排序节点发送交易请求,其中,所述交易请求包括所述背书结果以及交易提案;所述排序节点计算所述交易区块的哈希值,基于所述排序节点的私钥对所述交易区块的哈希值进行签名,得到目标交易区块;将所述目标交易区块和所述签名发送至提交节点,以通过所述提交节点对所述目标交易区块进行合法性校验,得到校验结果;根据所述校验结果对所述目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。

可选地,在本发明第一方面的第一种实现方式中,在所述服务端接收客户端的交易请求,服务端根据所述交易请求构建所述交易信息的交易提案之后,还包括:所述客户端根据所述交易提案的哈希值和预设背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。

可选地,在本发明第一方面的第二种实现方式中,所述接收所述背书节点返回的背书信息后,向排序节点发送交易请求包括:所述背书节点接收所述交易提案,对所述交易提案进行背书,生成背书信息,并将所述背书信息发送给所述客户端;所述客户端在收到所述背书信息后,将所述背书信息和所述交易提案发送给排序节点;所述排序节点对所述交易数据进行排序,并打包为交易区块。

可选地,在本发明第一方面的第三种实现方式中,所述排序节点对所述交易数据进行排序,并打包为交易区块包括:所述排序节点除第一个交易外,将原有队列根据预设交易成功率的大小,按照从大到小的顺序对交易数据进行排列,得到排序新队列;当所述交易数据对应交易达到预设数量时,所述排序节点按预设数量个交易将前若干个交易进行打包,生成交易区块;若所述交易数据对应交易不满所述预设数量个交易,但是已达到设定的最大等待时间,则将所述交易数据对应所有交易进行打包,生成交易区块。

可选地,在本发明第一方面的第四种实现方式中,在所述排序节点计算所述交易区块的哈希值,基于所述排序节点的私钥对所述交易区块的哈希值进行签名,得到目标交易区块之前,还包括:为排序节点生成所述排序节点的公私钥对,其中所述排序节点的公私钥对包括具有对应关系的所述排序节点私钥和所述排序节点公钥。

可选地,在本发明第一方面的第五种实现方式中,所述通过所述提交节点对所述目标交易区块进行合法性校验,得到校验结果包括:所述提交节点计算所述目标交易区块的区块哈希值;基于所述目标交易区块的哈希值,对所述交易区块的区块签名进行合法性校验,判断所述目标交易区块是否合法;对所述区块哈希值进行校验,判断所述目标校验区块是否重复,得到校验结果。

可选地,在本发明第一方面的第六种实现方式中,在所述根据所述校验结果对所述目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本之后,还包括:调用所述交易区块,获取所述交易区块中的所有交易的交易数据;对所述交易数据进行合法性校验,并根据校验结果确定所述交易区块中是否存在未通过校验的交易;若所述交易区块中的所有交易均通过所述合法性校验,则将所述交易区块对应的标识更新为第一标识;若所述交易区块中存在未通过所述合法性校验的交易,则将所述交易区块对应的标识更新为第二标识。

本发明第二方面提供了一种交易区块校验装置,包括:构建模块,用于服务端接收客户端的交易请求,服务端根据所述交易请求构建所述交易信息的交易提案,其中,所述交易提案包括交易数据;第一生成模块,用于生成所述交易提案的数字签名,基于所述数字签名对所述交易提案进行签名,并将签名后的所述交易提案发送至对应背书节点;发送模块,用于接收所述背书节点返回的背书信息后,向排序节点发送交易请求,其中,所述交易请求包括所述背书结果以及交易提案;计算模块,用于所述排序节点计算所述交易区块的哈希值,基于所述排序节点的私钥对所述交易区块的哈希值进行签名,得到目标交易区块;第一校验模块,用于将所述目标交易区块和所述签名发送至提交节点,以通过所述提交节点对所述目标交易区块进行合法性校验,得到校验结果;标识模块,用于根据所述校验结果对所述目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。

可选地,在本发明第二方面的第一种实现方式中,所述交易区块校验装置还包括:确定模块,用于所述客户端根据所述交易提案的哈希值和预设背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。

可选地,在本发明第二方面的第二种实现方式中,所述发送模块包括:背书单元,用于所述背书节点接收所述交易提案,对所述交易提案进行背书,生成背书信息,并将所述背书信息发送给所述客户端;发送单元,用于所述客户端在收到所述背书信息后,将所述背书信息和所述交易提案发送给排序节点;打包单元,用于所述排序节点对所述交易数据进行排序,并打包为交易区块。

可选地,在本发明第二方面的第三种实现方式中,所述打包单元具体用于:所述排序节点除第一个交易外,将原有队列根据预设交易成功率的大小,按照从大到小的顺序对交易数据进行排列,得到排序新队列;当所述交易数据对应交易达到预设数量时,所述排序节点按预设数量个交易将前若干个交易进行打包,生成交易区块;若所述交易数据对应交易不满所述预设数量个交易,但是已达到设定的最大等待时间,则将所述交易数据对应所有交易进行打包,生成交易区块。

可选地,在本发明第二方面的第四种实现方式中,所述交易区块校验装置还包括:第二生成模块,用于为排序节点生成所述排序节点的公私钥对,其中所述排序节点的公私钥对包括具有对应关系的所述排序节点私钥和所述排序节点公钥。

可选地,在本发明第二方面的第五种实现方式中,所述第一校验模块具体用于:所述提交节点计算所述目标交易区块的区块哈希值;基于所述目标交易区块的哈希值,对所述交易区块的区块签名进行合法性校验,判断所述目标交易区块是否合法;对所述区块哈希值进行校验,判断所述目标校验区块是否重复,得到校验结果。

可选地,在本发明第二方面的第六种实现方式中,所述交易区块校验装置还包括:获取模块,用于调用所述交易区块,获取所述交易区块中的所有交易的交易数据;第二校验模块,用于对所述交易数据进行合法性校验,并根据校验结果确定所述交易区块中是否存在未通过校验的交易;标识模块,用于若所述交易区块中的所有交易均通过所述合法性校验,则将所述交易区块对应的标识更新为第一标识;若所述交易区块中存在未通过所述合法性校验的交易,则将所述交易区块对应的标识更新为第二标识。

本发明第三方面提供了一种交易区块校验设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;

所述至少一个处理器调用所述存储器中的所述指令,以使得所述交易区块校验设备执行上述的交易区块校验方法的各个步骤。

本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的交易区块校验方法的各个步骤。

本发明提供的技术方案中,通过构建交易信息的交易提案;生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;返回背书信息后向排序节点发送交易请求;排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行校验,并根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。本方案通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

附图说明

图1为本发明提供的交易区块校验方法的第一个实施例示意图;

图2为本发明提供的交易区块校验方法的第二个实施例示意图;

图3为本发明提供的交易区块校验方法的第三个实施例示意图;

图4为本发明提供的交易区块校验方法的第四个实施例示意图;

图5为本发明提供的交易区块校验方法的第五个实施例示意图;

图6为本发明提供的交易区块校验装置的第一个实施例示意图;

图7为本发明提供的交易区块校验装置的第二个实施例示意图;

图8为本发明提供的交易区块校验设备的一个实施例示意图。

具体实施方式

本发明实施例提供了一种交易区块校验方法、装置、设备及存储介质,本发明的技术方案中,首先通过构建交易信息的交易提案;生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;返回背书信息后向排序节点发送交易请求;排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行校验,并根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。本方案通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中交易区块校验方法的第一个实施例包括:

101、服务端接收客户端的交易请求,服务端根据交易请求构建交易信息的交易提案;

本实施例中,服务端生成对称密钥可以是多组,并且根据不同交易请求分配给授权的一个或多个区块链节点。可选的,交易信息为多个,并且对应生成不同的对称密钥。其中,客户端可以通过客户端将交易请求发送到服务端。从而服务端根据交易请求构建加密交易信息的交易提案,并且生成交易提案的数字签名。

102、生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;

本实施例中,客户端可以通过客户端将交易请求发送到服务端。从而服务端根据交易请求构建加密交易信息的交易提案,并且生成交易提案的数字签名。

具体地,将交易提案发送到所有区块链节点,从而供所有区块链节点根据交易提案和数字签名追溯交易过程。其中,交易请求可以是购买、出售、维修或者审核。并且各个交易请求对应的不同授权节点可以通过交易信息进行分配。利用所有区块链节点验证交易提案有效后,当验证通过时授权节点对交易提案进行解密后获得交易信息,并且将交易信息作为智能合约的输入值,从而利用智能合约保存针对同一交易主体的多个交易请求及处理过程。

本实施例中,背书节点收到客户端的提案后,首先验证签名,确保提案的合法性。然后模拟提案交易,生成交易的执行结果rw_set并对其签名,最后生成响应信息responsesig发回给客户端。sig表示背书节点对响应信息的签名。

值得注意的是,背书节点模拟提案交易是生成一个基于当前账本状态的读写集来表示交易的执行结果,并不会改变目前的账本状态。

103、接收背书节点返回的背书信息后,向排序节点发送交易请求,其中,交易请求包括背书结果以及交易提案;

本实施例中,区块链网络包括多个区块链节点,各个节点可以是区块链网络中各个客户端,可以为手机、个人计算机、平板电脑、车载单元、服务器等电子设备,也可是应用程序。每个节点在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。

104、排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;

本实施例中,各预设的业务系统根据各自需求(也就是,应用报表生成请求)从消息队列中获取相关业务指标(也就是,预设的业务指标),形成实时物流数据表,实时物流数据表用于指示按照相关业务指标实现物流数据的实时分析监控。应用报表生成请求为终端根据实际业务需求设置并发送的访问请求。

具体的,服务器接收应用报表生成请求,对应用报表生成请求进行参数解析,得到已解析参数,服务器对已解析参数进行校验,得到校验结果,当校验结果为校验通过时,服务器从已解析参数中读取多个业务指标和多个物流数据统计字段,并通过多个业务指标匹配预设的数据库,得到各业务指标对应的目标业务场景;服务器基于各业务指标对应的目标业务场景从预设的业务场景维度关系表中查询与各业务指标相对应的目标业务维度;服务器按照目标业务维度从各业务场景对应的明细数据表中提取目标维度物流数据;服务器通过预设的聚合函数Doris对多个业务指标和目标维度物流数据进行聚合处理,得到指标扁平化的数据宽表,服务器基于多个物流数据统计字段对指标扁平化的数据宽表进行数据分析和统计处理,得到物流数据统计结果;服务器按照物流数据统计结果生成实时物流数据表,并将实时物流数据表存储至预设的文件目录中。各预设的业务系统具有各自对应的文件目录。

进一步地,服务器还可以采用离线作业实现聚合处理(例如,3-5分钟的离线跑批处理),避免实时应用实时物流数据表和明细数据表同步更新,由于时间差异导致实时物流数据表不一致的情况。

105、将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行合法性校验,得到校验结果;

本实施例中,将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行合法性校验,得到校验结果。

具体的,当区块链节点系统中的任一区块链节点接收到交易发起方发送的交易请求时,通过获取交易请求中携带的交易数据,可立即将该交易数据在区块链节点系统中进行广播以使区块链节点系统中的各区块链节点对交易数据进行校验或验证。可选的,当区块链节点系统中的任一区块链节点接收到交易发起方发送的交易请求并获取到该交易请求中携带的交易数据后,该节点还可以先对交易数据进行验证并在验证通过后,再将该交易数据在区块链节点系统中进行广播以使区块链节点系统中的其他区块链节点对交易数据进行校验。

106、根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。

本实施例中,根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。计算区块哈希,校验区块签名,确认区块是否合法;校验区块哈希,判断区块是否重复。校验通过后,在状态数据库中给区块打上标识,将区块数据写入本地区块链账本中。

交易被调用时,如果被调用的交易所在区块的标识为,对区块中的每一个交易进行校验:检查交易签名合法性、是否重复;检查是否满足背书策略;检查读写集的版本是否和本地状态数据库的相同;在状态数据库中标注交易的有效性;把有效交易的写集合更新到状态数据库中;如果被调用的交易所在区块的标识为,并且被调用的交易的标识为,向前寻找与当前状态匹配的交易。

本发明实施例中,通过构建交易信息的交易提案;生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;返回背书信息后向排序节点发送交易请求;排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行校验,并根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。本方案通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

请参阅图2,本发明实施例中交易区块校验方法的第二个实施例包括:

201、服务端接收客户端的交易请求,服务端根据交易请求构建交易信息的交易提案;

202、客户端根据交易提案的哈希值和预设背书节点列表中的节点的数量,从背书节点列表中确定出背书节点;

本实施例中,该客户端为产生交易提案的客户端,例如联盟内的机构间相互查询所需的信息,此时查询方用私钥对查询信息签名,被查询方收到查询信息后将查询信息上链,此时被查询方的客户端即为客户端。该交易提案可以包括交易数据,例如交易数据req,可以包含交易调用的链码函数及其参数。

客户端生成交易提案后就可以使用自身的私钥对该交易提案进行签名,例如交易提案proposalsig,其中,sig表示客户端对交易提案的签名。

具体地,当背书节点为多个时,客户端从背书节点列表中确定出预设比例数量的背书节点。该预设比例数量可以依据经验设置。例如,可以随机选取背书节点列表中节点数量的十分之一的背书节点。。

203、生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;

204、接收背书节点返回的背书信息后,向排序节点发送交易请求,其中,交易请求包括背书结果以及交易提案;

205、为排序节点生成排序节点的公私钥对,其中排序节点的公私钥对包括具有对应关系的排序节点私钥和排序节点公钥;

本实施例中,为了实现上述所说的两次签名加密过程,BaaS平台可以提供客户端对交易信息签名、排序节点校验证书管理(包括校验证书的上传、下载、删除)等功能。

可选地,在本实施例中,排序节点生成自己的公私钥对,即排序节点私钥和排序节点公钥。排序节点私钥由排序节点自己保管,排序节点公钥用于向BaaS平台获取排序节点校验证书。

可选地,在本实施例中,排序节点校验证书用于对使用排序节点私钥进行签名得到的签名信息进行签名验证。排序节点校验证书可以但不限于包括数字证书。

可选地,在本实施例中,数字证书(Digital Certificate)又称为公钥证书,是网络通信双方用于身份认证及安全通信的保障。数字证书实际上是一份电子文件,包含了拥有者的身份和公钥信息,以及证书认证机构对这份文件的签名。

206、排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;

207、将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行合法性校验,得到校验结果;

208、根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。

本实施例中步骤201、203-204、206-208与第一实施例中的步骤101-106类似,此处不再赘述。

本发明实施例中,通过构建交易信息的交易提案;生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;返回背书信息后向排序节点发送交易请求;排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行校验,并根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。本方案通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

请参阅图3,本发明实施例中交易区块校验方法的第三个实施例包括:

301、服务端接收客户端的交易请求,服务端根据交易请求构建交易信息的交易提案,其中,交易提案包括交易数据;

302、生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;

303、背书节点接收交易提案,对交易提案进行背书,生成背书信息,并将背书信息发送给客户端;

本实施例中,背书节点在收到交易提案后会根据背书策略进行一些验证,包括:交易提案携带的数字证书是否是由受信任的认证中心签发;交易提案的数字签名是否有效;交易提案的格式是否正确;交易提案是否重复提交过;用户节点在请求执行智能合约调用的通道中是否已被授权有写权限。并且,背书节点验证交易提案成功时,背书节点会对自身所维护的账本的状态数据库中模拟执行交易,即执行交易提案中包括的智能合约调用以得到交易结果。背书节点对交易结果进行签名(即背书),将数字签名结合背书节点的数字证书、以及其他的相关信息构造成为提案响应(Proposal Response),即本申请中提到的背书信息。

背书节点对该交易进行背书后,将背书信息发送给所述用户节点,以使用户节点检验交易提案。

304、客户端在收到背书信息后,将背书信息和交易提案发送给排序节点;

本实施例中,所述用户节点在收到所述背书信息后,对交易提案进行检验,将所述背书信息和所述交易提案一并发送给排序节点。具体来讲,用户节点对所述交易提案的检验通过后,向所述排序节点广播交易。

305、排序节点除第一个交易外,将原有队列根据预设交易成功率的大小,按照从大到小的顺序对交易数据进行排列,得到排序新队列;

本实施例中,所述排序节点,用于对接收到的交易按照通信成功率进行排序并打包成区块。

具体地,区块链网络中的排序节点用于提供排序服务,在交易处理的过程中,排序节点接收其他节点发送的交易,根据时间对交易进行排序,在区块链上添加新的业务数据。在一些实施例中,排序节点为了确定接收的各交易的时间,排序节点调用时间戳服务,例如调用第三方的时间戳服务,时间戳服务利用国家授时中心或其他可信的时间源,生成与各交易一一对应的交易时间戳。

306、当交易数据对应交易达到预设数量时,排序节点按预设数量个交易将前若干个交易进行打包,生成交易区块;

本实施例中,排序节点不再是根据时间戳进行交易排序,而是根据接收到的用户节点发送的通信成功率的大小进行排序。具体实施时,排序节点在接收到交易后,除第一个交易P0外,将原有队列P=P0,P1,P2…Pn根据动态抄表通信成功率的大小,按照从大到小的顺序对交易进行排列,获得排序新队列为Q=P0,Q1,Q2,Q3…Qn。

307、若交易数据对应交易不满预设数量个交易,但是已达到设定的最大等待时间,则将交易数据对应所有交易进行打包,生成交易区块;

本实施例中,排序节点将排序后的多个所述交易构造为新区块,并将所述新区块广播至所述区块链网络中的记账节点。例如,排序节点根据排序后的多个交易进行区块填充,直到区块的容量达到设定容量或者时间达到设定等待时间,将得到的区块确定为新区块。在一些实施例中,当交易达到1.5*N(N为区块最大交易数)时或者达到设定的最大等待时间时,则排序节点将前N个交易进行打包成新区块并转发给记账节点,如果交易不满N个但是已经达到设定的最大等待时间,则将所有交易进行打包成新区块并转发给记账节点。

具体实现时,排序节点对第一个交易不进行排序,这是为了防止通信成功率过小的节点永远都无法提交交易。

308、排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;

309、将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行合法性校验,得到校验结果;

310、根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。

本实施例中步骤301-302、308-310与第一实施例中的步骤101-102、104-106类似,此处不再赘述。

本发明实施例中,通过构建交易信息的交易提案;生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;返回背书信息后向排序节点发送交易请求;排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行校验,并根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。本方案通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

请参阅图4,本发明实施例中交易区块校验方法的第四个实施例包括:

401、服务端接收客户端的交易请求,服务端根据交易请求构建交易信息的交易提案,其中,交易提案包括交易数据;

402、生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;

403、接收背书节点返回的背书信息后,向排序节点发送交易请求,其中,交易请求包括背书结果以及交易提案;

404、排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;

405、提交节点计算目标交易区块的区块哈希值;

本实施例中,区块链中的哈希值是将任意长度的输入字符串转换为密码并进行固定输出的过程。哈希值不是一个“密码”,不能通过解密哈希来检索原始数据,它是一个单向的加密函数。

在区块链中,每个块都有前一个块的哈希值。当更改当前块中的任何数据时,块的哈希值将被更改,这将影响前一个块,因为它有前一个块的地址。例如如果只有两个块,一个是当前块,一个是父块。当前块将拥有父块的地址,如果需要更改当前块中的数据,还需要更改父块。

406、基于目标交易区块的哈希值,对交易区块的区块签名进行合法性校验,判断目标交易区块是否合法;

本实施例中,具体校验包括:区块的数据结构语法上有效;验证工作量证明,区块头的哈希值小于目标难度(确认包含足够的工作量证明);区块时间戳早于验证时刻未来两个小时(允许时间错误);验证区块大小在长度限制之内,即看区块大小是否在设定范围之内。(BTC是数据区块体不能大于1M,隔离验证区块不能大于3M;BCH是区块不能大于32M;BSV现在是不能大于128M);第一个交易(且只有第一个)是coinbase交易,即一个区块,矿工只能给自己奖励一次;验证区块内的交易并确保它们的有效性:验证MerkleRoot是否是由区块体中的交易得到的,即重构区块Merkle树得到的树根,看是否和区块头中的hashMerkleRoot值相等。

407、对区块哈希值进行校验,判断目标校验区块是否重复,得到校验结果;

本实施例中,对区块哈希值进行校验,判断目标校验区块是否重复,得到校验结果。具体地,客户端接收区块,并对区块进行校验,在实际应用时,可以预先设置标准清单,客户端按照标准清单对区块进行校验。在一个示例中,标准清单可以包括如下标准:用户信息的语法和数据结构必须正确,输入和输出列表都不能为空,客户端对区块内容的语法和数据结构进行校验,输入与输出列表进行校验,此外,标准清单还可以包括哈希值不等于0,如此,客户端还可以对哈希值进行校验。

在该实施例中,客户端针对所述区块的校验通过后,将所述区块录入自身维护的区块链中,后续需要提供数据时,可以从该区块链中获取相应的数据。

408、根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。

本实施例中步骤401-404、408与第一实施例中的步骤101-104、106类似,此处不再赘述。

本发明实施例中,通过构建交易信息的交易提案;生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;返回背书信息后向排序节点发送交易请求;排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行校验,并根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。本方案通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

请参阅图5,本发明实施例中交易区块校验方法的第五个实施例包括:

501、服务端接收客户端的交易请求,服务端根据交易请求构建交易信息的交易提案,其中,交易提案包括交易数据;

502、生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;

503、接收背书节点返回的背书信息后,向排序节点发送交易请求,其中,交易请求包括背书结果以及交易提案;

504、排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;

505、将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行合法性校验,得到校验结果;

506、根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本;

507、调用交易区块,获取交易区块中的所有交易的交易数据;

本实施例中,调用交易区块,获取交易区块中的所有交易的交易数据。其中,交易数据可以是交易发送方(区块链上的交易客户)发送到区块链的需要入链的交易数据,当交易数据入链成功后,交易成功结束,第一背书节点是区块链系统中,用于验证交易数据是否合法的节点,第一背书结果是第一背书节点进行交易数据验证的验证结果。区块链系统中的第一背书节点接收到交易数据后,对交易数据进行第一背书操作,得到对应的第一背书结果。另外,区块链中的背书节点的背书操作,用于验证数据是否合法,比如第一背书节点的背书操作,用于验证接收到的交易数据是否合法。

508、对交易数据进行合法性校验,并根据校验结果确定交易区块中是否存在未通过校验的交易;

本实施例中,当区块链节点系统中的任一区块链节点接收到交易发起方发送的交易请求时,通过获取交易请求中携带的交易数据,可立即将该交易数据在区块链节点系统中进行广播以使区块链节点系统中的各区块链节点对交易数据进行校验或验证。可选的,当区块链节点系统中的任一区块链节点接收到交易发起方发送的交易请求并获取到该交易请求中携带的交易数据后,该节点还可以先对交易数据进行验证并在验证通过后,再将该交易数据在区块链节点系统中进行广播以使区块链节点系统中的其他区块链节点对交易数据进行校验。

509、若交易区块中的所有交易均通过合法性校验,则将交易区块对应的标识更新为第一标识;

本实施例中,对于所有交易校验正确的区块,在状态数据库中将区块标识更新为第一标识;对于校验失败的交易,在状态数据库中将交易标识为第二标识,并将所在区块标识更新为第二标识。

510、若交易区块中存在未通过合法性校验的交易,则将交易区块对应的标识更新为第二标识。

本实施例中,对于所有交易校验正确的区块,在状态数据库中将区块标识更新为第一标识;对于校验失败的交易,在状态数据库中将交易标识为第二标识,并将所在区块标识更新为第二标识。

本实施例中步骤501-506与第一实施例中的101-106类似,此处不再赘述。

在本发明实施例中,通过构建交易信息的交易提案;生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;返回背书信息后向排序节点发送交易请求;排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行校验,并根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。本方案通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

上面对本发明实施例中交易区块校验方法进行了描述,下面对本发明实施例中交易区块校验装置进行描述,请参阅图6,本发明实施例中交易区块校验装置的第一个实施例包括:

构建模块601,用于服务端接收客户端的交易请求,服务端根据所述交易请求构建所述交易信息的交易提案,其中,所述交易提案包括交易数据;

第一生成模块602,用于生成所述交易提案的数字签名,基于所述数字签名对所述交易提案进行签名,并将签名后的所述交易提案发送至对应背书节点;

发送模块603,用于接收所述背书节点返回的背书信息后,向排序节点发送交易请求,其中,所述交易请求包括所述背书结果以及交易提案;

计算模块604,用于所述排序节点计算所述交易区块的哈希值,基于所述排序节点的私钥对所述交易区块的哈希值进行签名,得到目标交易区块;

第一校验模块605,用于将所述目标交易区块和所述签名发送至提交节点,以通过所述提交节点对所述目标交易区块进行合法性校验,得到校验结果;

标识模块606,用于根据所述校验结果对所述目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。

本发明实施例中,通过构建交易信息的交易提案;生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;返回背书信息后向排序节点发送交易请求;排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行校验,并根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。本方案通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

请参阅图7,本发明实施例中交易区块校验装置的第二个实施例,该交易区块校验装置具体包括:

构建模块601,用于服务端接收客户端的交易请求,服务端根据所述交易请求构建所述交易信息的交易提案,其中,所述交易提案包括交易数据;

第一生成模块602,用于生成所述交易提案的数字签名,基于所述数字签名对所述交易提案进行签名,并将签名后的所述交易提案发送至对应背书节点;

发送模块603,用于接收所述背书节点返回的背书信息后,向排序节点发送交易请求,其中,所述交易请求包括所述背书结果以及交易提案;

计算模块604,用于所述排序节点计算所述交易区块的哈希值,基于所述排序节点的私钥对所述交易区块的哈希值进行签名,得到目标交易区块;

第一校验模块605,用于将所述目标交易区块和所述签名发送至提交节点,以通过所述提交节点对所述目标交易区块进行合法性校验,得到校验结果;

标识模块606,用于根据所述校验结果对所述目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。

本实施例中,交易区块校验装置还包括:

确定模块607,用于所述客户端根据所述交易提案的哈希值和预设背书节点列表中的节点的数量,从所述背书节点列表中确定出背书节点。

本实施例中,所述发送模块603包括:

背书单元6031,用于所述背书节点接收所述交易提案,对所述交易提案进行背书,生成背书信息,并将所述背书信息发送给所述客户端;

发送单元6032,用于所述客户端在收到所述背书信息后,将所述背书信息和所述交易提案发送给排序节点;

打包单元6033,用于所述排序节点对所述交易数据进行排序,并打包为交易区块。

本实施例中,所述打包单元6033具体用于:

所述排序节点除第一个交易外,将原有队列根据预设交易成功率的大小,按照从大到小的顺序对交易数据进行排列,得到排序新队列;

当所述交易数据对应交易达到预设数量时,所述排序节点按预设数量个交易将前若干个交易进行打包,生成交易区块;

若所述交易数据对应交易不满所述预设数量个交易,但是已达到设定的最大等待时间,则将所述交易数据对应所有交易进行打包,生成交易区块。

本实施例中,所述交易区块校验装置还包括:

第二生成模块608,用于为排序节点生成所述排序节点的公私钥对,其中所述排序节点的公私钥对包括具有对应关系的所述排序节点私钥和所述排序节点公钥。

本实施例中,所述第一校验模块605具体用于:

所述提交节点计算所述目标交易区块的区块哈希值;

基于所述目标交易区块的哈希值,对所述交易区块的区块签名进行合法性校验,判断所述目标交易区块是否合法;

对所述区块哈希值进行校验,判断所述目标校验区块是否重复,得到校验结果。

本实施例中,所述交易区块校验装置还包括:

获取模块609,用于调用所述交易区块,获取所述交易区块中的所有交易的交易数据;

第二校验模块610,用于对所述交易数据进行合法性校验,并根据校验结果确定所述交易区块中是否存在未通过校验的交易;

标识模块611,用于若所述交易区块中的所有交易均通过所述合法性校验,则将所述交易区块对应的标识更新为第一标识;若所述交易区块中存在未通过所述合法性校验的交易,则将所述交易区块对应的标识更新为第二标识。

本发明实施例中,通过构建交易信息的交易提案;生成交易提案的数字签名,基于数字签名对交易提案进行签名,并将签名后的交易提案发送至对应背书节点;返回背书信息后向排序节点发送交易请求;排序节点计算交易区块的哈希值,基于排序节点的私钥对交易区块的哈希值进行签名,得到目标交易区块;将目标交易区块和签名发送至提交节点,以通过提交节点对目标交易区块进行校验,并根据校验结果对目标交易区块进行标识,并将标识后的交易区块存储至预设区块链账本。本方案通过信任、闲时校验、被动校验结合的方式提高了区块链的效率,降低了使用成本。

上面图6和图7从模块化功能实体的角度对本发明实施例中的交易区块校验装置进行详细描述,下面从硬件处理的角度对本发明实施例中交易区块校验设备进行详细描述。

图8是本发明实施例提供的一种交易区块校验设备的结构示意图,该交易区块校验设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)810(例如,一个或一个以上处理器)和存储器820,一个或一个以上存储应用程序833或数据832的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器820和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对交易区块校验设备800中的一系列指令操作。更进一步地,处理器810可以设置为与存储介质830通信,在交易区块校验设备800上执行存储介质830中的一系列指令操作,以实现上述各方法实施例提供的交易区块校验方法的步骤。

交易区块校验设备800还可以包括一个或一个以上电源840,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口860,和/或,一个或一个以上操作系统831,例如Windows Serve,Mac OS X,Unix,Linux,FreeBSD等等。本领域技术人员可以理解,图8示出的交易区块校验设备结构并不构成对本申请提供的交易区块校验设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行上述交易区块校验方法的步骤。

所述领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

技术分类

06120114742646