1.一种联盟链中的共识方法,包括:
联盟链中的目标共识节点在生成指定数量的区块时,在所述联盟链中广播检查点checkpoint消息,所述checkpoint消息中携带有所述指定数量的区块中块高度最大的区块号;
所述目标共识节点接收联盟链中其它共识节点发送的checkpoint消息;
如果所述目标共识节点接收到至少2f+1个其它共识节点发送的checkpoint消息,以及其中携带的区块号大于目标共识节点的最大区块号,且其中携带的区块号一致,则所述目标共识节点从接收到的checkpoint消息中最大区块号所属的共识节点拉取区块。
2.如权利要求1所述的方法,所述目标共识节点接收联盟链中其它共识节点发送的checkpoint消息之后,所述方法还包括:
所述目标共识节点若确定接收到的至少2f个其它共识节点发送的checkpoint消息中的最大区块号、与所述目标共识节点生成的块高度最大区块号一致,则所述目标共识节点将所述至少2f个其它共识节点的checkpoint消息和本共识节点的checkpoint消息进行打包,得到携带有至少2f+1个共识节点的checkpoint消息的消息列表;
所述目标共识节点将所述消息列表在所述联盟链中广播,以使得其它共识节点在确定所述消息列表中携带的所述至少2f+1个共识节点的checkpoint消息均通过验证,且所述消息列表中携带的块高度最大的区块号大于所述其它共识节点生成的块高度最大区块号时,基于所述消息列表中携带的块高度最大的区块号,从所述消息列表中携带的块高度最大的区块号所属的共识节点拉取区块。
3.如权利要求1所述的方法,所述目标共识节点从接收到的checkpoint消息中最大区块号所属的共识节点拉取区块,包括:
所述目标共识节点基于所述接收到的checkpoint消息中最大区块号,从所述接收到的checkpoint消息中最大区块号所属的共识节点拉取区块号在所述最大区块号之后的区块。
4.如权利要求1所述的方法,所述目标共识节点在联盟链中广播的checkpoint消息中还包括:
所述目标共识节点对所述checkpoint消息的签名。
5.如权利要求4所述的方法,如果所述目标共识节点接收到至少2f+1个其它共识节点发送的checkpoint消息,以及其中携带的区块号大于目标共识节点的最大区块号,且其中携带的区块号一致,则所述目标共识节点从接收到的checkpoint消息中最大区块号所属的共识节点拉取区块,包括:
所述目标共识节点对接收到的其它共识节点发送的checkpoint消息的签名进行验证;
如果所述目标共识节点接收到至少2f+1个通过验证的其它共识节点发送的checkpoint消息,以及其中携带的区块号大于目标共识节点的最大区块号,且其中携带的区块号一致,则所述目标共识节点从接收到的checkpoint消息中最大区块号所属的共识节点拉取区块。
6.如权利要求1所述的方法,所述指定数量为正整数。
7.如权利要求6所述的方法,当所述指定数量为1时,所述目标共识节点从接收到的checkpoint消息中最大区块号所属的共识节点拉取区块,包括:
所述目标共识节点基于接收到的checkpoint消息中最大区块号,从所述接收到的checkpoint消息中最大区块号所属的共识节点拉取所述最大区块号对应的区块。
8.如权利要求6所述的方法,当所述指定数量为大于1的正整数k时,所述目标共识节点从接收到的checkpoint消息中最大区块号所属的共识节点拉取区块,包括:
所述目标共识节点确定所述接收到的checkpoint消息中最大区块号与所述目标共识节点生成的块高度最大的区块号之间的差值;
如果所述接收到的checkpoint消息中最大区块号与所述目标共识节点生成的块高度最大的区块号之间的差值为1,则所述目标共识节点从所述最大区块号所属的共识节点拉取所述最大区块号对应的区块;
如果所述接收到的checkpoint消息中最大区块号与所述目标共识节点生成的块高度最大的区块号之间的差值大于1,则所述目标共识节点从所述最大区块号所属的共识节点拉取所述接收到的checkpoint消息中最大区块号对应的区块、以及所述接收到的checkpoint消息中最大区块号与所述目标共识节点生成的块高度最大的区块号之间的区块。
9.如权利要求1~8中任一所述的方法,所述目标共识节点接收联盟链中其它共识节点发送的checkpoint消息之后,所述方法还包括:
如果所述目标共识节点在预设时间段内接收到所述联盟链中的其它2f个共识节点发送的checkpoint消息,且所述联盟链中的其它2f个共识节点发送的checkpoint消息中携带的区块号、均与所述目标共识节点发出的checkpoint消息中携带的区块号一致,则所述目标共识节点将所述目标共识节点的状态更新为stablecheckpoint;
所述目标共识节点基于所述目标共识节点的stablecheckpoint状态,向所述客户端发送reply消息。
10.一种联盟链中的共识节点,包括:
广播模块,在生成指定数量的区块时,在所述联盟链中广播检查点checkpoint消息,所述checkpoint消息中携带有所述指定数量的区块中块高度最大的区块号;
接收模块,接收联盟链中其它共识节点发送的checkpoint消息;
拉块模块,如果接收到至少2f+1个其它共识节点发送的checkpoint消息,以及其中携带的区块号大于目标共识节点的最大区块号,且其中携带的区块号一致,则所述目标共识节点从接收到的checkpoint消息中最大区块号所属的共识节点拉取区块。
11.一种联盟链系统,包括共识节点,其中:
所述共识节点在生成指定数量的区块时,在所述联盟链中广播检查点checkpoint消息,所述checkpoint消息中携带有所述指定数量的区块中块高度最大的区块号;
所述共识节点接收联盟链中其它共识节点发送的checkpoint消息;
如果所述共识节点接收到至少2f+1个其它共识节点发送的checkpoint消息,以及其中携带的区块号大于目标共识节点的最大区块号,且其中携带的区块号一致,则所述目标共识节点从接收到的checkpoint消息中最大区块号所属的共识节点拉取区块。