区块同步、节点加入区块链网络的方法与流程

专利2022-05-09  90


本说明书一个或多个实施例涉及信息技术领域,尤其涉及一种区块同步、节点加入区块链网络的方法。



背景技术:

目前的区块链网络的创建流程为,分别在各创世节点的本地部署区块链的创世块,创世块中记载了各创世节点的通信地址。

后续如果有新节点想要加入区块链网络,则可以在该新节点的本地部署包含创世块信息的网络配置文件,该新节点根据网络配置文件,在本地部署创世块,进而根据创世块中记载的创世节点的通信地址,请求从创世节点同步区块链中除创世块之外的其他区块,从而可以加入区块链网络。

然而,新节点有时难以进行区块同步。



技术实现要素:

有鉴于此,本说明书一个或多个实施例提供一种区块同步、节点加入区块链网络的方法。

为实现上述目的,本说明书一个或多个实施例提供技术方案如下:

根据本说明书一个或多个实施例的第一方面,提出了一种区块同步方法,应用于待加入区块链网络的目标节点,所述方法包括:

获取网络配置文件;所述网络配置文件包含所述区块链网络的至少一个当前节点的通信地址;

在所述区块链网络的每个创世节点已退出网络的情况下,根据所述区块链网络的至少一个当前节点的通信地址,请求从当前节点同步区块链中的区块。

根据本说明书一个或多个实施例的第二方面,提出了一种节点加入区块链网络的方法,应用于区块链网络,所述区块链网络中部署有智能合约,所述智能合约用于维护所述区块链网络的当前节点列表,所述方法包括:

获取节点加入交易;

根据所述节点加入交易,调用所述智能合约执行:若确定待加入所述区块链网络的目标节点具有加入资格,则以所述目标节点为所述区块链网络的一个当前节点,更新所述当前节点列表;

在确定所述当前节点列表中记载有所述目标节点的情况下,许可所述目标节点从所述区块链网络中的当前节点同步区块;其中,所述目标节点基于第一方面所述的区块同步方法进行区块同步。

根据本说明书一个或多个实施例的第三方面,提出了一种区块同步装置,应用于待加入区块链网络的目标节点,所述装置包括:

获取模块,获取网络配置文件;所述网络配置文件包含所述区块链网络的至少一个当前节点的通信地址;

第一请求同步模块,在所述区块链网络的每个创世节点已退出网络的情况下,根据所述区块链网络的至少一个当前节点的通信地址,请求从当前节点同步区块链中的区块。

根据本说明书一个或多个实施例的第四方面,提出了一种区块链网络,所述区块链网络中部署有智能合约,所述智能合约用于维护所述区块链网络的当前节点列表;

所述区块链网络中每个当前节点,获取节点加入交易;根据所述节点加入交易,调用所述智能合约执行:若确定待加入所述区块链网络的目标节点具有加入资格,则以所述目标节点为所述区块链网络的一个当前节点,更新所述当前节点列表;在确定所述当前节点列表中记载有所述目标节点的情况下,许可所述目标节点从所述区块链网络中的当前节点同步区块;

其中,所述目标节点基于第一方面所述的区块同步方法进行区块同步。

在上述技术方案中,在用于使目标节点加入区块链网络的网络配置文件中,增加区块链网络的至少一个当前节点的通信地址,从而使得即便在各个创世节点已经退出区块链网络的情况下,目标节点也可以进行区块同步,根据网络配置文件中包含的当前节点的通信地址,请求从区块链网络的当前节点同步区块。

此外,对于待加入区块链网络的目标节点,区块链网络可以先受理并调用智能合约执行用于请求将目标节点加入区块链网络的节点加入交易,在将目标节点记载到智能合约维护的当前节点列表中之后,才会许可目标节点同步区块。

通过上述技术方案,可以提升节点加入区块链网络的成功率。

附图说明

图1是本说明书提供的一种创建智能合约的示意图。

图2是本说明书提供的一种调用智能合约的示意图。

图3是本说明书提供的一种创建和调用智能合约的示意图。

图4是本说明书提供的一种区块同步方法的流程示意图。

图5是本说明书提供的一种节点加入区块链网络的方法的流程示意图。

图6是本说明书提供的一种区块同步装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

区块链一般被划分为三种类型:公有链(publicblockchain),私有链(privateblockchain)和联盟链(consortiumblockchain)。此外,还有多种类型的结合,比如私有链 联盟链、联盟链 公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。

不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。

以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(evm),每个以太坊节点都可以运行evm。evm是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在evm上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。部署在区块链上的智能合约可以是字节码的形式。

例如图1所示,bob将一个包含创建智能合约信息的交易发送到以太坊网络后,节点1的evm可以执行这个交易并生成对应的合约实例。图1中的“0x6f8ae93…”代表了这个合约的地址,交易的data字段保存的可以是字节码,交易的to字段为空。节点间通过共识机制达成一致后,这个合约成功创建,并且可以在后续过程中被调用。合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址,合约代码将保存在该合约账户中。智能合约的行为由合约代码控制。换句话说,智能合约使得区块链上产生包含合约代码和账户存储(storage)的虚拟账户。

如图2所示,仍以以太坊为例,bob将一个用于调用智能合约的交易发送到以太坊网络后,某一节点的evm可以执行这个交易并生成对应的合约实例。图2中交易的from字段是交易发起方(即bob)的账户的地址,to字段中的“0x6f8ae93…”代表了被调用的智能合约的地址,value字段在以太坊中是以太币的值,交易的data字段保存的调用智能合约的方法和参数。调用智能合约后,balance的值可能改变。后续,某个客户端可以通过某一区块链节点(例如图2中的节点6)查看balance的当前值。智能合约以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当交易完成后,区块链上就保存了无法篡改、不会丢失的交易凭证。

创建智能合约和调用智能合约的示意图如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、编译成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,智能合约代码分布式的运行在以太坊网络中每个节点的虚拟机中。

需要说明的是,除了可以由用户创建智能合约,也可以在创世块中由系统设置智能合约。这类合约一般称为创世合约。一般的,创世合约中可以设置一些区块链网络的数据结构、参数、属性和方法。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修改系统级的合约(简称为系统合约)。另外除了以太坊中的evm外,不同的区块链网络还可能采用各种的虚拟机,这里并不限定。

区块链网络中的节点在执行调用智能合约的交易后,会生成相应的收据(receipt),以用于记录与执行该智能合约相关的信息。这样,可以通过查询交易的收据来获得合约执行结果的相关信息。合约执行结果可以表现为收据中的事件(event)。消息机制可以通过收据中的事件实现消息传递,以触发区块链节点或部署该区块链节点的节点设备执行相应的处理。事件的结构譬如可以为:

event:

[topic][data]

[topic][data]

......

在上述示例中,事件的数量可以为一个或多个;其中,每个事件分别包括主题(topic)和数据(data)等字段。区块链节点或部署该区块链节点的节点设备可以通过监听事件的topic,从而在监听到预定义的topic的情况下,执行预设处理,或者从相应事件的data字段读取相关内容,以及可以基于读取的内容执行预设处理。

上述的事件机制中,相当于在监听方(比如存在监听需求的用户)处存在具有监听功能的客户端,譬如该客户端上运行了用于实现监听功能的sdk等,由该客户端对区块链节点产生的事件进行监听,而区块链节点只需要正常生成收据即可。除了上述的事件机制之外,还可以通过其他方式实现交易信息的透出。例如,可以通过在区块链节点运行的区块链平台代码中嵌入监听代码,使得该监听代码可以监听区块链交易的交易内容、智能合约的合约状态、合约产生的收据等其中的一种或多种数据,并将监听到的数据发送至预定义的监听方。由于监听代码部署于区块链平台代码中,而非监听方的客户端处,因而相比于事件机制而言,这种基于监听代码的实现方式相对更加的主动。其中,上述的监听代码可以由区块链平台的开发人员在开发过程中加入区块链平台代码,也可以由监听方基于自身的需求而嵌入,本说明书并不对此进行限制。

区块链技术区别于传统技术的去中心化特点之一,就是在各个节点上进行记账,或者称为分布式记账,而不是传统的集中式记账。区块链系统要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆。不同类型的区块链网络中,为了在各个记录账本的节点中保持账本的一致,通常采用共识算法来保证,即前述提到的共识机制。例如,区块链节点之间可以实现区块粒度的共识机制,比如在节点(例如某个独特的节点)产生一个区块后,如果产生的这个区块得到其它节点的认可,其它节点记录相同的区块。再例如,区块链节点之间可以实现交易粒度的共识机制,比如在节点(例如某个独特的节点)获取一笔区块链交易后,如果这笔区块链交易得到其他节点的认可,认可该区块链交易的各个节点可以分别将该区块链交易添加至自身维护的最新区块中,并且最终能够确保各个节点产生相同的最新区块。共识机制是区块链节点就区块信息(或称区块数据)达成全网一致共识的机制,可以保证最新区块被准确添加至区块链。当前主流的共识机制包括:工作量证明(proofofwork,pow)、股权证明(proofofstake,pos)、委任权益证明(delegatedproofofstake,dpos)、实用拜占庭容错(practicalbyzantinefaulttolerance,pbft)算法,honeybadgerbft算法等。

目前的区块链网络的创建流程为,分别在各创世节点的本地部署区块链的创世块,创世块中记载了各创世节点的通信地址。

后续如果有新节点想要加入区块链网络,则可以在该新节点的本地部署网络配置文件。需要说明的是,网络配置文件通常是指用于对将要加入区块链网络的节点进行配置的文件。网络配置文件所提供的配置功能有很多,例如包括安装签名证书、安装虚拟机、安装协议等等。对于后续请求加入区块链网络的节点来说,提供给该节点的网络配置文件也可以包含创世块信息,该节点可以根据其中的创世节点的通信地址(例如ip地址),从创世节点同步除创世块之外的其他区块,从而可以加入区块链网络。

区块链网络被创建之后,可以加入新节点。此外,区块链网络的创世节点后续也可能退出区块链网络。因此,可能出现区块链网络的每个创世节点都已退出区块链网络的情况,这意味着,根据创世块中记载的各创始节点的通信地址,很可能无法从创世节点处同步最新区块。

为此,在本说明书的一个或多个实施例中,在用于使目标节点加入区块链网络的网络配置文件中,增加区块链网络的至少一个当前节点的通信地址,从而使得即便在各个创世节点已经退出区块链网络的情况下,目标节点也可以进行区块同步,根据网络配置文件中包含的当前节点的通信地址,请求从区块链网络的当前节点同步区块。

此外,对于待加入区块链网络的目标节点,区块链网络可以先受理并调用智能合约执行用于请求将目标节点加入区块链网络的节点加入交易,在将目标节点记载到智能合约维护的当前节点列表中之后,才会许可目标节点同步区块。

图4是本说明书提供的一种区块同步方法的流程示意图,包括如下步骤:

s400:获取网络配置文件。

图4所述方法应用于待加入区块链网络的目标节点。

在有些实施例中,目标节点可以从互联网途径下载用于加入区块链网络的网络配置文件。

在另一些实施例中,可以在线下为目标节点部署网络配置文件。

s402:在所述区块链网络的每个创世节点已退出网络的情况下,根据所述区块链网络的至少一个当前节点的通信地址,请求从当前节点同步区块链中的区块。

在有些实施例中,网络配置文件可以不包含区块链网络的创世块信息。如此,在步骤s402中,目标节点可以请求从当前节点同步区块链中的全部区块。

在有些实施例中,网络配置文件可以包含区块链的创世块信息,如此,在步骤s402中,目标节点可以请求从当前节点同步区块链中除创世块之外的其他区块。

此外,在步骤s402中,若所述网络配置文件包含所述区块链网络的多个当前节点的通信地址,则可以根据其中至少两个当前节点的通信地址,请求从不同的当前节点同步区块链中的不同区块。如此,可以通过多个并行的区块同步线程进行区块同步,提升区块同步的效率。

另外,在所述区块链网络中存在至少一个创世节点的情况下,根据创世块信息确定至少一个创世节点的通信地址,并请求从创世节点同步区块链中的区块。

图5是本说明书提供的一种节点加入区块链网络的方法的流程示意图,包括如下步骤:

s500:获取节点加入交易。

图5所示方法应用于区块链网络,可以理解为是由区块链网络的每个当前节点执行的。

节点加入交易用于请求区块链网络同意将目标节点加入区块链网络中。

区块链网络中可以部署有智能合约,智能合约用于维护所述区块链网络的当前节点列表。可以理解,区块链网络在运行过程中,可能有节点退出,也可能有节点加入,而当前节点列表需要根据节点退出事件与节点加入事件而更新。需要说明的是,节点退出事件与节点加入事件类似,可以是通过向区块链网络提交调用智能合约的交易来触发(节点加入交易或节点退出交易)。

s502:根据所述节点加入交易,调用所述智能合约执行交易。

在步骤s502中,调用智能合约执行的步骤为,若确定待加入所述区块链网络的目标节点具有加入资格,则以所述目标节点为所述区块链网络的一个当前节点,更新所述当前节点列表。

其中,目标节点是否具有加入资格的判断规则,可以根据实际需要在智能合约中进行配置。当然,也可以将任何请求加入区块链网络的节点都认定为具有加入资格。

节点加入交易通常需要携带用于判断是否具有加入资格的待审核信息,例如目标节点对应的控制方的资质文件等。

如果目标节点不具有加入资格,则可以拒绝更新当前节点列表。

s504:在确定所述当前节点列表中记载有所述目标节点的情况下,许可所述目标节点从所述区块链网络中的当前节点同步区块。

许可目标节点从区块链网络的当前节点同步区块,意味着在图4所示方法中,被请求同步区块的区块链网络中的当前节点同意目标节点的请求,进而向目标节点传输区块数据。

此外,在确定所述当前节点列表中未记载有所述目标节点的情况下,拒绝所述目标节点从所述区块链网络中的当前节点同步区块。

图6是本说明书提供的一种区块同步装置的结构示意图,应用于待加入区块链网络的目标节点,所述装置包括:

获取模块601,获取网络配置文件;所述网络配置文件包含所述区块链网络的至少一个当前节点的通信地址;

第一请求同步模块602,在所述区块链网络的每个创世节点已退出网络的情况下,根据所述区块链网络的至少一个当前节点的通信地址,请求从当前节点同步区块链中的区块。

所述网络配置文件还包含区块链的创世块信息;

所述第一请求同步模块602,在所述区块链网络的每个创世节点已退出网络的情况下,请求从当前节点同步区块链中除创世块之外的其他区块。

通信地址包括:ip地址。

所述第一请求同步模块602,若所述网络配置文件包含所述区块链网络的多个当前节点的通信地址,则根据其中至少两个当前节点的通信地址,请求从不同的当前节点同步区块链中的不同区块。

还包括:

第二请求同步模块603,在所述区块链网络中存在至少一个创世节点的情况下,根据创世块信息确定至少一个创世节点的通信地址,并请求从创世节点同步区块链中的区块。

本说明书还提供一种区块链网络,所述区块链网络中部署有智能合约,所述智能合约用于维护所述区块链网络的当前节点列表;

所述区块链网络中每个当前节点,获取节点加入交易;根据所述节点加入交易,调用所述智能合约执行:若确定待加入所述区块链网络的目标节点具有加入资格,则以所述目标节点为所述区块链网络的一个当前节点,更新所述当前节点列表;在确定所述当前节点列表中记载有所述目标节点的情况下,许可所述目标节点从所述区块链网络中的当前节点同步区块;

所述区块链网络中每个当前节点,在确定所述当前节点列表中未记载有所述目标节点的情况下,拒绝所述目标节点从所述区块链网络中的当前节点同步区块。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。


技术特征:

1.一种区块同步方法,应用于待加入区块链网络的目标节点,所述方法包括:

获取网络配置文件;所述网络配置文件包含所述区块链网络的至少一个当前节点的通信地址;

在所述区块链网络的每个创世节点已退出网络的情况下,根据所述区块链网络的至少一个当前节点的通信地址,请求从当前节点同步区块链中的区块。

2.如权利要求1所述方法,所述网络配置文件还包含区块链的创世块信息;

在所述区块链网络的每个创世节点已退出网络的情况下,请求从当前节点同步区块链中的区块,包括:

请求从当前节点同步区块链中除创世块之外的其他区块。

3.如权利要求1所述方法,通信地址包括:ip地址。

4.如权利要求1所述方法,根据所述区块链网络的至少一个当前节点的通信地址,请求从当前节点同步区块链中的区块,包括:

若所述网络配置文件包含所述区块链网络的多个当前节点的通信地址,则根据其中至少两个当前节点的通信地址,请求从不同的当前节点同步区块链中的不同区块。

5.如权利要求2所述方法,还包括:

在所述区块链网络中存在至少一个创世节点的情况下,根据创世块信息确定至少一个创世节点的通信地址,并请求从创世节点同步区块链中的区块。

6.一种节点加入区块链网络的方法,应用于区块链网络,所述区块链网络中部署有智能合约,所述智能合约用于维护所述区块链网络的当前节点列表,所述方法包括:

获取节点加入交易;

根据所述节点加入交易,调用所述智能合约执行:若确定待加入所述区块链网络的目标节点具有加入资格,则以所述目标节点为所述区块链网络的一个当前节点,更新所述当前节点列表;

在确定所述当前节点列表中记载有所述目标节点的情况下,许可所述目标节点从所述区块链网络中的当前节点同步区块;其中,所述目标节点基于权利要求1-5任一项所述的区块同步方法进行区块同步。

7.如权利要求6所述方法,还包括:

在确定所述当前节点列表中未记载有所述目标节点的情况下,拒绝所述目标节点从所述区块链网络中的当前节点同步区块。

8.一种区块同步装置,应用于待加入区块链网络的目标节点,所述装置包括:

获取模块,获取网络配置文件;所述网络配置文件包含所述区块链网络的至少一个当前节点的通信地址;

第一请求同步模块,在所述区块链网络的每个创世节点已退出网络的情况下,根据所述区块链网络的至少一个当前节点的通信地址,请求从当前节点同步区块链中的区块。

9.如权利要求8所述装置,所述网络配置文件还包含区块链的创世块信息;

所述第一请求同步模块,在所述区块链网络的每个创世节点已退出网络的情况下,请求从当前节点同步区块链中除创世块之外的其他区块。

10.如权利要求8所述装置,通信地址包括:ip地址。

11.如权利要求8所述装置,所述第一请求同步模块,若所述网络配置文件包含所述区块链网络的多个当前节点的通信地址,则根据其中至少两个当前节点的通信地址,请求从不同的当前节点同步区块链中的不同区块。

12.如权利要求9所述装置,还包括:

第二请求同步模块,在所述区块链网络中存在至少一个创世节点的情况下,根据创世块信息确定至少一个创世节点的通信地址,并请求从创世节点同步区块链中的区块。

13.一种区块链网络,所述区块链网络中部署有智能合约,所述智能合约用于维护所述区块链网络的当前节点列表;

所述区块链网络中每个当前节点,获取节点加入交易;根据所述节点加入交易,调用所述智能合约执行:若确定待加入所述区块链网络的目标节点具有加入资格,则以所述目标节点为所述区块链网络的一个当前节点,更新所述当前节点列表;在确定所述当前节点列表中记载有所述目标节点的情况下,许可所述目标节点从所述区块链网络中的当前节点同步区块;

其中,所述目标节点基于权利要求1-5任一项所述的区块同步方法进行区块同步。

14.如权利要求13所述的区块链网络,所述区块链网络中每个当前节点,在确定所述当前节点列表中未记载有所述目标节点的情况下,拒绝所述目标节点从所述区块链网络中的当前节点同步区块。

技术总结
本说明书一个或多个实施例提供一种区块同步、节点加入区块链网络的方法。在用于使目标节点加入区块链网络的网络配置文件中,增加区块链网络的至少一个当前节点的通信地址,从而使得即便在各个创世节点已经退出区块链网络的情况下,目标节点也可以进行区块同步,根据网络配置文件中包含的当前节点的通信地址,请求从区块链网络的当前节点同步区块。

技术研发人员:孙赫
受保护的技术使用者:支付宝(杭州)信息技术有限公司
技术研发日:2021.07.05
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-2116.html

最新回复(0)