发明内容
有鉴于此,本发明提供了一种区块删除方法、装置及系统,在不需要放弃所要删除的区块所在的区块链的基础上,删除区块链头部或尾部的区块,并且保证区块链中区块hash的连续性。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种区块删除方法,应用于区块链系统中的存储节点,所述存储节点存储的区块链依次包括创世区块、哨兵区块和至少一个交易区块,所述区块链系统还包括至少一个领导节点和至少一个客户端,所述客户端与所述存储节点一一对应,所述方法包括:
接收所述客户端发起的区块删除请求,并将所述区块删除请求转发到所述领导节点,所述区块删除请求包括目标区块号;
接收所述领导节点广播的删除记录区块,所述删除记录区块是所述领导节点在确定所述目标区块号对应的区块满足预设删除条件的情况下生成的,所述删除记录区块中存储有所述目标区块号,以及依据所述目标区块号类型确定的哈希值和目标数据,所述预设删除条件至少包括所述目标区块号对应的区块类型为头部交易区块或尾部交易区块;
删除所述目标区块号对应的区块,得到当前区块链;
将所述删除记录区块存储在所述当前区块链的尾部;
将所述哨兵区块的内容更新为所述目标数据。
优选的,当所述目标区块号对应的区块类型为头部交易区块时,所述删除记录区块的哈希值是对区块链的尾部区块的内容进行哈希计算后得到的,对所述目标数据进行哈希计算得到的哈希值与所述目标区块号对应的区块后的交易区块的哈希值一致。
优选的,当所述目标区块号对应的区块类型为尾部交易区块时,所述删除记录区块的哈希值是对所述目标区块号对应的区块前的交易区块内容进行哈希计算得到的,所述目标数据与所述哨兵区块的内容一致。
优选的,所述接收所述领导节点广播的删除记录区块,包括:
在所述领导节点确定所述目标区块号对应的区块类型为头部交易区块或尾部交易区块的情况下,接收所述领导节点广播的携带有所述目标区块号的删除决议;
在确定所述目标区块号对应的区块存储的数据满足预设条件的情况下,对删除决议进行签名,并将签名后的删除决议发送到所述领导节点;
在所述领导节点根据在预设时间内接收到的具有有效签名的删除决议的数量确定所述目标区块号对应的区块满足预设删除条件的情况下,接收所述领导节点广播的删除记录区块。
优选的,所述区块链中的每个交易区块还包括指向所述创世区块的链接。
优选的,所述区块链中相邻两个区块中,后一个区块的哈希值是利用复合哈希函数对前一个区块的内容进行哈希计算后得到的。
一种区块删除方法,应用于区块链系统中的领导节点,所述区块链系统还包括至少一个客户端和存储节点,所述客户端与所述存储节点一一对应,所述存储节点存储的区块链依次包括创世区块、哨兵区块和至少一个交易区块,所述方法包括:
在所述存储节点接收到所述客户端发起的区块删除请求的情况下,接收所述存储节点转发的所述区块删除请求,所述区块删除请求包括目标区块号;
暂停区块打包操作,在确定所述目标区块号对应的区块满足预设删除条件的情况下,生成删除记录区块,所述删除记录区块中存储有所述目标区块号,以及依据所述目标区块号类型确定的哈希值和目标数据,所述预设删除条件至少包括所述目标区块号对应的区块类型为头部交易区块或尾部交易区块;
将所述删除记录区块广播到所有所述存储节点,使所有所述存储节点根据所述删除记录区块执行对所述目标区块号对应的区块的删除操作。
优选的,所述在确定所述目标区块号对应的区块满足预设删除条件的情况下,生成删除记录区块,包括:
在确定所述目标区块号对应的区块类型为头部交易区块或尾部交易区块的情况下,向所有所述存储节点广播携带有所述目标区块号的删除决议;
接收所述存储节点在确定所述目标区块号对应的区块存储的数据满足预设条件的情况下发送的签名后的删除决议;
在预设时间内接收到的具有有效签名的删除决议的数量大于预设比例的情况下,生成所述删除记录区块。
一种区块删除装置,应用于区块链系统中的存储节点,所述存储节点存储的区块链依次包括创世区块、哨兵区块和至少一个交易区块,所述区块链系统还包括至少一个领导节点和至少一个客户端,所述客户端与所述存储节点一一对应,所述装置包括:
删除请求收发单元,用于接收所述客户端发起的区块删除请求,并将所述区块删除请求转发到所述领导节点,所述区块删除请求包括目标区块号;
删除记录区块接收单元,用于接收所述领导节点广播的删除记录区块,所述删除记录区块是所述领导节点在确定所述目标区块号对应的区块满足预设删除条件的情况下生成的,所述删除记录区块中存储有所述目标区块号,以及依据所述目标区块号类型确定的哈希值和目标数据,所述预设删除条件至少包括所述目标区块号对应的区块类型为头部交易区块或尾部交易区块;
区块删除单元,用于删除所述目标区块号对应的区块,得到当前区块链;
删除记录区块存储单元,用于将所述删除记录区块存储在所述当前区块链的尾部;
哨兵区块内容更新单元,用于将所述哨兵区块的内容更新为所述目标数据。
可选的,当所述目标区块号对应的区块类型为头部交易区块时,所述删除记录区块的哈希值是对区块链的尾部区块的内容进行哈希计算后得到的,对所述目标数据进行哈希计算得到的哈希值与所述目标区块号对应的区块后的交易区块的哈希值一致。
可选的,当所述目标区块号对应的区块类型为尾部交易区块时,所述删除记录区块的哈希值是对所述目标区块号对应的区块前的交易区块内容进行哈希计算得到的,所述目标数据与所述哨兵区块的内容一致。
可选的,所述删除记录区块接收单元,具体用于:
在所述领导节点确定所述目标区块号对应的区块类型为头部交易区块或尾部交易区块的情况下,接收所述领导节点广播的携带有所述目标区块号的删除决议;
在确定所述目标区块号对应的区块存储的数据满足预设条件的情况下,对删除决议进行签名,并将签名后的删除决议发送到所述领导节点;
在所述领导节点根据在预设时间内接收到的具有有效签名的删除决议的数量确定所述目标区块号对应的区块满足预设删除条件的情况下,接收所述领导节点广播的删除记录区块。
可选的,所述区块链中的每个交易区块还包括指向所述创世区块的链接。
可选的,所述区块链中相邻两个区块中,后一个区块的哈希值是利用复合哈希函数对前一个区块的内容进行哈希计算后得到的。
一种区块删除装置,应用于区块链系统中的领导节点,所述区块链系统还包括至少一个客户端和存储节点,所述客户端与所述存储节点一一对应,所述存储节点存储的区块链依次包括创世区块、哨兵区块和至少一个交易区块,所述装置包括:
删除请求接收单元,用于在所述存储节点接收到所述客户端发起的区块删除请求的情况下,接收所述存储节点转发的所述区块删除请求,所述区块删除请求包括目标区块号;
删除记录区块生成单元,用于暂停区块打包操作,在确定所述目标区块号对应的区块满足预设删除条件的情况下,生成删除记录区块,所述删除记录区块中存储有所述目标区块号,以及依据所述目标区块号类型确定的哈希值和目标数据,所述预设删除条件至少包括所述目标区块号对应的区块类型为头部交易区块或尾部交易区块;
删除记录区块广播单元,用于将所述删除记录区块广播到所有所述存储节点,使所有所述存储节点根据所述删除记录区块执行对所述目标区块号对应的区块的删除操作。
可选的,所述删除记录区块生成单元,具体用于:
在确定所述目标区块号对应的区块类型为头部交易区块或尾部交易区块的情况下,向所有所述存储节点广播携带有所述目标区块号的删除决议;
接收所述存储节点在确定所述目标区块号对应的区块存储的数据满足预设条件的情况下发送的签名后的删除决议;
在预设时间内接收到的具有有效签名的删除决议的数量大于预设比例的情况下,生成所述删除记录区块。
一种区块链系统,包括:至少一个领导节点、客户端和存储节点,所述客户端与所述存储节点一一对应,所述存储节点存储的区块链依次包括创世区块、哨兵区块和至少一个交易区块;
所述客户端,用于向与其对应的所述存储节点发起区块删除请求,所述区块删除请求包括目标区块号;
所述存储节点,用于接收所述区块删除请求,并将所述区块删除请求转发到所述领导节点;
所述领导节点,用于在接收到所述区块删除请求的情况下,暂停区块打包操作,在确定所述目标区块号对应的区块满足预设删除条件的情况下,生成删除记录区块,并将所述删除记录区块广播到所有所述存储节点,所述删除记录区块中存储有所述目标区块号,以及依据所述目标区块号类型确定的哈希值和目标数据,所述预设删除条件至少包括所述目标区块号对应的区块类型为头部交易区块或尾部交易区块;
所述存储节点接收所述删除记录区块,删除所述目标区块号对应的区块,得到当前区块链,将所述删除记录区块存储在所述当前区块链的尾部,并将所述哨兵区块的内容更新为所述目标数据。
相对于现有技术,本发明的有益效果如下:
本发明公开的一种区块删除方法,在需要删除区块时,不需要在放弃待删除区块所在的区块链后重新生成整条区块链,只需在删除目标区块号对应的区块后,将删除记录区块存储在当前区块链的尾部,更新哨兵区块的内容即可。其中,删除记录区块用于记录删除操作,使对区块链的任何操作均可追溯,通过更新哨兵区块的内容,使对哨兵区块更新后的内容进行哈希计算后得到的哈希值与当前区块链中哨兵区块后的交易区块的哈希值一致,保证当前区块链中区块哈希值的连续性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
发明人通过研究发现:区块链的头部交易区块和尾部交易区块分布在区块链的两端,头部交易区块为计算哈希值的起始区块,尾部交易区块为计算哈希值的结束区块,由于其位置的特殊性,相对于位于区块链中间位置的区块,更有可能实现在删除后保证区块链中区块哈希值的连续性。
在此基础上,本发明提供了针对头部交易区块和尾部交易区块的一种区块删除方法,在不需要放弃所要删除的区块所在的区块链的基础上,删除区块链的头部交易区块或尾部交易区块,并且保证区块链中区块哈希值的连续性,在一定程度上解决现有技术中无法在不放弃整条区块链前提下删除区块的问题。
本发明公开的一种区块删除方法应用于区块链系统中的存储节点,该区块链系统还包括至少一个领导节点和至少一个客户端,客户端与存储节点一一对应,客户端是用户与区块链数据之间的媒介,用于发送交易请求、区块删除请求、查询请求等。请参阅图1,存储节点存储的区块链依次包括创世区块、哨兵区块和至少一个交易区块。创世区块的内容包括区块链标识、哈希算法类型、挖矿难度和预设置值等。哨兵区块主要作为占位区块使用,当删除头部交易区块后需要更新哨兵区块的内容,以满足区块链中区块哈希值的连续性。交易区块用于存储交易数据,每个交易区块中可以存储的交易数量的上限相同,该上限在创世区块中预先设定。存储节点用于在接收到客户端发送的请求后,将该请求转发到领导节点,并接收、验证和存储由领导节点打包的区块或删除领导节点指示的区块。至少一个领导节点组成领导节点组,领导节点组内的所有领导节点互相对等,领导节点之间采用raft一致性算法同步,领导节点组内包括一个主领导节点,组内的其他领导节点为从领导节点,主领导节点负责所有交易排序和区块生成工作,其他从领导节点作为备份,raft一致性算法保证领导节点组的高可用和可恢复。请参阅图2,本实施例公开的一种应用于存储节点的区块删除方法包括以下步骤:
S101:接收客户端发起的区块删除请求,并将区块删除请求转发到领导节点,区块删除请求包括目标区块号;
目标区块号即为需要删除的区块的区块号,目标区块号可以表示一个区块,也可以表示多个区块,因此,目标区块号可以用一个区间表示(startblock,endblock),startblock表示起始删除区块号,endblock表示末尾删除区块号。
区块删除请求还可以包括客户端的签名。
S102:接收领导节点广播的删除记录区块,删除记录区块是领导节点在确定目标区块号对应的区块满足预设删除条件的情况下生成的,删除记录区块中存储有目标区块号,以及依据目标区块号类型确定的哈希值和目标数据,预设删除条件至少包括目标区块号对应的区块类型为头部交易区块或尾部交易区块;
进一步,客户端发起的区块删除请求中的目标区块号可能不能被删除,为了避免不能被删除的区块被误删除,本实施例公开的区块删除方法预设设定预设删除条件,只有在目标区块号满足预设删除条件时,领导节点才会向存储节点下发删除记录区块,存储节点才能删除目标区块号对应的区块。
具体的,存储节点在领导节点确定目标区块号对应的区块类型为头部交易区块或尾部交易区块的情况下,接收领导节点广播的携带有目标区块号的删除决议,其中需要说明的是,客户端在删除请求中会包含目标区块号,假设为m-n,如果因为延迟等原因,导致领导节点在收到删除请求时,发现此时区块链的最末块已经超出了n,则此删除将失败,避免误删除,这里我们假定领导节点的内部同步是可靠的。
存储节点在确定目标区块号对应的区块存储的数据满足预设条件的情况下,对删除决议进行签名,并将签名后的删除决议发送到领导节点,其中,预设条件可以根据具体业务类型预先设定,如金融业务,预设条件表示若区块存储的是还款数据可以被删除,若区块存储的是逾期记录则不能被删除;
在领导节点根据在预设时间(如半个区块周期)内接收到的具有有效签名的删除决议的数量确定目标区块号对应的区块满足预设删除条件的情况下,接收领导节点广播的删除记录区块。其中,可以使用非对称秘钥机制校验签名,判断签名是否为有效签名,领导节点可以根据预设时间内接收到的具有有效签名的删除决议的数量是否大于阈值确定目标区块号对应的区块是否满足预设删除条件,也可以根据预设时间内接收到的具有有效签名的删除决议占存储节点的总量的比例是否大于比例阈值,确定目标区块号对应的区块是否满足预设删除条件。
S103:删除目标区块号对应的区块,得到当前区块链;
当前区块链为删除了目标区块号对应的区块后的区块链。
S104:将删除记录区块存储在当前区块链的尾部;
删除记录区块用于记录区块删除操作及相关信息。
S105:将哨兵区块的内容更新为目标数据。
目标数据为依据目标区块号类型确定的,当目标区块号对应的区块类型为头部交易区块时,删除记录区块的哈希值是对区块链的尾部区块的内容进行哈希计算后得到的,对目标数据进行哈希计算得到的哈希值与目标区块号对应的区块后的交易区块的哈希值一致。
当目标区块号对应的区块类型为尾部交易区块时,删除记录区块的哈希值是对目标区块号对应的区块前的交易区块内容进行哈希计算得到的,目标数据与哨兵区块的内容一致。
可见,本实施例公开的一种区块删除方法,在需要删除区块时,不需要在放弃待删除区块所在的区块链后重新生成整条区块链,只需在删除目标区块号对应的区块后,将删除记录区块存储在当前区块链的尾部,更新哨兵区块的内容即可。其中,删除记录区块用于记录删除操作,使对区块链的任何操作均可追溯,通过更新哨兵区块的内容,使对哨兵区块更新后的内容进行哈希计算后得到的哈希值与当前区块链中哨兵区块后的交易区块的哈希值一致,保证当前区块链中区块哈希值的连续性。
基于上述实施例公开的一种应用于存储节点的区块删除方法,本实施例对应公开了一种应用于领导节点的区块删除方法,请参阅图3,该方法包括以下步骤:
S201:在存储节点接收到客户端发起的区块删除请求的情况下,接收存储节点转发的区块删除请求,区块删除请求包括目标区块号;
S202:暂停区块打包操作,在确定目标区块号对应的区块满足预设删除条件的情况下,生成删除记录区块,删除记录区块中存储有目标区块号,以及依据目标区块号类型确定的哈希值和目标数据,预设删除条件至少包括目标区块号对应的区块类型为头部交易区块或尾部交易区块;
由于交易区块是由领导节点周期性产生的,客户端向存储节点发送交易请求,交易请求经过存储节点验证后,存储节点将交易请求转发到领导节点组,领导节点组缓存一批交易后,按时间对交易进行排序,每个打包周期领导节点组选取一批交易打包成交易区块,将交易区块同步到存储节点,存储节点对交易区块校验后,将交易区块存储到区块链上。客户端可以从存储节点读取该交易区块,以确认交易是否已上链。
当目标区块号对应的交易区块为尾部交易区块时,若在接收到区块删除请求后,存储节点又存储了新的交易区块,则目标区块号对应的交易区块不再为尾部交易区块,无法被删除。为了避免新生成的交易区块导致目标区块号对应的交易区块无法被删除,领导节点在接收到区块删除请求后暂停区块打包操作。
领导节点在确定目标区块号对应的区块类型为头部交易区块或尾部交易区块的情况下,向所有存储节点广播携带有目标区块号的删除决议;
领导节点接收存储节点在确定目标区块号对应的区块存储的数据满足预设条件的情况下发送的签名后的删除决议;
领导节点在预设时间内接收到的具有有效签名的删除决议的数量大于预设比例的情况下,生成删除记录区块。
具体的,当目标区块号对应的区块类型为头部交易区块时,有两种生成删除记录区块的方法。
方法一
正常情况下,若删除头部交易区块,指向创世区块(Gensis block)的交易区块被删除,会令创世区块成为一个孤儿块,从而丢失。为了避免这种情况的发生,对区块链的链结构进行改进,请参阅图4,为每个交易区块(block)增加一个对创世区块的指向,从而维护区块链结构的完整。
这种情况下生成的删除记录区块包括目标区块号以及签名后的删除决议。
方法二
本方法对传统的单向哈希算法进行改进,在删除前n个区块的同时替换哨兵区块的内容,从而保持严格意义上的区块链哈希值的连续性。
传统哈希算法:
假设上一个区块i-1的内容为contenti-1,下一个区块i对上一个区块的hash引用为prevHashi,即下一个区块i的哈希值为prevHashi。
则,传统的区块链采用单向哈希算法函数,其表现形式如下
prevHashi=H(contenti-1)
其中,H()为哈希函数,具有单向性和不可碰撞性。即,从content正向计算得到prevHash很快,但是反推则几乎不可能。
本实施例中改进的复合哈希算法:
引入复合哈希函数替代原来的哈希函数,即
prevHashi=H(contenti-1)=g(f(contenti-1))
其中,g(),f()分别为独立的单向哈希函数,其复合计算成为新的哈希计算方式。
改进的下一个区块的哈希值prevhash计算方式:
有了复合哈希算法还不够,还需要根据不同的区块改进哈希计算方式:
对0号区块,有
prevHash0=g(contentheader)
对1号区块及其后所有的区块,有
prevHashi=g(f(contenti-1))
因此,新的哈希计算方式,仍然具有单向性和不可碰撞性。
在有了新的哈希计算方式后,接下来考虑头部交易区块。原因是,在头部交易区块的删除操作发生前,0号块的prevHash和头部交易区块的内容满足prevHash0=g(contentheader)。但是一旦头部交易区块的删除操作发生后,原先的0号区块被新的区块代替,新的0号区块的prevHash无法满足上述公式,打破了哈希连续性。
因此,需要用新的头部交易区块替换旧的头部交易区块。替换方式如下:
假设被删除的头部交易区块为0~i-1,则新的头部交易区块的内容content满足
contentnew_header=f(contenti-1)
替换后满足
完全没有打破哈希的连续性。
对于此种处理方式,重新构建的链如下图5所示。
当目标区块号对应的区块类型为尾部交易区块时,生成删除记录区块的方法如下:
假设删除的块为m-n。
由于删除时保证了同一时间只有一个删除操作,且同周期内的新区块生成暂停,因此尾部删除容易许多。
删除记录区块中只需记录删除的块跨度m-n即可,即只需记录目标区块号即可。同时,删除记录区块中的哈希值prevHash计算方式如下:
若m>0,则
prevHashdelete=g(f(contentm-1))
若m=0,则
prevHashdelete=g(contentheader)
请参阅图6,删除目标区块号对应的交易区块后,只需将删除记录区块存储在当前区块链的尾部。
S203:将删除记录区块广播到所有存储节点,使所有存储节点根据删除记录区块执行对目标区块号对应的区块的删除操作。
基于上述实施例公开的一种应用于存储节点的区块删除方法,本实施例对应公开了一种应用于存储节点的区块删除装置,请参阅图7,该装置包括:
删除请求收发单元701,用于接收客户端发起的区块删除请求,并将区块删除请求转发到领导节点,区块删除请求包括目标区块号;
删除记录区块接收单元702,用于接收领导节点广播的删除记录区块,删除记录区块是领导节点在确定目标区块号对应的区块满足预设删除条件的情况下生成的,删除记录区块中存储有目标区块号,以及依据目标区块号类型确定的哈希值和目标数据,预设删除条件至少包括目标区块号对应的区块类型为头部交易区块或尾部交易区块;
区块删除单元703,用于删除目标区块号对应的区块,得到当前区块链;
删除记录区块存储单元704,用于将删除记录区块存储在当前区块链的尾部;
哨兵区块内容更新单元705,用于将哨兵区块的内容更新为目标数据。
可选的,当所述目标区块号对应的区块类型为头部交易区块时,所述删除记录区块的哈希值是对区块链的尾部区块的内容进行哈希计算后得到的,对所述目标数据进行哈希计算得到的哈希值与所述目标区块号对应的区块后的交易区块的哈希值一致。
可选的,当所述目标区块号对应的区块类型为尾部交易区块时,所述删除记录区块的哈希值是对所述目标区块号对应的区块前的交易区块内容进行哈希计算得到的,所述目标数据与所述哨兵区块的内容一致。
可选的,所述删除记录区块接收单元,具体用于:
在所述领导节点确定所述目标区块号对应的区块类型为头部交易区块或尾部交易区块的情况下,接收所述领导节点广播的携带有所述目标区块号的删除决议;
在确定所述目标区块号对应的区块存储的数据满足预设条件的情况下,对删除决议进行签名,并将签名后的删除决议发送到所述领导节点;
在所述领导节点根据在预设时间内接收到的具有有效签名的删除决议的数量确定所述目标区块号对应的区块满足预设删除条件的情况下,接收所述领导节点广播的删除记录区块。
可选的,所述区块链中的每个交易区块还包括指向所述创世区块的链接。
可选的,所述区块链中相邻两个区块中,后一个区块的哈希值是利用复合哈希函数对前一个区块的内容进行哈希计算后得到的。
基于上述实施例公开的一种应用于领导节点的区块删除方法,本实施例对应公开了一种应用于领导节点的区块删除装置,请参阅图8,所述装置包括:
删除请求接收单元801,用于在所述存储节点接收到所述客户端发起的区块删除请求的情况下,接收所述存储节点转发的所述区块删除请求,所述区块删除请求包括目标区块号;
删除记录区块生成单元802,用于暂停区块打包操作,在确定所述目标区块号对应的区块满足预设删除条件的情况下,生成删除记录区块,所述删除记录区块中存储有所述目标区块号,以及依据所述目标区块号类型确定的哈希值和目标数据,所述预设删除条件至少包括所述目标区块号对应的区块类型为头部交易区块或尾部交易区块;
删除记录区块广播单元803,用于将所述删除记录区块广播到所有所述存储节点,使所有所述存储节点根据所述删除记录区块执行对所述目标区块号对应的区块的删除操作。
可选的,所述删除记录区块生成单元,具体用于:
在确定所述目标区块号对应的区块类型为头部交易区块或尾部交易区块的情况下,向所有所述存储节点广播携带有所述目标区块号的删除决议;
接收所述存储节点在确定所述目标区块号对应的区块存储的数据满足预设条件的情况下发送的签名后的删除决议;
在预设时间内接收到的具有有效签名的删除决议的数量大于预设比例的情况下,生成所述删除记录区块。
本实施例还公开了一种区块链系统,包括:至少一个领导节点、客户端和存储节点,所述客户端与所述存储节点一一对应,所述存储节点存储的区块链依次包括创世区块、哨兵区块和至少一个交易区块;
所述客户端,用于向与其对应的所述存储节点发起区块删除请求,所述区块删除请求包括目标区块号;
所述存储节点,用于接收所述区块删除请求,并将所述区块删除请求转发到所述领导节点;
所述领导节点,用于在接收到所述区块删除请求的情况下,暂停区块打包操作,在确定所述目标区块号对应的区块满足预设删除条件的情况下,生成删除记录区块,并将所述删除记录区块广播到所有所述存储节点,所述删除记录区块中存储有所述目标区块号,以及依据所述目标区块号类型确定的哈希值和目标数据,所述预设删除条件至少包括所述目标区块号对应的区块类型为头部交易区块或尾部交易区块;
所述存储节点接收所述删除记录区块,删除所述目标区块号对应的区块,得到当前区块链,将所述删除记录区块存储在所述当前区块链的尾部,并将所述哨兵区块的内容更新为所述目标数据。
本实施例公开的区块链系统,在需要删除区块时,不需要在放弃待删除区块所在的区块链后重新生成整条区块链,只需在删除目标区块号对应的区块后,将删除记录区块存储在当前区块链的尾部,更新哨兵区块的内容即可。其中,删除记录区块用于记录删除操作,使对区块链的任何操作均可追溯,通过更新哨兵区块的内容,使对哨兵区块更新后的内容进行哈希计算后得到的哈希值与当前区块链中哨兵区块后的交易区块的哈希值一致,保证当前区块链中区块哈希值的连续性。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。