本申请一个或多个实施例涉及区块链,尤其涉及一种pbft算法中的视图切换方法、共识节点和区块链系统。
背景技术:
1、区块链(blockchain)是分布式数据存储、点对点传输、共识协议、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,使得区块链的应用越来越广泛。
技术实现思路
1、本申请一个或多个实施例提供一种pbft算法中的视图切换方法、共识节点和区块链系统,包括:
2、本申请提供一种pbft算法中的视图切换方法,所述方法应用于区块链系统中的任一目标共识节点,包括:
3、响应于本轮共识满足了viewchange条件,接收其他共识节点发送的viewchange消息;其中,所述viewchange消息包含所述其他共识节点已经共识通过的最新区块的第一区块号,以及所述最新区块的共识通过证明;
4、响应于接收到的所述其他共识节点发送的viewchange消息,确定本节点已经共识通过的最新区块的第二区块号,是否小于所述viewchange消息包含的所述第一区块号;
5、如果所述第二区块号小于所述第一区块号,向其他共识节点同步第一目标区块的共识通过证明,并在本地存储所述第一目标区块的共识通过证明;其中,所述第一目标区块为区块号大于所述第二区块号并且不大于所述第一区块号的区块。
6、本申请还提供一种共识节点,所述共识节点为区块链系统中的任一目标共识节点,包括:
7、第一接收单元,响应于本轮共识满足了viewchange条件,接收其他共识节点发送的viewchange消息;其中,所述viewchange消息包含所述其他共识节点已经共识通过的最新区块的第一区块号,以及所述最新区块的共识通过证明;
8、第一确定单元,响应于接收到的所述其他共识节点发送的viewchange消息,确定本节点已经共识通过的最新区块的第二区块号,是否小于所述viewchange消息包含的所述第一区块号;
9、第一同步单元,如果所述第二区块号小于所述第一区块号,向其他共识节点同步第一目标区块的共识通过证明,并在本地存储所述第一目标区块的共识通过证明;其中,所述第一目标区块为区块号大于所述第二区块号并且不大于所述第一区块号的区块。
10、本申请还提供一种区块链系统,包括多个共识节点,其中:
11、任一目标共识节点响应于本轮共识满足了viewchange条件,接收其他共识节点发送的viewchange消息;其中,所述viewchange消息包含所述其他共识节点已经共识通过的最新区块的第一区块号,以及所述最新区块的共识通过证明;
12、所述目标共识节点响应于接收到的所述其他共识节点发送的viewchange消息,确定本节点已经共识通过的最新区块的第二区块号,是否小于所述viewchange消息包含的所述第一区块号;
13、所述目标共识节点如果所述第二区块号小于所述第一区块号,向其他共识节点同步第一目标区块的共识通过证明,并在本地存储所述第一目标区块的共识通过证明;其中,所述第一目标区块为区块号大于所述第二区块号并且不大于所述第一区块号的区块。
14、在上述实施例中,在针对某个区块包含的交易进行共识的过程中,如果某个共识节点因为共识进度较快,在视图切换之前已经完成了针对该区块的共识(即已经收集到2f+1个与该区块对应的commit消息),那么该节点可以在view change阶段,将本地存储的该区块的共识通过证明(包含收集到的2f+1个与该区块对应的commit消息)携带在viewchange消息中广播给其他共识节点,使其他共识节点在接收到该viewchange消息时,可以将该viewchange消息包含的该区块的共识通过证明在本地进行存储。通过这种同步机制,可以在view change阶段,让共识进度较慢的共识节点跟上共识进度较快的共识节点,从而保证各个共识节点之间的共识进度的同步。在视图切换之后,新的主节点会重新广播与该区块对应的pre-prepare消息,以重新发起针对该区块包含的交易的共识,此时因为各个共识节点已经同步到了最新的共识通过证明,所以如果本地存储了该区块的共识通过证明,就可以不再返回与该pre-prepare消息对应的prepare消息,从而中止重复投票。这样,就算共识节点的配置发生更新,由于不会再重复投票,也就不会导致重新共识时出现异常。
1.一种pbft算法中的视图切换方法,所述方法应用于区块链系统中的任一目标共识节点,包括:
2.如权利要求1所述的方法,向其他共识节点同步第一目标区块的共识通过证明,并在本地存储所述第一目标区块的共识通过证明,包括:
3.如权利要求1所述的方法,所述方法还包括:
4.如权利要求1所述的方法,所述方法还包括:
5.如权利要求4所述的方法,向其他共识节点发送viewchange消息之前,还包括:
6.如权利要求1所述的方法,所述方法还包括:
7.如权利要求6所述的方法,从接收到的至少2f+1个viewchange消息包含的区块号中确定出起始区块号h,包括:
8.如权利要求6所述的方法,确定本地存储的共识通过证明中,是否存在对应的区块号相对于所述起始区块号保持连续递增的共识通过证明集合之前,还包括:
9.如权利要求6所述的方法,所述方法还包括:
10.根据权利要求9所述的方法,从接收到的至少2f+1个viewchange消息包含的区块号中确定出有效区块号,包括:
11.如权利要求6所述的方法,所述方法还包括:
12.如权利要求1-11任一所述的方法,所述方法还包括:
13.一种共识节点,所述共识节点为区块链系统中的任一目标共识节点,包括:
14.一种区块链系统,包括多个共识节点,其中: