分叉处理方法以及区块链节点技术

技术编号:27305287 阅读:28 留言:0更新日期:2021-02-10 09:16
本申请提供了一种出块方法,包括:在第一区块链节点是领导者的情况下,第一区块链节点将交易池中的上任交易打包入第一区块,其中,所述上任交易记载了所述第一区块链节点的领导证明,所述领导证明记载了所述多个第二区块链节点中的各个第二区块链节点向所述第一区块链节点进行投票的投票情况,所述投票情况是指投的是赞成票还是反对票;将所述第一区块发送给所述多个第二区块链节点,以便于第一区块链节点和/或第二区块链节点根据所述领导证明进行分叉处理。进行分叉处理。进行分叉处理。

【技术实现步骤摘要】
分叉处理方法以及区块链节点


[0001]本申请涉及区块链领域,尤其涉及一种分叉处理方法以及区块链节点。

技术介绍

[0002]区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。区块链可以被广泛应用在金融、保险、法律、艺术、房地产以及物流等等行业。区块链系统通常包括多个区块链节点,区块链节点之间可以通过有线或者无线的方式进行通讯。
[0003]共识机制是区块链系统中的一个重要机制。在区块链系统运行期间,区块链系统中的各个区块链节点会发起各种各样的交易,然后会有区块链节点获得出块资格,即,把这些交易打包成区块,链接到本节点的区块链上,并发送给其他区块链节点。其他区块链节点在收到区块后,判断是否应该将收到的区块连接到本节点的区块链后面(即落盘)。随着每个区块的落盘,区块链的链长(即块高)会不断增加。原则上,区块链系统希望只有一个区块链节点获得出块资格,把交易打包成区块,链接到本节点的区块链上,发送给其他区块链节点。但是,如果有两个以上区块链节点同时获得出块资格,将交易打包成区块,链接到本节点的区块链上,并发送给其他区块链节点,就会出现分叉。共识机制用于决定哪些区块链节点具有出块资格,生成的区块如何落盘以及出现分叉时如何进行处理,通过共识机制的作用,可以保证区块链中的每个节点的区块是一致的。
[0004]但是,现有的分叉处理中通常选择链长较长的区块链作为主链,丢弃链长较短的区块链,会导致链长较长的区块链占有绝对优势,违背区块链的平等原则。

技术实现思路

[0005]本申请提供了一种分叉处理方法以及区块链节点,能够根据区块链中参与者的情况进行分叉处理,从而遵循了区块链的平等原则。
[0006]第一方面,提供了一种分叉处理方法,包括:
[0007]在第一区块链节点是领导者的情况下,第一区块链节点将交易池中的上任交易打包入第一区块,其中,所述上任交易记载了所述第一区块链节点的领导证明,所述领导证明记载了所述多个第二区块链节点中的各个第二区块链节点向所述第一区块链节点进行投票的投票情况,所述投票情况是指投的是赞成票还是反对票;
[0008]将所述第一区块发送给所述多个第二区块链节点,以便于第一区块链节点和/或第二区块链节点根据所述领导证明进行分叉处理。
[0009]在一些可能的设计中,第一区块链节点将交易池中的第一上线交易打包入第二区块,其中,所述第一上线交易记载了第三区块链节点成为所述第一区块链节点的跟随者,所述第三区块链节点是所述多个第二区块链节点中没有向所述第一区块链节点投赞成票的节点;将所述第二区块发送给所述多个第二区块链节点。
[0010]在一些可能的设计中,确定所述第一区块链节点内的区块链出现了分叉,其中,所
述分叉包括第一分链以及第二分链,所述第一分链和所述第二分链均从分叉点开始,所述分叉点之前的区块均相同,所述第一分链的最后一个区块是所述第一区块链节点发出的,所述第二分链的最后一个区块是第四区块链节点发出的;比较所述第一分链的参与者数量以及第二分链的参与者数量,其中,所述第一分链的参与者包括为所述第一区块链节点投过赞成票的节点,以及,所述第三区块链节点;所述第二分链的参与者包括为所述第四区块链节点投过赞成票的节点,以及,尽管没有为所述第四区块链节点投过赞成票,但是,通过第二上线交易表示成为所述第四区块链节点的跟随者的节点;在所述第一分链的参与者的数量多于所述第二分链的参与者的数量的情况下,保留所述第一分链,丢弃所述第二分链;在所述第二分链的参与者的数量多于所述第一分链的参与者的数量的情况下,保留所述第二分链,丢弃所述第一分链;在所述第一分链的参与者的数量等于所述第二分链的参与者的数量的情况下,保留所述第一区块链节点和所述第四区块链节点中成为领导者比较晚的节点对应的分链,丢弃另一条分链。
[0011]上述方案中,第一区块链节点将上任交易发送给了第一区块链节点,以供第一区块链节点和/或第二区块链节点根据所述领导证明中记载的各个第二区块链节点向所述第一区块链节点进行投票的投票情况进行分叉处理,从而实现了根据区块链中参与者的情况进行分叉处理,遵循了区块链的平等原则。
[0012]在一些可能的设计中,第一区块链节点分别向多个第二区块链节点发送投票通知,其中,所述投票通知用于指示接收到所述投票通知的区块链节点进行投票;接收所述多个第二区块链节点中的各个第二区块链节点的投票,其中,所述投票是赞成票或者反对票;在赞成票的票数大于反对票的票数的情况下,将自身状态转变为领导者,其中,所述领导者能够向所述多个第二区块链节点中的每个区块链节点出块。
[0013]在一些可能的设计中,触发定时器进行定时,其中,所述定时器的定时时间为随机等待时间;在所述定时器对所述随机等待时间等待超时的情况下,通过签名函数对所述随机等待时间进行签名,从而得到时间证明;根据所述时间证明生成所述投票通知。
[0014]上述方案中,通过签名函数对所述随机等待时间进行签名,从而得到时间证明,能够有效地防止拜占庭节点伪造了随机等待时间,从而获得了领导者资格,进而造成恶意分叉。
[0015]在一些可能的设计中,在所述随机等待时间内没有接受到其他区块链节点发送的区块的情况下,第一区块链节点分别向多个第二区块链节点发送投票通知。
[0016]在一些可能的设计中,所述第一区块链节点的可信执行环境中存储了最后块哈希、任期以及块高中的一个或者多个。
[0017]上述方案中,在可信执行环境中存储了最后块哈希、任期以及块高中的一个或者多个,可以防止拜占庭节点通过伪造最后块哈希、任期以及块高中的一个或者多个竞选为领导者,从而造成恶意分叉。
[0018]在一些可能的设计中,所述投票在第二区块链节点的可信执行环境至第一区块链节点的可信执行环境之间传输时,处于加密状态。
[0019]上述方案中,所述投票在传输过程中一直处于加密状态,能够防止拜占庭节点伪造投票竞选成为领导者,从而造成恶意分叉。
[0020]在一些可能的设计中,获取所述多个第二区块链节点中的各个第二区块链节点向
所述第一区块链节点进行投票的投票情况;通过签名函数对所述投票情况进行签名,从而得到所述领导证明。
[0021]上述方案中,所述领导证明是通过签名函数进行签名的,能够有效防止领导证明被伪造,从而提高了领导证明的可信性。
[0022]在一些可能的设计中,在没有接受到落盘通知的情况下,将第三区块进行落盘,其中,所述第三区块是发送给所述第一区块链节点的区块。
[0023]上述方案中,不需要接收落盘通知,也能够将区块进行落盘,从而减少终端设备的能耗,使得本申请的方法能够应用在轻量级的终端设备上。
[0024]第二方面,提供了一种区块链节点,包括:生成区块模块以及通信模块,
[0025]所述生成区块模块用于在第一区块链节点是领导者的情况下,将交易池中的上任交易打包入第一区块,其中,所述上本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分叉处理方法,其特征在于,包括:在第一区块链节点是领导者的情况下,第一区块链节点将交易池中的上任交易打包入第一区块,其中,所述上任交易记载了所述第一区块链节点的领导证明,所述领导证明记载了所述多个第二区块链节点中的各个第二区块链节点向所述第一区块链节点进行投票的投票情况,所述投票情况是指投的是赞成票还是反对票;将所述第一区块发送给所述多个第二区块链节点,以便于第一区块链节点和/或第二区块链节点根据所述领导证明进行分叉处理。2.根据权利要求1所述的方法,其特征在于,将所述第一区块发送给所述多个第二区块链节点之后,所述方法包括:第一区块链节点将交易池中的第一上线交易打包入第二区块,其中,所述第一上线交易记载了第三区块链节点成为所述第一区块链节点的跟随者,所述第三区块链节点是所述多个第二区块链节点中没有向所述第一区块链节点投赞成票的节点;将所述第二区块发送给所述多个第二区块链节点。3.根据权利要求2所述的方法,其特征在于,确定所述第一区块链节点内的区块链出现了分叉,其中,所述分叉包括第一分链以及第二分链,所述第一分链和所述第二分链均从分叉点开始,所述分叉点之前的区块均相同,所述第一分链的最后一个区块是所述第一区块链节点发出的,所述第二分链的最后一个区块是第四区块链节点发出的;比较所述第一分链的参与者数量以及第二分链的参与者数量,其中,所述第一分链的参与者包括为所述第一区块链节点投过赞成票的节点,以及,所述第三区块链节点;所述第二分链的参与者包括为所述第四区块链节点投过赞成票的节点,以及,尽管没有为所述第四区块链节点投过赞成票,但是,通过第二上线交易表示成为所述第四区块链节点的跟随者的节点;在所述第一分链的参与者的数量多于所述第二分链的参与者的数量的情况下,保留所述第一分链,丢弃所述第二分链;在所述第二分链的参与者的数量多于所述第一分链的参与者的数量的情况下,保留所述第二分链,丢弃所述第一分链;在所述第一分链的参与者的数量等于所述第二分链的参与者的数量的情况下,保留所述第一区块链节点和所述第四区块链节点中成为领导者比较晚的节点对应的分链,丢弃另一条分链。4.根据权利要求1至3任一权利要求所述的方法,其特征在于,在第一区块链节点将交易池中的第一交易打包成第一区块之前,所述方法还包括:第一区块链节点分别向多个第二区块链节点发送投票通知,其中,所述投票通知用于指示接收到所述投票通知的区块链节点进行投票;接收所述多个第二区块链节点中的各个第二区块链节点的投票,其中,所述投票是赞成票或者反对票;在赞成票的票数大于反对票的票数的情况下,将自身状态转变为领导者,其中,所述领导者能够向所述多个第二区块链节点中的每个区块链节点出块。5.根据权利要求4所述的方法,其特征在于,第一区块链节点分别向多个第二区块链节
点发送投票通知之前,在所述第一区块链节点的可信执行环境执行如下步骤:触发定时器进行定时,其中,所述定时器的定时时间为随机等待时间;在所述定时器对所述随机等待时间等待超时的情况下,通过签名函数对所述随机等待时间进行签名,从而得到时间证明;根据所述时间证明生成所述投票通知。6.根据权利要求5所述的方法,其特征在于,第一区块链节点分别向多个第二区块链节点发送投票通知,包括:在所述随机等待时间内没有接受到其他区块链节点发送的区块的情况下,第一区块链节点分别向多个第二区块链节点发送投票通知。7.根据权利要求5或6所述的方法,其特征在于,所述第一区块链节点的可信执行环境中存储了最后块哈希、任期以及块高中的一个或者多个。8.根据权利要求4至7任一权利要求所述的方法,其特征在于,所述投票在第二区块链节点的可信执行环境至第一区块链节点的可信执行环境之间传输时,处于加密状态。9.根据权利要求1至4任一权利要求所述的方法,其特征在于,第一区块链节点将交易池中的上任交易打包入第一区块之前,在所述第一区块链节点的可信执行环境执行如下步骤:获取所述多个第二区块链节点中的各个第二区块链节点向所述第一区块链节点进行投票的投票情况;通过签名函数对所述投票情况进行签名,从而得到所述领导证明。10.根据权利要求1至9任一权利要求所述的方法,其特征在于,在所述第一区块链节点是跟随者的情况下,在没有接受到落盘通知的情况下,将第三区块进行落盘,其中,所述第三区块是发送给所述第一区块链节点的区块。11.一种区块链节点,其特征在于,包括:生成区块模块以及通信模块,所述生成区块模块用于在第一区块链节点是领导者的情况下,将交易池中的上任交易打包入第一区块,其中,所述上任交易记载了所述第一区块链节点的领导证明,所述领导证明记载了所述多个第二区块链节点中的各个第二区块链节点向所述第一区块链节点进...

【专利技术属性】
技术研发人员:厉丹阳刘勋王季蔡春瑜潘凡
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

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

1