区块链的验证方法及装置与流程

文档序号:11253728阅读:2768来源:国知局
区块链的验证方法及装置与流程

本发明实施例涉及通信技术领域,尤其涉及一种区块链的验证方法及装置。



背景技术:

区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

公有链是指全世界任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。

如果公有链中存在黑客用户,黑客用户很容易获得全网的记账权,影响整个系统的运行,更有甚者,恶意攻击者甚至有能力伪造一个全新的区块链账本,从而导致网络中新加入的节点无法正常交易。



技术实现要素:

本发明实施例提供一种区块链的验证方法及装置,以参与者可以发现黑客用户获得全网的记账权,或者伪造一个全新的区块链账本。

本发明实施例的一个方面是提供一种区块链的验证方法,包括:

网络中的第一节点从创世区块中获取创建公有链的第二节点的公钥;

所述第一节点根据所述公钥,确定所述第一节点所在的区块链中是否包括目标区块,所述目标区块是所述第二节点签名后的区块;

如果所述第一节点所在的区块链中包括目标区块,则所述第一节点确定所述区块链为合法的区块链;

如果所述第一节点所在的区块链中不包括目标区块,则所述第一节点确定所述区块链为非法的区块链。

本发明实施例的另一个方面是提供一种区块链的验证装置,包括:

获取模块,用于从创世区块中获取创建公有链的第二节点的公钥;

确定模块,用于根据所述公钥,确定所述第一节点所在的区块链中是否包括目标区块,所述目标区块是所述第二节点签名后的区块;如果所述第一节点所在的区块链中包括目标区块,则确定所述区块链为合法的区块链;如果所述第一节点所在的区块链中不包括目标区块,则确定所述区块链为非法的区块链。

本发明实施例提供的区块链的验证方法及装置,通过公有链的参与者获取公有链的发起者的公钥,并根据该公钥,确定公有链的参与者所在的区块链中是否包括被发起者签名过的区块,如果参与者所在的区块链中包括被发起者签名过的区块,则确定参与者所在的区块链是合法的,如果参与者所在的区块链中不包括被发起者签名过的区块,则确定参与者所在的区块链是非法的,由于参与者能够对区块进行合法性验证,即使黑客用户获得全网的记账权,或者伪造一个全新的区块链账本,都有可能被参与者发现。

附图说明

图1为本发明实施例提供的区块链的验证方法流程图;

图2为本发明实施例提供的创世区块的结构示意图;

图3为本发明实施例提供的区块链的验证装置的结构图;

图4为本发明另一实施例提供的区块链的验证装置的结构图。

具体实施方式

图1为本发明实施例提供的区块链的验证方法流程图;图2为本发明实施例提供的创世区块的结构示意图。本发明实施例针对现有技术中,黑客用户很容易获得全网的记账权,影响整个系统的运行,更有甚者,恶意攻击者甚至有能力伪造一个全新的区块链账本,从而导致网络中新加入的节点无法正常交易,提供了区块链的验证方法,该方法具体步骤如下:

步骤s101、网络中的第一节点从创世区块中获取创建公有链的第二节点的公钥。

所谓的创世区块,就是比特币世界的第一个区块,新版本的比特币系统将它设定为0号区块,而旧版本的比特币系统设定它的序号为1。在本实施例中,创世区块可以是区块链世界的第一个诞生的区块。

第一节点可以是公有链的参与者,第二节点可以是公有链的发起者,公有链的发起者需要对某些区块进行签名,所有的参与者一旦看到某区块被发起者签名,则认为该区块所在的那条区块链是合法的,不是伪造的。公有链的发起者对某些区块进行签名时,具体可以按照预先约定的算法规则,比如每100个区块签名一个;或者按照难度值对区块进行签名,例如,若某一区块的难度值低于阈值,则对该区块或者该区块的下一个区块进行签名。这样对于伪造整个区块链的恶意用户来说,由于其无法获得发起者的签名,因为,即使对区块进行签名,也会被其他参与者发现,从而被其他参与者丢弃伪造的区块链。

如图2所示,所述创世区块包括:区块头和区块主体;其中,所述区块头包括:块高度,头哈希,父区块哈希值,merkle根,时间戳,难度值和随机数;所述区块主体包括:此区块中的所有交易信息。

创世区块可以是整个区块链中的1号区块,第二节点即公有链的发起者首先申明自己的公钥,也就是说公开自己的公钥。所有的第一节点即公有链的参与者都可以从创世区块中提取该公钥,并根据该公钥对签名的区块进行验证。具体的,第二节点即公有链的发起者生成如图2所示的创世区块,第二节点可以将其公钥放入创世区块的区块头中的父区块哈希值中,也可以将公有链的发起者的公钥通过sha256算法生成一个哈希值,将该哈希值放入创世区块的区块头中的父区块哈希值中。

另外,第二节点即公有链的发起者还可以将本地内存中的交易信息记录到如图2所示的区块主体中,并在区块主体中生成此区块中所有交易信息的merkle树,把merkle树根的值保存在区块头的merkle根中,把当前时间保存到时间戳字段中,将区块头中的难度值设置为预先设定的一个适当的难度值。

此外,所述创世区块的父区块哈希值为所述第二节点的公钥;除所述创世区块之外的区块的父区块哈希值为所述区块的前一个区块的头哈希值。公有链的发起者在创建完创世区块之后,继续创建后续的区块链中的区块。后续创建的区块与创世区块的不同点在于,创世区块的父区块哈希值为公有链的发起者的公钥,后续创建的区块链中的区块的父区块哈希值为该区块的前一个区块的头哈希。

随着区块链中的区块数量的增加,公有链的发起者需要对某些区块进行签名,该签名的目的在于区别本条区块是否是伪造的区块,选择签名的方式可以按照预先约定的算法规则,比如每100个区块签名一个;或者难度值低于某阈值,则对该区块或者该区块的下一个区块进行签名。

第一节点即公有链的参与者可以从图2所示的创世区块的父区块哈希值中获取第二节点即公有链的发起者的公钥。

步骤s102、所述第一节点根据所述公钥,确定所述第一节点所在的区块链中是否包括目标区块,所述目标区块是所述第二节点签名后的区块。

第一节点即公有链的参与者根据从创世区块中获取的公钥,检测自己所在的区块链中是否包括被第二节点签名过的区块,在本实施例中,将第二节点签名过的区块记为目标区块。

可选的,所述第一节点周期性根据所述公钥,确定所述第一节点所在的区块链中是否包括目标区块。例如,第一节点每隔一定时间检测一次自己所在的区块链中是否包括被第二节点签名过的区块。

或者,所述第一节点接收所述第二节点的广播信息,所述广播信息用于表示所述第二节点对当前区块进行了签名;所述第一节点确定其是否在所述当前区块所在的区块链中。

例如,第二节点公有链的发起者每次对区块进行签名后,向第一节点即公有链的参与者广播信息,该广播信息用于表示所述第二节点对当前区块进行了签名,第一节点根据这个广播信息,检测自己所在的区块链中是否包括被第二节点签名过的区块。

再或者,所述第一节点经过一段时间例如预设的固定时间之后还没有接收到第二节点的广播信息,则检测自己所在的区块链中是否包括被第二节点签名过的区块。

步骤s103、如果所述第一节点所在的区块链中包括目标区块,则所述第一节点确定所述区块链为合法的区块链。

如果所述第一节点所在的区块链中包括目标区块,则证明本条区块链为合法的区块链,继续跟随本条区块链,并且本条区块链经过了验证,验证通过的结果通过p2p网络广播出去,本节点同时将交易写入账本。

步骤s104、如果所述第一节点所在的区块链中不包括目标区块,则所述第一节点确定所述区块链为非法的区块链。

如果所述第一节点所在的区块链中不包括目标区块,则证明本条区块链非法,不继续跟随本条区块链,验证不通过的结果通过p2p网络广播出去,便于其他p2p网络中的节点得到警示。

本发明实施例通过公有链的参与者获取公有链的发起者的公钥,并根据该公钥,确定公有链的参与者所在的区块链中是否包括被发起者签名过的区块,如果参与者所在的区块链中包括被发起者签名过的区块,则确定参与者所在的区块链是合法的,如果参与者所在的区块链中不包括被发起者签名过的区块,则确定参与者所在的区块链是非法的,由于参与者能够对区块进行合法性验证,即使黑客用户获得全网的记账权,或者伪造一个全新的区块链账本,都有可能被参与者发现。

图3为本发明实施例提供的区块链的验证装置的结构图。本发明实施例提供的区块链的验证装置可以执行区块链的验证方法实施例提供的处理流程,如图3所示,区块链的验证装置30位于上述实施例所述的网络中的第一节点,区块链的验证装置30包括:获取模块31、确定模块32,其中,获取模块31用于从创世区块中获取创建公有链的第二节点的公钥;确定模块32用于根据所述公钥,确定所述第一节点所在的区块链中是否包括目标区块,所述目标区块是所述第二节点签名后的区块;如果所述第一节点所在的区块链中包括目标区块,则确定所述区块链为合法的区块链;如果所述第一节点所在的区块链中不包括目标区块,则确定所述区块链为非法的区块链。

本发明实施例提供的区块链的验证装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。

本发明实施例通过公有链的参与者获取公有链的发起者的公钥,并根据该公钥,确定公有链的参与者所在的区块链中是否包括被发起者签名过的区块,如果参与者所在的区块链中包括被发起者签名过的区块,则确定参与者所在的区块链是合法的,如果参与者所在的区块链中不包括被发起者签名过的区块,则确定参与者所在的区块链是非法的,由于参与者能够对区块进行合法性验证,即使黑客用户获得全网的记账权,或者伪造一个全新的区块链账本,都有可能被参与者发现。

图4为本发明另一实施例提供的区块链的验证装置的结构图。在上述实施例的基础上,确定模块32具体用于周期性的根据所述公钥,确定所述第一节点所在的区块链中是否包括目标区块。

或者,区块链的验证装置30还包括:接收模块33,接收模块33用于接收所述第二节点的广播信息,所述广播信息用于表示所述第二节点对当前区块进行了签名;确定模块32具体用于确定所述第一节点是否在所述当前区块所在的区块链中。

所述创世区块包括:区块头和区块主体;所述区块头包括:块高度,头哈希值,父区块哈希值,merkle根,时间戳,难度值和随机数;所述区块主体包括:交易信息。

所述创世区块的父区块哈希值为所述第二节点的公钥;除所述创世区块之外的区块的父区块哈希值为所述区块的前一个区块的头哈希值。

本发明实施例提供的区块链的验证装置可以具体用于执行上述图1所提供的方法实施例,具体功能此处不再赘述。

本发明实施例通过公有链的参与者获取公有链的发起者的公钥,并根据该公钥,确定公有链的参与者所在的区块链中是否包括被发起者签名过的区块,如果参与者所在的区块链中包括被发起者签名过的区块,则确定参与者所在的区块链是合法的,如果参与者所在的区块链中不包括被发起者签名过的区块,则确定参与者所在的区块链是非法的,由于参与者能够对区块进行合法性验证,即使黑客用户获得全网的记账权,或者伪造一个全新的区块链账本,都有可能被参与者发现。

综上所述,本发明实施例通过公有链的参与者获取公有链的发起者的公钥,并根据该公钥,确定公有链的参与者所在的区块链中是否包括被发起者签名过的区块,如果参与者所在的区块链中包括被发起者签名过的区块,则确定参与者所在的区块链是合法的,如果参与者所在的区块链中不包括被发起者签名过的区块,则确定参与者所在的区块链是非法的,由于参与者能够对区块进行合法性验证,即使黑客用户获得全网的记账权,或者伪造一个全新的区块链账本,都有可能被参与者发现。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1