用于实现区块链的多节点的部署的方法、装置及存储介质
技术领域
本公开内容属于区块链技术领域,尤其涉及一种用于实现对区块链的多个节点进行部署的方法、装置及相应的计算机可读存储介质。
背景技术
区块链(Block Chain)技术是近年来在金融科技(FinTech)领域出现的新兴技术,是一种基于去中心化的对等网络的技术,其将密码学原理与共识机制相结合来保障分布式各节点的数据连贯性和持续性,从而实现信息不可篡改、多节点集体维护性、公开性、隐私保护等属性,进而创造了一套隐私、高效、安全的共享价值体系。
区块链根据访问权限通常分为公有链、联盟链和私有链。其中,公有链是指任何人都可以根据协议接入并且参与共识的区块链;联盟链是指其共识过程受到预选节点控制的区块链;私有链是指所有权限都在一个组织中,并受该组织任意控制的区块链。
通常的区块链程序结构包括:客户端层,其用于为用户或外部系统提供可操作界面并用于管理用户的个人信息等数据;应用程序编程接口(Application ProgrammingInterface,简称API)层,其为用户或外部系统提供restful或websocket等网络服务,同时还可以使用下层的远程过程调用(Remote Procedure Call,简称为RPC)功能;以及节点层,其包括了多个通过P2P网络协议通信的节点,节点层通过API层与客户端层进行交互,以便接收用户或外部系统的创建执行交易动作以及将交易结果、块信息、链状态等反馈给用户或外部系统。
现有技术中,由于区块链由大量的节点组成,而且当测试整条区块链时往往需要逐个部署十个甚至几十个节点,使得区块链程序的安装、调试和部署需要耗费大量人力和时间,而且在区块链的开发调试过程中每一次修改都需要重新编译程序,然后在若干个节点上逐个运行,由此带来了巨大的工作量。
发明内容
由于现有的区块链创建过程中在区块链链程序开发完成后并对其进行测试时,需要反复进行源码编译、上传指定位置、初始化区块链产生配置模板、修改配置文件、启动区块链等过程繁复的工作,由此对于区块链的运行维护产生极大的不便。针对上述问题,本公开内容的第一方面提出了一种用于实现对区块链的多个节点进行部署的方法,所述方法包括:
在区块链的每个节点上运行链初始化程序以生成配置模板以及所述节点的公钥和私钥;
将所生成的每个节点的公钥存储在所述区块链外部的管控服务器上;
在所述区块链的每个节点上利用所述配置模板、所述区块链的所有节点的公钥以生成一个或多个配置文件,其中,所述一个或多个配置文件中至少包括所述区块链的所有节点的公钥、所述节点的通信IP地址及端口信息以及所述区块链的其他所有节点的第一IP地址及端口;以及
在所述区块链的每个节点上运行包括其所生成的所述一个或多个配置文件的链启动程序。
在依据本公开内容的一个实施例中,在区块链的每个节点上运行链初始化程序以生成配置模板以及所述节点的公钥和私钥之前,所述方法还包括:在所述区块链的每个节点上结束先前运行的链初始化程序的所有进程并删除相关的配置文件。
在依据本公开内容的一个实施例中,所述节点的通信IP地址及端口信息包括:所述节点向所述区块链上的其他节点提供P2P服务的IP地址及端口;以及所述节点向应用程序编程接口层提供远程过程调用服务的IP地址及端口。
在依据本公开内容的一个实施例中,所述节点的第一IP地址及端口是所述节点向所述区块链上的其他节点提供P2P服务的IP地址及端口。
在依据本公开内容的一个实施例中,当所述区块链应用于金融场景时,所生成的一个或多个配置文件中还包括超级账户信息,其中,所述超级账户信息至少包括所述区块链的名称以及所述区块链发行的数字货币的总发行量。
在依据本公开内容的一个实施例中,当在所述区块链的任一节点上运行所述链启动程序失败时或者当需要对所述链初始化程序进行修改时,所述方法还包括:
修改所述链初始化程序;
在所述区块链的每个节点上结束先前运行的链初始化程序的所有进程并删除相关的配置文件;
在所述区块链的每个节点上运行修改后的链初始化程序以生成配置模板以及所述节点的公钥和私钥;
将所生成的每个节点的公钥存储在所述区块链外部的所述管控服务器上;
在所述区块链的每个节点上利用所述配置模板、所述区块链的所有节点的公钥以生成一个或多个配置文件,其中,所述一个或多个配置文件中至少包括所述区块链的所有节点的公钥、所述节点的通信IP地址及端口信息和其他所有节点的第一IP地址及端口;
在所述区块链的每个节点上运行包括其所生成的所述一个或多个配置文件的链启动程序。
此外,在本公开内容的第二方面提出了一种计算机可读存储介质,所述存储介质包括指令,当所述指令被执行时,使得所述计算机的处理器至少用于:
在区块链的每个节点上运行链初始化程序以生成配置模板以及所述节点的公钥和私钥;
将所生成的每个节点的公钥存储在所述区块链外部的管控服务器上;
在所述区块链的每个节点上利用所述配置模板、所述区块链的所有节点的公钥以生成一个或多个配置文件,其中,所述一个或多个配置文件中至少包括所述区块链的所有节点的公钥、所述节点的通信IP地址及端口信息以及所述区块链的其他所有节点的第一IP地址及端口;以及
在所述区块链的每个节点上运行包括其所生成的所述一个或多个配置文件的链启动程序。
在依据本公开内容的一个实施例中,当所述指令被执行时,使得所述计算机的处理器至少还用于:在所述区块链的每个节点上运行所述链初始化程序以生成所述配置模板以及所述节点的公钥和私钥之前,在所述区块链的每个节点上结束先前运行的链初始化程序的所有进程并删除相关的配置文件。
在依据本公开内容的一个实施例中,所述节点的通信IP地址及端口信息包括:所述节点向所述区块链上的其他节点提供P2P服务的IP地址及端口;以及所述节点向应用程序编程接口层提供远程过程调用服务的IP地址及端口。
在依据本公开内容的一个实施例中,所述节点的第一IP地址及端口是所述节点向所述区块链上的其他节点提供P2P服务的IP地址及端口。
在依据本公开内容的一个实施例中,当所述区块链应用于金融场景时,所生成的一个或多个配置文件中还包括超级账户信息,其中,所述超级账户信息至少包括所述区块链的名称以及所述区块链发行的数字货币的总发行量。
在依据本公开内容的一个实施例中,当在所述区块链的任一节点上运行所述链启动程序失败时或者当需要对所述链初始化程序进行修改时,执行所述指令使得所述计算机的处理器至少还用于:
修改所述链初始化程序;
在所述区块链的每个节点上结束先前运行的链初始化程序的所有进程并删除相关的配置文件;
在所述区块链的每个节点上运行修改后的链初始化程序以生成配置模板以及所述节点的公钥和私钥;
将所生成的每个节点的公钥存储在所述区块链外部的所述管控服务器上;
在所述区块链的每个节点上利用所述配置模板、所述区块链的所有节点的公钥以生成一个或多个配置文件,其中,所述一个或多个配置文件中至少包括所述区块链的所有节点的公钥、所述节点的通信IP地址及端口信息和其他所有节点的第一IP地址及端口;
在所述区块链的每个节点上运行包括其所生成的所述一个或多个配置文件的链启动程序。
最后,本公开内容的第三方面提出了一种用于实现对区块链的多个节点进行部署的装置,所述装置包括:
初始化模块,所述初始化模块被配置为在区块链的每个节点上运行链初始化程序以生成配置模板以及所述节点的公钥和私钥;
传输模块,所述传输模块被配置为将所生成的每个节点的公钥存储在所述区块链外部的管控服务器上;
配置文件生成模块,所述配置文件生成模块被配置为在所述区块链的每个节点上利用所述配置模板、所述区块链的所有节点的公钥以生成一个或多个配置文件,其中,所述一个或多个配置文件中至少包括所述区块链的所有节点的公钥、所述节点的通信IP地址及端口信息以及所述区块链的其他所有节点的第一IP地址及端口;以及
启动模块,所述启动模块被配置为在所述区块链的每个节点上运行包括其所生成的所述一个或多个配置文件的链启动程序。
在依据本公开内容的一个实施例中,所述装置还包括:删除模块;在所述区块链的每个节点上运行所述链初始化程序以生成所述配置模板以及所述节点的公钥和私钥之前,所述删除模块被配置为在所述区块链的每个节点上结束先前运行的链初始化程序的所有进程并删除相关的配置文件。
在依据本公开内容的一个实施例中,所述节点的通信IP地址及端口信息包括:所述节点向所述区块链上的其他节点提供P2P服务的IP地址及端口;以及所述节点向应用程序编程接口层提供远程过程调用服务的IP地址及端口。
在依据本公开内容的一个实施例中,所述节点的第一IP地址及端口是所述节点向所述区块链上的其他节点提供P2P服务的IP地址及端口。
在依据本公开内容的一个实施例中,当所述区块链应用于金融场景时,所生成的一个或多个配置文件中还包括超级账户信息,其中,所述超级账户信息至少包括所述区块链的名称以及所述区块链发行的数字货币的总发行量。
在依据本公开内容的一个实施例中,当在所述区块链的任一节点上运行所述链启动程序失败时或当需要对所述链初始化程序进行修改时,所述装置还包括:
修改模块,所述修改模块被配置为修改所述链初始化程序;以便于所述初始化模块在区块链的每个节点上运行修改后的链初始化程序以生成配置模板以及所述节点的公钥和私钥。
依据本公开内容的用于实现对区块链的多个节点进行部署的方法、装置及相应的计算机可读存储介质能够同时在区块链的所有节点上运行链初始化程序以及链启动程序,并且当出现运行链启动程序失败或需要修改链启动程序时,修改链初始化程序,随后同时在区块链的所有节点上运行修改后的链初始化程序以及相应的链启动程序。因此,本公开内容实现了批量化部署区块链上的所有节点,并避免了在区块链的所有节点上逐个运行节点程序以及当任一节点运行失败或需要修改链启动程序时再逐个节点进行编译、修改配置、再次运行节点程序等步骤;从而大大地提高了区块链的运行维护效率并减轻了开发人员的工作负担。
附图说明
结合附图并参考以下详细说明,本公开的各实施例的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实施例,在附图中:
图1为现有技术中的区块链的网络结构100的示意图;
图2为依据本公开内容的用于实现对区块链的多个节点进行部署的方法200的流程图;
图3为依据本公开内容的用于实现对区块链的多个节点进行部署的方法300的流程图;
图4为依据本公开内容的用于实现对区块链的多个节点进行部署的装置400的示意图;
图5A示出了依据本公开内容实施的用于实现对区块链的多个节点进行部署的方法的实施例的第一程序代码示意图;
图5B示出了依据本公开内容实施的用于实现对区块链的多个节点进行部署的方法的实施例的第二程序代码示意图;
图5C示出了依据本公开内容实施的用于实现对区块链的多个节点进行部署的方法的实施例的第三程序代码示意图;以及
图5D示出了依据本公开内容实施的用于实现对区块链的多个节点进行部署的方法的实施例的第四程序代码示意图。
具体实施方式
以下参考附图详细描述本公开的各个示例性实施例。附图中的流程图和框图示出了根据本公开的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分可以包括一个或多个用于实现各个实施例中所规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
本文所使用的术语“包括”、“包含”及类似术语应该被理解为是开放性的术语,即“包括/包含但不限于”,表示还可以包括其他内容。术语“基于”是“至少部分地基于"。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”,等等。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。对于附图中的各单元之间的连线,仅仅是为了便于说明,其表示至少连线两端的单元是相互通信的,并非旨在限制未连线的单元之间无法通信。
图1为现有技术中的区块链网络结构100的示意图。从图1中可以看出,该区块链网络结构100包括但不限于通过网络(诸如有线网络和/或无线网络)连接起来的节点101、102、103、104、105、106、107、108以及109。当对区块链网络结构100上的所有节点进行部署时,可以采用多种不同的编程工具、环境开发区块链程序。例如,一般在Windows环境中采用跨平台编辑器(诸如visual studio code软件)进行Go语言代码的阅读、编写和调试,其中,在visual studio code软件中可以直接集成Go开发、调试工具链。也可以在Linux环境中使用Dlv(也称为Delve)工具进行单步调试,在Linux环境中编译、部署、运行调试稳定后的区块链程序代码,当运行存在错误时,也可以直接在Linux环境中进行修改和重新发布。
图2为本公开的用于实现对区块链的多个节点进行部署的方法200,具体在区块链的每个节点的服务器上执行以下相应的步骤:
在步骤S210之前方法200还包括:在区块链的每个节点上结束先前运行的链初始化程序的所有进程并删除相关的配置文件。该步骤的执行使得在执行步骤S210之前确保每个节点的服务器处于初始化环境,从而提高了对区块链的节点部署的准确性和有效性。
步骤S210:在区块链的每个节点上运行链初始化程序以生成配置模板以及该节点的公钥和私钥。
在步骤S210之前当每个节点连入区块链的网络中时生成了每个节点向区块链上的其他节点提供P2P服务的地址及端口以及每个节点向应用程序编程接口层提供RPC服务的IP地址及端口。此外,在步骤S210之前,外部的管控服务器存储所生成的每个节点的向区块链上的其他节点提供P2P服务的IP地址及端口。
在步骤S210中运行的链初始化程序可以采用多种方式生成,本公开内容提供了能生成该链初始化程序(例如,./chain init)的至少一种实施方式:
在本实施方式中,使用Git仓库作为代码管理工具,程序开发者编写该链初始化程序代码后提交至Git服务器,然后在Linux服务器上将最新的链初始化程序代码取出;利用Go语言的go build命令对该最新的链初始化程序代码进行编译,从而生成区块链的节点和应用程序编程接口层可执行的链初始化程序;将该链初始化程序存储Git仓库中并提交到Git服务器,利用管控服务器安排每个节点的服务器从Git服务器中获得链初始化程序并运行该链初始化程序。此外,Git仓库还用于存储后续步骤S220生成的配置文件以及后续每个节点服务器的自动执行脚本。
如图5A所示,首先将先前运行的链初始化程序的所有进程结束(如图5A所示,执行“sh kill.sh cmd;sh kill.sh chain”)以及删除相关的配置文件。然后运行当前的链初始化程序(如图5A所示,执行“cmd=‘./chain init’”),并且生成配置模板以及相应节点的公钥和私钥,该配置模板包括相应节点的要写入的向区块链上的其他节点提供P2P服务的IP地址及端口(如图5A所示的node_laddr)、要写入的向应用程序编程接口层提供远程过程调用服务的IP地址及端口(如图5A所示的rpc_laddr)以及要写入的区块链的其他所有节点的第一IP地址及端口(也即,每个节点向区块链上的其他节点提供P2P服务的IP地址(如图5A所示的seeds))的需求。
步骤S220:将所生成的每个节点的公钥存储在区块链外部的管控服务器上。
步骤230:在区块链的每个节点上利用该配置模板、区块链的所有节点的公钥以生成一个或多个配置文件。
在步骤S230中每个节点的服务器通过管控服务器获得该区块链上所有节点的公钥,使得所生成的一个或多个配置文件至少包括该区块链上所有节点的公钥;同时,所生成的一个或多个配置文件至少还包括该节点向区块链上的其他节点提供P2P服务的IP地址及端口、向应用程序编程接口层提供远程过程调用服务的IP地址及端口以及区块链的其他所有节点的第一IP地址及端口。此外,当区块链应用于金融场景时,所生成的一个或多个配置文件还包括超级账户信息,该超级账户信息至少包括该区块链的名称以及该区块链发行的数字货币的总发行量。
对于步骤S230而言,可以存在多种实施方式,如图5B所示,本公开示出了关于步骤S230的至少一种实施方式:
其中,图5B中的“address”为随机生成的一个公钥地址,其含义为区块链的初始发行账户的地址。接下来的“pub_key”为各个节点的公钥,区块链上存在认证节点的数量与存在的公钥数量一致,例如本实施方式中存在四个节点,则相应的存在四个公钥。公钥放在priv_validator.json的某一行,通过sed命令将其取出。
在步骤S240中,在区块链的每个节点上运行包括其所生成的所述一个或多个配置文件的链启动程序(例如,./chain run)。
图5C示出了实施图2所公开的用于实现对区块链的多个节点进行部署的方法200的至少一种实施方式的程序代码。如图5C可知,在本实施方式的区块链上存在四个节点,四个节点的服务器同步一次执行步骤S210、S220、S230以及S240,以实现同时部署区块链上的所有节点的目的。
图3示出了本公开的用于实现对区块链的多个节点进行部署的方法300,该方法300与上述方法200的区别在于:当在区块链的一个或多个节点上运行链启动程序失败(例如,外部管控服务器检测到区块链的任一节点上运行的链启动程序失败)时或当需要对链初始化程序进行修改时执行方法300。在本公开内容中,方法300具体在区块链的每个节点的服务器上执行以下相应的步骤:
步骤S310:修改链初始化程序。在具体实施例中,管控服务器利用如图5D所示的程序代码实现对链初始化程序的修改更新,具体操作如下:
使用Git仓库作为代码管理工具,程序开发者修改该链初始化程序代码后提交至Git服务器,然后在Linux服务器上将最新的链初始化程序代码取出;利用Go语言的gobuild命令对该最新的链初始化程序代码进行编译,从而生成区块链和应用程序编程接口层可执行的修改后的链初始化程序;将该链初始化程序存储Git仓库中并提交到Git服务器,利用管控服务器来安排每个节点的服务器从Git服务器中获得修改后的链初始化程序并运行该链初始化程序。此外,Git仓库还用于存储后续步骤S320生成的配置文件以及后续每个节点服务器的自动执行脚本。
步骤S320:在区块链的每个节点上结束先前运行的链初始化程序的所有进程并删除相关的配置文件。在本实施方式中,由管控服务器控制结束先前运行在每个节点的服务器上的链初始化程序的所有进程并且删除每个节点的服务器上的相关配置文件。步骤S320的执行使得区块链的每个节点的服务器处于初始化环境,从而保证后续步骤的执行能够有效地对区块链的节点进行部署。
在步骤S330之前、当每个节点连入区块链的网络中时,生成了每个节点向区块链上的其他节点提供P2P服务的地址及端口以及每个节点向应用程序编程接口层提供RPC服务的IP地址及端口。此外,在步骤S330之前,外部的管控服务器存储所生成的每个节点的向区块链上的其他节点提供P2P服务的IP地址及端口。
步骤S330:在区块链的每个节点上运行修改后的链初始化程序以生成配置模板以及该节点的公钥和私钥。其中,所生成的配置模板包括:相应节点的要写入的向区块链上的其他节点提供P2P服务的IP地址及端口、要写入的向应用程序编程接口层提供远程过程调用服务的IP地址及端口以及要写入的区块链的其他所有节点的第一IP地址及端口(也即,每个节点向区块链上的其他节点提供P2P服务的IP地址)的需求。
步骤S340:将所生成的每个节点的公钥存储在区块链外部的管控服务器上。
步骤S350:在区块链的每个节点上利用配置模板、区块链上所有节点的公钥以生成一个或多个配置文件。每个节点的服务器通过管控服务器获得该区块链上所有节点的公钥,使得所生成的一个或多个配置文件至少包括该区块链上所有节点的公钥;同时,所生成的一个或多个配置文件至少还包括从管控服务器获得该节点向区块链上的其他节点提供P2P服务的IP地址及端口、向应用程序编程接口层提供远程过程调用服务的IP地址及端口以及区块链的其他所有节点的第一IP地址及端口。此外,当区块链应用于金融场景时,所生成的一个或多个配置文件还包括超级账户信息,该超级账户信息至少包括该区块链的名称以及该区块链发行的数字货币的总发行量。
步骤S360:在区块链的每个节点上运行包括其所生成的一个或多个配置文件的链启动程序。步骤S360的执行方式与图2中的步骤S240的执行方式相同,在此不再赘述。
在本公开内容中,通过利用图2的方法200和图3的方法300实现了在完成区块链程序开发之后对区块链的调试、运行维护工作,所公开的方法200和方法300能够对区块链的所有节点实施同步部署,减轻相关人员的工作负担、提高区块链的调试、运行维护的效率并且改善对区块链的所有节点实施同步部署的精准性。
上述的用于实现对区块链的多个节点进行部署的方法能够通过有形的计算机可读存储介质的方式来实现,该可读存储介质包括指令,当所述指令被执行时,使得计算机的处理器至少用于实现图2的方法200以及图3的方法300的功能。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
图4为依据本公开内容的用于实现对区块链的多个节点进行部署的装置400的示意图。从图4中可以看出,用于实现对区块链的多个节点进行部署的装置400包括初始化模块420、配置文件生成模块430、启动模块440、传输模块460;其中,初始化模块420被配置为在区块链的每个节点上运行链初始化程序以生成配置模板以及该节点的公钥和私钥;传输模块460被配置为将所生成的每个节点的公钥存储在区块链外部的管控服务器上;配置文件生成模块430被配置为在区块链的每个节点上利用配置模板、区块链的所有节点的公钥来生成一个或多个配置文件;启动模块440被配置为在区块链的每个节点上运行包括其所生成的一个或多个配置文件的链启动程序。此外,用于实现对区块链的多个节点进行部署的装置400还包括删除模块410和修改模块450,其中,在区块链的每个节点上运行链初始化程序以生成配置模板以及该节点的公钥和私钥之前,删除模块410被配置为在区块链的每个节点上结束先前运行的链初始化程序的所有进程并删除相关的配置文件;当在区块链的任一节点上运行链启动程序失败时或当需要对链初始化程序进行修改时,修改模块450被配置为修改链初始化程序;以便于初始化模块420在区块链的每个节点上运行修改后的链初始化程序以生成配置模板。
依据本公开内容的用于实现对区块链的多个节点进行部署的方法、装置以及相对应的计算机可读存储介质能够在区块链的所有节点上同时运行链初始化程序,并且在每个节点上生成相应的配置文件,最后在每个节点上运行包括其所生成的配置文件的链启动程序;当链启动程序在每个节点上运行成功时表明区块链上的所有节点部署成功;当链启动程序在一个或多个节点上运行失败或根据区块链需求的变化等各种原因需要修改链初始化程序时,对链初始化程序进行修改,然后重新在每个节点上运行链初始化程序并完成前述步骤的相应动作。
与现有技术相比,本公开内容提出的方法的优点在于以下几个方面:
首先,本方法无需逐次对区块链上的每个节点进行部署,以避免在开发调试过程中对链初始化程序每做一次修改,就需要重新逐次对区块链上的每个节点进行部署,因而本方法大大降低了操作人员的工作量。
其次,本方法同时对区块链上的所有节点进行部署,在每个节点上同时运行链初始化程序、生成配置文件以及运行链启动程序,批量化实现了对区块链的所有节点的部署,节约了对区块链的运行维护时间并提高运行维护的效率。
应当注意,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开内容的实施例可选实施例,并不用于限制本公开内容的实施例,对于本领域的技术人员来说,本公开内容的实施例可以有各种更改和变化。凡在本公开内容的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开内容的实施例的保护范围之内。
虽然已经参考若干具体实施例描述了本公开内容的实施例,但是应该理解,本公开内容的实施例并不限于所公开的具体实施例。本公开内容的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。