一种区块链的回滚方法技术

技术编号:24455789 阅读:14 留言:0更新日期:2020-06-10 15:30
本发明专利技术公开了一种区块链的回滚方法,包括:步骤1:区块链中末尾区块的共识领导节点对数据回滚请求后校验通过,对数据回滚请求和共识领导节点地址格式化成回滚结构体,签名后发送到区块链网络;步骤2:每一共识节点接收并校验签名后的回滚结构体,生成赞成票发送到共识网络;步骤3:共识领导节点统计赞成票,生成回滚类型的区块并保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作,发送回滚类型的区块到区块链网络;步骤4:任一共识节点或账本节点对回滚类型的区块校验通过后,保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作;本发明专利技术可实现区块链回滚后不分叉,不会产生兼容问题。

A rollback method of blockchain

【技术实现步骤摘要】
一种区块链的回滚方法
本专利技术属于区块链
,具体来说涉及一种区块链的回滚方法。
技术介绍
在传统数据库中,管理员拥有对数据库进行任意修改的权限,这意味着数据库中的数据出现异常,管理员一个人就可以实现数据的修正。区块链的本质是一种链式数据库,但是在区块链中,并没有这个管理员,只能实现数据的增和查,不能删和改,想要实现数据修正,必须所有用户同意才可以,所以一旦数据上链,则无法篡改。正是由于区块链的不可篡改性,发生错误很难更正,因此需要一种回滚方法。但目前区块链的回滚基本等同于分叉,使得一个区块链变为两个互不兼容的区块链。比较经典的例子是以太坊,以太坊回滚后,分叉成了两个区块链,一个是以太坊,一个是以太坊经典。
技术实现思路
本专利技术的目的之一在于提供一种区块链的回滚方法,以解决
技术介绍
中现有的区块链在回滚后会发生分叉,且发生不兼容的问题。为实现上述目的,本专利技术提供技术方案如下:一种区块链的回滚方法,所述方法包括以下步骤:步骤1:区块链中末尾区块的共识领导节点接收任一共识节点或账本节点生成并发送的数据回滚请求后进行校验,若校验通过,对数据回滚请求和共识领导节点地址格式化成回滚结构体后进行签名,将签名后的回滚结构体发送到区块链网络,执行步骤2,否则结束;步骤2:每一共识节点接收并校验签名后的回滚结构体,若任一共识节点校验通过,则生成赞成票发送到共识网络,执行步骤3,否则不做处理;步骤3:共识领导节点在预定时间内统计赞成票,若小于预设值,则结束,否则生成回滚类型的区块并保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作,发送回滚类型的区块到区块链网络,执行步骤4;步骤4:任一共识节点或账本节点对回滚类型的区块进行校验,若校验通过,则保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作,否则不做处理。优选地,所述步骤1中,数据回滚请求包括回滚数据、回滚数据的签名,所述回滚数据包括待回滚区块高度、待回滚区块哈希及回滚原因、发送数据回滚请求的账本节点或者共识节点的节点地址。优选地,所述步骤1中,对数据回滚请求校验包括以下步骤:步骤1.1:验证回滚数据的签名是否为发送数据回滚请求的账本节点或者共识节点的签名,若是,则执行步骤1.2,否则结束;步骤1.2:判断待回滚区块高度是否在预先设定的回滚区块高度范围内,若是,执行步骤1.3,否则结束;步骤1.3:判断回滚原因是否属于预定义类型,若是,执行步骤1.4,否则结束;步骤1.4:判断待回滚区块哈希是否在待回滚区块高度所对应的区块内,若是,则校验通过,否则校验不通过。优选地,所述步骤2中,任一共识节点接收并校验签名后的回滚结构体包括以下步骤:步骤2.1:对数据回滚请求校验,若校验通过,则执行步骤2.2,否则结束;步骤2.2:判断回滚结构体的签名是否为共识领导节点的签名,若是,则检验通过,否则校验不通过。优选地,所述步骤2中,任一共识节点生成赞成票包括生成赞成消息,所述赞成消息为预定值,对赞成消息签名形成赞成票。优选地,所述步骤3中,共识领导节点在预定时间内统计赞成票包括共识领导节点判断赞成票中赞成消息签名是否为发送赞成票的共识节点的签名,若是,则赞成票总数加一,否则不做处理。优选地,所述回滚类型的区块包括区块头和区块体,所述区块头包括区块类型、区块哈希、区块父哈希、共识节点签名集合、区块高度,所述区块体包括签名后的回滚结构体。优选地,所述步骤4中,任一共识节点或账本节点对回滚类型的区块进行校验包括以下步骤:步骤4.1:校验签名后的回滚结构体,若校验通过,执行步骤4.2,否则结束;步骤4.2:判断区块哈希是否正确,若是,则执行步骤4.3,否则结束;步骤4.3:判断区块类型是否为回滚类型,若是,则执行步骤4.4,否则结束;步骤4.4:判断前一回滚类型的区块的区块哈希是否与当前回滚类型的区块的区块父哈希一致,若是,则执行步骤4.5,否则结束;步骤4.5:判断本地回滚链中的区块高度是否等于回滚区块的高度减1;若是,则校验通过,否则结束。优选地,同一高度待回滚区块只能回滚一次。优选地,任一数据回滚请求中的待回滚区块高度大于前一数据回滚请求中的待回滚区块高度。与现有技术相比,本专利技术的有益效果为:本专利技术可实现区块链回滚后不分叉,不会产生兼容问题,从而提高了系统性能及生产力。附图说明图1为本专利技术的流程图。具体实施方式下面将对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。一种区块链的回滚方法,所述方法包括以下步骤:步骤1:区块链中末尾区块的共识领导节点接收任一共识节点或账本节点生成并发送的数据回滚请求后进行校验,若校验通过,对数据回滚请求和共识领导节点地址格式化成回滚结构体后进行签名,将签名后的回滚结构体发送到区块链网络,执行步骤2,否则结束;步骤2:每一共识节点接收并校验签名后的回滚结构体,若任一共识节点校验通过,则生成赞成票发送到共识网络,执行步骤3,否则不做处理;步骤3:共识领导节点在预定时间内统计赞成票,若小于预设值,则结束,否则生成回滚类型的区块并保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作,发送回滚类型的区块到区块链网络,执行步骤4;步骤4:任一共识节点或账本节点对回滚类型的区块进行校验,若校验通过,则保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作,否则不做处理。本专利技术首先通过共识节点或账本节点生成数据回滚请求,由末尾区块的共识领导节点通过初步校验来确定数据回滚请求的合法性和有效性,然后由所有的共识节点分别校验回滚结构体从而达成数据回滚请求的合法性和有效性的共识:校验通过时生成赞成票,末尾区块的共识领导节点通过统计赞成票来决定是否生成回滚类型的区块并根据回滚类型的区块对本地账本执行回滚操作;末尾区块的共识领导节点生成回滚类型的区块之后会将其向全网广播,任意一个共识节点或者账本节点分别对该回滚类型的区块进行校验,以判断该回滚类型的区块的有效性和合法性,若是,则共识节点或者账本节点会将该回滚类型的区块加入到本地回滚链上,并根据接收到的回滚类型的区块对本地账本执行回滚操作;举例来说,如果账本节点A对回滚类型的区块校验不通过,则账本节点A对自己记载的账本不回滚,但是如果账本节点B对回滚类型的区块校验通过,则账本节点B根据该回滚类型的区块来对自己记载的账本进行回滚。需要说明的是,本专利技术步骤4中,任一共识节点或者账本节点的本地账本基于接收的回滚类型的区块执行回滚操作,而不是基于共识领导节点的本地账本对自己存储的本地账本进行回滚;当步骤4中存在本文档来自技高网...

【技术保护点】
1.一种区块链的回滚方法,其特征在于,所述方法包括以下步骤:/n步骤1:区块链中末尾区块的共识领导节点接收任一共识节点或账本节点生成并发送的数据回滚请求后进行校验,若校验通过,对数据回滚请求和共识领导节点地址格式化成回滚结构体后进行签名,将签名后的回滚结构体发送到区块链网络,执行步骤2,否则结束;/n步骤2:每一共识节点接收并校验签名后的回滚结构体,若任一共识节点校验通过,则生成赞成票发送到共识网络,执行步骤3,否则不做处理;/n步骤3:共识领导节点在预定时间内统计赞成票,若小于预设值,则结束,否则生成回滚类型的区块并保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作,发送回滚类型的区块到区块链网络,执行步骤4;/n步骤4:任一共识节点或账本节点对回滚类型的区块进行校验,若校验通过,则保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作,否则不做处理。/n

【技术特征摘要】
1.一种区块链的回滚方法,其特征在于,所述方法包括以下步骤:
步骤1:区块链中末尾区块的共识领导节点接收任一共识节点或账本节点生成并发送的数据回滚请求后进行校验,若校验通过,对数据回滚请求和共识领导节点地址格式化成回滚结构体后进行签名,将签名后的回滚结构体发送到区块链网络,执行步骤2,否则结束;
步骤2:每一共识节点接收并校验签名后的回滚结构体,若任一共识节点校验通过,则生成赞成票发送到共识网络,执行步骤3,否则不做处理;
步骤3:共识领导节点在预定时间内统计赞成票,若小于预设值,则结束,否则生成回滚类型的区块并保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作,发送回滚类型的区块到区块链网络,执行步骤4;
步骤4:任一共识节点或账本节点对回滚类型的区块进行校验,若校验通过,则保存至本地回滚链中,对本地账本按照区块高度从高到低依次执行回滚操作,否则不做处理。


2.如权利要求1所述的一种区块链的回滚方法,其特征在于,所述步骤1中,数据回滚请求包括回滚数据、回滚数据的签名,所述回滚数据包括待回滚区块高度、待回滚区块哈希及回滚原因、发送数据回滚请求的账本节点或者共识节点的节点地址。


3.如权利要求2所述的一种区块链的回滚方法,其特征在于,所述步骤1中,对数据回滚请求校验包括以下步骤:
步骤1.1:验证回滚数据的签名是否为发送数据回滚请求的账本节点或者共识节点的签名,若是,则执行步骤1.2,否则结束;
步骤1.2:判断待回滚区块高度是否在预先设定的回滚区块高度范围内,若是,执行步骤1.3,否则结束;
步骤1.3:判断回滚原因是否属于预定义类型,若是,执行步骤1.4,否则结束;
步骤1.4:判断待回滚区块哈希是否在待回滚区块高度所对应的区块内,若是,则校验通过,否则校验不通过。


4.如权利要求3所述的一种区块链的回滚方法,其特征在于,所述步骤2中,任一共识节点接收并校验签名后的回滚结构体包括以...

【专利技术属性】
技术研发人员:杨柳青吴伟宫文博
申请(专利权)人:杭州龙纪科技有限公司
类型:发明
国别省市:浙江;33

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

1