区块链中修改数据的方法、系统、设备及存储介质与流程

文档序号:25992210发布日期:2021-07-23 21:04阅读:193来源:国知局
区块链中修改数据的方法、系统、设备及存储介质与流程

本申请属于区块链技术领域,具体涉及一种区块链中修改数据的方法、系统、设备及存储介质。



背景技术:

区块链具有去中心化、不可篡改、可溯源的特性,区块链中所有节点同步记账,对于记录的数据,各节点可相互验证,从而能保证记录的数据不容易被篡改。但正因为区块链不可篡改的特性,导致区块链中的数据录入错误的情况下,很难对录入错误的数据进行更正。



技术实现要素:

本申请提出一种区块链中修改数据的方法、系统、设备及存储介质,当监管设备检测出待变更数据时,通过全网投票选举出一个节点,该节点通过回滚执行来修改待变更数据,实现了对录入错误的数据进行修改,同时保证了数据修改的公平公正公开。

本申请第一方面实施例提出了一种区块链中修改数据的方法,包括:

监管设备检测到待变更数据时,发起全网投票,根据获得的投票记录,确定出负责修改所述待变更数据的第一节点设备,根据所述投票记录生成分叉标志,发送所述分叉标志、所述待变更数据对应的更正后数据及区块高度给所述第一节点设备;

所述第一节点设备根据所述分叉标志、所述待变更数据对应的更正后数据及区块高度,对所述待变更数据对应的区块链进行回滚执行,生成新区块;将所述新区块存储在所述待变更数据对应的区块链上,形成分叉链;

所述第一节点设备对所述分叉链包括的旧链上区块高度大于所述新区块的区块高度的每个区块进行回滚执行,将回滚执行的每个区块均存储在所述分叉链包括的新链上,直至所述新链的区块高度大于或等于所述旧链的区块高度;

第二节点设备执行所述区块链对应的交易生成区块,从所述分叉链中确定包含所述分叉标志的支链,将生成的区块存储在所述支链上,所述第二节点设备为任一区块链节点设备。

在本申请的一些实施例中,所述监管设备检测到待变更数据时,发起全网投票,根据获得的投票记录,确定出负责修改所述待变更数据的第一节点设备,包括:

监管设备检测到待变更数据时,发送投票请求给每个区块链节点设备,所述投票请求中包括多个候选节点的标识信息;

所述监管设备接收每个区块链节点设备发送的投票结果,统计每个候选节点的得票数,生成投票记录,所述投票记录中包括每个候选节点的标识信息与得票数的对应关系;

所述监管设备从所述投票记录中确定出得票数最多的候选节点,将确定出的候选节点作为负责修改所述待变更数据的第一节点设备。

在本申请的一些实施例中,所述监管设备根据所述投票记录生成分叉标志,发送所述分叉标志、所述待变更数据对应的更正后数据及区块高度给所述第一节点设备,包括:

所述监管设备对所述投票记录进行哈希运算,将得到的哈希值作为分叉标志;

所述监管设备确定所述待变更数据所在区块的区块高度,所述区块高度用于指示所述待变更数据在区块链中的位置;

所述监管设备根据所述第一节点设备的标识信息,将所述分叉标志、所述待变更数据对应的区块高度以及更正后数据发送给所述第一节点设备。

在本申请的一些实施例中,所述第一节点设备根据所述分叉标志、所述待变更数据对应的更正后数据及区块高度,对所述待变更数据对应的区块链进行回滚执行,生成新区块,包括:

所述第一节点设备根据所述待变更数据对应的区块高度,从区块链中定位出所述待变更数据所属的区块;

所述第一节点设备从定位出的所述区块中获取业务数据,将所述业务数据中的所述待变更数据修改为所述更正后数据;

所述第一节点设备依据修改后的业务数据重新执行业务处理,得到处理结果,并重新计算所述定位出的区块对应的哈希值;

所述第一节点设备将修改后的业务数据、处理结果、重新计算的哈希值以及所述分叉标志组装成新区块。

在本申请的一些实施例中,所述第一节点设备对所述分叉链包括的旧链上区块高度大于所述新区块的区块高度的每个区块进行回滚执行,包括:

对于分叉链包括的旧链上区块高度大于所述新区块的区块高度的每个区块,按照区块高度从低到高的顺序,所述第一节点设备依次回滚执行所述每个区块;

所述第一节点设备对所述每个区块的回滚执行仅执行涉及智能合约的交易处理。

在本申请的一些实施例中,所述方法还包括:

当存在属于同一区块链的多个待变更数据时,所述监管设备确定每个待变更数据所属区块的区块高度,发送所述分叉标志、回滚顺序信息、每个待变更数据对应的更正后数据及对应的区块高度给所述第一节点设备,所述回滚顺序信息用于指示按照每个待变更数据对应的区块高度由低到高的顺序进行回滚执行;

所述第一节点设备所述分叉标志、每个待变更数据对应的更正后数据及对应的区块高度,按照所述回滚顺序信息指示的回滚顺序,依次每个待变更数据都进行修改,以使分叉链中新链追上旧链时完成回滚操作。

在本申请的一些实施例中,所述方法还包括:

所述第一节点设备在回滚执行过程中,每当在所述新链上生成一个新区块,所述第一节点设备就比较该新区块的区块高度与旧链当前最高的区块高度;

若该新区块的区块高度小于旧链上最高的区块高度,则所述第一节点设备继续执行回滚操作;若比较出该新区块的区块高度大于或等于旧链上最高的区块高度,则停止回滚操作,发送回滚完成通知给所述监管设备。

本申请第二方面的实施例提供了一种区块链中修改数据的系统,包括:

监管设备,用于检测到待变更数据时,发起全网投票,根据获得的投票记录,确定出负责修改所述待变更数据的第一节点设备,根据所述投票记录生成分叉标志,发送所述分叉标志、所述待变更数据对应的更正后数据及区块高度给所述第一节点设备;

所述第一节点设备,用于根据所述分叉标志、所述待变更数据对应的更正后数据及区块高度,对所述待变更数据对应的区块链进行回滚执行,生成新区块;将所述新区块存储在所述待变更数据对应的区块链上,形成分叉链;对所述分叉链包括的旧链上区块高度大于所述新区块的区块高度的每个区块进行回滚执行,将回滚执行的每个区块均存储在所述分叉链包括的新链上,直至所述新链的区块高度大于或等于所述旧链的区块高度;

第二节点设备,用于执行所述区块链对应的交易生成区块,从所述分叉链中确定包含所述分叉标志的支链,将生成的区块存储在所述支链上,所述第二节点设备为任一区块链节点设备。

本申请第三方面的实施例提供了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述第一方面所述的方法的步骤。

本申请第四方面的实施例提供了一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述第一方面所述的方法的步骤。

本申请实施例中提供的技术方案,至少具有如下技术效果或优点:

在本申请实施例中,当监管设备检测出待变更数据时,通过全网投票选举出一个节点,该节点通过回滚执行来修改待变更数据,修改之后在原来的区块链上形成新链,后续任一区块链节点设备生成新区块后均优先存储在新链上,从而使得旧链被抛弃,实现了对录入错误的数据进行修改,同时保证了数据修改的公平公正公开。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变的明显,或通过本申请的实践了解到。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。

在附图中:

图1示出了本申请一实施例所提供的一种区块链中修改数据的方法的流程图;

图2示出了本申请一实施例所提供的一种区块链中修改数据的系统的结构示意图;

图3示出了本申请一实施例所提供的一种计算机设备的结构示意图;

图4示出了本申请一实施例所提供的一种存储介质的示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。

本申请的一些实施例提供了一种区块链中修改数据的方法,参见图1,该方法具体包括以下步骤:

步骤101:监管设备检测到待变更数据时,发起全网投票,根据获得的投票记录,确定出负责修改待变更数据的第一节点设备。

在区块链中业务一直在发生,监管设备负责审核业务执行过程中产生的各种数据,当监管设备检测到某个业务数据出现错误时,将该业务数据确定为待变更数据。此时监管设备发起全网投票。具体地,监管设备检测到待变更数据时,发送投票请求给每个区块链节点设备,该投票请求中包括多个候选节点的标识信息。候选节点为该业务的所有参与者对应的节点,标识信息为候选节点的设备标识,如mac地址、ip地址、设备序列号等。监管设备发送投票请求给区块链系统中的每个区块链节点设备之后,任意一个区块链节点设备接收到监管设备发送的投票请求后,在该业务对应的所有参与者之间进行投票,发送投票结果给监管设备,该投票结果中包括区块链节点设备所投的候选节点的标识信息。监管设备接收每个区块链节点设备发送的投票结果,确定出负责修改待变更数据的第一节点设备。

具体地,监管设备接收每个区块链节点设备发送的投票结果后,统计每个候选节点的得票数,生成投票记录,该投票记录中包括每个候选节点的标识信息与得票数的对应关系。监管设备从投票记录中确定出得票数最多的候选节点,将该候选节点确定为负责修改待变更数据的第一节点设备。

步骤102:监管设备根据投票记录生成分叉标志,发送分叉标志、待变更数据对应的更正后数据及待变更数据对应的区块高度给第一节点设备。

监管设备确定出负责修改待变更数据的第一节点设备后,根据投票记录生成分叉标志。具体地,监管设备对投票记录进行哈希运算,将得到的哈希值作为分叉标志。监管设备还确定待变更数据所在区块的区块高度,该区块高度能够指示待变更数据在区块链中的位置。监管设备根据第一节点设备的标识信息,将上述分叉标志、待变更数据对应的区块高度以及更正后数据发送给第一节点设备。

步骤103:第一节点设备根据分叉标志、待变更数据对应的更正后数据及区块高度,对待变更数据对应的区块链进行回滚执行,生成新区块。

第一节点设备接收监管设备发送的分叉标志、待变更数据对应的更正后数据及区块高度,根据待变更数据对应的区块高度从该业务的区块链中锁定待变更数据所属的区块,从该区块中获取业务数据,将该业务数据中的待变更数据修改为更正后数据。然后依据修改后的业务数据重新执行业务处理,得到处理结果,以及重新计算该区块对应的哈希值。第一节点设备将修改后的业务数据、处理结果、重新计算的哈希值以及上述分叉标志组装成新区块。

步骤104:第一节点设备将新区块存储在待变更数据对应的区块链上,形成分叉链。

第一节点设备回滚执行生成的新区块的区块高度即为待变更数据对应的区块高,该新区块与包括待变更数据的旧区块的区块高度相同。第一节点设备将新区块存储在待变更数据对应的区块链链上,则该区块链在当前区块高度处产生分叉,形成分叉链,即该区块链上在同一区块高度即存在包括待变更数据的旧区块,又存在包括待变更数据对应的更正后数据的新区块。

第一节点设备还将上述生成的新区块发送给与第一节点设备相邻的多个区块链节点设备,每个相邻的区块链节点设备再将该新区块转发给各自相邻的区块链节点设备,如此通过多次转发使该新区块被传播到区块链系统中的每个区块链节点设备。每个区块链节点设备接收到该新区块之后,都将该新区块存储在各自本地上待变更数据对应的区块链中。如此区块链系统中每个区块链节点设备上维护的该业务对应的区块链都形成了分叉链,实现各个区块链节点设备中该业务对应的区块链的同步。

步骤105:第一节点设备对分叉链包括的旧链上区块高度大于上述新区块的区块高度的每个区块进行回滚执行,将回滚执行的每个区块均存储在分叉链包括的新链上,直至新链的区块高度大于或等于旧链的区块高度。

对于分叉链包括的旧链上区块高度大于上述新区块的区块高度的每个区块,第一节点设备按照区块高度从低到高的顺序依次进行回滚执行,每个区块回滚执行的操作相同。下面以第一区块为例进行说明,第一区块为旧链上区块高度大于上述新区块的区块高度的任一区块。第一节点设备从第一区块中获取业务数据,判断该业务数据中是否包含与待变更数据相关的数据,与待变更数据相关的数据包括待变更数据本身和/或以待变更数据为参数通过运算得到的数据。若第一节点设备判断出该业务数据中包含与待变更数据相关的数据,则从分叉链包括的新链上查询该与待变更数据相关的数据对应的与更正后数据相关的数据,将该业务数据中与待变更数据相关的数据替换为与更正后数据相关的数据。例如,若业务数据包括以待变更数据为参数运算得到的数据,则将该数据替换为以更正后数据为参数按照相同的运算方式得到的数据。通过上述替换操作后,第一节点设备对该业务数据回滚执行涉及智能合约的交易处理,对于不涉及智能合约的数据保持不变,将上述替换操作后的业务数据、处理结果以及上述分叉标志组装成第一区块对应的新区块。

若第一节点设备判断出第一区块中的业务数据包括与待变更数据相关的数据,则直接对业务数据回滚执行涉及智能合约的交易处理,对于不涉及智能合约的数据保持不变,将上述替换操作后的业务数据、处理结果以及上述分叉标志组装成第一区块对应的新区块。

第一节点设备通过上述方式生成第一区块对应的新区块后,将该新区块存储在分叉链包括的新链上,并将该新区块传播到区块链系统中的每个区块链节点设备,以使区块链系统中每个区块链节点设备都将第一区块对应的新区块存储在各自本地该业务对应的分叉链包括的新链上。

对于旧链上区块高度大于上述新区块的区块高度的其他每个区块,都按照与上述第一区块相同的方式,按照区块高度由低到高的顺序依次生成每个区块对应的新区块,并将生成的新区块存储到分叉链包括的新链上。由于第一节点设备在回滚执行的过程中仅执行涉及到智能合约的交易,对于不涉及智能合约的部分保持其原有数据不变。因此第一节点设备的回滚执行速度很快,新链的区块高度会很快追赶上旧链的区块高度。

第一节点设备在执行上述回滚操作的过程中,每当在新链上生成一个新区块,第一节点设备就将该新区块的区块高度与旧链当前最高的区块的区块高度进行比较。若该新区块的区块高度小于旧链上最高的区块高度,则继续执行上述回滚操作。若比较出该新区块的区块高度大于或等于旧链上最高的区块高度,则表明对待变更数据的修改过程全部完成,停止回滚操作。

当第一节点设备通过上述方式判断出新链的区块高度追赶上旧链,停止回滚操作时,第一节点设备还可以发送回滚完成通知给监管设备,以使监管设备掌握对该待变更数据的修改进度已完成。

步骤106:第二节点设备执行上述区块链对应的交易生成区块,从分叉链中确定包含分叉标志的支链,将生成的区块存储在该支链上。

第一节点设备通过上述步骤103-105的操作完成回滚操作,且区块链系统中每个区块链节点设备存储的该业务的区块链中新链均追赶上旧链之后,当该区块链系统中再次发生该业务的处理时各区块链节点设备均优先将生成的区块存储在新链上。

具体地,第二节点设备执行上述区块链对应的交易生成区块后,检测分叉链包括的两条链中各自区块高度最高的区块中是否包含分叉标志,从而检测出新链中区块高度最高的区块中包含分叉标志,而旧链中区块高度最高的区块中不包含分叉标志。第二节点设备将生成的区块存在该新链上。第二节点设备为区块链系统中的任一区块链节点设备。

由于每个区块链节点设备都优先将后续生成的区块存储在分叉链中的新链上,从而使得旧链被抛弃,实现对区块链中出现错误的数据进行更正。

在本申请的另一些实施例中,监管设备可能会检测到同一业务对应的区块链中出现了多处需要修改的错误数据,这些需要错误数据可能属于同一区块,也可能属于不同的区块。当这些错误数据属于不同的区块时,同一时间该区块链中只能有一个回滚操作,多个错误数据不能并行回滚修改,否则容易产生混乱。对于这种情况,监管设备确定多个待变更数据所属区块的区块高度,发送分叉标志、回滚顺序信息、每个待变更数据对应的更正后数据及对应的区块高度给第一节点设备。其中,回滚顺序信息用于指示第一节点设备按照每个待变更数据对应的区块高度由低到高的顺序进行回滚执行。

第一节点设备先按照步骤103-105的操作对区块高度最低的待变更数据进行回滚更正,当回滚到区块高度等于区块高度次低的待变更数据对应的区块时,第一节点设备将业务数据中区块高度次低的待变更数据替换为对应的更正后数据,然后继续进行回滚,直至将每个待变更数据都进行修改,并实现分叉链中新链追上旧链时完成回滚操作。

在本申请实施例中,由于有问题的合约正在回滚重新执行,因此对待变更数据进行回滚修正时第一节点设备不进行有问题合约的交易执行,但不影响其他合约的执行。

在本申请实施例中,当监管设备检测出待变更数据时,通过全网投票选举出一个节点,该节点通过回滚执行来修改待变更数据,回滚过程中仅对涉及智能合约的交易进行执行,不涉及智能合约的部分不执行,由于仅部分执行,因此回滚速度很快,分叉链中新链会很快追赶上旧链,后续任一区块链节点设备生成新区块后均优先存储在新链上,从而使得旧链被抛弃,实现了对录入错误的数据进行修改,同时保证了数据修改的公平公正公开。

本申请实施例提供了一种区块链中修改数据的系统,该系统用于执行上述任一实施例所述的区块链中修改数据的方法,如图2所示,该系统包括:

监管设备201,用于检测到待变更数据时,发起全网投票,根据获得的投票记录,确定出负责修改待变更数据的第一节点设备202,根据投票记录生成分叉标志,发送分叉标志、待变更数据对应的更正后数据及区块高度给第一节点设备202;

第一节点设备202,用于根据分叉标志、待变更数据对应的更正后数据及区块高度,对待变更数据对应的区块链进行回滚执行,生成新区块;将新区块存储在待变更数据对应的区块链上,形成分叉链;对分叉链包括的旧链上区块高度大于新区块的区块高度的每个区块进行回滚执行,将回滚执行的每个区块均存储在分叉链包括的新链上,直至新链的区块高度大于或等于旧链的区块高度;

第二节点设备203,用于执行区块链对应的交易生成区块,从分叉链中确定包含分叉标志的支链,将生成的区块存储在支链上,第二节点设备203为任一区块链节点设备。

监管设备201,用于检测到待变更数据时,发送投票请求给每个区块链节点设备,投票请求中包括多个候选节点的标识信息;接收每个区块链节点设备发送的投票结果,统计每个候选节点的得票数,生成投票记录,投票记录中包括每个候选节点的标识信息与得票数的对应关系;从投票记录中确定出得票数最多的候选节点,将确定出的候选节点作为负责修改待变更数据的第一节点设备202。

监管设备201,用于对投票记录进行哈希运算,将得到的哈希值作为分叉标志;确定待变更数据所在区块的区块高度,区块高度用于指示待变更数据在区块链中的位置;根据第一节点设备202的标识信息,将分叉标志、待变更数据对应的区块高度以及更正后数据发送给第一节点设备202。

第一节点设备202,用于根据待变更数据对应的区块高度,从区块链中定位出待变更数据所属的区块;从定位出的区块中获取业务数据,将业务数据中的待变更数据修改为更正后数据;依据修改后的业务数据重新执行业务处理,得到处理结果,并重新计算定位出的区块对应的哈希值;将修改后的业务数据、处理结果、重新计算的哈希值以及分叉标志组装成新区块。

第一节点设备202,用于对于分叉链包括的旧链上区块高度大于新区块的区块高度的每个区块,按照区块高度从低到高的顺序,依次回滚执行每个区块;对每个区块的回滚执行仅执行涉及智能合约的交易处理。

监管设备201,用于当存在属于同一区块链的多个待变更数据时,确定每个待变更数据所属区块的区块高度,发送分叉标志、回滚顺序信息、每个待变更数据对应的更正后数据及对应的区块高度给第一节点设备202,回滚顺序信息用于指示按照每个待变更数据对应的区块高度由低到高的顺序进行回滚执行;

第一节点设备202,用于根据分叉标志、每个待变更数据对应的更正后数据及对应的区块高度,按照回滚顺序信息指示的回滚顺序,依次每个待变更数据都进行修改,以使分叉链中新链追上旧链时完成回滚操作。

第一节点设备202,用于在回滚执行过程中,每当在新链上生成一个新区块,第一节点设备202就比较该新区块的区块高度与旧链当前最高的区块高度;若该新区块的区块高度小于旧链上最高的区块高度,则继续执行回滚操作;若比较出该新区块的区块高度大于或等于旧链上最高的区块高度,则停止回滚操作,发送回滚完成通知给监管设备201。

在本申请实施例中,当监管设备检测出待变更数据时,通过全网投票选举出一个节点,该节点通过回滚执行来修改待变更数据,回滚过程中仅对涉及智能合约的交易进行执行,不涉及智能合约的部分不执行,由于仅部分执行,因此回滚速度很快,分叉链中新链会很快追赶上旧链,后续任一区块链节点设备生成新区块后均优先存储在新链上,从而使得旧链被抛弃,实现了对录入错误的数据进行修改,同时保证了数据修改的公平公正公开。

本申请实施例提供了一种计算机设备。如图3所示,该计算机设备包括通过系统总线连接的处理器、存储介质、存储器和网络接口。其中,该计算机设备的存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种区块链中修改数据的方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种区块链中修改数据的方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序。在本申请实施例中计算机设备可以为监管设备,用于进行回滚执行的第一节点设备,或者作为任一区块链节点设备的第二节点设备。当该计算机设备为监管设备时,处理器执行计算机程序时实现以下步骤:检测到待变更数据时,发起全网投票,根据获得的投票记录,确定出负责修改待变更数据的第一节点设备,根据投票记录生成分叉标志,发送分叉标志、待变更数据对应的更正后数据及区块高度给第一节点设备。

当该计算机设备为第一节点设备时,处理器执行计算机程序时实现以下步骤:根据分叉标志、待变更数据对应的更正后数据及区块高度,对待变更数据对应的区块链进行回滚执行,生成新区块;将新区块存储在待变更数据对应的区块链上,形成分叉链;对分叉链包括的旧链上区块高度大于新区块的区块高度的每个区块进行回滚执行,将回滚执行的每个区块均存储在分叉链包括的新链上,直至新链的区块高度大于或等于旧链的区块高度。

当该计算机设备为第二节点设备时,处理器执行计算机程序时实现以下步骤:执行区块链对应的交易生成区块,从分叉链中确定包含分叉标志的支链,将生成的区块存储在支链上,第二节点设备为任一区块链节点设备。

当该计算机设备为监管设备时,处理器执行计算机程序时还可以实现以下步骤:检测到待变更数据时,发送投票请求给每个区块链节点设备,投票请求中包括多个候选节点的标识信息;接收每个区块链节点设备发送的投票结果,统计每个候选节点的得票数,生成投票记录,投票记录中包括每个候选节点的标识信息与得票数的对应关系;从投票记录中确定出得票数最多的候选节点,将确定出的候选节点作为负责修改待变更数据的第一节点设备;对投票记录进行哈希运算,将得到的哈希值作为分叉标志;确定待变更数据所在区块的区块高度,区块高度用于指示待变更数据在区块链中的位置;根据第一节点设备的标识信息,将分叉标志、待变更数据对应的区块高度以及更正后数据发送给第一节点设备。

当该计算机设备为第一节点设备时,处理器执行计算机程序时还可以实现以下步骤:根据待变更数据对应的区块高度,从区块链中定位出待变更数据所属的区块;从定位出的区块中获取业务数据,将业务数据中的待变更数据修改为更正后数据;依据修改后的业务数据重新执行业务处理,得到处理结果,并重新计算定位出的区块对应的哈希值;将修改后的业务数据、处理结果、重新计算的哈希值以及分叉标志组装成新区块;对于分叉链包括的旧链上区块高度大于新区块的区块高度的每个区块,按照区块高度从低到高的顺序,依次回滚执行每个区块;对每个区块的回滚执行仅执行涉及智能合约的交易处理。

当该计算机设备为监管设备时,处理器执行计算机程序时还可以实现以下步骤:当存在属于同一区块链的多个待变更数据时,确定每个待变更数据所属区块的区块高度,发送分叉标志、回滚顺序信息、每个待变更数据对应的更正后数据及对应的区块高度给第一节点设备,回滚顺序信息用于指示按照每个待变更数据对应的区块高度由低到高的顺序进行回滚执行。

当该计算机设备为第一节点设备时,处理器执行计算机程序时还可以实现以下步骤:根据分叉标志、每个待变更数据对应的更正后数据及对应的区块高度,按照回滚顺序信息指示的回滚顺序,依次每个待变更数据都进行修改,以使分叉链中新链追上旧链时完成回滚操作。

当该计算机设备为第一节点设备时,处理器执行计算机程序时还可以实现以下步骤:在回滚执行过程中,每当在新链上生成一个新区块,就比较该新区块的区块高度与旧链当前最高的区块高度;若该新区块的区块高度小于旧链上最高的区块高度,则继续执行回滚操作;若比较出该新区块的区块高度大于或等于旧链上最高的区块高度,则停止回滚操作,发送回滚完成通知给监管设备。

本申请实施例还提出了一种存储有计算机可读指令的存储介质,如图4所示,该计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行以下步骤:监管设备检测到待变更数据时,发起全网投票,根据获得的投票记录,确定出负责修改待变更数据的第一节点设备,根据投票记录生成分叉标志,发送分叉标志、待变更数据对应的更正后数据及区块高度给第一节点设备;第一节点设备根据分叉标志、待变更数据对应的更正后数据及区块高度,对待变更数据对应的区块链进行回滚执行,生成新区块;将新区块存储在待变更数据对应的区块链上,形成分叉链;第一节点设备对分叉链包括的旧链上区块高度大于新区块的区块高度的每个区块进行回滚执行,将回滚执行的每个区块均存储在分叉链包括的新链上,直至新链的区块高度大于或等于旧链的区块高度;第二节点设备执行区块链对应的交易生成区块,从分叉链中确定包含分叉标志的支链,将生成的区块存储在支链上,第二节点设备为任一区块链节点设备。

处理器还可以执行以下步骤:监管设备检测到待变更数据时,发送投票请求给每个区块链节点设备,投票请求中包括多个候选节点的标识信息;监管设备接收每个区块链节点设备发送的投票结果,统计每个候选节点的得票数,生成投票记录,投票记录中包括每个候选节点的标识信息与得票数的对应关系;监管设备从投票记录中确定出得票数最多的候选节点,将确定出的候选节点作为负责修改待变更数据的第一节点设备。

处理器还可以执行以下步骤:监管设备对投票记录进行哈希运算,将得到的哈希值作为分叉标志;监管设备确定待变更数据所在区块的区块高度,区块高度用于指示待变更数据在区块链中的位置;监管设备根据第一节点设备的标识信息,将分叉标志、待变更数据对应的区块高度以及更正后数据发送给第一节点设备。

处理器还可以执行以下步骤:第一节点设备根据待变更数据对应的区块高度,从区块链中定位出待变更数据所属的区块;第一节点设备从定位出的区块中获取业务数据,将业务数据中的待变更数据修改为更正后数据;第一节点设备依据修改后的业务数据重新执行业务处理,得到处理结果,并重新计算定位出的区块对应的哈希值;第一节点设备将修改后的业务数据、处理结果、重新计算的哈希值以及分叉标志组装成新区块。

处理器还可以执行以下步骤:对于分叉链包括的旧链上区块高度大于新区块的区块高度的每个区块,按照区块高度从低到高的顺序,第一节点设备依次回滚执行每个区块;第一节点设备对每个区块的回滚执行仅执行涉及智能合约的交易处理。

处理器还可以执行以下步骤:当存在属于同一区块链的多个待变更数据时,监管设备确定每个待变更数据所属区块的区块高度,发送分叉标志、回滚顺序信息、每个待变更数据对应的更正后数据及对应的区块高度给第一节点设备,回滚顺序信息用于指示按照每个待变更数据对应的区块高度由低到高的顺序进行回滚执行;第一节点设备根据分叉标志、每个待变更数据对应的更正后数据及对应的区块高度,按照回滚顺序信息指示的回滚顺序,依次每个待变更数据都进行修改,以使分叉链中新链追上旧链时完成回滚操作。

处理器还可以执行以下步骤:第一节点设备在回滚执行过程中,每当在新链上生成一个新区块,第一节点设备就比较该新区块的区块高度与旧链当前最高的区块高度;若该新区块的区块高度小于旧链上最高的区块高度,则第一节点设备继续执行回滚操作;若比较出该新区块的区块高度大于或等于旧链上最高的区块高度,则停止回滚操作,发送回滚完成通知给监管设备。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等存储介质,或随机存储记忆体(randomaccessmemory,ram)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1