一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

区块链升级时数据兼容的方法和系统与流程

2022-04-06 15:31:49 来源:中国专利 TAG:


1.本发明属于区块链技术领域,具体涉及一种区块链升级时数据兼容的方法和系统。


背景技术:

2.区块链的一大特点是通过密码学方法保证数据的可信。所有的历史数据通过哈希并串联起来,这种连续性确保任何对历史数据的修改都会导致校验失败。以上设计对区块链平台的数据兼容性设计形成一个很大的挑战。对区块链系统进行升级时,一定要兼容老的历史数据,否则数据的校验就会存在断档,严重影响整体数据的可信性。
3.但是区块链平台不可能是一蹴而就的,不可避免要开发新的特性,或者旧版本有严重的问题需要修复,都可能会引入一些不兼容的修改。比如,原来有区块链的1.0版本,用户已经使用其创建了链并运行了一段时间,产生了一些链上数据。这时发布了2.0版本,其数据结构与1.0不兼容。如果用户要升级到2.0,但是要保留历史数据,并仍然可以正常的操作之前部署的合约和上面的数据。
4.现有技术存在一些解决方案,包括交易重放、数据归档和侧链方案。以下将对集中实施过程进行说明。
5.1.交易重放,包括以下步骤:
6.a.用户抛弃原来1.0的链及历史数据,重新用2.0创建链。
7.b.将历史交易导出,并在新的链上重放。
8.交易重放方案通过交易重放可以让2.0拥有历史交易,但是交易执行的结果并不能保证跟历史一样。比如,用户使用场景是司法存证,对交易执行的时间戳特别关注。那么重放历史交易之后,交易关联的将是新的时间戳,也就失去了司法存证的意义。
9.2.数据归档。
10.a.将原有1.0的链停掉,但是保留节点的运行,只提供历史数据查询的能力。
11.b.使用2.0创建新的链,并延续1.0的链的块高继续产生新的区块。
12.c.每个节点上都创建api网关,同时接入1.0和2.0的接口。
13.d.用户对区块链进行操作的时候,api网关根据用户请求中的块高来决定将请求路由到1.0还是2.0。
14.数据归档的方案可以保留所有的历史数据,并且可以继续在2.0上创建新的交易和区块。但是对于历史数据,只能查询,无法继续在历史数据上进行进一步的操作。
15.3.侧链方案。
16.a.保留原有1.0的链。
17.b.使用2.0创建新的链。
18.c.将原有1.0的链作为2.0链的侧链,以提供两者之间的互操作性。
19.侧链方案可以保留所有的历史数据,可以在1.0的链上个继续操作历史数据,也可以在2.0上创建新的交易和区块。但是新老数据终究是在两套系统中的,虽然可以通过跨链
技术来进行互操作,但是操作非常复杂。而且数据的连续性还存在明显的断档,并没有一个很好的延续性。


技术实现要素:

20.鉴于以上存在的问题,本发明实施例提供一种区块链升级时数据兼容的方法和系统,用于区块链系统进行不兼容的升级后,仍可兼容历史数据。
21.为解决上述技术问题,本发明采用如下的技术方案:
22.第一方面,本发明实施例提供一种区块链升级时数据兼容的方法,包括以下步骤:
23.历史版本的区块链系统在升级时将历史版本的链上数据导出,并将历史版本的用户接口模块和执行器剥离,兼容改造成为历史版本用户接口兼容服务和历史版本执行器兼容服务,并部署当前版本的区块链系统;
24.接收用户发送给历史版本用户接口兼容服务的交易,当历史版本用户接口兼容服务收到交易时,将其作为存证数据,添加表示是历史版本的特殊标记;并组装成当前版本的交易,发送至当前版本区块链系统中;
25.历史版本执行器兼容服务监听当前版本区块链系统,当发现有表示历史版本的特殊标记的交易后,执行该交易,并将执行结果保存,并将执行结果发送至当前版本区块链;
26.当前版本区块链将接收到的所述执行结果作为存证数据保存。
27.第一方面的一种可能设计中,所述历史版本的区块链系统在升级时将历史版本的链上数据导出后,保存在历史版本执行器兼容服务可访问目录。
28.第一方面的一种可能设计中,将历史版本的用户接口模块做兼容改造包括:在当前版本格式请求转换的功能中增加历史版本格式请求功能,以及,向当前版本区块链系统的用户接口模块发送请求的功能。
29.第一方面的一种可能设计中,将历史版本的执行器做兼容改造包括:增加从当前版本区块链系统上获取交易的功能。
30.第一方面的一种可能设计中,进一步包括:接收用户向历史版本用户接口兼容服务发送的查询请求,交由兼容的历史版本的执行器处理。
31.第一方面的一种可能设计中,进一步包括:接收用户向当前版本用户接口模块发送的查询请求和交易请求,交由当前版本的执行器处理。
32.第二方面,本发明实施例提供一种区块链升级时数据兼容的系统,包括:
33.历史版本用户接口兼容服务,通过历史版本区块链系统在升级时将用户接口剥离,兼容改造而成;
34.历史版本执行器兼容服务,通过历史版本区块链系统在升级时将执行器剥离,兼容改造而成;
35.历史版本链上历史数据,通过历史版本区块链系统在升级时将历史版本的链上数据导出形成;
36.和新部署的当前版本区块链系统;
37.接收用户发送给历史版本用户接口兼容服务的交易,当历史版本用户接口兼容服务收到交易时,将其作为存证数据,添加表示是历史版本的特殊标记;并组装成当前版本的交易,发送至当前版本区块链系统中;
38.历史版本执行器兼容服务监听当前版本区块链系统,当发现有表示历史版本的特殊标记的交易后,执行该交易,并将执行结果保存,并将执行结果发送至当前版本区块链;
39.当前版本区块链将接收到的所述执行结果作为存证数据保存。
40.第二方面的一种可能设计中,所述历史版本的区块链系统在升级时将历史版本的链上数据导出后,保存在历史版本执行器兼容服务可访问目录。
41.第二方面的一种可能设计中,历史版本用户接口兼容服务,通过历史版本区块链系统在升级时将用户接口剥离,兼容改造而成包括:在当前版本格式请求转换的功能中增加历史版本格式请求功能,以及,向当前版本区块链系统的用户接口模块发送请求的功能。
42.第二方面的一种可能设计中,历史版本执行器兼容服务,通过历史版本区块链系统在升级时将执行器剥离,兼容改造而成包括:增加从当前版本区块链系统上获取交易的功能。
43.第二方面的一种可能设计中,进一步包括:接收用户向历史版本用户接口兼容服务发送的查询请求,交由兼容的历史版本的执行器处理。
44.第二方面的一种可能设计中,进一步包括:接收用户向当前版本用户接口模块发送的查询请求和交易请求,交由当前版本的执行器处理。
45.第三方面,本发明实施例提供一种计算机设备,至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现如上所述的区块链升级时数据兼容的方法。
46.第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行实现如上任一所述的区块链升级时数据兼容的方法。
47.采用本发明具有如下的有益效果:本发明实施例提出的区块链升级时数据兼容的方法和系统,用于在区块链系统进行了不兼容升级后,仍可兼容历史数据,并支持在历史数据基础上进一步操作,让区块链系统能够不受历史包袱限制的情况下持续演进,同时保证用户数据的兼容性。
附图说明
48.图1为现有技术中区块链系统节点的结构示意图;
49.图2为本发明实施例的区块链升级时数据兼容的方法的步骤流程图;
50.图3为本发明实施例的区块链升级时数据兼容的系统的结构示意图;
51.图4为本发明实施例的一种计算机设备的结构示意图。
具体实施方式
52.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
53.参见图1,通常的区块链系统的一个节点包括用户接口、鉴权、共识、消息总线、链存储、执行器和网络,用户接口提供用户操作区块链的入口,而执行器根据用户请求中的数
据实现智能合约相关的操作,链上数据也在执行器中保存,通过网络和其他的节点(如节点2、节点3和节点4)交互。通过以上分析可知,最终用户能感知的只有用户接口和执行器。
54.鉴于对于区块链系统,用户能感知的只有用户接口和执行器,参见图2,所示为本发明实施例的一种区块链升级时数据兼容的方法,包括以下步骤:
55.s10,历史版本的区块链系统在升级时将历史版本的链上数据导出,并将历史版本的用户接口模块和执行器剥离,兼容改造成为历史版本用户接口兼容服务和历史版本执行器兼容服务,并部署当前版本的区块链系统;
56.s20,接收用户发送给所述历史版本用户接口兼容服务的交易,当所述历史版本用户接口兼容服务收到交易时,将其作为存证数据,添加表示是历史版本的特殊标记;并组装成当前版本的交易,发送至当前版本区块链系统中。此处将历史版本的交易当作存证,为了让当前版本的执行器忽略这笔交易。存证数据不经过当前版本执行器的处理。因为目标是让原来使用历史版本的老用户和后来使用当前版本的新用户都可以正常使用当前版本的区块链系统,所以当前版本的链上会同时存在历史和当前两个版本的交易,此处特殊标识是为了标识这个交易是历史版本的交易。
57.s30,历史版本执行器兼容服务监听当前版本区块链系统,当发现有表示历史版本的特殊标记的交易后,执行该交易,并将执行结果保存,并将执行结果发送至当前版本区块链;
58.s40,当前版本区块链将接收到的所述执行结果作为存证数据保存。
59.本发明一实施例的一种区块链升级时数据兼容的方法中,历史版本的区块链系统在升级时将历史版本的链上数据导出后,保存在历史版本执行器兼容服务可访问目录。
60.本发明一实施例的一种区块链升级时数据兼容的方法中,将用户接口模块做兼容改造包括:在当前版本格式请求转换的功能中增加历史版本格式请求功能,以及,向当前版本区块链系统的用户接口模块发送请求的功能。
61.本发明一实施例的一种区块链升级时数据兼容的方法中,将执行器模块兼容改造包括:增加从当前版本区块链系统上获取交易的功能。
62.通过将历史版本区块链系统的用户接口模块和执行器单独剥离后,兼容改造成为历史版本用户接口兼容服务和历史版本执行器兼容服务,使得新部署的当前版本的区块链服务可以兼容历史数据。
63.本发明一实施例的一种区块链升级时数据兼容的方法,在步骤s10~s30的基础上,进一步包括:接收用户向历史版本用户接口兼容服务发送的查询请求,交由兼容的历史版本的执行器处理。此时使用历史版本的请求格式,将查询请求发送到历史版本用户接口兼容服务,历史版本用户接口兼容服务收到查询请求之后,直接向历史版本的执行器兼容服务查询结果。结果返回之后,直接通过历史版本用户接口兼容服务以历史版本的格式返回给用户。
64.本发明一实施例的一种区块链升级时数据兼容的方法,在步骤s10~s40的基础上,进一步包括:接收用户向当前的用户接口模块发送查询请求和交易请求,交由当前版本的执行器处理。
65.通过以上技术方案实施的区块链升级时数据兼容的方法,用于在区块链系统进行了不兼容升级后,仍可兼容历史数据,并支持在历史数据基础上进一步操作,让区块链系统
能够不受历史包袱限制的情况下持续演进,同时保证用户数据的兼容性。虽然存在历史版本的交易将不在所有区块链节点中执行,而是由单独的历史版本执行器兼容服务执行,其可信程度大大降低。但是因为相关的交易和结果会以存证的方式保存在当前版本区块链系统中,可以很容易通过重新计算来检验结果是否正确,并对运营方进行追责,因此可以通过让运营方缴纳保证金或者其他链外的方式对其进行约束。
66.与本发明实施例的区块链升级时数据兼容的方法对应的,参见图3,本发明实施例提供了一种区块链升级时数据兼容的系统,包括:
67.历史版本用户接口兼容服务,通过历史版本区块链系统在升级时将用户接口剥离,兼容改造而成;历史版本执行器兼容服务,通过历史版本区块链系统在升级时将执行器剥离,兼容改造而成;历史版本链上历史数据,通过历史版本区块链系统在升级时将历史版本的链上数据导出形成;和新部署的当前版本区块链系统;
68.用户将交易发送给历史版本用户接口兼容服务,当历史版本用户接口兼容服务收到交易时,将其作为存证数据,添加表示是历史版本的特殊标记;并组装成当前版本的交易,发送至当前版本区块链系统中;
69.历史版本执行器兼容服务监听当前版本区块链系统,当发现有表示历史版本的特殊标记的交易后,执行该交易,并将执行结果保存,同时当前版本区块链中也将执行结果作为存证数据保存。
70.本发明一实施例的一种区块链升级时数据兼容的系统,历史版本的区块链系统在升级时将历史版本的链上数据导出后,保存在历史版本执行器兼容服务可访问目录。历史版本链上的数据可以文件形式导出。
71.本发明一实施例的一种区块链升级时数据兼容的系统,历史版本用户接口兼容服务,通过历史版本区块链系统在升级时将用户接口剥离,兼容改造而成包括:在当前版本格式请求转换的功能中增加历史版本格式请求功能,以及,向当前版本区块链系统的用户接口模块发送请求的功能。
72.本发明一实施例的一种区块链升级时数据兼容的系统,历史版本执行器兼容服务,通过历史版本区块链系统在升级时将执行器剥离,兼容改造而成包括:增加从当前版本区块链系统上获取交易的功能。
73.本发明一实施例的一种区块链升级时数据兼容的系统,进一步包括:接收用户向历史版本用户接口兼容服务发送的查询请求,交由兼容的历史版本的执行器处理。此时使用历史版本的请求格式,将查询请求发送到历史版本用户接口兼容服务,历史版本用户接口兼容服务收到查询请求之后,直接向历史版本的执行器兼容服务查询结果。结果返回之后,直接通过历史版本用户接口兼容服务以历史版本的格式返回给用户。
74.本发明一实施例的一种区块链升级时数据兼容的系统,进一步包括:接收用户向当前的用户接口模块发送的查询请求和交易请求,交由当前版本的执行器处理。
75.通过以上技术方案实施的区块链升级时数据兼容的系统,用于在区块链系统进行了不兼容升级后,仍可兼容历史数据,并支持在历史数据基础上进一步操作,让区块链系统能够不受历史包袱限制的情况下持续演进,同时保证用户数据的兼容性。虽然存在历史版本的交易将不在所有区块链节点中执行,而是由单独的历史版本执行器兼容服务执行,其可信程度大大降低。但是因为相关的交易和结果会以存证的方式保存在当前版本区块链系
统中,可以很容易通过重新计算来检验结果是否正确,并对运营方进行追责,因此可以通过让运营方缴纳保证金或者其他链外的方式对其进行约束。
76.图4示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该计算机设备可以包括:处理器101、存储器102、输入/输出接口103、通信接口104和总线105。其中处理器101、存储器102、输入/输出接口103和通信接口104通过总线105实现彼此之间在设备内部的通信连接。
77.处理器101可以采用通用的cpu(central processing unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
78.存储器102可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器102可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器102中,并由处理器101来调用执行。
79.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
80.为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本技术实施例所提供的任一种区块链升级时数据兼容的方法中的步骤。例如,该计算机程序可以执行如下步骤:
81.历史版本的区块链系统在升级时将历史版本的链上数据导出,并将历史版本的用户接口模块和执行器剥离,兼容改造成为历史版本用户接口兼容服务和历史版本执行器兼容服务,并部署当前版本的区块链系统;
82.接收用户发送给历史版本用户接口兼容服务的交易,当历史版本用户接口兼容服务收到交易时,将其作为存证数据,添加表示是历史版本的特殊标记;并组装成当前版本的交易,发送至当前版本区块链系统中;
83.历史版本执行器兼容服务监听当前版本区块链系统,当发现有表示历史版本的特殊标记的交易后,执行该交易,并将执行结果保存,并将执行结果发送至当前版本区块链;
84.当前版本区块链将接收到的所述执行结果作为存证数据保存。
85.以上各个步骤的具体实施可参见上述的方法实施例,在此不再赘述。
86.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
87.由于该存储介质中所存储的计算机程序,可以执行本技术实施例所提供的任一种区块链升级时数据兼容的方法中的步骤,因此,可以实现本技术实施例所提供的任一种区块链升级时数据兼容的方法所能实现的有益效果,详见上述的实施例,在此不再赘述。
88.应当理解,本文所述的示例性实施例是说明性的而非限制性的。尽管结合附图描述了本发明的一个或多个实施例,本领域普通技术人员应当理解,在不脱离通过所附权利要求所限定的本发明的精神和范围的情况下,可以做出各种形式和细节的改变。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献