区块有效性的验证方法及装置制造方法及图纸

技术编号:26178145 阅读:25 留言:0更新日期:2020-10-31 14:26
一种区块有效性的验证方法及装置,该方法包括:在第N+1轮共识过程中,依次对当前待生成区块B

Verification method and device of block validity

【技术实现步骤摘要】
区块有效性的验证方法及装置
本专利技术涉及区块链领域,具体而言,涉及一种区块有效性的验证方法及装置。
技术介绍
区块链系统中常见的多签名共识算法为了保持共识算法容错性,通常会设定共识节点门限个数,从而会导致共识节点达到了共识门限个数但收到的签名数据却不一致的问题,进而无法在当前区块中描述当前共识的合法性。例如,选举算法的每个验证节点收到超过一半的节点签名数据就能通过共识提案,节点{A,B,C,D}共识完成时单个节点可能出现{A,B,C}、{B,C,D}、{A,C,D}、{A,B,D}或者{A,B,D}、{B,C,D}、{C,B,D}、{D,B,C}等不同的签名结果集。虽然每个节点都能依据算法出块共识,但不能保证每个节点达到门限时收到的签名数据是一致的,造成无法确认当前区块生成的签名数据,也就暂时无法确定区块的合法性。目前一些算法,如BLS签名聚合算法,虽然能解决上述问题,但计算过程高复杂度,存在效率低和安全性低的问题。
技术实现思路
鉴于此,本专利技术提出了一种区块有效性的验证方法及装置,旨在解决多签名场景下区块合法性和签名统一的问题。第一方面,本专利技术实施例提供了一种区块有效性的验证方法,包括:在第N+1轮共识过程中,获取当前待生成区块Bn+1的共识数据Consensusn+1、所述当前待生成区块Bn+1的前一个区块Bn的共识证明数据Proofn,其中,N为自然数,所述共识数据Consensusn+1包括:区块序号seq、区块哈希值hash、前一区块的哈希值previous_hash、验证节点的哈希值validators_hash;判断所述区块Bn+1的区块序号seq是否加1,同时判断所述区块Bn+1的前一区块的哈希值previous_hash与本地保存的所述区块Bn的哈希值是否一致;若是,则获取所述区块Bn+1的本地保存的验证节点集合ValidatorSet,根据所述区块Bn+1的本地保存的验证节点集合ValidatorSet验证所述验证节点的哈希值validators_hash是否正确;若是,则获取所述区块Bn的本地共识证明数据Proofn’,根据所述区块Bn的本地共识证明数据Proofn’验证所述共识证明数据Proofn是否正确,其中,所述本地共识证明数据Proofn’为第N轮共识过程中保存在本地的Bn的共识证明数据;若是,则所述区块Bn有效。进一步地,所述根据所述区块Bn的本地共识证明数据Proofn’验证所述共识证明数据Proofn是否正确,包括:分别提取所述本地共识证明数据Proofn’中的本地共识验证节点集合Setl和所述共识证明数据Proofn中的已签名的验证节点集合Commitsn;判断所述已签名的验证节点集合Commitsn是否为所述本地共识验证节点集合Setl的子集;若是,则判断所述已签名的验证节点合集Commitsn的个数是否大于或等于共识要求达到的验证节点个数quorumSize;若是,则判断所述共识证明数据Proofn中的value_digest是否与第N轮共识保存在本地的共识结果的哈希值local_previous_hash相等;若是,则校验所述本地共识验证节点集合Setl中的各个节点对所述共识证明数据Proofn中的签名数据是否正确。进一步地,所述根据所述区块Bn+1的本地保存的验证节点集合ValidatorSet验证所述验证节点的哈希值validators_hash是否正确,包括:对所述区块Bn+1的本地保存的验证节点集合ValidatorSet进行序列化操作生成本地验证节点哈希值local_validator_hash;判断所述验证节点的哈希值validators_hash与所述本地验证节点哈希值local_validator_hash是否一致。第二方面,本专利技术实施例还提供了一种区块验证装置,包括:数据获取单元,用于在第N+1轮共识过程中,获取当前待生成区块Bn+1的共识数据Consensusn+1、所述当前待生成区块Bn+1的前一个区块Bn的共识证明数据Proofn,其中,N为自然数,所述共识数据Consensusn+1包括:区块序号seq、区块哈希值hash、前一区块的哈希值previous_hash、验证节点的哈希值validators_hashn;第一判断单元,用于判断所述区块Bn+1的区块序号seq是否加1,同时判断所述区块Bn+1的前一区块的哈希值previous_hash与本地保存的所述区块Bn的哈希值是否一致;第一验证单元,用于当所述第一判断单元判断所述区块序号seq和所述前一区块的哈希值previous_hash正确时,则获取所述区块Bn+1的本地保存的验证节点集合ValidatorSet,根据所述区块Bn+1的本地保存的验证节点集合ValidatorSet验证所述验证节点的哈希值validators_hash是否正确;第二验证单元,用于当所述第一验证单元验证所述验证节点的哈希值validators_hash正确时,则获取所述区块Bn的本地共识证明数据Proofn’,根据所述区块Bn的本地共识证明数据Proofn’验证所述共识证明数据Proofn是否正确,其中,所述本地共识证明数据Proofn’为第N轮共识过程中保存在本地的Bn的共识证明数据,若是,则所述区块Bn有效。进一步地,所述第二验证单元,还用于:分别提取所述本地共识证明数据Proofn’中的本地共识验证节点集合Setl和所述共识证明数据Proofn中的已签名的验证节点集合Commitsn;判断所述已签名的验证节点集合Commitsn是否为所述本地共识验证节点集合Setl的子集;若是,则判断所述已签名的验证节点合集Commitsn的个数是否大于或等于共识要求达到的验证节点个数quorumSize;若是,则判断所述共识证明数据Proofn中的value_digest是否与第N轮共识保存在本地的共识结果的哈希值local_previous_hash相等;若是,则校验所述本地共识验证节点集合Setl中的各个节点对所述共识证明数据Proofn中的签名数据是否正确。进一步地,所述第一验证单元,还用于:对所述区块Bn+1的本地保存的验证节点集合ValidatorSet进行序列化操作生成本地验证节点哈希值local_validator_hash;判断所述验证节点的哈希值validators_hash与所述本地验证节点哈希值local_validator_hash是否一致。第三方面,本专利技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行实现本专利技术各实施例提供的区块有效性的验证方法。本专利技术实施例提供的区块有效性的验证方法及装置,通过每一次共识过程对前一次共识的共识证明数据进行校验,根据前一次共识过程的本地共识证明数据验证本次共识过程中的前一个区块验证节点签名等数据的合法性,即前一个区块的合法性由后一个区块确认。通过本专利技术实施例提供的区块有效性的验证方法及装置,可以将区块校验形成链条穿起来,有效解决了多签名场景下区块合法性和签名统一的问题,并且相本文档来自技高网...

【技术保护点】
1.一种区块有效性的验证方法,其特征在于,所述方法包括:/n在第N+1轮共识过程中,获取当前待生成区块B

【技术特征摘要】
1.一种区块有效性的验证方法,其特征在于,所述方法包括:
在第N+1轮共识过程中,获取当前待生成区块Bn+1的共识数据Consensusn+1、所述当前待生成区块Bn+1的前一个区块Bn的共识证明数据Proofn,其中,N为自然数,所述共识数据Consensusn+1包括:区块序号seq、区块哈希值hash、前一区块的哈希值previous_hash、验证节点的哈希值validators_hash;
判断所述区块Bn+1的区块序号seq是否加1,同时判断所述区块Bn+1的前一区块的哈希值previous_hash与本地保存的所述区块Bn的哈希值是否一致;
若是,则获取所述区块Bn+1的本地保存的验证节点集合ValidatorSet,根据所述区块Bn+1的本地保存的验证节点集合ValidatorSet验证所述验证节点的哈希值validators_hash是否正确;
若是,则获取所述区块Bn的本地共识证明数据Proofn’,根据所述区块Bn的本地共识证明数据Proofn’验证所述共识证明数据Proofn是否正确,其中,所述本地共识证明数据Proofn’为第N轮共识过程中保存在本地的Bn的共识证明数据;
若是,则所述区块Bn有效。


2.根据权利要求1所述的方法,其特征在于,所述根据所述区块Bn的本地共识证明数据Proofn’验证所述共识证明数据Proofn是否正确,包括:
分别提取所述本地共识证明数据Proofn’中的本地共识验证节点集合Setl和所述共识证明数据Proofn中的已签名的验证节点集合Commitsn;
判断所述已签名的验证节点集合Commitsn是否为所述本地共识验证节点集合Setl的子集;
若是,则判断所述已签名的验证节点合集Commitsn的个数是否大于或等于共识要求达到的验证节点个数quorumSize;
若是,则判断所述共识证明数据Proofn中的value_digest是否与第N轮共识保存在本地的共识结果的哈希值local_previous_hash相等;
若是,则校验所述本地共识验证节点集合Setl中的各个节点对所述共识证明数据Proofn中的签名数据是否正确。


3.根据权利要求1或2所述的方法,其特征在于,所述根据所述区块Bn+1的本地保存的验证节点集合ValidatorSet验证所述验证节点的哈希值validators_hash是否正确,包括:
对所述区块Bn+1的本地保存的验证节点集合ValidatorSet进行序列化操作生成本地验证节点哈希值local_validator_hash;
判断所述验证节点的哈希值validators_hash与所述本地验证节点哈希值local_validator_hash是否一致。


4.一种区块验证装置,其特征在于,所述装置包括:
数据获取单元,用于...

【专利技术属性】
技术研发人员:蒋海刘建章商松赵正涌旷凯朱建国
申请(专利权)人:布比北京网络技术有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1