用于在区块链网络中删除节点的系统和方法与流程

文档序号:20788766发布日期:2020-05-19 21:58阅读:708来源:国知局
用于在区块链网络中删除节点的系统和方法与流程

相关申请的交叉引用

本申请要求于2019年9月5日向中华人民共和国国家知识产权局(sipo)提交的申请号为cn201910838733.5的中国申请的优先权和权益,其全部内容通过引用包含于此。

本申请总体上涉及用于在区块链网络中删除节点的系统和方法。



背景技术:

区块链技术可以构建在传输网络(例如,点对点网络)上。传输网络中的网络节点可以基于链式数据结构来认证和存储数据,并基于分布式共识算法来生成和更新数据。在一些情况下,可能需要删除这种区块链网络的节点。因此,期望提供一种用于在区块链网络中删除节点的方法。

用于删除节点的现有技术通常会导致区块链正常运行中断。在一个示例中,用于在区块链网络中删除节点的当前方法需要停止整个区块链系统以删除节点,并且需要在删除之后重启系统。结果,整个系统必须经历停机时间。



技术实现要素:

本文的各种实施例包括但不限于用于在区块链网络中删除节点的系统、方法和非暂态计算机可读介质。

根据一些实施例,一种计算机实现的用于在区块链网络中删除节点的方法,包括:区块链网络的第一共识节点获得包括用于删除区块链网络中的第二共识节点的请求的交易;响应于对交易的共识验证成功,执行交易并在节点列表中对区块链网络中除第二共识节点外的多个剩余共识节点顺序编号;以及施行视图改变以使剩余共识节点参与未来的共识验证。在一些实施例中,待删除的节点可以是在节点删除之前的区块链网络的激活共识节点,并且通过节点删除,节点变成区块链网络的未激活共识节点。在一些实施例中,待删除的节点可以是在节点删除之前的区块链网络的一部分,并且通过节点删除,节点被从区块链网络中移除。

在一些实施例中,交易被配置为调用部署在由区块链网络维护的区块链中的区块链合约。

在一些实施例中,区块链合约包括创始合约或系统合约。

在一些实施例中,第一共识节点获得交易,包括:从客户端设备或控制器的命令控制台获得交易。

在一些实施例中,第一共识节点在本地维护节点列表,节点列表包括以下一项或多项:共识节点标识、共识节点ip地址和共识节点端口号;并且在节点列表中对区块链网络中除第二共识节点外的多个剩余共识节点顺序编号之前,在节点列表中对区块链网络中包括第二共识节点的所有共识节点顺序编号。

在一些实施例中,节点列表处于由区块链网络维护的区块链的世界状态。

在一些实施例中,执行交易包括:从节点列表中删除第二共识节点;或者在节点列表中将第二共识节点配置为未激活状态。

在一些实施例中,施行视图改变包括响应于检测到以下任何条件而发起视图改变:节点列表中共识节点的数量与当前视图中共识节点的数量不一致;节点列表中的共识节点标识与当前视图中的共识节点标识不一致;节点列表中激活共识节点的数量与当前视图中共识节点的数量不一致;以及节点列表中激活共识节点的标识与当前视图中共识节点的标识不一致。

在一些实施例中,施行视图改变包括:响应于接收到第二共识节点广播的、用于发起视图改变的消息,来发起视图改变。

在一些实施例中,视图改变中的副本数是除第二共识节点之外的剩余共识节点的总数。

在一些实施例中,获得交易包括:从第二共识节点、区块链网络的第三共识节点或外部设备获得交易。

在一些实施例中,方法还包括:在没有第二共识节点的情况下参与共识验证。

根据其他实施例,一种用于在区块链网络中删除节点的系统,包括一个或多个处理器以及耦接至一个或多个处理器、并且在其上存储有可由一个或多个处理器执行以施行前述实施例中任一个的方法的指令的一个或多个计算机可读存储器。

根据又一些实施例,一种非暂态计算机可读存储介质,配置有可由一个或多个处理器执行以使得一个或多个处理器施行前述实施例中任一个的方法的指令。

根据又一些实施例,一种用于在区块链网络中删除节点的装置,包括用于施行前述实施例中的任一个的方法的多个模块。

根据一些实施例,一种用于在区块链网络中删除节点的系统,在区块链网络的第一共识节点中实施,并且包括一个或多个处理器以及耦接至一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述所述指令可由一个或多个处理器执行以施行包括以下的操作:获得包括用于删除区块链网络中的第二共识节点的请求的交易;响应于对交易的共识验证成功,执行交易并在节点列表中对区块链网络中除第二共识节点外的多个剩余共识节点顺序编号;以及施行视图改变以使剩余共识节点参与未来的共识验证。

根据其他实施例,一种非暂态计算机可读存储介质,在区块链网络的第一共识节点中实施,并且被配置有可由一个或多个处理器执行以使得一个或多个处理器施行包括以下操作的指令:获得包括用于删除区块链网络中的第二共识节点的请求的交易;响应于对交易的共识验证成功,执行交易并在节点列表中对区块链网络中除第二共识节点外的多个剩余共识节点顺序编号;并施行视图改变以使剩余共识节点参与未来的共识验证。

根据又一其他实施例,一种用于在区块链网络中删除节点的装置,在区块链网络的第一共识节点中实施,并且包括:获得模块,获得包括用于删除区块链网络中的第二共识节点的请求的交易;执行模块,响应于对交易的共识验证成功,执行交易并在节点列表中对区块链网络中除第二共识节点外的多个剩余共识节点顺序编号;以及施行模块,施行视图改变以使剩余共识节点参与未来的共识验证。

本文公开的实施例具有一种或多种技术效果。在一些实施例中,在区块链网络中删除节点移除了恶意或故障(例如,异常、离线)节点。故障状态可能是由例如配置错误、机器故障、网络故障、软件故障等导致的。因此,在区块链网络中删除节点可提高区块链网络的鲁棒性和可靠性。在一些实施例中,通过动态地执行用于删除节点的交易,可以在不中断区块链网络运行的情况下删除节点。在一个实施例中,在节点删除处理期间避免了系统停机时间,并且区块链网络维持其正常运行。在一些实施例中,通过视图改变,区块链网络的剩余共识节点(除删除的节点外)均获得包括剩余共识节点编号的相同的节点列表拷贝。因此,剩余节点可以继续执行共识验证并维护区块链。

本文公开的系统、方法和非暂态计算机可读介质的这些和其他特征,以及结构的相关元件的功能和操作方法以及零件的组合及制造的经济性,在参考附图考虑以下描述和所附权利要求时将变得更加明显,所有这些附图、描述和权利要求均形成本文的一部分,其中,相似的附图标记指代各个附图中的相应部分。然而,应明确地理解,附图仅是出于说明和描述的目的,而并非旨在进行限制。

附图说明

图1示出了根据各种实施例的用于创建区块链合约的图。

图2示出了根据各种实施例的用于调用区块链合约的图。

图3示出了根据各种实施例的用于创建和调用区块链合约的图。

图4示出了用于实用拜占庭容错(pbft)算法的流程图。

图5示出了用于在执行pbft算法的视图改变之后进行恢复的流程图。

图6示出了用于执行pbft算法的视图改变的流程图。

图7示出了根据各种实施例的用于在区块链网络中删除节点的流程图。

图8示出了根据各种实施例的用于在区块链网络中删除节点的方法的流程图。

图9示出了根据各种实施例的用于在区块链网络中删除节点的方法的流程图。

图10示出了根据各种实施例的用于实施区块链网络的框图。

图11示出了根据一些实施例的用于在区块链网络中删除节点的装置的框图。

图12示出了其中可以实施本文描述的任何实施例的示例性计算机系统的框图。

具体实施方式

区块链可分为三种类型:公有区块链、私有区块链、联盟区块链。此外,在三种类型的区块链之间可能存在各种组合,例如私有区块链+联盟区块链、联盟区块链+公有区块链等。其中,公有区块链是最去中心化的(decentralized)。对于由比特币和以太坊表示的公有区块链,公有区块链的参与者(区块链节点,或简称为节点)可以从区块链中读取数据记录、参与交易并竞争新区块的记账(bookkeeping)权等。此外,每个参与者可以自由加入和退出区块链网络以及施行相关操作。然而,对于私有区块链,区块链网络的数据写入权限可由某个实体或组织所控制,而数据读取权限由实体或组织确定。因此,私有区块链可被认为是弱中心化系统,其中参与的节点受约束并且数量受限制。联盟区块链介于公有区块链与私有区块链之间,并且可以实现“部分去中心化”。联盟区块链的每个节点可以对应于实体或组织。参与者可以通过授权加入联盟区块链网络,从而形成具有共同利益的联盟,并共同维护区块链网络的运行。对于上述各种类型的区块链中的任何一种,可能存在在区块链网络中动态删除节点的需求。

在一些实施例中,具有一定级别投票权的节点可以被称为共识节点,其形成区块链网络并通过共识协议维持其运行。例如,共识节点可以承担对区块链交易(或简称交易)施行共识验证的责任。相比之下,未激活节点(其可能是也可能不是区块链网络的一部分)不参与这种共识验证。通过共识验证,共识节点可以就将新生成的区块添加到区块链中达成共识(协议)。新生成的区块可以包括由共识节点进行共识验证的一个或多个交易。共识节点还可以对区块链做出其他共识决策,例如,为区块链设置服务费。

公有区块链、私有区块链和联盟区块链中的每一个可以提供智能合约。可以通过区块链交易将智能合约部署在区块链中,然后由另一个区块链交易来调用。例如,以太坊支持用户创建和调用复杂算法。作为可编程的区块链,以太坊的核心在于以太坊虚拟机(evm)。每个以太坊节点可以运行evm。evm是图灵完备的,这意味着甚至可以通过它们来实施复杂的算法。可以在evm中执行智能合约的部署和调用。

如图1中所示,bob可以将包括智能合约创建的区块链交易发送到以太坊网络。区块链节点1的evm可以执行区块链交易以生成智能合约的相应实例。在图1中,“0x6f8ae93…”表示智能合约的地址。区块链交易的“数据(data)”字段可以存储字节码。区块链交易的“至(to)”字段可以是空(null)的区块链账户。在区块链节点通过共识机制达成共识后,智能合约被成功创建并部署在区块链中,未来的用户可以调用部署的智能合约。

创建智能合约后,将在区块链中创建与智能合约相对应的合约账户,并且合约账户具有特定的地址。合约代码和账户数据将被存储在合约账户下。智能合约的行为由合约代码控制,并且合约帐户存储智能合约的状态。换句话说,智能合约使能在区块链中创建包括合约代码和账户存储的虚拟账户。

如图2中所示,仍以以太坊为例,bob将包括用于调用智能合约的信息的区块链交易发送到以太坊网络。区块链节点1的evm可以执行区块链交易以生成智能合约的相应实例。对于图2中的区块链交易,“从(from)”字段可以包括调用智能合约的区块链账户的地址,“至”字段中的“0x6f8ae93…”可以表示要被调用的智能合约的地址,“值(value)”字段可以表示以太币的值,“数据”字段可以存储用于调用智能合约的方法和参数。调用智能合约后,区块链账户所持有的以太币余额可能会改变。此外,某个用户客户端可以通过区块链节点(例如,图2中的区块链节点6)来查看余额。

智能合约可以根据规定的方式在区块链网络的每个区块链节点中独立执行。所有执行记录和数据可以存储在区块链中。因此,在执行这样的区块链交易之后,防篡改并且永久的交易证明被保存到区块链中。

图3示出了智能合约的创建和调用。在以太坊中创建智能合约涉及诸如编写智能合约、编译为字节码以及部署在区块链中等步骤。在以太坊中调用智能合约可以指发起指向已部署的智能合约的地址的区块链交易,以使合约代码在以太坊网络中每个节点的evm中执行。

除了用户创建智能合约之外,还可以在区块链的创始区块(genesisblock)中由系统配置智能合约。这种类型的合约可以称为创始合约。在创始合约中,可以配置区块链网络的数据结构、参数、属性和方法。此外,具有系统管理员权限的帐户可以创建或修改系统级智能合约(简称“系统合约”)。除了evm之外,不同的区块链网络可以采用不同的虚拟机,本文不做限制。

区块链技术与传统的去中心化技术之间的一个区别是在每个节点上进行记账,或称为分布式记账,而不是传统的集中式记账。在各种区块链网络中,可以实施共识算法(即上述共识机制),以确保在进行记账的节点之间的记录一致性。当节点生成新区块时,如果新区块被其他节点接受,则其他节点将记录相同的新区块。其他节点确认新区块的处理是共识机制。共识机制是这样的机制:区块链节点就区块信息达成全网共识,以确保将新区块正确地添加到区块链中。当前,主流共识机制包括:工作量证明(pow)、权益证明(pos)、委托权益证明(dpos)、实用拜占庭容错(pbft)算法、honeybadgerbft算法等。

图4示出了传统的pbft算法的流程图。算法由米格尔·卡斯特罗(miguelcastro)和芭芭拉·利斯科夫(barbaraliskov)于1999年提出,解决了pbft的低效率问题,将复杂度从指数级降低到多项式级,使pbft在实际系统中的应用变得可行。论文发表在第三届操作系统设计与实现研讨会(1999)论文集上。算法假定,如果多达f个备份副本(即节点)是恶意的或故障的,则总共有3f+1个或更多的副本可以保证异步系统内的安全性和活性。为确保所有副本的数据一致并满足容错要求,需要一定数量的副本(例如包括分布式系统中大多数节点的集合)来形成法定数量(quorum)。例如,如果副本总数n为3f+1,则quorum为2f+1。换句话说,基于pbft的区块链网络对恶意或故障(例如,异常、离线)节点的容忍度,pbft系统可以容忍的恶意或故障节点的最大数量f表示,为(n-1)/3下舍入到最接近的整数,其中n是副本总数。因此,对于包括四个节点的分布式系统,它们中的任何三个都可以形成quorum。

此外,所有副本都经过称为视图(view)的一系列配置(successionofconfigurations)。在视图中,一个副本是主节点,其他副本是备份节点。视图的主节点是副本p,使得p=vmod|r|,其中v是视图编号,视图被连续编号,并且|r|是副本数。当主节点故障时,需要触发视图改变协议以在系统故障时做出调整,来改变主节点。

pbft算法如下。

1.客户端设备c向主节点0(副本0)发送请求;

2.主节点0向每个备份节点广播请求;

3.所有副本中的每一个执行请求,并将相应的结果发送到客户端设备c;

4.客户端设备c分别从f+1个不同副本中收集相同的结果,作为操作的最终结果。

以下讨论了pbft(结合著名的拜占庭将军问题)的示例。在此,假设n=4且f=1,即总共有四个节点,其中故障节点的数量是1。假设节点编号分别为0、1、2和3,并且故障节点为节点3。处理如下。

1.(请求阶段)客户端设备c将请求发送到主节点0;

2.(预准备阶段)主节点0接收来自客户端设备c的请求(或来自客户端设备组的请求),对请求排序(在客户端设备组的情况下),并将请求打包为消息m。然后,主节点0向节点1、2和3(即备份节点1、2和3,也称为副本或节点1、2和3)广播预准备消息。预准备消息包括消息m。

3.(准备阶段)在接收到预准备消息之后,如果节点1、2和3成功验证了消息m,则节点1、2和3中的每个节点将重新广播消息m。例如,节点1将向节点0、2和3广播准备消息;节点2将向节点0、1和3广播准备消息,节点3可能会经历停机时间并且无法广播。此外,每个节点接收由其他节点广播的准备消息。每个节点可以将自身广播的准备消息(指示自身认可的准备消息)和接收到的准备消息(指示其他节点认可的准备消息)添加到本地日志中。如果节点接收到同一消息的quorum-1个确认(具有预准备消息和quorum-1个准备消息,则本地日志将具有quorum个确认),则节点转换到准备阶段。

4.(提交阶段)已进入准备阶段的每个参与的共识节点向其他共识节点广播提交消息,并将自身广播的提交消息(指示自身认可的提交消息)

添加到本地日志中。然后,每个节点接收其他节点广播的提交消息。如果节点接收到quorum-1个有效的提交消息,则节点将提交消息添加到本地日志中(具有自身广播的提交消息和quorum-1个提交消息,则本地日志将具有quorum个提交消息)并转换到提交状态。

5.(回复阶段)参与共识验证的所有节点中的每个节点在其本地虚拟机中依次执行预准备消息的消息m中的请求或一组有序请求,然后将回复发送到客户端设备c。

如果客户端设备c接收到f+1个相同的回复消息,则这指示客户端设备c提出的请求已达成全网共识。否则,客户端设备c可能需要确定是否将请求重新发送到主节点0。

以上关于图4的处理和描述是传统的pbft算法。处理可以由客户端设备发起,使得客户端设备发起的请求消息中的一个或多个交易经历共识验证,并在共识验证结束时将共识验证的结果返回到客户端设备。

在联盟区块链场景中,可以由任何节点发起共识验证(例如,上图4的预准备、准备和提交处理)。在联盟区块链场景中,客户端设备是可选的。如果不包括客户端设备,则图4的请求和回复阶段变为可选,并且主节点可以在获得一定数量的区块链交易后发起pbft共识验证。如果包括客户端设备,则共识验证可以不由客户端设备发起,而是可以由主节点在主节点获得一定数量的区块链交易后发起。即,图4中的预准备阶段可能不由请求阶段直接触发。

如果主节点行为恶意或故障(例如,异常、离线),并且未能广播客户端设备的请求,则客户端设备可以配置超时机制。如果发生超时,则客户端设备可以将请求广播到所有副本。如果副本检测到主节点行为恶意或故障(例如异常、离线),则副本可以发起视图改变协议阶段以改变主节点。

此外,主节点提出的错误提议可能会导致预准备、准备和提交三个阶段的共识验证失败。替代地,在准备和提交阶段,可能无法达成一致的quorum,这也无法完成共识验证。在这些情况下,也可以发起视图改变以改变主节点。

在视图改变协议阶段,需要解决先前节点与其他节点之间的异步问题,以使节点在视图改变(vc)之后恢复。例如,如图5中所示,在视图改变之前的视图v处,主节点副本0已经提交并执行了与<v,n,d>相对应的提议(propose)m5(例如,消息m5),其中v是视图编号,n是节点总数,并且d是提议m5的消息摘要。然而,副本1可能由于网络延迟而没有提交提议m5,并且仍然处于预准备阶段。副本2(和副本3)也可以处于对提议m5的预准备阶段。此后,副本0经历停机时间。因此,不同的节点处于不同的状态。改变主节点后,副本0可以通过重启来恢复。主节点可能已改变为副本1,并且副本1-3需要在消息处理进度上赶上副本0。因此,新的主节点副本1需要重新发送处于准备状态的提议m5以供副本1-3执行并与副本0的状态同步。否则,在新的视图v+1处,副本1-3可能会完成新消息m6的三个阶段的共识验证,但只有副本0已经执行了m5,而副本1-3尚未执行m5。即,在新视图v+1处,副本1-3对新消息m6的执行从与副本0不同的状态启动。这可能导致不同节点的虚拟机之间出现不一致,并导致分叉。另外,在上述处理中,如果副本0针对m5处于准备状态,也就是说,如果副本0尚未在其虚拟机上执行m5,而其他副本在处理上落后于副本0,则副本0的准备状态可以被删除而不影响整个系统的一致性。

视图改变协议阶段可以包括视图改变协议处理和新视图协议处理。执行完两个协议处理后,完成主节点的改变。主节点改变后,视图编号将加1,改变为v+1。根据p=(v+1)%n,图4的主节点副本0改变为副本1。

例如,如图6中所示,检测到主节点恶意或故障(例如,异常、离线)的备份节点可以将消息<视图改变,v+1,n,c,p,i>广播到其他备份节点。如图6中所示,副本1检测到原始主节点副本0行为恶意或故障(例如,异常、离线),则副本1向副本0、副本2和副本3发送消息<视图改变,v+1,n,c,p,i>。类似地,副本2向副本0、副本1和副本3发送消息<视图改变,v+1,n,c,p,i>,并且副本3向副本0、副本1和副本2发送消息<视图改变,v+1,n,c,p,i>。

对于广播消息,“视图改变”是协议标识,指示协议是视图改变协议。下一个视图编号是v+1,并且“n”是最新的稳定检查点的数量,“c”是已验证的2f+1个检查点消息的集合。“p”是可选的,并且如果存在,则指示对于发送视图改变消息(对应于准备状态中的每个<v,n,d>,预准备消息和包括2f个不同节点的签名)的备份节点已达到准备状态的一个或多个消息的集合。

在例如图6中的副本1的新的主节点p=(v+1)mod|r|接收到2f个有效的视图改变消息后,新的主节点向其他节点广播消息<新视图,v+1,v,o,p>。“新视图”是协议标识,指示协议是新的视图协议。下一个视图编号是v+1。“v”包括视图改变消息和新的主节点从2f个不同节点接收到的签名,以及由新的主节点自身已发送或待发送的针对v+1的视图改变消息。“o”是由主节点重新发送的未执行的预准备消息集,而“p”是当前节点的签名。预准备消息集的选择规则包括:

1.从v获得具有最小编号min-s的稳定检查点,从v获得具有最大编号max-s的准备消息。

2.在min-s与max-s之间,如果存在消息集p,则创建消息<<预准备,v+1,n,d>,m>。否则,创建空的预准备消息<<预准备,v+1,n,d(null)>,m(null)>,其中m(null)是空消息,d(null)是空消息的摘要。

当备份节点从主节点接收到新的视图消息时,备份节点验证v和o中的签名和视图改变消息。如果有效,则备份节点进入v+1状态并启动处理o中的预准备消息。

在联盟区块链的示例中,在联盟区块链场景中,节点可能对应于一个或多个帐户。类似地,节点可能不对应任何帐户,而仅充当共识节点。另外,联盟区块链可以包括可以如上所述生成的创始合约或系统合约。创始合约/系统合约可以配置联盟区块链的共识节点列表(节点列表,或简称列表),例如,配置共识节点的公钥集,并根据预定顺序排列集中的公钥。联盟区块链的每个共识节点可以根据创始合约中的共识节点列表在本地存储本地节点列表。在本地节点列表中,每个共识节点可以根据创始合约/系统合约中指定的顺序,根据对应的公钥来排列共识节点。因此,每个共识节点的本地列表都包含以相同的顺序排列的相同的共识节点。另外,在创始合约/系统合约中,可以添加用于共识节点的方法和参数配置。因此,基于创始合约/系统合约,每个节点可以通过改变本地节点列表中的节点来完成节点删除的操作。

当账户发起删除共识节点的请求时,请求例如是交易请求,第一共识节点可以接收请求。例如,请求可以是客户端设备提出的节点删除请求,从而触发节点删除处理。替代地,请求可以是第一共识节点从控制器的命令控制台接收到的节点删除请求,从而触发节点删除处理。控制器可以由控制相应节点的管理员例如通过图形化或代码化指令来操作。对于例如pbft的具有主节点的共识算法,第一共识节点可以是主节点。第一共识节点可以直接从客户端设备或控制器、或者从转发交易请求的其他共识节点来获得交易请求。对于诸如honeybadgerbft之类的无主节点的共识算法,不存在主节点,则第一共识节点是多个共识节点之一。

图7示出了根据各种实施例的用于在区块链网络中删除节点的流程图。以下呈现的操作旨在说明。取决于实施方式,示例性步骤可以包括以各种顺序或并行施行的附加的、更少的或替代的步骤。图7提供了在包括多个共识节点的区块链网络中删除节点(节点x)的示例。区块链网络维护区块链。可以删除作为基于pbft的区块链网络的主节点或备份节点的节点x。

在区块链网络中删除节点可以至少包括以下实施例。在一些实施例中,节点x可以是在节点删除之前的区块链网络的激活的共识节点,并且通过节点删除,节点x变为区块链网络的未激活的共识节点。激活的共识节点可以参与共识验证。然而,未激活的共识节点不可以参与共识验证,并且因此可能是非共识节点。在一些实施例中,节点x可以是在节点删除之前的区块链网络的一部分(例如,作为激活的共识节点),并且通过节点删除,节点x被从区块链网络移除。

图7示出两个平行的时间轴,顶部时间轴承载节点x的本地区块链拷贝的时间依赖状态,并且底部时间轴承载剩余共识节点(节点y)之一的本地区块链拷贝的时间依赖状态。每个剩余共识节点可以施行由节点y所施行的步骤。在轴之间,存在消息通信和数据同步方面的各种交互。在一些实施例中,区块链网络的每个共识节点在本地维护节点列表,节点列表包括以下一项或多项:共识节点标识、共识节点ip地址和共识节点端口号。在节点列表中对区块链网络的共识节点顺序编号。由于节点删除,区块链网络的共识节点总数可能减少,并且节点列表中的共识节点的编号可能会改变。在一个实施例中,节点列表处于由区块链网络维护的区块链的世界状态。

沿着顶部轴,节点x从作为区块链网络的激活共识节点变为不作为区块链网络的激活共识节点。沿着底部轴,节点y经历从正常阶段到视图改变阶段然后返回到正常阶段。同样,沿着顶部轴和底部轴,当添加一个或多个新区块时,区块链会改变其状态,因此,区块链状态会从b_1更新为b_2以及b_3。每个轴上的“区块”框表示由节点x或节点y所看见或所存储的区块链。

在一些实施例中,在步骤701,管理账户、外部账户或替代账户可以发起交易“删除节点(deletenode)”以在区块链网络中删除节点x。交易可以由节点x、节点y或耦接到区块链网络的外部设备发起,并广播到所有共识节点。节点y可以从客户端设备或控制器的命令控制台来获得交易。例如,节点y可以从节点x、区块链网络的另一共识节点或外部设备获得交易。此时,节点x的本地区块链拷贝位于b_1。共识节点(例如,节点x、节点y)可以对交易施行共识验证。在一些实施例中,交易被配置成调用部署在由区块链网络维护的区块链中的区块链合约。在一些实施例中,区块链合约包括创始合约或系统合约。

在一些实施例中,响应于对交易的共识验证成功,共识节点(例如,节点x、节点y)可以各自执行交易并且在节点列表中将区块链网络的除节点x外的多个剩余共识节点。

在一些实施例中,为了执行交易,节点y可以从节点y的节点列表中删除节点x,或者在节点y的节点列表中将节点x配置为未激活状态。

在一些实施例中,每个共识节点(例如,节点x、节点y)在本地维护节点列表,节点列表包括以下一项或多项:共识节点标识、共识节点ip地址和共识节点端口号。在节点列表中对区块链网络中除节点x外的多个剩余共识节点顺序编号之前,在节点列表中对区块链网络中包括节点x和节点y的所有共识节点顺序编号。例如,在节点删除前,节点列表指示区块链网络包括节点a(编号0)、节点b(编号1)、节点c(编号2)、节点x(编号3)和节点y(编号4);而在节点删除后,节点列表指示区块链网络包括节点b(编号0)、节点a(编号1)、节点c(编号2)以及节点y(编号3)。

在一些实施例中,在步骤702,共识节点(例如,节点x、节点y)可以发起视图改变。例如,共识节点可以响应于检测到以下任何条件而发起视图改变:节点列表中共识节点的数量与当前视图中共识节点的数量不一致;节点列表中共识节点标识与当前视图中共识节点标识不一致;节点列表中激活共识节点的数量与当前视图中共识节点的数量不一致;以及节点列表中激活共识节点的标识与当前视图中共识节点的标识不一致。在一个实施例中,共识节点可以响应于接收到由节点x广播的、用于发起视图改变的消息来发起视图改变。

在一些实施例中,剩余共识节点(例如,节点y)可以施行视图改变,以使剩余共识节点参与未来的共识验证。视图改变中的副本数是除第二共识节点之外的剩余共识节点的总数。在一些实施例中,剩余共识节点可以在没有节点x的情况下参与共识验证。在一些实施例中,在步骤703和704,虽然并未作为激活共识节点,然而节点x可以同步到区块链以更新其本地区块链拷贝。

这样,在删除节点期间不会中断区块链运行。在节点删除处理期间仍然可以施行共识验证。无需停止区块链系统即可实现节点删除,从而消除了系统停机时间。

图8示出了根据各种实施例的用于在区块链网络中删除节点的方法800的流程图。在一些实施例中,区块链网络可以基于联盟区块链。在一些实施例中,区块链网络可以基于pbft。

s801包括:区块链网络的第一共识节点获得用于删除节点的交易请求,并对用于删除节点的交易请求发起共识验证;共识验证成功后,剩余共识节点执行用于删除节点的交易并在本地节点列表中将除待删除节点外的剩余共识节点编号。

在一些实施例中,交易请求可以是用于调用合约的交易请求。在交易请求中,可以指定被调用的智能合约的地址、调用方法和输入参数。例如,被调用的合约可以是上述的创始合约/系统合约,调用方法可以是用于删除节点的方法,以及输入参数可以包括待删除节点的以下中的一个或多个:标识、ip地址以及端口号。

在一些实施例中,第一共识节点可以通过接收用于删除节点的交易请求来触发节点删除处理。例如,如上所述,第一共识节点可以通过从客户端设备接收用于删除节点的交易请求来触发节点删除处理,或者第一共识节点可以通过从控制器的命令控制台接收用于删除节点的交易请求来触发节点删除处理。控制器可以由控制相应节点的管理员例如通过图形化或代码化的指令来操作。替代地,第一共识节点可以从待删除节点接收待删除节点的相关信息,以触发删除节点处理。

在一些实施例中,将用于删除节点的交易请求传播到基于底层点对点(p2p)网络的区块链网络中的各个共识节点。在第一共识节点接收到用于删除节点的交易请求后,第一共识节点可以作为与具有主节点的共识算法关联的主节点、或者作为与不具有主节点的共识算法关联的共识节点,发起共识验证处理。以例如pbft的具有主节点的共识算法为例,第一共识节点可以是主节点,并且可以针对用于删除节点的交易请求发起共识验证处理,即主要包括上图4中的预准备、准备以及提交处理。替代地,第一共识节点可以是备份节点,其接收并将交易请求转发给主节点以发起共识验证处理。

在一些实施例中,在完成共识验证之后,区块链网络中的节点在本地具有针对待删除节点的交易请求中的消息内容,并且达成共识。此外,如果用于删除节点的交易请求中的消息内容与其他消息一起形成共识结果,则用于删除节点的交易请求中的消息内容在不同节点上具有相同的消息序列,即,至少quorum的共识节点已经针对节点删除请求中的消息内容和与消息相关联的顺序达成共识。

在一些实施例中,在s801之后,如前所述,至少quorum的共识节点已经针对包括节点删除的交易请求中的消息内容达成共识。此外,剩余共识节点可以在本地执行相应的合约。例如,剩余共识节点可以调用上述创始合约/系统合约,在例如evm的虚拟机中执行创始合约/系统合约的调用中指定的方法,并输入相应的参数。在一个示例中,输入的参数可以包括例如待删除节点的标识、待删除节点的ip地址、待删除节点的端口号等。在执行合约期间,剩余共识节点可以从本地节点列表中删除待删除节点的信息,并在本地节点列表中对剩余共识节点顺序编号。这样,至少由quorum的剩余共识节点维护的共识节点列表具有相同的剩余共识节点,且所述相同的剩余共识节点以相同的顺序编号。

在一些实施例中,如上所述,共识节点可以在本地维护共识节点列表,即上述本地节点列表,其记录当前区块链网络中所有共识节点的基本信息。在一个示例中,基本信息可以包括例如以下中的一项或多项:共识节点标识、ip地址、端口号等。其中,可以在本地节点列表中对共识节点顺序编号。共识节点可以具有标识(id),其可以是唯一地标识节点的标识,例如节点的公钥、ip地址+端口号等。在某些区块链项目中,共识节点列表可以在逻辑上存在于世界状态。以以太坊、纺布克(fabric)和联盟区块链为例,每个节点在本地维护世界状态,其中所有账户的最新状态可用。例如,在以太坊中,节点可以基于区块中的状态树、交易树和收据树的内容来维护所有帐户的最新状态。

在一些实施例中,由于共识节点已经施行了数个共识,因此理论上,在共识节点之间已经维护了共识节点列表的一致性。例如,共识节点a、b、c、d和m具有存储在其各自世界状态中的本地节点列表,并且存储在各个节点a、b、c、d和m的本地节点列表中的共识节点为五个节点a、b、c、d和m,并且顺序为a-b-c-d-m。然后,a、b、c、d和m的编号分别为0、1、2、3和4。这样,对于删除的节点m,每个共识节点基于在本地维护的共识节点列表来施行s801,并且共识节点的本地节点列表中的节点包括节点a、b、c和d,总共四个节点,并且对剩余节点配置相同的序列号(例如0-1-2-3)。

在一些实施例中,共识节点可以包括两种类型:激活的和未激活的。激活的共识节点可以参与共识验证,并且可以以顺序编号存储到本地节点列表中。未激活共识节点可能不参与共识验证,因此不会在本地节点列表中与激活共识节点一起编号。因此,代替上述从本地节点列表中删除待删除的节点,可以将待删除的节点设置为未激活状态。结果,待删除的节点可以在不被从区块链网络中删除的情况下被冻结,并且因此不再充当共识节点。

s803包括剩余共识节点施行视图改变。

在s801中,剩余共识节点执行用于删除节点的交易后,剩余共识节点可以更新本地节点列表。在当前视图中,原始节点参与了共识验证,但尚未执行节点删除并且其次序保留。这样,在剩余共识节点施行了删除节点的交易后,它们可以检测到本地共识节点列表中的共识节点的数量与当前视图中的共识节点的数量不一致,或者检测到本地共识节点列表中的共识节点标识与当前视图中的共识节点标识不一致。因此,剩余共识节点可以发起视图改变。

在一些实施例中,视图改变处理中的r(即视图改变处理中的副本数)是除待删除节点外的共识节点的总数,即,本地节点列表中的除待删除节点外的节点数。

在一些实施例中,类似于前述,剩余共识节点可以向其他副本节点广播消息<视图改变,v+1,n,c,p,i>,其中n是最新的稳定检查点的数量,c是2f+1个经验证的检查点消息的集合,以及p是副本节点尚未完成处理的预准备和准备消息集。

在一些实施例中,共有五个共识节点,编号为a、b、c、d和m,假设剩余节点包括节点a、b、c和d,而待删除节点是节点m。节点a例如是pbft中的主节点,而节点b、c、d和m例如是pbft中的备份节点。可以通过p=(v)mod|r|来计算新的主节点编号。例如,如果p=1,则新的主节点是节点b。这里,r是本地节点列表中除待删除节点外的节点数。每个共识节点在本地节点列表中记录五个节点a、b、c、d和m的编号。在这种情况下,r等于5。在执行s801至s803的示例中,每个共识节点可以对除待删除节点外的剩余共识节点顺序编号,即,剩余节点a、b、c和d可以顺序编号为0、1、2和3。在这种情况下,r变为4。如上所述,在视图改变处理中视图编号增加,即,从v增加到v+1。

在另一示例中,共有五个共识节点,编号为a、b、c、d和m,假设待删除的节点是节点c,则剩余节点包括节点a、b、d和m。在执行步骤s801-s803之后,每个共识节点可以基于节点删除之前共识节点的编号,对剩余共识节点(除待删除节点外)编号。因此,剩余共识节点a、b、d和m被重新编号为0、1、2和3。

此外,对于将共识节点配置为未激活状态以冻结共识节点的方法,剩余共识节点可以响应于检测到以下任何条件而发起视图改变:本地共识节点列表中的激活共识节点的数量与当前视图中的共识节点的数量不一致,或者本地共识节点列表中的激活共识节点的标识与当前视图中的共识节点的标识不一致。

s805包括:在视图改变完成之后,剩余共识节点参与共识验证。

在一些实施例中,在视图改变完成之后,除被删除节点之外的剩余共识节点各自在本地具有相同的节点编号列表并且具有相同的区块数据,从而剩余共识节点可以正常地参与共识验证。这样,节点删除处理完成。

图9示出了根据各种实施例的用于在区块链网络中删除节点的方法900的流程图。方法900可以由用于删除例如区块链网络的共识节点(例如,图1-3的区块链节点、图7或图10的剩余共识节点)的区块链网络中的节点的设备、装置或系统来施行。方法900可以由区块链网络的第一共识节点来施行。第一共识节点可以是基于pbft的区块链网络的主节点或备份节点。可以由包括各种硬件机器和/或软件的系统或设备(例如,计算机、服务器)来实施第一共识节点。例如,系统或设备可以包括一个或多个处理器以及一个或多个非暂态计算机可读存储介质(例如,一个或多个存储器),计算机可读存储介质耦接到一个或多个处理器并且配置有可由一个或多个处理器执行以使得系统或设备(例如,处理器)施行方法900的指令。

下面呈现的方法900的操作旨在说明。取决于实施方式,方法900可以包括以各种顺序或并行施行的附加的、更少的或替代的步骤。方法900的更多细节可以参考图1至图8和图10以及相关的描述。参考图1至图8和图10描述的用于在区块链网络中删除节点的步骤被包括在方法900中。

在区块链网络中删除节点可以至少包括以下实施例。在一些实施例中,待删除的节点(例如,第二共识节点)可以是在节点删除之前的区块链网络的激活共识节点,并且通过节点删除,节点成为区块链网络的未激活共识节点。激活共识节点可以参与共识验证。但是,未激活共识节点不能参与共识验证,并且因此可能是非共识节点。在一些实施例中,待删除的节点可以是在节点删除之前的区块链网络的一部分(例如,作为激活共识节点),并且通过节点删除,节点被从区块链网络移除。

方框s901包括:区块链网络的第一共识节点获得包括用于删除区块链网络中的第二共识节点的请求的交易。在一些实施例中,第一共识节点获得交易包括:从客户端设备或控制器的命令控制台获得交易。在一些实施例中,获得交易包括:从第二共识节点、区块链网络的第三共识节点或外部设备获得交易。

在一些实施例中,交易被配置为调用部署在由区块链网络维护的区块链中的区块链合约。在一些实施例中,区块链合约包括创始合约或系统合约。

方框s902包括:响应于对交易的共识验证成功,执行交易并且在节点列表中对区块链网络中除第二共识节点外的多个剩余共识节点顺序编号。在一些实施例中,执行交易包括:从节点列表中删除第二共识节点;或者将节点列表中的第二共识节点配置为未激活状态。

在一些实施例中,节点列表处于由区块链网络维护的区块链的世界状态。在一些实施例中,第一共识节点在本地维护节点列表,节点列表包括以下一项或多项:共识节点标识、共识节点ip地址和共识节点端口号;并且在节点列表中对区块链网络中除第二共识节点外的多个剩余共识节点顺序编号之前,在节点列表中对区块链网络中包括第二共识节点的所有共识节点顺序编号。

方框s903包括:施行视图改变以使剩余共识节点参与未来的共识验证。在一些实施例中,施行视图改变包括:响应于接收到由第二共识节点广播的、用于发起视图改变的消息而发起视图改变。

在一些实施例中,施行视图改变包括:响应于检测到以下任何条件而发起视图改变:节点列表中共识节点的数量与当前视图中共识节点的数量不一致;节点列表中的共识节点标识与当前视图中的共识节点标识不一致;节点列表中激活共识节点的数量与当前视图中共识节点的数量不一致;以及节点列表中激活共识节点的标识与当前视图中共识节点的标识不一致。

在一些实施例中,视图改变中的副本数是除第二共识节点之外的剩余共识节点的总数。

在一些实施例中,方法进一步包括:在没有第二共识节点的情况下参与共识验证。

图10示出了根据各种实施例的用于实施区块链网络的框图。如图所示,在节点删除之前,区块链网络可以包括多个共识节点1002,其中要从区块链网络中删除的节点是1003,并且剩余节点是1004。共识节点1004中的任何一个可以是用于接收交易的第一共识节点。在此,将节点1001指定为第一共识节点。在一些实施例中,区块链网络可以基于pbft,并且在每个视图中,其节点之一可以是主节点而剩余节点可以作为备份节点。

在一些实施例中,第一共识节点1001被配置为用于获得用于在区块链网络中删除节点1003的交易请求,并对用于删除节点1003的交易请求发起共识验证。共识验证成功后,每个共识节点1002被配置为执行用于删除节点1003的交易,并对除待删除节点1003外的剩余共识节点1004顺序编号。剩余共识节点1004被配置为用于施行视图改变,并且在视图改变完成之后,针对区块链参与共识验证。

在一些实施例中,用于删除节点的交易请求包括用于调用合约的交易请求。在一些实施例中,被调用的合约包括创始合约或系统合约。在一些实施例中,第一共识节点1001获得用于删除节点的交易请求包括:第一共识节点1001从客户端设备获得用于删除节点的交易请求;第一共识节点1001从控制器的命令控制台获得用于删除节点的交易请求。

在一些实施例中,每个共识节点1002被配置为在本地维护节点列表,节点列表包括共识节点1002的以下一个或多个:标识、ip地址和端口号,其中,在节点列表中对共识节点1002顺序编号。在一个实施例中,由共识节点1002在本地维护的节点列表处于世界状态。

在一些实施例中,共识节点1002执行用于删除节点1003的交易包括:共识节点1002从节点列表中删除共识节点1003;或者在节点列表中将共识节点1003配置为未激活状态。

在一些实施例中,任何共识节点1002可以被配置为响应于检测到以下任何条件而发起视图改变:节点列表中共识节点的数量与当前视图中共识节点的数量不一致;节点列表中的共识节点标识与当前视图中的共识节点标识不一致;节点列表中激活共识节点的数量与当前视图中共识节点的数量不一致;以及节点列表中激活共识节点的标识与当前视图中共识节点的标识不一致。

在一些实施例中,共识节点1002可以响应于接收到由共识节点1003广播的、用于发起视图改变的消息来发起视图改变。

在一些实施例中,视图改变中的副本数是除共识节点1003之外的剩余共识节点1004的总数。

图11示出了根据一些实施例的用于在区块链网络中删除节点的装置1100的框图。装置1100可以是节点(例如,图1-3的区块链节点、图7或图10的剩余共识节点)的一个或多个组件的实施示例。节点可以是基于pbft的区块链网络的主节点或备份节点。方法800和方法900的一个或多个步骤可以由装置1100来实施。

装置1100可以在计算机系统或设备中实施,计算机系统或设备包括一个或多个处理器以及耦接到一个或多个处理器并配置有可由一个或多个处理器执行以使系统或设备(例如,处理器)施行上述方法(例如,方法800或900)的步骤的指令的一个或多个非暂态计算机可读存储介质(例如,一个或多个存储器)。装置1100可以包括与指令(例如,软件指令)相对应的各种单元/模块。

在一些实施例中,装置1100可以包括:获得模块1101,获得包括用于删除区块链网络中的第二共识节点的请求的交易;执行模块1102,响应于对交易的共识验证成功,执行交易并在节点列表中对区块链网络中除第二共识节点外的多个剩余共识节点顺序编号;以及施行模块1103,施行视图改变以使剩余共识节点参与未来的共识验证。

这里描述的技术可由一个或多个专用计算设备实现。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持设备、网络设备或包含硬连线和/或程序逻辑以实现这些技术的任何其他设备或设备的组合。专用计算设备可以被实现为个人计算机、膝上型计算机、蜂窝电话、照相电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板电脑、可穿戴设备或其组合。计算设备通常可由操作系统软件控制和协调。传统的操作系统控制和调度用于执行的计算机进程,施行存储器管理,提供文件系统、网络、i/o服务,以及提供用户接口功能,例如图形用户界面(“gui”)等。这里描述的各种系统、装置、存储介质、模块和单元可以在专用计算设备或者一个或多个专用计算设备的一个或多个计算芯片中实现。在一些实施例中,这里描述的指令可以在专用计算设备上的虚拟机中实现。当被执行时,指令可以促使专用计算设备施行本文描述的各种方法。虚拟机可以包括软件、硬件或其组合。

图12示出了其中可以实施本文描述的任何实施例的计算机系统的框图。系统1200可以在图1-7、图10和图11中所示的环境、系统或设备的任何组件中实施。可以通过计算机系统1200的一个或多个实施方式来施行图8和图9所示的一个或多个方法。

计算机系统1200可以包括总线1202或用于通信信息的其他通信机制、与总线1202耦接的用于处理信息的一个或多个硬件处理器1204。硬件处理器1204可以是例如一个或多个通用微处理器。

计算机系统1200还可包括耦接到总线1202的、用于存储信息和可由处理器1204执行的指令的主存储器1206,例如随机存取存储器(ram)、高速缓存和/或其他动态存储设备。主存储器1206还可以用于在可由(多个)处理器1204执行的指令的执行期间存储临时变量或其他中间信息。当存储在可由(多个)处理器1204访问的存储介质中时,这样的指令将计算机系统1200呈现到为被定制以施行指令中指定的操作的专用机器中。计算机系统1200可以进一步包括只读存储器(rom)1208或耦接到总线1202的用于存储用于处理器1204的静态信息和指令的其他静态存储设备。可以提供例如磁盘、光盘、usb拇指驱动器(闪存驱动器)等的存储设备1210并将其耦接到总线1202以存储信息和指令。

计算机系统1200可使用定制的硬接线逻辑、一个或多个asic或fpga、固件和/或程序逻辑,其与计算机系统结合而使得计算机系统1200成为专用机器或将计算机系统1200编程成为专用机器,来实现本文描述的技术。根据一个实施例,本文描述的操作、方法和过程由计算机系统1200响应于处理器1204执行主存储器1206中包含的一个或多个指令的一个或多个序列来施行。这些指令可以从诸如存储设备1210的另一存储介质读取到主存储器1206中。执行主存储器1206中包含的指令序列可使得处理器1204施行本文描述的处理步骤。在替代实施例中,可以使用硬连线电路代替软件指令或与软件指令组合。

主存储器1206、rom1208和/或存储设备1210可包括非暂时性存储介质。这里使用的术语“非暂时性介质”和类似术语是指存储促使机器以特定方式操作的数据和/或指令的介质,所述介质不包括暂时性信号。这种非暂时性介质可以包括非易失性介质和/或易失性介质。例如,非易失性介质包括光盘或磁盘,诸如存储设备1210。易失性介质包括动态存储器,诸如主存储器1206。常规形式的非暂时性介质包括,例如,软磁盘、软盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、cd-rom、任何其他光学数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash-eprom、nvram、任何其他存储器芯片或盒式磁带以及它们的网络版本。

计算机系统1200可包括耦接到总线1202的网络接口1218。网络接口1218可为连接到一个或多个本地网络的一个或多个网络链接提供双向数据通信耦合。例如,网络接口1218可以是综合业务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器、或者向相应类型的电话线提供数据通信连接的调制解调器。作为另一示例,网络接口1218可以是局域网(lan)卡以提供数据通信连接至兼容的lan(或与wan通信的wan组件)。还可以实现无线链路。在任何这种实施中,网络接口1218可发送和接收携带表示各种类型信息的数字数据流的电信号、电磁信号或光信号。

计算机系统1200可通过网络、网络链接和网络接口1218来发送消息和接收包括程序代码的数据。因特网示例中,服务器可通过因特网、isp、本地网络和网络接口1218来传送应用程序的请求代码。

接收到的代码可在接收时由处理器1204执行,和/或存储在存储设备1210或其他非易失性存储器中,用于以后执行。

前面部分中描述的每个处理、方法和算法可以体现在由包括计算机硬件的一个或多个计算机系统或者计算机处理器执行的代码模块中并且被其完全或部分自动化地实现。处理和算法可以部分或全部地在专用电路中实现。

上述各种特征和处理可彼此独立地使用,或者可以各种方式组合。所有可能的组合和子组合都旨在落入本文的范围内。另外,在一些实施方式中可以省略某些方法或处理框。本文描述的方法和处理也不限于任何特定顺序,与其相关的框或状态可以以适当的其他顺序执行。例如,所描述的框或状态可以以不同于具体公开的顺序执行,或者多个框或状态可以在单个框或状态中组合。框或状态的示例可以串行、并行或以某种其他方式执行。可以将框或状态从所公开的实施例中删除或移除。这里描述的系统和组件的示例可以与所描述的不同地被配置。例如,与所公开的实施例相比,可以删除、移除或重新布置元件。

本文描述的方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或被永久配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,这样的处理器可以构成处理器实现的引擎,所述处理器实现的引擎用于执行本文描述的一个或多个操作或功能。

类似地,这里描述的方法可以至少部分地由处理器实现,其中特定处理器是硬件的示例。例如,所述方法的至少一些操作可以由一个或多个处理器或处理器实现的引擎执行。此外,一个或多个处理器还可操作以支持“云计算”环境中的相关操作的性能,或作为“软件即服务”(saas)操作。例如,至少一些操作可以由一组计算机(作为包括处理器的机器的示例)执行,这些操作可以经由网络(例如,因特网)经由一个或多个适当的接口(例如,应用程序接口(api))被访问。

某些操作的性能可以在处理器之间分配,不仅驻留在单个机器中,而且跨多个机器被部署。在一些实施例中,处理器或处理器实现的引擎可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器群内)。在其他实施例中,处理器或处理器实现的引擎可以分布在多个地理位置。

在本文中,多个实例可以实现作为单个实例所描述的组件、操作或结构。尽管一个或多个方法的各个操作被示出并描述为独立的操作,但是可以同时执行一个或多个独立的操作,并且不需要以所示的顺序执行所述操作。在配置中作为独立组件呈现的结构和功能可以实现为组合结构或组件。类似地,作为单个组件呈现的结构和功能可以实现为独立的组件。这些和其他变化、修改、删除和改进都落入本文中的主题的范围内。

尽管已经参考具体实施例描述了主题的概述,但是在不脱离本文的实施例的较宽范围的情况下,可以对这些实施例进行各种修改和改变。具体实施方式不应被视为具有限制意义,并且各种实施例的范围仅由所附权利要求以及这些权利要求所赋予的等同物的全部范围限定。此外,这里使用的相关术语(诸如“第一”、“第二”、“第三”等)不表示任何顺序、高度或重要性,而是用于将一个元件与另一元件区分开。此外,术语“一”、“一个”和“多个”在本文中并不表示对数量的限制,而是表示存在至少一个所述的物品。另外,在本文中,“或”是包括性的而不是排他性的,除非另外明确指出或通过上下文另外指出。因此,在本文中,“a或b”表示“a、b或两者”,除非另外明确指出或通过上下文另外指出。而且,“和”既是连词又是数个,除非另外明确指出或通过上下文另外指出。因此,在本文中,“a和b”是指“a和b,共同地或分别地”,除非另外明确指出或通过上下文另外指出。

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