用于区块链系统的数据迁移方法、设备和存储介质与流程

文档序号:13445817阅读:597来源:国知局
用于区块链系统的数据迁移方法、设备和存储介质与流程

本发明涉及区块链系统,尤其涉及用于区块链系统的数据迁移方法、设备和存储介质。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术在互联网时代的创新应用模式。

狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。区块链技术的两大特性为可追溯以及不可篡改。



技术实现要素:

但是,随着区块链技术的迅速发展,区块链系统本身也需要进行升级和改造,尤其是在区块链的底层数据结构修改的情况下,升级和更新后的新的区块链系统无法识别旧的区块链系统遗留下来的数据。因此,需要将旧的区块链系统遗留下来的数据迁移到新的区块链系统中。但是,由于区块链系统的不可篡改的特性,新的区块链系统中的数据时间戳将会更新为迁移时的时间戳,而不是业务发生时的时间戳,这是一个不可避免的技术问题,也会造成使用区块链系统的严重的信任问题。目前并没有可行的方案能够解决这些问题。

因此,本申请针对上述问题中的至少一个问题提出了一种新的技术方案。

根据本发明的第一方面,提供了一种用于区块链系统的数据迁移方法,包括:在新区块链系统中创建新区块链的新创世区块,在所述新创世区块中记录其数据要被迁移的旧区块链系统中的旧区块链的相关信息,其中,所述旧区块链的相关信息包括所述旧区块链的要被迁移的数据的范围信息;根据所述范围信息,将所述旧区块链中的各个旧区块中所记录的各个旧事务转换为符合所述新区块链的新事务数据结构的新事务,并且将转换后的新事务迁移到所述新区块链中,其中,所述新区块链的新事务数据结构包括指示与该新事务对应的旧事务在所述旧区块链中的位置的追溯信息。

优选地,所述范围信息包括所述旧区块链中要被迁移的最后一个旧区块的旧区块标识。

优选地,所述转换的步骤包括:从所述旧区块链中的第一个旧区块开始依次读取所述旧区块链中的每一个旧区块,直至所述旧区块链中要被迁移的最后一个旧区块;对于所读取的每一个旧区块,按照该旧区块中所记录的各个旧事务的顺序依次读取该旧区块中所记录的每一个旧事务;以及对于所读取的每一个旧事务,解析该旧事务,将解析后的旧事务转换为符合所述新区块链的新事务数据结构的新事务。

优选地,所述旧区块链的相关信息还包括以下信息中的至少之一:所述旧区块链系统的访问方式信息,所述旧区块链的旧创世区块的区块头中所记录的信息,所述旧区块链中要被迁移的最后一个区块的区块头中所记录的信息,以及所述旧区块链的世界状态信息。

优选地,所述旧区块链系统的访问方式信息包括以下信息中的至少之一:所述旧区块链系统的组网方式信息,所述旧区块链系统中的所有节点的节点信息,所述旧区块链系统中的所有节点的互联网协议ip地址信息,以及所述旧区块链系统的应用程序访问接口地址信息。

优选地,所述追溯信息包括:所述旧区块链的调用地址信息,与该新事务对应的旧事务在所述旧区块链中的旧事务标识,以及所述旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块标识。

优选地,所述旧区块链的调用地址信息包括以下信息中的至少之一:所述旧区块链系统的应用程序访问接口地址信息,以及所述旧区块链系统中的一个或多个节点的调用地址信息。

优选地,所述新区块链的新创世区块是在所述新区块链启动时使用配置文件而创建的。

优选地,所述将转换后的新事务迁移到所述新区块链中包括:按照与转换后的新事务对应的旧事务在所述旧区块链系统中的所述旧区块链中的执行顺序,在所述新区块链系统中执行转换后的新事务。

优选地,所述数据迁移方法还包括:在完成从所述旧区块链到所述新区块链的数据迁移之后,利用所述新区块链中的新事务的新事务标识,使用所述新区块链上部署的智能合约来查询所述旧区块链中与该新事务对应的旧事务。

优选地,所述查询的步骤包括:利用所述新区块链中的新事务的新事务标识,查询所述新区块链中的新事务的新事务数据结构中所包括的追溯信息;以及利用所述追溯信息来查询所述旧区块链中与该新事务对应的旧事务。

优选地,所述利用所述追溯信息来查询所述旧区块链中与该新事务对应的旧事务的步骤包括:利用所述追溯信息中所包括的所述旧区块链的调用地址信息和与该新事务对应的旧事务在所述旧区块链中的旧事务标识,查询并且返回所述旧区块链中与该新事务对应的旧事务的旧事务信息;以及利用所述追溯信息中所包括的所述旧区块链的调用地址信息和所述旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块标识,查询并且返回所述旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块信息。

优选地,所述数据迁移方法还包括:在完成从所述旧区块链到所述新区块链的数据迁移之后,利用所述数据迁移方法进行从所述新区块链到下一个新区块链的数据迁移,以实现区块链的多次数据迁移。

根据本发明的第二方面,提供了一种计算机存储介质,其上存储有计算机指令,当所述计算机指令被计算机执行时使计算机执行如前述各项中任一项所述的用于区块链系统的数据迁移方法。

根据本发明的第三方面,提供了一种计算机实现的用于区块链的数据迁移设备,包括:存储器,存储有计算机指令;和处理器,耦接到存储器,执行所述计算机指令以执行如前述各项中任一项所述的用于区块链系统的数据迁移方法。

根据本发明的一些实施例,在由于区块链的底层数据结构修改而导致新旧区块链不兼容的情况下,可以在将旧的区块链系统遗留下来的数据迁移到新的区块链系统中的同时,也可以使得新区块链继承旧区块链的可信性,从而使得新的区块链系统也具有可追溯和不可篡改的特性。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

构成说明书的一部分的附图描述了本发明的实施例,并且连同说明书一起用于解释本发明的原理。

参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:

图1是示意性地示出根据本发明的实施例的用于区块链系统的数据迁移方法的流程图。

图2是示意性地示出根据本发明的实施例的将旧区块中的旧事务转换为新区块中的新事务的过程的流程图。

图3a是示意性地示出根据本发明的实施例的旧区块链的配置的示意图。

图3b是示意性地示出根据本发明的实施例的旧区块链中的旧事务数据结构的示意图。

图4a是示意性地示出根据本发明的实施例的新区块链的配置的示意图。

图4b是示意性地示出根据本发明的实施例的新区块链中的新事务数据结构的示意图。

图4c是示意性地示出根据本发明的实施例的新区块链中的新事务结构中的追溯信息的示意图。

图5是示意性地示出根据本发明的另一个实施例的用于区块链系统的数据迁移方法的流程图。

图6是示意性地示出根据本发明的另一个实施例的查询过程的流程图。

图7是示意性地示出根据本发明的另一个实施例的具体查询过程的流程图。

图8是示意性地示出根据本发明的又一个实施例的对区块链系统进行多次数据迁移的过程的示意图。

图9是示出可用于实施根据本发明的实施例的用于区块链系统的数据迁移方法的信息处理设备的示意性框图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的模块和步骤的相对布置、数字表达式和数值不限制本发明的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。

在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

图1是示意性地示出根据本发明的实施例的用于区块链系统的数据迁移方法100的流程图。

如图1所示,在步骤s101中,可以在新区块链系统中创建新区块链的新创世区块,在新创世区块中记录其数据要被迁移的旧区块链系统中的旧区块链的相关信息,其中,旧区块链的相关信息包括旧区块链的要被迁移的数据的范围信息。

根据本发明的一个实施例,新区块链的新创世区块可以是在新区块链启动时使用配置文件而创建的。也就是说,可以在新区块链启动时,使用配置文件来创建新区块链的新创世区块。

下面结合图4a来描述新区块链系统中所创建的新区块链的配置。图4a是示意性地示出根据本发明的实施例的新区块链的配置的示意图。

如图4a所示,新区块链包括新创世区块以及新区块1、新区块2、.......、新区块m等,其中m为大于或等于1的自然数。新创世区块包括区块头和区块体。新区块1、新区块2、.......、新区块m等中的每一个新区块包括区块头和区块体。新创世区块的区块头中可以记录该新创世区块的哈希值。另外,新创世区块的区块头中可以记录指向新区块1的指针,例如,指向新区块1的指针可以是新区块1的哈希值。各个新区块的区块头中可以记录该新区块本身的哈希值。具体地,例如,新区块1的区块头中可以记录该新区块1本身的哈希值。另外,各个新区块的区块头可以记录指向下一个新区块的指针,例如,指向下一个新区块的指针可以是下一个新区块的哈希值。具体地,例如,新区块1的区块头中可以记录指向新区块2的指针,例如,指向新区块2的指针可以是新区块2的哈希值。因此,新创世区块和各个新区块(即,新区块1、新区块2、.......、新区块m等)可以通过上述指针(例如,哈希值)彼此链接起来以形成新区块链。

如图4a所示,新创世区块的区块体中可以记录其数据要被迁移的旧区块链系统中的旧区块链的相关信息。也就是说,在新区块链系统中创建新区块链的新创世区块时,可以将其数据要被迁移的旧区块链系统中的旧区块链的相关信息记录在新创世区块中,尤其是,例如记录在新创世区块的区块体中。一般,新创世区块中可以不包括普通业务形式的新事务。各个新区块(即,新区块1、新区块2、.......、新区块m等)的区块体中可以记录一个或多个普通业务形式的新事务。例如,新区块1的区块体中可以记录新事务1和新事务2,新区块2的区块体中可以记录新事务3和新事务4,新区块m的区块体中可以记录新事务2m-1和新事务2m,等等。本领域技术人员应该明白,各个新区块中记录的新事务的数量可以相同,也可以不同。

下面结合图3a来描述其数据要被迁移的旧区块链系统中的旧区块链的配置。图3a是示意性地示出根据本发明的实施例的旧区块链的配置的示意图。旧区块链的配置类似于新区块链的配置。

如图3a所示,旧区块链包括旧创世区块以及旧区块1、旧区块2、.......、旧区块n等,其中n为大于或等于1的自然数。旧创世区块包括区块头和区块体。旧区块1、旧区块2、.......、旧区块n等中的每一个旧区块包括区块头和区块体。旧创世区块的区块头中可以记录该旧创世区块的哈希值。另外,旧创世区块的区块头中可以记录指向旧区块1的指针,例如,指向旧区块1的指针可以是旧区块1的哈希值。各个旧区块的区块头中可以记录该旧区块本身的哈希值。具体地,例如,旧区块1的区块头中可以记录该旧区块1本身的哈希值。另外,各个旧区块的区块头可以记录指向下一个旧区块的指针,例如,指向下一个旧区块的指针可以是下一个旧区块的哈希值。具体地,例如,旧区块1的区块头中可以记录指向旧区块2的指针,例如,指向旧区块2的指针可以是旧区块2的哈希值。因此,旧创世区块和各个旧区块(即,旧区块1、旧区块2、.......、旧区块n等)可以通过上述指针(例如,哈希值)彼此链接起来以形成旧区块链。

如图3a所示,一般,旧创世区块中可以不包括普通业务形式的旧事务。另外,各个旧区块(即,旧区块1、旧区块2、.......、旧区块n等)的区块体中可以记录一个或多个普通业务形式的旧事务。例如,旧区块1的区块体中可以记录旧事务1、旧事务2和旧事务3,旧区块2的区块体中可以记录旧事务4、旧事务5和旧事务6,旧区块n的区块体中可以记录旧事务2n-2、旧事务2n-1和旧事务2n,等等。本领域技术人员应该明白,各个旧区块中记录的旧事务的数量可以相同,也可以不同。另外,本领域技术人员应该明白,各个旧区块中记录的旧事务的数量与上述新区块中记录的新事务的数量可以相同,也可以不同。

根据本发明的一个实施例,旧区块链的相关信息可以包括旧区块链的要被迁移的数据的范围信息。例如,旧区块链的相关信息可以包括与其数据要被迁移的旧区块链的诸如配置、状态等各个方面有关的各种信息。

一般,要被迁移到新区块链的旧区块链的数据的范围是有限的。而且,在将旧区块链的一定范围的数据迁移到新区块链之后,旧区块链可能会继续运行,从而会产生另外的数据。但是,这些另外的数据并不会被包含在新区块链中。因此,要被迁移到新区块链的旧区块链的数据的范围应该得到可信的确认。

为了对要被迁移到新区块链的旧区块链的数据的范围进行确认,根据本发明的一个实施例可以采用新区块链本身来记录指示该范围的范围信息。具体地,例如,可以在新区块链的新创世区块中记录指示要被迁移到新区块链的旧区块链的数据的范围的该范围信息。

根据本发明的一个实施例,范围信息可以包括旧区块链中要被迁移的最后一个旧区块的旧区块标识。

返回参考图3a,例如,如果希望将旧区块链中的旧区块1至旧区块n迁移到新区块链,则旧区块链中要被迁移的最后一个旧区块为“旧区块n”,其中,该最后一个旧区块“旧区块n”的旧区块标识为“n”。因此,上述范围信息可以包括旧区块链中要被迁移的最后一个旧区块“旧区块n”的旧区块标识“n”。

本领域技术人员应该明白,范围信息不限于上述实施例,而是可以采用其他信息作为上述范围信息。例如,可以采用旧区块链中要被迁移的最后一个旧区块的哈希值作为上述范围信息,等等。

根据本发明的一个实施例,旧区块链的相关信息还可以包括以下信息中的至少之一:旧区块链系统的访问方式信息,旧区块链的旧创世区块的区块头中所记录的信息,旧区块链中要被迁移的最后一个区块的区块头中所记录的信息,以及旧区块链的世界状态信息。

除了上述范围信息之外,旧区块链的相关信息还可以包括其他与旧区块链有关的各种信息。

例如,旧区块链的相关信息还可以包括旧区块链系统的访问方式信息。一般,旧区块链系统的访问方式信息可以包括全量的与旧区块链系统的架构、访问地址等有关的所有信息。

根据本发明的一个实施例,旧区块链系统的访问方式信息可以包括以下信息中的至少之一:旧区块链系统的组网方式信息,旧区块链系统中的所有节点的节点信息,旧区块链系统中的所有节点的互联网协议ip地址信息,以及旧区块链系统的应用程序访问接口地址信息。

例如,旧区块链系统的访问方式信息可以包括旧区块链系统的组网方式信息。一般,区块链系统可以采用诸如对等式网络(即,p2p网络)等各种网络形式来组织分散在各地的参与数据验证和记账的各个节点。因此,旧区块链系统的组网方式信息可以包括与旧区块链系统所采用的网络以及该网络中的各个节点之间的连接关系有关的信息。

又例如,旧区块链系统的访问方式信息可以包括旧区块链系统中的所有节点的节点信息。如上所述,一般,区块链系统可以包括分散在各地的参与数据验证和记账的各个节点。因此,旧区块链系统中的所有节点的节点信息可以包括与旧区块链系统中的各个节点有关的信息,例如,该节点所在的位置,该节点所属于的机构,该节点的类型等等。关于节点的类型,例如,区块链系统中的节点可以包括共识节点、记账节点等。

再例如,旧区块链系统的访问方式信息可以包括旧区块链系统中的所有节点的互联网协议ip地址信息。如上所述,一般,区块链系统可以采用诸如对等式网络(即,p2p网络)等各种网络形式来组织分散在各地的参与数据验证和记账的各个节点。因此,区块链系统中的各个节点一般具有在网络上的ip地址,从而可以通过节点的ip地址来访问该节点。

还例如,旧区块链系统的访问方式信息可以包括旧区块链系统的应用程序访问接口地址信息。一般,区块链系统具有应用程序访问接口地址,从而可以通过该区块链系统的应用程序访问接口地址来访问该区块链系统。

本领域技术人员应该明白,旧区块链系统的访问方式信息不限于上述列举的信息的示例,而是可以包括与旧区块链系统的架构、访问地址等有关的各种其他信息。

根据本发明的一个实施例,例如,旧区块链的相关信息还可以包括旧区块链的旧创世区块的区块头中所记录的信息。返回参考图3a,可以将旧区块链的旧创世区块的区块头中所记录的信息作为旧区块链的相关信息记录在新区块链的新创世区块中。一般,旧区块链的旧创世区块的区块头中所记录的信息是旧区块链的初始化的证据,其可以包括旧区块链的创世区块的哈希值等内容。

根据本发明的一个实施例,例如,旧区块链的相关信息还可以包括旧区块链中要被迁移的最后一个区块的区块头中所记录的信息。例如,旧区块链中要被迁移的最后一个区块的区块头中所记录的信息可以包括旧区块链中要被迁移的最后一个旧区块的区块标识、或者旧区块链中要被迁移的最后一个旧区块本身的哈希值等等。返回参考图3a,如果希望将旧区块链中的旧区块1至旧区块n迁移到新区块链,则旧区块链中要被迁移的最后一个旧区块为“旧区块n”。因此,可以将旧区块链中要被迁移的最后一个旧区块“旧区块n”的区块头中所记录的信息作为旧区块链的相关信息记录在新区块链的新创世区块中。实际上,旧区块链中要被迁移的最后一个区块的区块头中所记录的信息是指示要被迁移到新区块链的旧区块链的数据的范围的证据。

根据本发明的一个实施例,例如,旧区块链的相关信息还可以包括旧区块链的世界状态(worldstate)信息。一般,旧区块链的世界状态(worldstate)是在旧区块链运行时,通过使用默克尔树(merkeletree)对旧区块链的账本数据进行哈希运算而生成一个哈希的算法而得到的。实际上,旧区块链中要被迁移的第一个区块(参见图3a,旧创世区块)和最后一个区块(参见图3a,旧区块n)的区块头可以作为最简单的证据。

本领域技术人员应该明白,旧区块链的相关信息不限于上述列举的示例,而是可以包括与旧区块链的诸如配置、状态等各个方面有关的各种信息。

根据本发明的一个实施例,可以根据新区块链的新创世区块中所记录的旧区块链的相关信息来判断旧区块链中的数据是否被篡改了。

例如,为了判断旧区块链中的数据是否被篡改了,可以对旧区块链进行一次同步证明,即,从旧区块链中的第一个区块(参见图3a,旧创世区块)开始同步旧区块链中的所有区块,直至最后一个区块(参见图3a,旧区块n)。然后,可以将从同步的最后一个区块(参见图3a,旧区块n)得到的哈希值与新区块链的新创世区块中记录的旧区块链中要被迁移的最后一个区块的区块头中所记录的哈希值进行比较,并且可以将通过同步而运行出来的旧区块链的世界状态信息与新区块链的新创世区块中记录的旧区块链的世界状态(worldstate)信息进行比较,如果一致,则表示旧区块链中的数据没有被篡改,否则旧区块链中的数据就被篡改了。

返回参考图1,在步骤s101之后,用于区块链系统的数据迁移方法100前进到步骤s102。在步骤s102中,可以根据范围信息,将旧区块链中的各个旧区块中所记录的各个旧事务转换为符合新区块链的新事务数据结构的新事务,并且将转换后的新事务迁移到新区块链中,其中,新区块链的新事务数据结构包括指示与该新事务对应的旧事务在旧区块链中的位置的追溯信息。

例如,根据范围信息,可以确定需要将旧区块链中的哪些数据迁移到新区块链中。在确定了旧区块链中需要被迁移的数据的范围之后,就可以将该范围之内的旧区块链中的所有数据迁移到新区块链中。

下面分别结合图3b和图4b来描述旧区块链中的旧事务数据结构和新区块链中的新事务数据结构。图3b是示意性地示出根据本发明的实施例的旧区块链中的旧事务数据结构的示意图。另外,图4b是示意性地示出根据本发明的实施例的新区块链中的新事务数据结构的示意图。

如图3b所示,旧区块链中的每个旧事务的旧事务数据结构可以包括以下两个字段:旧事务标识301和旧事务本身303,其中,旧事务标识例如可以是一个32位的哈希值,旧事务本身303例如可以包括在旧区块链系统中运行得到的事务数据、旧事务的创建者签名、旧事务的创建者标识、旧事务的创建时间等。例如,返回参考图3a,对于旧区块链中的旧区块1中记录的旧事务1,该旧事务1的旧事务数据结构中所包括的旧事务标识301可以为“第一哈希值”,而该旧事务1的旧事务数据结构中所包括的旧事务本身303可以为“旧事务1本身中包含的事务数据、旧事务1的创建者签名、旧事务1的创建者标识、旧事务1的创建时间等”。

另外,如图4b所示,新区块链中的每个新事务的新事务数据结构可以包括以下三个字段:新事务标识401、追溯信息403和新事务本身405,其中,新事务标识例如可以是一个32位的哈希值,追溯信息可以指示与该新事务对应的旧事务在旧区块链中的位置,而新事务本身405例如可以包括在新区块链系统中运行得到的事务数据、新事务的创建者签名、新事务的创建者标识、新事务的创建时间等。例如,返回参考图4a,对于新区块链中的新区块1中记录的新事务1,该新事务1的新事务数据结构中所包括的新事务标识401可以为“第二哈希值”,该新事务1的新事务数据结构中所包括的追溯信息403可以指示与该新事务1对应的旧事务1在旧区块链中的位置,而该新事务1的新事务数据结构中所包括的新事务本身405可以为“新事务1本身中包括的事务数据、新事务1的创建者签名、新事务1的创建者标识、新事务1的创建时间等”。

在将旧区块链中的数据迁移到新区块链中的过程中,由于新区块链的新事务数据结构不同于旧区块链的旧事务数据结构,因此需要将符合旧区块链的旧事务数据结构的旧事务转换为符合新区块链的新事务数据结构的新事务,也就是说,需要进行从旧区块链的旧事务数据结构到新区块链的新事务数据结构的格式转换。

例如,对于旧区块链中的旧事务1,该旧事务1的旧事务数据结构可以包括该旧事务1的旧事务标识301(例如,“第一哈希值”)和该旧事务1的旧事务本身303(例如,“旧事务1本身中包含的事务数据、旧事务1的创建者签名、旧事务1的创建者标识、旧事务1的创建时间等”)。可以将旧事务1的旧事务数据结构转换为与该旧事务1对应的新事务1的新事务数据结构,该新事务1的新事务数据结构可以包括与该旧事务1对应的新事务1的新事务标识401(例如,“第二哈希值”)、指示与该新事务1对应的旧事务1在旧区块链中的位置的追溯信息403和与该旧事务1对应的新事务1的新事务本身405(例如,“新事务1本身中包含的事务数据、新事务1的创建者签名、新事务1的创建者标识、新事务1的创建时间等”),其中,可以将该旧事务1的旧事务标识301(例如,“第一哈希值”)包括在所述追溯信息403中,而且可以将该旧事务1的旧事务本身303(例如,“旧事务1本身中包含的事务数据、旧事务1的创建者签名、旧事务1的创建者标识、旧事务1的创建时间等”)转换为新事务1的新事务本身405(例如,“新事务1本身中包含的事务数据、新事务1的创建者签名、新事务1的创建者标识、新事务1的创建时间等”)。

下面结合图2来详细描述将旧区块中的旧事务转换为新区块中的新事务的过程。图2是示意性地示出根据本发明的实施例的将旧区块中的旧事务转换为新区块中的新事务的过程200的流程图。

如图2所示,在步骤s201中,可以从旧区块链中的第一个旧区块开始依次读取旧区块链中的每一个旧区块,直至旧区块链中要被迁移的最后一个旧区块。

例如,参考图3a,如果希望将旧区块链中的旧区块1至旧区块n的数据迁移到新区块链,则可以从旧区块链中的第一个旧区块“旧区块1”开始依次读取旧区块链中的每一个旧区块,直至旧区块链中要被迁移的最后一个旧区块“旧区块n”。

在步骤s201之后,过程200前进到步骤s203。在步骤s203中,对于所读取的每一个旧区块,可以按照该旧区块中所记录的各个旧事务的顺序依次读取该旧区块中所记录的每一个旧事务。

例如,参考图3a,对于所读取的旧区块1,可以按照该旧区块1中所记录的各个旧事务“旧事务1、旧事务2、旧事务3”的顺序依次读取该旧区块1中所记录的旧事务1、旧事务2和旧事务3。

在步骤s203之后,过程200前进到步骤s205。在步骤s205中,对于所读取的每一个旧事务,可以解析该旧事务,将解析后的旧事务转换为符合新区块链的新事务数据结构的新事务。

例如,参考图3a,对于所读取的旧事务1,可以解析该旧事务1,将解析后的旧事务1转换为符合新区块链的新事务数据结构的新事务1。注意,在解析所读取的旧事务时,可以根据该旧事务的旧事务数据结构来解析该旧事务。

根据本发明的一个实施例,在完成上述从旧区块链的旧事务数据结构到新区块链的新事务数据结构的格式转换之后,可以将转换后的新事务迁移到新区块链中。

根据本发明的一个实施例,所述将转换后的新事务迁移到新区块链中可以包括:按照与转换后的新事务对应的旧事务在旧区块链系统中的旧区块链中的执行顺序,在新区块链系统中执行转换后的新事务。

例如,参考图3a和图4b,假设旧事务1、旧事务2和旧事务3在旧区块链系统中的旧区块链中的执行顺序为先执行旧事务1、再执行旧事务2、最后执行旧事务3,并且旧事务1、旧事务2和旧事务3分别被转换为新事务1、新事务2和新事务3,则在新区块链系统按照如下顺序执行转换后的新事务1、新事务2和新事务3:先执行新事务1、再执行新事务2、最后执行新事务3。

注意,上述严格按照旧事务在旧区块链系统中的旧区块链中的执行顺序在新区块链系统中执行转换后的新事务的目的在于避免迁移后的新事务之间发生冲突。也就是说,为了避免迁移后的各个新事务之间发生冲突,如果迁移后的各个新事务之间存在执行上的先后顺序,则需要严格按照旧事务在旧区块链系统中的旧区块链中的执行顺序,等待在先的新事务执行完成之后,再执行在后的新事务。

返回参考图3b和图4b,通过比较图3b和图4b可知,与旧区块链中的每个旧事务的旧事务数据结构相比,新区块链中的每个新事务的新事务数据结构可以增加一个字段“追溯信息”,以指示与该新事务对应的旧事务在旧区块链中的位置。通过该追溯信息,可以获知与该新事务对应的旧事务在旧区块链中的位置,例如,可以获知与该新事务对应的旧事务在哪个旧区块链中的哪个旧区块中。

根据本发明的一个实施例,追溯信息可以包括:旧区块链的调用地址信息,与该新事务对应的旧事务在旧区块链中的旧事务标识,以及旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块标识。

下面结合图4c来描述新区块链中的新事务结构中的追溯信息。图4c是示意性地示出根据本发明的实施例的新区块链中的新事务结构中的追溯信息的示意图。

如图4c所示,追溯信息403可以包括以下三个字段:旧区块链的调用地址信息4031、旧事务标识4033和旧区块标识4035,其中,旧区块链的调用地址信息4031可以指示与该新事务对应的旧事务所在的旧区块链的调用地址,旧事务标识4033可以是与该新事务对应的旧事务在旧区块链中的旧事务标识,而旧区块标识4035可以是旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块标识。

例如,返回参考图3a和图4a,对于新区块链中的新区块1中记录的新事务1,该新事务1的新事务数据结构中所包括的追溯信息403可以包括:旧区块链的调用地址信息4031,其可以指示与该新事务1对应的旧事务1所在的旧区块链的调用地址;旧事务标识4033,其可以是与该新事务1对应的旧事务1在旧区块链中的旧事务标识“第一哈希值”;以及旧区块标识4035,其可以是旧区块链中与该新事务1对应的旧事务1所位于的旧区块1的旧区块标识“旧区块1”。

通过新区块链中的新事务的新事务结构中的追溯信息403中的旧区块链的调用地址信息4031,可以获得与该新事务1对应的旧事务1所在的旧区块链的调用地址。

因为新区块链中的新区块1中所记录的新事务1实际上是从旧区块链中的旧区块1中所记录的旧事务1迁移过来的,所以与该新事务1对应的旧事务1在旧区块链中应该具有旧事务标识“第一哈希值”,这也是与该新事务1对应的旧事务1在旧区块链中的直接证据。所以,通过新区块链中的新事务的新事务结构中的追溯信息403中的旧事务标识4033,可以获得与该新事务对应的旧事务在旧区块链中的旧事务标识。

另外,在用于判断旧事务1是否存在于旧区块链中的证据中,旧区块链中与该新事务1对应的旧事务1所位于的旧区块1的旧区块标识“旧区块1”也是很重要的信息。因此,通过新区块链中的新事务的新事务结构中的追溯信息403中的旧区块标识4035,可以获得旧区块链中与该新事务1对应的旧事务1所位于的旧区块1的旧区块标识“旧区块1”。

本领域技术人员应该明白,新区块链中的新事务结构中的追溯信息不限于上述列举的示例,而是可以包括能够指示与该新事务对应的旧事务在旧区块链中的位置的各种信息。

根据本发明的一个实施例,旧区块链的调用地址信息可以包括以下信息中的至少之一:旧区块链系统的应用程序访问接口地址信息,以及旧区块链系统中的一个或多个节点的调用地址信息。

例如,旧区块链的调用地址信息可以包括旧区块链系统的应用程序访问接口地址信息。如上所述,一般,区块链系统具有应用程序访问接口地址,从而可以通过该区块链系统的应用程序访问接口地址来访问该区块链系统。

又例如,旧区块链的调用地址信息可以包括旧区块链系统中的一个或多个节点的调用地址信息。如上所述,一般,区块链系统可以采用诸如对等式网络(即,p2p网络)等各种网络形式来组织分散在各地的参与数据验证和记账的各个节点,每个节点上可以分别存储该区块链系统中的区块链。因此,可以也通过旧区块链系统中的一个或多个节点的调用地址信息来调用旧区块链系统中的一个或多个节点,进而可以调用该一个或多个节点上存储的旧区块链系统中的旧区块链。

本领域技术人员应该明白,旧区块链的调用地址信息不限于上述列举的示例,而是可以包括能够调用到旧区块链的各种调用地址信息。

下面参考图5来描述根据本发明的另一个实施例的用于区块链系统的数据迁移方法。图5是示意性地示出根据本发明的另一个实施例的用于区块链系统的数据迁移方法500的流程图。

如图5所示,在步骤s501中,可以在新区块链系统中创建新区块链的新创世区块,在新创世区块中记录其数据要被迁移的旧区块链系统中的旧区块链的相关信息,其中,旧区块链的相关信息包括旧区块链的要被迁移的数据的范围信息。

在步骤s501之后,上述用于区块链系统的数据迁移方法500可以前进到步骤s503。在步骤s503中,可以根据范围信息,将旧区块链中的各个旧区块中所记录的各个旧事务转换为符合新区块链的新事务数据结构的新事务,并且将转换后的新事务迁移到新区块链中,其中,新区块链的新事务数据结构包括指示与该新事务对应的旧事务在旧区块链中的位置的追溯信息。

注意,图5中的步骤s501和s502的内容分别与图1中的步骤s101和s103的内容相同,其具体细节在此不再赘述。

在步骤s503之后,上述用于区块链系统的数据迁移方法500可以前进到步骤s505。在步骤s505中,可以在完成从旧区块链到新区块链的数据迁移之后,利用新区块链中的新事务的新事务标识,使用新区块链上部署的智能合约来查询旧区块链中与该新事务对应的旧事务。

例如,在完成从旧区块链到新区块链的数据迁移之后,可以在新区块链上部署用于在旧区块链中查询与新事务对应的旧事务的智能合约。因此,当需要追溯与新事务对应的旧事务时,可以利用该智能合约在旧区块链中查询与该新事务对应的旧事务,从而可以溯源旧区块链中的数据。

下面参考图6来详细描述根据本发明的另一个实施例的查询过程。图6是示意性地示出根据本发明的另一个实施例的查询过程600的流程图。

如图6所示,在步骤s601中,可以利用新区块链中的新事务的新事务标识,查询新区块链中的新事务的新事务数据结构中所包括的追溯信息。

例如,参考图4a和图4b,可以利用新区块链中的新事务1的新事务标识401(例如,“第二哈希值”),在新区块链中的新事务1的新事务数据结构中,查询该新事务1的新事务数据结构中包含的与新事务1的新事务标识401(例如,“第二哈希值”)对应的追溯信息403。

在步骤s601之后,上述查询过程600可以前进到步骤s603。在步骤s603中,可以利用追溯信息来查询旧区块链中与该新事务对应的旧事务。

例如,参考图4a和图4b,在通过查询获得上述追溯信息403之后,可以利用该追溯信息403来查询旧区块链中与该新事务1对应的旧事务1。

下面参考图7来详细描述根据本发明的另一个实施例的利用追溯信息来查询旧区块链中与该新事务对应的旧事务的具体查询过程。图7是示意性地示出根据本发明的另一个实施例的具体查询过程700的流程图。

如图7所示,在步骤s701中,可以利用追溯信息中所包括的旧区块链的调用地址信息和与该新事务对应的旧事务在旧区块链中的旧事务标识,查询并且返回旧区块链中与该新事务对应的旧事务的旧事务信息。

例如,参考图3a、图3b和图4c,可以利用追溯信息403中所包括的旧区块链的调用地址信息4031和与该新事务1对应的旧事务1在旧区块链中的旧事务标识4033(例如,“第一哈希值”),在旧区块链中查询与该新事务1对应的旧事务1的旧事务信息,并且可以将查询到的旧事务1的旧事务信息返回给用户。

另外,在步骤s703中,可以利用追溯信息中所包括的旧区块链的调用地址信息和旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块标识,查询并且返回旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块信息。

例如,参考图3a、图3b和图4c,可以利用追溯信息403中所包括的旧区块链的调用地址信息4031和与该新事务1对应的旧事务1在旧区块链中所位于的旧区块1的旧区块标识4035(例如,“旧区块1”),在旧区块链中查询与该新事务1对应的旧事务1所位于的旧区块1的旧区块信息。

根据本发明的一个实施例,可以在完成从旧区块链到新区块链的数据迁移之后,利用数据迁移方法进行从新区块链到下一个新区块链的数据迁移,以实现区块链的多次数据迁移。

下面参考图8来详细描述根据本发明的又一个实施例的对区块链系统进行多次数据迁移的过程。图8是示意性地示出根据本发明的又一个实施例的对区块链系统进行多次数据迁移的过程的示意图。

如图8所示,可以利用本申请中所公开的用于区块链系统的数据迁移方法将区块链a中的数据迁移到区块链b中,然后可以利用本申请中所公开的同样的用于区块链系统的数据迁移方法将区块链b中的数据迁移到区块链c中。以此类推,可以实现区块链的多次数据迁移。

图9是示出可用于实施根据本发明的实施例的用于区块链系统的数据迁移方法的信息处理设备的示意性框图。

在图9中,中央处理单元(cpu)901根据只读存储器(rom)902中存储的程序或从存储部分908加载到随机存取存储器(ram)903的程序执行各种处理。在ram903中,也根据需要存储当cpu901执行各种处理等等时所需的数据。cpu901、rom902和ram903经由总线904彼此连接。输入/输出接口905也连接到总线904。

下述部件连接到输入/输出接口905:输入部分906(包括键盘、鼠标等等)、输出部分907(包括显示器,比如阴极射线管(crt)、液晶显示器(lcd)等,和扬声器等)、存储部分908(包括硬盘等)、通信部分909(包括网络接口卡比如lan卡、调制解调器等)。通信部分909经由网络比如因特网执行通信处理。根据需要,驱动器910也可连接到输入/输出接口905。可拆卸介质911比如磁盘、光盘、磁光盘、半导体存储器等等根据需要被安装在驱动器910上,使得从中读出的计算机程序根据需要被安装到存储部分908中。

在通过软件实现上述系列处理的情况下,从网络比如因特网或存储介质比如可拆卸介质911安装构成软件的程序。

本领域的技术人员应当理解,这种存储介质不局限于图9所示的其中存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质911。可拆卸介质911的例子包含磁盘(包含软盘(注册商标))、光盘(包含光盘只读存储器(cd-rom)和数字通用盘(dvd))、磁光盘(包含迷你盘(md)(注册商标))和半导体存储器。或者,存储介质可以是rom902、存储部分908中包含的硬盘等等,其中存有程序,并且与包含它们的设备一起被分发给用户。

所述指令代码由机器读取并执行时,可执行上述根据本发明实施例的方法。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。

也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(articleofmanufacture)。

也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

注意,为了避免遮蔽本发明的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。

本申请也可以被配置如下:

(1)、一种用于区块链系统的数据迁移方法,包括:

在新区块链系统中创建新区块链的新创世区块,在所述新创世区块中记录其数据要被迁移的旧区块链系统中的旧区块链的相关信息,其中,所述旧区块链的相关信息包括所述旧区块链的要被迁移的数据的范围信息;

根据所述范围信息,将所述旧区块链中的各个旧区块中所记录的各个旧事务转换为符合所述新区块链的新事务数据结构的新事务,并且将转换后的新事务迁移到所述新区块链中,

其中,所述新区块链的新事务数据结构包括指示与该新事务对应的旧事务在所述旧区块链中的位置的追溯信息。

(2)、根据(1)所述的数据迁移方法,其中,所述范围信息包括所述旧区块链中要被迁移的最后一个旧区块的旧区块标识。

(3)、根据(2)所述的数据迁移方法,其中,所述转换的步骤包括:

从所述旧区块链中的第一个旧区块开始依次读取所述旧区块链中的每一个旧区块,直至所述旧区块链中要被迁移的最后一个旧区块;

对于所读取的每一个旧区块,按照该旧区块中所记录的各个旧事务的顺序依次读取该旧区块中所记录的每一个旧事务;以及

对于所读取的每一个旧事务,解析该旧事务,将解析后的旧事务转换为符合所述新区块链的新事务数据结构的新事务。

(4)、根据(1)所述的数据迁移方法,其中,所述旧区块链的相关信息还包括以下信息中的至少之一:所述旧区块链系统的访问方式信息,所述旧区块链的旧创世区块的区块头中所记录的信息,所述旧区块链中要被迁移的最后一个区块的区块头中所记录的信息,以及所述旧区块链的世界状态信息。

(5)、根据(4)所述的数据迁移方法,其中,所述旧区块链系统的访问方式信息包括以下信息中的至少之一:所述旧区块链系统的组网方式信息,所述旧区块链系统中的所有节点的节点信息,所述旧区块链系统中的所有节点的互联网协议ip地址信息,以及所述旧区块链系统的应用程序访问接口地址信息。

(6)、根据(1)所述的数据迁移方法,其中,所述追溯信息包括:所述旧区块链的调用地址信息,与该新事务对应的旧事务在所述旧区块链中的旧事务标识,以及所述旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块标识。

(7)、根据(6)所述的数据迁移方法,其中,所述旧区块链的调用地址信息包括以下信息中的至少之一:所述旧区块链系统的应用程序访问接口地址信息,以及所述旧区块链系统中的一个或多个节点的调用地址信息。

(8)、根据(1)-(7)中任一项所述的数据迁移方法,其中,所述新区块链的新创世区块是在所述新区块链启动时使用配置文件而创建的。

(9)、根据(1)-(7)中任一项所述的数据迁移方法,其中,所述将转换后的新事务迁移到所述新区块链中包括:

按照与转换后的新事务对应的旧事务在所述旧区块链系统中的所述旧区块链中的执行顺序,在所述新区块链系统中执行转换后的新事务。

(10)、根据(1)-(7)中任一项所述的数据迁移方法,还包括:

在完成从所述旧区块链到所述新区块链的数据迁移之后,利用所述新区块链中的新事务的新事务标识,使用所述新区块链上部署的智能合约来查询所述旧区块链中与该新事务对应的旧事务。

(11)、根据(10)所述的数据迁移方法,其中,所述查询的步骤包括:

利用所述新区块链中的新事务的新事务标识,查询所述新区块链中的新事务的新事务数据结构中所包括的追溯信息;以及

利用所述追溯信息来查询所述旧区块链中与该新事务对应的旧事务。

(12)、根据(11)所述的数据迁移方法,其中,所述利用所述追溯信息来查询所述旧区块链中与该新事务对应的旧事务的步骤包括:

利用所述追溯信息中所包括的所述旧区块链的调用地址信息和与该新事务对应的旧事务在所述旧区块链中的旧事务标识,查询并且返回所述旧区块链中与该新事务对应的旧事务的旧事务信息;以及

利用所述追溯信息中所包括的所述旧区块链的调用地址信息和所述旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块标识,查询并且返回所述旧区块链中与该新事务对应的旧事务所位于的旧区块的旧区块信息。

(13)、根据(1)-(7)中任一项所述的数据迁移方法,还包括:

在完成从所述旧区块链到所述新区块链的数据迁移之后,利用所述数据迁移方法进行从所述新区块链到下一个新区块链的数据迁移,以实现区块链的多次数据迁移。

(14)、一种计算机存储介质,其上存储有计算机指令,当所述计算机指令被计算机执行时使计算机执行(1)-(13)中任一项所述的用于区块链系统的数据迁移方法。

(15)、一种计算机实现的用于区块链的数据迁移设备,包括:

存储器,存储有计算机指令;和

处理器,耦接到存储器,执行所述计算机指令以执行如(1)-(13)中任一项所述的用于区块链系统的数据迁移方法。

虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。

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