区块链系统的节点更新方法、装置、设备以及存储介质与流程
未命名
07-23
阅读:75
评论:0
1.本技术涉及区块链技术领域,尤其涉及一种区块链系统的节点更新方法、装置、设备以及存储介质。
背景技术:
2.随着区块链技术的不断发展,现有的区块链系统的更新方案主要是区块链系统中的各节点定时检索并下载最新的更新源代码,进而基于更新源代码对相应的功能或者业务进行更新。
3.但是在现有的更新机制下,由于网络延迟和各节点获取更新源代码的时间不一致等原因,区块链系统中往往存在部分节点不能及时进行更新,导致区块链系统中的各节点之间存在更新版本差异。并且区块链系统中的每一节点在更新完毕之后,往往需要通过重启节点来运行更新后的业务或者功能,影响节点更新效率。
技术实现要素:
4.本技术实施例提供一种区块链系统的节点更新方法、装置、设备以及存储介质,可降低区块链系统中的各节点之间的版本差异,提升节点更新效率,适用性高。
5.一方面,本技术实施例提供一种区块链系统的节点更新方法,该方法包括:
6.确定更新源代码,对上述更新源代码进行编译,得到上述更新源代码对应的可执行代码,其中,上述更新源代码对应于任一种编程语言,上述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;
7.将上述可执行代码发送至区块链系统中的各节点,以使各上述节点基于上述可执行代码在节点运行过程中进行节点更新并同步更新状态;
8.确定各上述节点的更新状态同步结果,基于上述更新状态同步结果,确定各上述节点针对上述更新源代码进行同步更新。
9.另一方面,本技术实施例提供一种区块链系统的节点更新方法,该方法包括:
10.获取更新源代码对应的可执行代码,其中,上述更新源代码对应于任一种编程语言,上述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;
11.基于上述可执行代码在节点运行过程中进行节点更新,并与上述区块链系统中的其他节点同步更新状态;
12.确定针对上述可执行代码的第一执行结果,若上述第一执行结果与上述区块链系统中的其他节点针对上述可执行代码的第二执行结果一致,则确定完成针对上述更新源代码的节点更新。
13.另一方面,本技术实施例提供了一种区块链系统的节点更新装置,该装置包括:
14.代码确定模块,用于确定更新源代码,对上述更新源代码进行编译,得到上述更新源代码对应的可执行代码,其中,上述更新源代码对应于任一种编程语言,上述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;
15.代码发送模块,用于将上述可执行代码发送至区块链系统中的各节点,以使各上述节点基于上述可执行代码在节点运行过程中进行节点更新并同步更新状态;
16.结果确定模块,用于确定各上述节点的更新状态同步结果,基于上述更新状态同步结果,确定各上述节点针对上述更新源代码进行同步更新。
17.另一方面,本技术实施例提供了一种区块链系统的节点更新装置,该装置包括:
18.代码获取模块,用于获取更新源代码对应的可执行代码,其中,上述更新源代码对应于任一种编程语言,上述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;
19.节点更新模块,用于基于上述可执行代码在节点运行过程中进行节点更新,并与上述区块链系统中的其他节点同步更新状态;
20.信息处理模块,用于确定针对上述可执行代码的第一执行结果,若上述第一执行结果与上述区块链系统中的其他节点针对上述可执行代码的第二执行结果一致,则确定完成针对上述更新源代码的节点更新。
21.另一方面,本技术实施例提供了一种电子设备,包括处理器和存储器,该处理器和存储器相互连接;
22.上述存储器用于存储计算机程序;
23.上述处理器被配置用于在调用上述计算机程序时,执行本技术实施例提供的任一项区块链系统的节点更新方法。
24.另一方面,本技术实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现本技术实施例提供的任一项区块链系统的节点更新方法。
25.另一方面,本技术实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机指令,上述计算机程序或计算机指令被处理器执行时实现本技术实施例提供的任一项区块链系统的节点更新方法。
26.在本技术实施例中,通过将更新源代码编译为支持区块链系统中的各节点直接运行的预设格式的字节码(可执行代码),可使得区块链系统中的节点可直接基于可执行代码进行节点更新,提升节点更新效率。进一步地,区块链系统中的节点通过同步更新状态,可使区块链系统中的节点均参与节点更新,从而确保区块链系统中各节点的版本统一性,适用性高。
附图说明
27.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
28.图1是本技术实施例提供的区块链系统的节点更新方法的原理示意图;
29.图2是本技术实施例提供的区块链系统的节点更新方法的一流程示意图;
30.图3是本技术实施例提供的源代码编译及应用的场景示意图;
31.图4是本技术实施例提供的区块链系统的节点更新方法的另一流程示意图;
32.图5是本技术实施例提供的同步更新状态的场景示意图;
33.图6是本技术实施例提供的区块链系统中的节点的结构示意图;
34.图7是本技术实施例提供的基于wasm文件进行节点更新的场景示意图;
35.图8是本技术实施例提供的区块链系统的节点更新装置的一结构示意图;
36.图9是本技术实施例提供的区块链系统的节点更新装置的另一结构示意图;
37.图10是本技术实施例提供的电子设备的结构示意图。
具体实施方式
38.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
39.参见图1,图1是本技术实施例提供的区块链系统的节点更新方法的原理示意图。如图1所示,在对区块链系统的各节点进行升级之前,可确定更新源代码,并将更新源代码编译为可执行代码,即将更新源代码编译为支持区块链系统中的各节点直接运行的预设格式的字节码。
40.进一步地,将更新源代码对应的可执行代码发送至区块链系统中的各节点,以使各节点基于接收到的可执行代码在节点运行过程中进行节点更新。如将可执行代码发送至区块链系统10,以使的区块链系统10中的节点101、节点102、节点103以及节点104基于可执行代码在节点运行过程中进行节点更新。同时,区块链系统中的各节点在进行节点更新时刻互相同步更新状态,如节点101、节点102、节点103以及节点104可在更新过程中同步更新状态,以尽可能达到各节点同步进行更新的目的。基于此,可获取各节点的更新状态同步结果,基于更新状态同步结果可确定各节点针对更新源代码进行同步更新。
41.本技术实施例中的区块链系统101也可以称为数据共享系统,即用于进行节点与节点之间数据共享的系统。例如,数据共享系统中可以包括节点101、节点102、节点103以及节点104等多个节点,每个节点可以为接入区块链系统的计算设备,如服务器、用户终端等,节点之间形成组成的点对点(peer to peer,p2p)网络,p2p协议是一个运行在传输控制协议(transmission control protocol,tcp)协议之上的应用层协议。在数据共享系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层,且每个节点在进行正常工作时都可以接收到相关信息,并基于接收到的相关信息维护数据共享系统内的共享数据。
42.其中,本技术实施例中的区块链系统(数据共享系统)内的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端、智能电视等,但并不局限于此。
43.参见图2,图2是本技术实施例提供的区块链系统的节点更新方法的一流程示意图。如图2所示,本技术实施例提供的区块链系统的节点更新方法可适用于与区块链系统具有通信连接的相关设备、服务器等,也可以适用于区块链系统中的相关节点,具体包括如下步骤:
44.步骤s21、确定更新源代码,对更新源代码进行编译,得到更新源代码对应的可执行代码。
45.在一些可行的实施方式中,更新源代码为用于对区块链系统中的各节点进行更新的初始代码,也即用于对区块链系统中的各节点的业务或者功能进行更新的初始代码,或者为用于对区块链系统中的各节点的系统进行更新的初始代码。
46.例如,上述更新源代码可以是为区块链系统中的各节点所开发的新功能所对应的源代码,也可是用于修复区块链系统中的各节点某一业务功能的相关缺陷(bug)的源代码,具体可基于实际应用场景需求进行确定,在此不做限制。
47.其中,更新源代码可以对应于任一种编程语言,即更新源代码可以是通过任一种编程语言所编写的代码,具体可基于实际应用场景需求确定,在此不做限制。
48.在一些可行的实施方式,更新源代码可以为预编写的用于对区块链系统中的各节点进行更新的初始代码,如可以为开发人员编写的某一新功能的上线代码或升级代码。在确定更新源代码时,可获取开发人员编写的用于对区块链系统中的各节点进行节点更新的初始代码。
49.可选地,更新源代码可以为目标应用程序的库文件代码。其中,目标应用程序可以为区块链系统中的各节点所运行的其中任一应用程序。对于目标应用程序而言,该目标应用程序的各项程序功能可被分割成一些相对独立的库文件代码,当执行某一程序功能时,需要调用对应的库文件代码。
50.因此,更新源代码可以为目标应用程序的任一库文件代码,且该库文件代码对应的程序功能为新上线的程序功能。或者,更新源代码可以为软件开放工具包(software development kit,sdk)所开发的初始代码,具体可基于实际应用场景需求确定,在此不做限制。
51.在确定更新源代码时,可确定目标应用程序中的目标程序功能,该目标程序功能为区块链系统中各节点未上线的功能。进一步调用该目标程序功能对应的库文件代码,得到更新源代码。
52.可选地,更新源代码可以为区块链系统中的任一节点编译的、用于对区块链系统中的各节点进行更新的初始代码。即区块链系统中的任一节点可以发布更新源代码,并使得区块链系统中的各节点基于该节点发送的更新源代码对应的可执行代码进行节点更新。
53.在一些可行的实施方式中,在确定更新源代码之后,可对更新源代码进行编译,得到更新源代码对应的可执行代码。
54.其中,更新源代码对应的可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码。对于对应于任一种编程语言的更新源代码,可通过编译器将其编译为预设格式的字节码,从而使得区块链系统中的各节点可直接运行该字节码。
55.也就是说,对于对应于任一种编程语言的更新源代码,可将该更新源代码翻译为类似汇编语言的包括多个指令的可执行代码。
56.其中,上述预设格式可以为webassembly格式,也可以为其他格式,具体可基于实际应用场景需求确定,在此不做限制。在上述预设格式为webassembly格式的情况下,可基于对应的编译器对更新源代码进行编译得到wasm文件,该wasm文件实质为一串二进制的字节码。
57.其中,对更新源代码进行编译后得到的预设格式的可执行代码也可称为运行时库文件或运行时库代码等,在此不做限制。
58.参见图3,图3是本技术实施例提供的源代码编译及应用的场景示意图。如图3所示,对于某一功能或业务对应的源代码,可通过webassembly编译器对其进行编译,得到由二进制的字节码组成的wasm文件。进一步地,对于不同的用户而言,用户可基于wasm文件对应的运行时(运行wasm文件的环境)直接运行wasm文件,无需对源代码或wasm进行再次编译。
59.步骤s22、将可执行代码发送至区块链系统中的各节点,以使各节点基于可执行代码在节点运行过程中进行节点更新并同步更新状态。
60.在一些可行的实施方式中,在将可执行代码发送至区块链系统中的节点时,可将可执行代码发送至区块链系统中的目标节点,以使目标节点将可执行代码广播至区块链系统中的其他节点,从而使得区块链系统中的各节点可在节点运行过程中进行节点更新,并同步更新状态以同步进行节点更新。
61.其中,上述目标节点可以为区块链系统中的任一节点,也可以为区块链系统中的中心节点或者路由节点等,具体可基于实际应用场景需求确定,在此不做限制。
62.对于区块链系统中的每个节点,均具有与其对应的节点标识,而且区块链系统中的每个节点均可以存储有区块链系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块或其他信息广播至区块链系统中的其他节点,如通过区块链中的目标节点可将可执行代码广播至区块链系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为ip(internet protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,下表中仅以ip地址为例进行说明。
63.节点名称节点标识节点1117.114.151.174节点2117.116.189.145
……
节点nxx.xx.xx.xx
64.可选地,为了保证区块链系统内的信息互通,区块链系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。因此可将更新源代码对应的可执行代码发送至区块链系统中的任一节点之后,区块链系统中的其他节点可通过共识机制(共识算法)获取该可执行代码,将该可执行代码作为共享数据中的数据进行存储,使得区块链系统中全部节点均获取到更新源代码对应的可执行代码。
65.在一些可行的实施方式中,在将更新源代码对应的可执行代码发送至区块链系统中的各节点时,可对可执行代码进行哈希计算,得到可执行代码的第一摘要,并进一步基于更新源代码的代码发布方的私钥对第一摘要进行加密得到可执行代码的数字签名,进而得到更新源代码对应的可执行代码的数字签名。
66.进一步地,在将更新源代码对应的可执行代码发送至区块链系统中的各节点时,可一并发送可执行代码的数字签名,以使区块链系统中的各节点在接收到可执行代码及其数字签名之后,基于数字签名确定可执行代码在传输过程中是否被篡改,并确定可执行代
码未被篡改的情况下,基于可执行代码进行节点更新。
67.其中,更新源代码的代码发布方为更新源代码的来源方,如在更新源代码为预编写的用于对区块链系统中的各节点进行更新的初始代码的情况下,更新源代码的代码发布方为对应的开发人员,在更新源代码为目标应用程序的库文件代码的情况下,更新源代码的代码发布方可以为对应的目标应用程序,在更新源代码为区块链系统中任一节点编译的用于对所述区块链系统中的各节点进行更新的初始代码的情况下,更新源代码的代码发布方可以为该节点。
68.需要特别说明的是,上述更新源代码的代码发布方的相关说明仅为示例,具体可以基于实际应用场景需求确定,如更新源代码的代码发布方还可以为预设的管理员等,在此不做限制。
69.步骤s23、确定各节点的更新状态同步结果,基于更新状态同步结果,确定各节点针对更新源代码进行同步更新。
70.在一些可行的实施方式中,在将更新源代码发发送至区块链系统中的各节点之后,可确定各节点的更新状态同步结果,以根据各节点的更新状态同步结果进一步确认各节点针对更新源代码进行同步更新。
71.其中,在确定各节点的更新状态同步结果时,可从区块链系统中的任一节点获取各节点的更新状态,即该节点可获取其他节点的更新状态,并基于各节点的更新状态生成更新状态同步结果并发送。或者,可直接获取区块链系统中各节点的更新状态,基于区块链系统中各节点的更新状态来确定各节点的更新状态同步结果。
72.例如,在将可执行代码发送至区块链系统中的节点时,将可执行代码发送至区块链系统中的目标节点,以使目标节点将可执行代码广播至区块链系统中的其他节点。同时目标节点可获取各节点的更新状态并生成更新状态同步结果,从而可从目标节点获取区块链系统中各节点的更新状态同步结果。
73.在一些可行的实施方式中,在确认各节点针对更新源代码进行同步更新之后,可进一步获取区块链系统中的各节点针对可执行代码的执行结果,以基于区块链系统中各节点对应的执行结果,确定区块链系统中各节点完成节点更新。
74.同样的,在获取各节点的针对可执行代码的执行结果时,可从区块链系统中的任一节点获取各节点针对可执行代码的执行结果,即该节点可获取其他节点针对可执行代码的执行结果,并将各节点针对可执行代码的执行结果进行发送。或者,可直接从区块链系统中的各节点获取对应的执行结果,在此不做限制。
75.例如,在将可执行代码发送至区块链系统中的节点时,将可执行代码发送至区块链系统中的目标节点,以使目标节点将可执行代码广播至区块链系统中的其他节点。同时目标节点可获取各节点针对可执行代码的执行结果,从而可从目标节点获取区块链系统中各节点针对可执行代码的执行结果。
76.参见图4,图4是本技术实施例提供的区块链系统的节点更新方法的另一流程示意图。如图4所示,本技术实施例提供的区块链系统的节点更新方法可适用于区块链系统中的任一节点,具体可包括如下步骤:
77.步骤s41、获取更新源代码对应的可执行代码。
78.其中,更新源代码为用于对区块链系统中的各节点进行更新的初始代码,也即用
于对区块链系统中的各节点的业务或者功能进行更新的初始代码,或者为用于对区块链系统中的各节点的系统进行更新的初始代码。
79.其中,更新源代码可以对应于任一种编程语言,即更新源代码可以是通过任一种编程语言所编写的代码,具体可基于实际应用场景需求确定,在此不做限制。
80.其中,更新源代码可以为预编写的用于对区块链系统中的各节点进行更新的初始代码,也可以为目标应用程序的库文件代码,还可以为区块链系统中的任一节点编译的用于对区块链系统中的各节点进行更新的初始代码,在此不做限制。
81.其中,上述预设格式可以为webassembly格式,也可以为其他格式,在此不做限制。在上述预设格式为webassembly格式的情况下,可基于对应的编译器对更新源代码进行编译得到wasm文件,该wasm文件实质为一串二进制的字节码。即更新源代码对应的可执行代码可以为wasm文件。
82.在一些可行的实施方式中,区块链系统中的目标节点可获取更新源代码对应的可执行代码,并将更新源代码对应的可执行代码广播至其他节点。即区块链中除目标节点外的其他节点可直接接收目标节点所广播的可执行代码。
83.可选地,若区块链系统中任一节点接收到更新源代码对应的可执行代码,则区块链系统中除该节点外的其他节点可基于各节点之间的信连接,通过共识机制从该节点获取更新源代码对应的可执行代码。
84.在一些可行的实施方式中,在获取到更新源代码对应的可执行代码时,可同时获取可执行代码对应的数字签名,以基于可执行代码的数字签名确定可执行代码在传输过程中是否被篡改。
85.具体地,在接收到可执行代码及其数字签名之后,可对可执行代码进行哈希计算,得到可执行代码的第二摘要。同时基于代码发布方的公钥对可执行代码的数字签名进行解密,得到可执行代码的第二摘要。
86.进一步地,将可执行代码的第一摘要和第二摘要进行比较,若第一摘要和第二摘要一致,则确定可执行代码在传输过程中未被篡改,进而基于可执行代码进行节点更新。若第一摘要和第二摘要不一致,则确定可执行代码在传输过程中被篡改,此时可丢弃可执行代码并发送提示信息以重新获取可执行代码。
87.例如,假设更新源代码对应的可执行代码的数字签名为“0010101”,此时可基于代码发布方的公钥对数字签名“0010101”进行解密,得到可执行代码的第一摘要(假设为“1000100”)。与此同时,还可对接收到的可执行代码进行哈希计算得到可执行代码的第二摘要。若可执行代码的第二摘要为“1000100”,则可确定可执行代码在传输过程中未被篡改,否则可确定可执行代码在传输过程中被篡改。
88.步骤s42、基于可执行代码在节点运行过程中进行节点更新,并与区块链系统中的其他节点同步更新状态。
89.在一些可行的实施方式中,在基于可执行代码进行更新时,由于更新源代码对应的可执行代码为预设格式的字节码,如二进制的字节码,因此区块链系统中的任一节点可在节点运行过程中直接运行该可执行代码以进行节点更新,从而可免于对可执行性代码再次进行编译以及进行节点重启等操作,提升节点更新效率。
90.其中,在节点更新过程中,可与区块链系统中的其他节点同步更新状态,以确保区
块链节点中的所有节点均基于可执行代码进行节点更新。
91.具体地,上述更新状态可以为节点接收到更新源代码对应的可执行代码。在接收到更新源代码之后,可与区块链系统中的各节点同步更新状态以确定区块链系统中的各节点均接收到可执行代码。从而在确定区块链系统中的各节点均接收到可执行代码之后,基于可执行代码在节点运行过程中进行节点更新。
92.可选地,上述更新状态可以为基于可执行代码完成节点更新。基于此,在基于可执行代码完成节点更新之后,可与区块链系统中的其他节点同步更新状态以确定区块链系统中的各节点均完成节点更新。
93.其中,在同步更新状态的过程中,可使得区块链系统中还未及时基于可执行代码进行节点更新的节点,及时基于可执行代码在节点运行过程中进行节点更新,从而进一步确保区块链系统中的各节点均会基于接收到可执行代码进行节点更新。
94.参见图5,图5是本技术实施例提供的同步更新状态的场景示意图。假设区块链系统中包括节点a、节点b、节点c、节点d以及节点e。节点a接收到更新源代码对应的可执行代码,并将可执行性代码发送至区块链系统中的其他节点。并且,节点a基于可执行代码在节点运行过程中进行节点更新,并与节点b、节点c、节点d以及节点e同步更新状态。在与节点b、节点c、节点d以及节点e同步更新状态的过程中,节点b、节点c、节点d以及节点e可同样基于可执行代码进行节点更新。
95.其中,在与区块链系统中的其他节点同步更新状态时,可基于raft算法、影响力容错(power fault tolerance,pft)算法以及其他共识算法进行,具体可基于实际应用场景需求确定,在此不做限制。
96.其中,基于可执行代码进行节点更新可以是为节点增加新功能,也可以是对某一业务功能的相关缺陷进行修复等,具体可基于实际应用场景需求进行确定,在此不做限制。
97.在一些可行的实施方式中,在基于可执行代码在节点运行过程中进行节点更新之前,可获取更新源代码,基于更新源代码与可执行代码进行可信验证,若可执行代码通过验证,则进一步基于可执行代码进行节点更新。
98.具体地,可对更新源代码采用相同的编译方式进行编译,将编译结果与可执行代码进行匹配,若二者对应的指令相同,则确定可执行代码通过验证。需要特别说明的是,由于基于更新源代码的编译结果进行节点更新,则需要节点进行重启才能完成更新,因此在确定可执行代码通过验证之后,需要基于可执行代码进行节点更新。
99.可选地,可将更新源代码发送至智能合约,通过智能合约采用任意编译方式对更新源代码进行编译,并确定对编译结果的执行结果。同时通过智能合约预先执行可执行代码,并将二者对应的可执行结果进行比较,若二者一致则确定可执行代码通过验证。
100.步骤s43、确定针对可执行代码的第一执行结果,若第一执行结果与区块链系统中的其他节点针对可执行代码的第二执行结果一致,则确定完成针对更新源代码的节点更新。
101.在一些可行的实施方式中,在基于可执行代码在节点运行过程中进行节点更新之后,可确定针对可执行代码的执行结果(为方便描述,以下称为第一执行结果)。其中,第一执行结果可以为基于可执行代码进行节点更新的更新结果,也可以为在完成节点更新之后再次执行可执行代码的执行结果。
102.进一步地,可将第一执行结果与区块链系统中的其他节点针对可执行代码的执行结果(为方便描述,以下称为第二执行结果)进行比较,若第一执行结果与其他节点对应的第二执行结果一致,则确定基于可执行代码成功进行节点更新,即确定完成针对更新源代码的节点更新。
103.可选地,可获取区块链系统中其他节点针对可执行结果的第二执行结果,并从中确定出目标执行结果。目标执行结果为各执行结果中数量对多的执行结果,进而将第一执行结果与目标执行结果进行匹配,若与目标执行结果一致,则确定基于可执行代码成功进行节点更新,即确定完成针对更新源代码的节点更新。
104.可选地,可将针对可执行代码的第一执行结果发送至智能合约,以通过智能合约判断第一执行结果是否有误。若第一执行结果准确无误,则确定基于可执行代码成功进行节点更新,即确定完成针对更新源代码的节点更新。
105.在一些可行的实施方式中,在于各区块链系统中的其他节点不同更新状态之后,可确定各节点的更新状态同步结果,并将更新状态同步结果发送至代码发布方(如与区块链系统具有通信连接的相关设备、服务器等),以使代码发布方根据各节点的更新状态同步结果进一步确认各节点针对更新源代码进行同步更新。
106.其中,可从区块链系统中的其他节点获取各节点的更新状态,基于其他节点的更新状态和自身的更新状态生成更新状态同步结果,并将其发送至代码发布方,以使代码发布方根据各节点的更新状态同步结果进一步确认各节点针对更新源代码进行同步更新。
107.在一些可行的实施方式中,在确定完成针对更新源代码的节点更新之后,可将第一执行结果发送至代码发布方,以使代码发布方基于区块链系统中的各节点对应的执行结果,确定区块链系统中各节点完成节点更新。
108.可选地,还可先获取区块链系统中其他节点针对可执行代码的第二执行结果,进而将第一执行结果和第二执行结果一同发送至代码发布方,以使代码发布方基于区块链系统中的各节点对应的执行结果,确定区块链系统中各节点完成节点更新。
109.在一些可行的实施方式中,在完成针对更新源代码的节点更新之后,可确定更新源代码的第一标识,并基于第一标识将可执行代码作为历史可执行代码进行存储。
110.其中,第一标识包括更新源代码对应业务的业务标识或者对应功能的功能标识,也可以为某一应用程序的程序标识等,具体可基于实际应用场景需求确定,在此不做限制。
111.即对于区块链系统中的任一节点而言,该节点在基于可执行代码进行节点更新之后,可将可执行代码对应存储,如将同一功能或者同一业务对应的可执行代码按照更新顺序进行存储,从而实现对任一功能、任一业务对应的更新过程进行记录。
112.其中,区块链系统中的任一节点可将历史可执行代码存储至与该节点相对应的数据库或云存储空间中,在此不做限制。并且在将历史可执行代码时,可将对应的更新源代码标识作为对应的业务或功能的标识一同进行存储。
113.基于此,由于区块链系统中每一节点在完成任一次节点更新之后,均会将对应的历史可执行代码进行存储。因此,在基于更新源代码对应的可执行代码进行节点更新时,可将更新源代码对应的可执行代码与各历史可执行代码进行匹配,若各历史可执行代码中包括更新源代码对应的可执行代码,则说明已进行过针对更新源代码的更新(如已具备更新源代码对应的功能),则不再基于更新源代码对应的可执行代码进行节点更新。若各历史可
执行代码中不包括更新源代码对应的可执行代码,则说明未进行过针对更新源代码的更新,此时可基于更新源代码对应的可执行代码进行节点更新。
114.同时,还可响应于针对任一业务(为方便描述,以下称为第一业务)或任一功能(为方便描述,以下称为第一功能)的版本查询请求,确定第一业务或第一功能对应的目标标识,并从历史可执行代码中确定出与目标标识相对应的至少一个历史可执行代码。进而基于确定出的至少一个历史可执行代码,确定第一功能或第一业务对应的版本更新记录,实现对特定业务或特征功能的更新记录的有效查询。
115.参见图6,图6是本技术实施例提供的区块链系统中的节点的结构示意图。如图6所示,对于区块链系统中的任一节点,该节点包括网络接口模块,用于实现数据读写、查询、数据同步等交互、通信功能。如通过查询接口返回对应业务或功能的版本更新激励,通过更新接口接收更新源代码对应的可执行代码,通过上传接口向其他节点发送相关数据等。
116.其中,代码提交方可通过远程过程调用(remote procedure call,rpc)方式的方式,通过网络接口模块向区块链系统中的节点发送可执行代码。
117.其中,该节点还包括共识模块,基于共识模块可完成与区块链系统中其他节点的更新状态同步,以及生成区块过程中与新区块的共识等步骤。
118.其中,该节点还包括业务和功能模块,基于业务和功能模块可实现对应的业务逻辑或功能,对相对应的业务数据或者功能数据进行处理。
119.其中,该节点还可包括代码管理模块,用于对各业务和功能对应的历史可执行代码进行对应存储,如将业务a对应的各历史可执行代码v1、v2以及v3等按照更新顺序进行排序,以便于对业务a的版本更新记录进行查询。
120.其中,该节点还包括数据库,通过数据库可实现数据存储,如对历史可执行代码进行存储等。
121.其中,本技术实施例中涉及到的数据匹配、信息查询等过程可通过云计算技术实现。云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。云计算是网格计算(grid computing)、分布式计算(distributedcomputing)、并行计算(parallel computing)、效用计算(utility computing)、网络存储(network storage technologies)、虚拟化(virtualization)、负载均衡(load balance)等传统计算机和网络技术发展融合的产物。
122.下面结合图7对本技术实施例提供的区块链系统的节点更新方法进行进一步说明。图7是本技术实施例提供的基于wasm文件进行节点更新的场景示意图。如图7所示,代码发布方提供针对业务a的更新源代码,并通过webassembly编译器将更新源代码编译为二进制字节码的wasm文件(即可执行代码),并将其发送至区块链系统中的各节点。
123.其中,在区块链系统中的各节点在接收到wasm文件之间,任一节点对应的代码管理模块中仅存储有业务a对应的可执行代码v1和v2,即各节点针对业务a仅更新过两次。
124.进一步地,对于区块链系统中的节点而言,各节点可基于wasm文件在节点运行过程中进行节点更新,并同步更新状态。对于任一节点,该节点可将wasm文件的执行结果与其他节点对应于wasm文件的执行结果进行匹配,以完成结果校验从而确定成功完成对业务a的更新。
125.此时,区块链系统中的各节点对应的代码管理模块中新存储有业务a对应的业务
代码v3,也即此次节点更新所对应的wasm文件,以对针对业务a的更新记录进行存储。
126.在本技术实施例中,通过将更新源代码编译为支持区块链系统中的各节点直接运行的预设格式的字节码(可执行代码),可使得区块链系统中的节点可直接运行可执行代码进行节点更新,无需进行文件替换等操作,从而免于节点重启等繁琐更新步骤,提升节点更新效率。进一步地,区块链系统中的节点通过同步更新状态,可使区块链系统中的节点均参与节点更新,从而确保区块链系统中各节点的版本统一性,避免出现因版本落后而导致的兼容性差、甚至是服务异常或宕机等现象,适用性高。
127.参见图8,图8是本技术实施例提供的区块链系统的节点更新装置的一结构示意图。本技术实施例提供的装置包括:
128.代码确定模块81,用于确定更新源代码,对上述更新源代码进行编译,得到上述更新源代码对应的可执行代码,其中,上述更新源代码对应于任一种编程语言,上述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;
129.代码发送模块82,用于将上述可执行代码发送至区块链系统中的各节点,以使各上述节点基于上述可执行代码在节点运行过程中进行节点更新并同步更新状态;
130.结果确定模块83,用于确定各上述节点的更新状态同步结果,基于上述更新状态同步结果,确定各上述节点针对上述更新源代码进行同步更新。
131.在一些可行的实施方式中,上述更新源代码,包括以下至少一项:
132.预编写的用于对区块链系统中的各节点进行更新的初始代码;
133.目标应用程序的库文件代码;
134.区块链系统中任一节点编译的用于对上述区块链系统中的各节点进行更新的初始代码。
135.在一些可行的实施方式中,上述代码发送模块82,用于:
136.将上述可执行代码发送至区块链系统中的目标节点,以使上述目标节点将上述可执行代码广播至上述区块链系统中的其他节点;
137.将上述可执行代码发送至区块链系统中的任一节点,以使上述区块链系统中的其他节点通过共识机制从该节点获取上述可执行代码。
138.具体实现中,上述装置可通过其内置的各个功能模块执行如上述图2中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
139.参见图9,图9是本技术实施例提供的区块链系统的节点更新装置的另一结构示意图。本技术实施例提供的装置包括:
140.代码获取模块91,用于获取更新源代码对应的可执行代码,其中,上述更新源代码对应于任一种编程语言,上述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;
141.节点更新模块92,用于基于上述可执行代码在节点运行过程中进行节点更新,并与上述区块链系统中的其他节点同步更新状态;
142.信息处理模块93,用于确定针对上述可执行代码的第一执行结果,若上述第一执行结果与上述区块链系统中的其他节点针对上述可执行代码的第二执行结果一致,则确定完成针对上述更新源代码的节点更新。
143.在一些可行的实施方式中,上述信息处理模块93,用于:
144.确定上述更新源代码的第一标识,上述第一标识包括上述更新源代码对应业务的业务标识或者对应功能的功能标识中的至少一项;
145.基于上述第一标识将上述可执行代码作为历史可执行代码进行存储。
146.在一些可行的实施方式中,上述信息处理模块93,还用于:
147.响应于针对上述第一业务或第一功能的版本查询请求,确定上述第一业务或上述第一功能对应的目标标识,基于上述目标标识对应的至少一个历史可执行代码,确定上述第一业务或者第一功能的版本更新记录;
148.将上述可执行代码与各历史可执行代码进行匹配,若各上述历史可执行代码中不包括上述可执行代码,则允许基于上述可执行代码进行节点更新。
149.在一些可行的实施方式中,上述节点更新模块92,还用于:
150.获取上述更新源代码,基于上述更新源代码对上述可执行代码进行可信验证;
151.若上述可执行代码通过验证,则基于上述可执行代码在节点运行过程中进行节点更新。
152.具体实现中,上述装置可通过其内置的各个功能模块执行如上述图4中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
153.参见图10,图10是本技术实施例提供的电子设备的结构示意图。如图10所示,本实施例中的电子设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述电子设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(display)、键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1004可以是高速ram存储器,也可以是非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
154.在图10所示的电子设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
155.确定更新源代码,对上述更新源代码进行编译,得到上述更新源代码对应的可执行代码,其中,上述更新源代码对应于任一种编程语言,上述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;
156.将上述可执行代码发送至区块链系统中的各节点,以使各上述节点基于上述可执行代码在节点运行过程中进行节点更新并同步更新状态;
157.确定各上述节点的更新状态同步结果,基于上述更新状态同步结果,确定各上述节点针对上述更新源代码进行同步更新。
158.在一些可行的实施方式中,上述更新源代码,包括以下至少一项:
159.预编写的用于对区块链系统中的各节点进行更新的初始代码;
160.目标应用程序的库文件代码;
161.区块链系统中任一节点编译的用于对上述区块链系统中的各节点进行更新的初
始代码。
162.在一些可行的实施方式中,上述处理器1001还用于:
163.将上述可执行代码发送至区块链系统中的目标节点,以使上述目标节点将上述可执行代码广播至上述区块链系统中的其他节点;
164.将上述可执行代码发送至区块链系统中的任一节点,以使上述区块链系统中的其他节点通过共识机制从该节点获取上述可执行代码。
165.在一些可行的实施方式中,上述处理器1001作为区块链系统中的节点时,用于:
166.获取更新源代码对应的可执行代码,其中,上述更新源代码对应于任一种编程语言,上述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;
167.基于上述可执行代码在节点运行过程中进行节点更新,并与上述区块链系统中的其他节点同步更新状态;
168.确定针对上述可执行代码的第一执行结果,若上述第一执行结果与上述区块链系统中的其他节点针对上述可执行代码的第二执行结果一致,则确定完成针对上述更新源代码的节点更新。
169.在一些可行的实施方式中,上述处理器1001还用于:
170.确定上述更新源代码的第一标识,上述第一标识包括上述更新源代码对应业务的业务标识或者对应功能的功能标识中的至少一项;
171.基于上述第一标识将上述可执行代码作为历史可执行代码进行存储。
172.在一些可行的实施方式中,上述处理器1001还用于:
173.响应于针对上述第一业务或第一功能的版本查询请求,确定上述第一业务或上述第一功能对应的目标标识,基于上述目标标识对应的至少一个历史可执行代码,确定上述第一业务或者第一功能的版本更新记录;
174.将上述可执行代码与各历史可执行代码进行匹配,若各上述历史可执行代码中不包括上述可执行代码,则允许基于上述可执行代码进行节点更新。
175.在一些可行的实施方式中,上述处理器1001用于:
176.获取上述更新源代码,基于上述更新源代码对上述可执行代码进行可信验证;
177.若上述可执行代码通过验证,则基于上述可执行代码在节点运行过程中进行节点更新。
178.应当理解,在一些可行的实施方式中,上述处理器1001可以是中央处理单元(central processing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
179.具体实现中,上述电子设备1000可通过其内置的各个功能模块执行如上述图2和/或图4中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
180.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,被处理器执行以实现图2和/或图4中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
181.上述计算机可读存储介质可以是前述任一实施例提供的装置或电子设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(randomaccess memory,ram)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
182.本技术实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机指令,上述计算机程序或计算机指令被处理器执行时本技术实施例提供的语音播放方法执行图2和/或图4中各个步骤所提供的方法。
183.本技术的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或电子设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或电子设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
184.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
185.以上所揭露的仅为本技术较佳实施例而已,不能以此来限定本技术之权利范围,因此依本技术权利要求所作的等同变化,仍属本技术所涵盖的范围。
技术特征:
1.一种区块链系统的节点更新方法,其特征在于,所述方法包括:确定更新源代码,对所述更新源代码进行编译,得到所述更新源代码对应的可执行代码,其中,所述更新源代码对应于任一种编程语言,所述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;将所述可执行代码发送至区块链系统中的各节点,以使各所述节点基于所述可执行代码在节点运行过程中进行节点更新并同步更新状态;确定各所述节点的更新状态同步结果,基于所述更新状态同步结果,确定各所述节点针对所述更新源代码进行同步更新。2.根据权利要求1所述的方法,其特征在于,所述更新源代码,包括以下至少一项:预编写的用于对区块链系统中的各节点进行更新的初始代码;目标应用程序的库文件代码;区块链系统中任一节点编译的用于对所述区块链系统中的各节点进行更新的初始代码。3.根据权利要求1所述的方法,其特征在于,所述将所述可执行代码发送至区块链系统中的各节点,包括以下至少一项:将所述可执行代码发送至区块链系统中的目标节点,以使所述目标节点将所述可执行代码广播至所述区块链系统中的其他节点;将所述可执行代码发送至区块链系统中的任一节点,以使所述区块链系统中的其他节点通过共识机制从该节点获取所述可执行代码。4.一种区块链系统的节点更新方法,其特征在于,所述方法包括:获取更新源代码对应的可执行代码,其中,所述更新源代码对应于任一种编程语言,所述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;基于所述可执行代码在节点运行过程中进行节点更新,并与所述区块链系统中的其他节点同步更新状态;确定针对所述可执行代码的第一执行结果,若所述第一执行结果与所述区块链系统中的其他节点针对所述可执行代码的第二执行结果一致,则确定完成针对所述更新源代码的节点更新。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:确定所述更新源代码的第一标识,所述第一标识包括所述更新源代码对应业务的业务标识或者对应功能的功能标识中的至少一项;基于所述第一标识将所述可执行代码作为历史可执行代码进行存储。6.根据权利要求5所述的方法,其特征在于,所述方法还包括以下至少一项:响应于针对所述第一业务或第一功能的版本查询请求,确定所述第一业务或所述第一功能对应的目标标识,基于所述目标标识对应的至少一个历史可执行代码,确定所述第一业务或者第一功能的版本更新记录;将所述可执行代码与各历史可执行代码进行匹配,若各所述历史可执行代码中不包括所述可执行代码,则允许基于所述可执行代码进行节点更新。7.根据权利要求4所述的方法,其特征在于,所述基于所述可执行代码在节点运行过程中进行节点更新,包括:
获取所述更新源代码,基于所述更新源代码对所述可执行代码进行可信验证;若所述可执行代码通过验证,则基于所述可执行代码在节点运行过程中进行节点更新。8.一种区块链系统的节点更新装置,其特征在于,所述装置包括:代码确定模块,用于确定更新源代码,对所述更新源代码进行编译,得到所述更新源代码对应的可执行代码,其中,所述更新源代码对应于任一种编程语言,所述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;代码发送模块,用于将所述可执行代码发送至区块链系统中的各节点,以使各所述节点基于所述可执行代码在节点运行过程中进行节点更新并同步更新状态;结果确定模块,用于确定各所述节点的更新状态同步结果,基于所述更新状态同步结果,确定各所述节点针对所述更新源代码进行同步更新。9.一种区块链系统的节点更新装置,其特征在于,所述装置包括:代码获取模块,用于获取更新源代码对应的可执行代码,其中,所述更新源代码对应于任一种编程语言,所述可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;节点更新模块,用于基于所述可执行代码在节点运行过程中进行节点更新,并与所述区块链系统中的其他节点同步更新状态;信息处理模块,用于确定针对所述可执行代码的第一执行结果,若所述第一执行结果与所述区块链系统中的其他节点针对所述可执行代码的第二执行结果一致,则确定完成针对所述更新源代码的节点更新。10.一种电子设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;所述存储器用于存储计算机程序;所述处理器被配置用于在调用所述计算机程序时,执行如权利要求1至7任一项所述的方法。11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至7任一项所述的方法。12.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或者计算机指令,所述计算机程序或所述计算机指令被处理器执行时实现权利要求1至7任一项所述的方法。
技术总结
本申请实施例公开了一种区块链系统的节点更新方法、装置、设备以及存储介质,可适用于区块链技术以及计算机技术等领域。该方法包括:确定更新源代码,对更新源代码进行编译,得到更新源代码对应的可执行代码,其中,更新源代码对应于任一种编程语言,可执行代码为支持区块链系统中的各节点直接运行的预设格式的字节码;将可执行代码发送至区块链系统中的各节点,以使各节点基于可执行代码在节点运行过程中进行节点更新并同步更新状态;确定各节点的更新状态同步结果,基于更新状态同步结果,确定各节点针对更新源代码进行同步更新。采用本申请实施例,可降低区块链系统中的各节点之间的版本差异,提升节点更新效率,适用性高。适用性高。适用性高。
技术研发人员:申清瑞
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.01.07
技术公布日:2023/7/21
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
