提案共识执行方法、区块链系统、设备和存储介质与流程

文档序号:29869567发布日期:2022-04-30 17:40阅读:86来源:国知局
提案共识执行方法、区块链系统、设备和存储介质与流程

1.本技术涉及区块链技术领域,特别涉及一种提案共识执行方法、区块链系统、设备和存储介质。


背景技术:

2.在区块链系统中,共识协议负责对从客户端接收到的交易进行一致性排序,得到排序后的交易序列,状态机只需负责对排序后的交易序列进行执行。从表面来看,共识协议在确定交易序列的一致性后,其共识任务就已经完成了,相同的状态机执行相同的交易序列将会给出相同的执行结果。然而,状态机并非是保证安全的,在软件层面和硬件层面上的问题都有可能导致不同节点运行相同的状态机执行相同的交易序列却得出不同的执行结果。为此,共识协议对执行结果的一致性的验证也是必要的。


技术实现要素:

3.本技术提供了一种提案共识执行方法、区块链系统、设备和存储介质,可以将共识过程与执行过程完全解耦,通过检查机制单独负责执行结果的验证与一致性保证,从而可以确保共识活性,且避免处理资源的浪费。所述技术方案如下:第一方面,提供了一种提案共识执行方法,应用于区块链系统,所述区块链系统包括多个节点,所述方法包括:所述多个节点中的每个节点执行以下操作:获取在共识过程中生成的一个提案的聚合投票信息,若所述一个提案的聚合投票信息满足提交规则,则提交所述一个提案,且执行所述一个提案,所述提交所述一个提案是指标记所述一个提案的共识已完成;每提交k个提案,根据所述k个提案中的第k个提案的执行结果生成所述第k个提案的检查信息,将所述第k个提案的检查信息存储至本地检查信息集,所述k为正整数;获取聚合检查信息,所述聚合检查信息包括所述多个节点中的至少部分节点针对同一提案生成的执行结果一致的检查信息;将所述本地检查信息集中的检查信息与所述聚合检查信息进行比较,以从所述本地检查信息集中确定稳定检查信息,所述稳定检查信息所属的提案的执行结果具有一致性。
4.在本技术中,节点在提案的聚合投票信息满足提交规则时,即可提交这个提案,且执行这个提案。也即,节点在该提案的聚合投票信息满足提交规则时,即可标记该提案的共识已完成,而无需等待该提案的执行结果。节点每提交一定数量的提案后,可根据最新提交的这个提案的执行结果生成这个提案的检查信息并存储至本地检查信息集,之后,将本地检查信息集中的检查信息与聚合检查信息进行比较,来验证本地检查信息集中的检查信息所属的提案的执行结果是否具有一致性,以从本地检查信息集中确定稳定检查信息。这种情况下,通过检查机制单独负责执行结果的验证与一致性保证,保证了提案执行安全性。如此,将共识过程与执行过程完全解耦。由于不需要在共识过程中穿插执行流程,所以共识时
间是可预知的,从而可使用一个恰当的超时阈值来确保共识活性。并且,由于提案提交后才会执行,所以确保了待执行的提案已经共识完毕,此时执行工作不会因共识视图的切换等原因而被抛弃,从而不会浪费处理资源。
5.可选地,所述多个节点在每一轮共识过程中存在一个主节点和多个从节点,所述方法还包括:第i轮主节点生成所述第i轮提案,向所述第i轮从节点发送携带有所述第i轮提案的提案消息,所述i为正整数;第i+1轮从节点若确定所述提案消息具备合法性,则向所述第i+1轮主节点发送针对所述第i轮提案的投票;所述第i+1轮主节点根据所述第i+1轮从节点针对所述第i轮提案的投票生成所述第i轮提案的聚合投票信息,生成第i+1轮提案,向所述第i+1轮从节点发送携带有所述第i+1轮提案和所述第i轮提案的聚合投票信息的提案消息。
6.可选地,所述获取聚合检查信息,包括:每生成一个检查信息,向其他节点发送最新生成的所述一个检查信息;在获取到属于同一提案的、数量大于或等于第一数量阈值、且执行结果相同的多个检查信息的情况下,根据所述多个检查信息生成所述聚合检查信息。
7.可选地,所述多个节点在每一轮共识过程中存在一个主节点和多个从节点,所述获取聚合检查信息,包括:第i+1轮从节点在确定携带有第i轮提案的提案消息具备合法性后,将针对所述第i轮提案的投票和最新生成的检查信息携带于一个消息中发送给所述第i+1轮主节点;所述第i+1轮主节点在获取到属于同一提案的、数量大于或等于第一数量阈值、且执行结果相同的多个检查信息后,根据所述多个检查信息生成所述聚合检查信息,将所述聚合检查信息、所述第i+1轮提案和所述第i轮提案的聚合投票信息均携带于提案消息中发送给所述第i+1轮从节点。
8.可选地,所述多个节点在每一轮共识过程中存在一个主节点和多个从节点,所述获取聚合检查信息,包括:第i+1轮从节点每生成一个检查信息,将最新生成的所述一个检查信息发送给第i+j轮主节点,所述j为正整数;所述第i+j轮主节点在获取到属于同一提案的、数量大于或等于第一数量阈值、且执行结果相同的多个检查信息后,根据所述多个检查信息生成所述聚合检查信息,将所述聚合检查信息、所述第i+j轮提案和所述第i+j-1轮提案的聚合投票信息均携带于提案消息中发送给所述第i+j轮从节点。
9.可选地,所述第一数量阈值为2f+1,所述f为所述多个节点中恶意节点的数量。
10.可选地,所述将所述本地检查信息集中的检查信息与所述聚合检查信息进行比较,包括:若所述本地检查信息集中存在与所述聚合检查信息属于同一提案的目标检查信息,且所述目标检查信息中的执行结果与所述聚合检查信息中的执行结果相同,则将所述目标检查信息设置为最新的所述稳定检查信息。
11.可选地,所述将所述本地检查信息集中的检查信息与所述聚合检查信息进行比
较,包括:若所述本地检查信息集中最新的所述稳定检查信息所属的提案的轮次高于所述聚合检查信息所属的提案的轮次,则结束操作;若所述本地检查信息集中不存在与所述聚合检查信息属于同一提案的检查信息,则执行区块同步操作;若所述本地检查信息集中存在与所述聚合检查信息属于同一提案的目标检查信息,且所述目标检查信息中的执行结果与所述聚合检查信息中的执行结果不同,则执行区块回滚操作。
12.可选地,所述多个节点在每一轮共识过程中存在一个主节点和多个从节点,所述方法还包括:所述多个节点中的每个节点执行以下操作:在提交的提案为包含有配置区块的第一提案的情况下,根据所述第一提案的执行结果生成所述第一提案的检查信息作为配置检查信息,将所述配置检查信息存储至所述本地检查信息集,所述配置区块是所述主节点在处理共识集群变更交易时构建的;在所述本地检查信息集中的所述配置检查信息未成为所述稳定检查信息的情况下,不提交除内容为空的提案之外的其他提案;在所述本地检查信息集中的所述配置检查信息成为所述稳定检查信息后,以所述配置区块为初始区块继续进行提案共识。
13.可选地,所述多个节点在每一轮共识过程中存在一个主节点和多个从节点,所述方法还包括:所述多个节点中的每个节点执行以下操作:在提交的提案为包含有验证区块的第二提案的情况下,根据所述第二提案的执行结果生成所述第二提案的检查信息作为强制检查信息,将所述强制检查信息存储至所述本地检查信息集,所述验证区块是所述主节点在所述本地检查信息集在预设时长内未形成所述稳定检查信息时构建的。
14.第二方面,提供了一种区块链系统,所述区块链系统包括多个节点,所述多个节点在每一轮共识过程中存在一个主节点和多个从节点,所述区块链系统用于执行上述的提案共识执行方法。
15.第三方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的提案共识执行方法。
16.第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的提案共识执行方法。
17.第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的提案共识执行方法的步骤。
18.可以理解的是,上述第二方面、第三方面、第四方面、第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
19.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使
用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1是本技术实施例提供的一种区块链系统的结构示意图;图2是本技术实施例提供的一种提案共识执行方法的流程图;图3是本技术实施例提供的一种聚合检查信息的生成过程的示意图;图4是本技术实施例提供的另一种聚合检查信息的生成过程的示意图;图5是本技术实施例提供的又一种聚合检查信息的生成过程的示意图;图6是本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
21.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
22.应当理解的是,本技术提及的“多个”是指两个或两个以上。在本技术的描述中,除非另有说明,“/”表示或的意思,比如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,为了便于清楚描述本技术的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
23.在本技术中描述的“一个实施例”或“一些实施例”等语句意味着在本技术的一个或多个实施例中包括该实施例描述的特定特征、结构或特点。由此,在本技术中的不同之处出现的“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等语句不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。此外,术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
24.在对本技术实施例进行详细地解释说明之前,先对本技术实施例的应用场景予以说明。
25.区块链系统包括多个节点,该多个节点中的每个节点都有用于存储交易的交易池。该多个节点中的任意一个节点在从客户端接收到交易后,会将该交易共享给其他节点,以便该多个节点都在交易池中存储该交易,如此该多个节点的交易池中存储的交易一致,可对交易池中的交易进行处理。对于交易池中任意一个待处理的交易来说,该交易在得到该多个节点的共识之后,可被执行,以被存储至区块链。
26.在区块链系统中,共识协议负责对交易进行一致性排序,得到排序后的交易序列,状态机只需负责对排序后的交易序列进行执行。从表面来看,共识协议在确定交易序列的一致性后,其共识任务就已经完成了,相同的状态机执行相同的交易序列将会给出相同的执行结果。然而,状态机并非是保证安全的,在软件层面和硬件层面上的问题都有可能导致不同节点运行相同的状态机执行相同的交易序列却得出不同的执行结果。为此,共识协议对执行结果的一致性的验证也是必要的。
27.一般地,采用hotstuff共识算法、pbft(practical byzantine fault tolerance,实用拜占庭容错)共识算法、raft共识算法等基于主节点(leader)的共识算法来对交易进行共识,在共识之后,执行交易,以将交易存储至区块链。基于主节点的共识算法中需要一个主节点来主导共识过程,主节点是从区块链系统中的多个节点中选举出来的节点,用于广播根据交易生成的提案。在每一轮共识过程中,均会从该多个节点中选举出一个节点作为主节点,将其他节点作为从节点,通过每一轮的主节点和从节点来实现提案共识。
28.下面以pbft算法为例,来对相关技术中的提案共识执行过程进行说明,该过程包括如下步骤(1)-步骤(5):(1)主节点在根据待处理的交易生成提案后,不执行该提案,直接向从节点广播该提案。
29.(2)主节点广播该提案后进入pre-prepared(预准备)阶段,同时从节点在接收到主节点发送的该提案后也进入pre-prepared阶段,此时主节点和从节点均执行该提案(此过程可称为预执行),执行变更状态(即预执行结果)暂存在缓存中而不写入区块链中,该提案执行完成后,广播携带有执行结果的prepare(准备)消息。
30.(3)任意一个节点接收到其他节点发送的prepare消息后,比较prepare消息中携带的执行结果,当获取到2f+1个执行结果一致的prepare消息后,进入prepared阶段,广播携带执行结果的commit(确认)消息,其中,f为可容忍的拜占庭节点数。
31.(4)任意一个节点接收到其他节点发送的commit消息后,比较commit消息中携带的执行结果,当获取到2f+1个执行结果一致的commit消息后,共识协议提交该提案,并将暂存的执行变更状态写入区块链中。
32.(5)任意一个节点若在限制时间(即超时阈值)内没有获取到足够数量的执行结果一致的commit消息,则触发超时,并进入主节点切换流程。在主节点切换之后,切换后的主节点会发起新的提案,相应的从节点在接收到新的提案后,会放弃暂存的执行变更状态,转而执行新的提案。
33.上述方案虽然使得共识协议对执行结果的一致性进行了验证,但是存在以下三个问题:第一、共识与执行高度耦合。提案的执行过程包含在共识过程中,共识需要同步等待执行结果,从而导致处理资源利用率和共识效率均较低。
34.第二、无法保证共识活性。由于提案的执行时间是不可预知的,所以共识协议很难确定一个合适的超时阈值,若提案的执行时间过长会导致共识超时频繁,甚至失去活性。
35.第三、浪费处理资源。由于共识可能在预执行完成后超时,而超时触发主节点切换后会放弃先前的预执行结果,这会导致先前的预执行工作失去意义,严重浪费了处理资源。
36.为此,本技术实施例提供了一种提案共识执行方法,将共识过程与执行过程完全解耦,通过检查机制单独负责执行结果的验证与一致性保证,从而可以确保共识活性,且避免处理资源的浪费。
37.下面对本技术实施例涉及的区块链系统的相关内容予以说明。
38.图1是本技术实施例提供的一种区块链系统的结构示意图。
39.参见图1,区块链系统100是指用于进行节点与节点之间数据共享的系统,区块链系统100中可以包括多个节点101。每个节点101在进行正常工作时可以接收到输入信息,并
基于接收到的输入信息维护区块链系统100内的共享数据。为了保证区块链系统100内的信息互通,区块链系统100中的每个节点101之间可以存在信息连接,节点101之间可以通过该信息连接进行信息传输。比如,当区块链系统100中的任意节点101接收到输入信息时,区块链系统100中的其他节点101便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链系统100中全部节点101上存储的数据一致。也即,区块链系统100中的每个节点101均存储一条相同的区块链。
40.区块链系统100具有分布式数据存储、点对点传输、共识机制、加密算法等计算机技术。区块链系统100是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的共享开放、真实完整和安全可靠。
41.区块链系统100中的多个节点101在每一轮共识过程中存在一个主节点和多个从节点,每一轮的主节点和多个从节点可以执行下文图2实施例所述的提案共识执行方法,来实现对每一轮提案的共识和执行。
42.下面对本技术实施例提供的提案共识执行方法进行详细地解释说明。
43.图2是本技术实施例提供的一种提案共识执行方法的流程图。该方法应用于区块链系统,具体可以应用于区块链系统中的共识协议。区块链系统包括多个节点,该多个节点在每一轮共识过程中存在一个主节点和多个从节点。
44.参见图2,该方法包括以下步骤。
45.步骤201:第i轮主节点生成第i轮提案,向第i轮从节点发送携带有第i轮提案的提案消息,i为正整数。
46.主节点是从区块链系统中的多个节点中选举出来的节点,用于广播提案。在每一轮共识过程中都会选举一个节点作为主节点,将其他节点作为从节点,通过每一轮的主节点和多个从节点实现这一轮提案的共识。
47.从区块链系统中的多个节点中选举主节点的操作可以参考相关技术,本技术实施例对此不进行详细阐述。比如,可以给区块链系统中的多个节点中的每个节点进行编号,然后按照该多个节点的编号顺序,依次由各个节点轮流当选主节点,当然,也可以通过其他方式选举主节点,本技术实施例对此不作限定。
48.需注意的是,区块链系统中的多个节点中有可能会存在恶意节点,恶意节点是指对区块链系统的安全造成恶意攻击的节点,也即,恶意节点会阻碍对提案的共识。可选地,该多个节点的数量为n个,该多个节点中的恶意节点的数量为f个,f小于,示例地,n可以为大于或等于4的整数,f可以为正整数。
49.第i轮主节点生成的第i轮提案是根据第i轮待处理的交易生成的。示例地,第i轮主节点可以根据第i轮待处理的交易,在本地最新生成的区块的基础上构建一个新的区块作为第i轮提案,然后将第i轮提案携带于提案消息中广播给其他从节点,以便其他从节点对第i轮提案进行共识。
50.可选地,第i轮主节点还可以使用自身的私钥对第i轮提案进行签名,将该签名也携带于提案消息中。
51.可选地,在i为1的情况下,即在第一轮提案的共识过程中,第i轮主节点广播的提
案消息中可以携带第i轮提案。
52.在i大于或等于2的情况下,即在第二轮提案以及后续提案的共识过程中,第i轮主节点广播的提案消息中不仅可以携带第i轮提案,还可以携带上一轮(即第i-1轮)提案的聚合投票信息(也可称为qc(quorum certificate,法定人数证书))。第i-1轮提案的聚合投票信息包括区块链系统中的多个节点中的至少部分节点中每个节点针对第i-1轮提案的投票,每个节点针对第i-1轮提案的投票可以包括使用自身的私钥对第i-1轮提案的摘要信息(即哈希值)的签名,每个节点在确定第i-1轮提案具备合法性后可以对其进行投票。如此,第i-1轮提案的聚合投票信息为第i-1轮提案的合法性提供了多票的证据。
53.步骤202:第i+1轮从节点若确定携带有第i轮提案的提案消息具备合法性,则向第i+1轮主节点发送针对第i轮提案的投票。
54.第i+1轮从节点中可能包括第i轮主节点和第i轮从节点。对于第i轮主节点,其在生成携带有第i轮提案的提案消息后,就可以验证该提案消息的合法性,且在确定该提案消息具备合法性的情况下,向第i+1轮主节点发送针对第i轮提案的投票。对于第i轮从节点,其在接收到第i轮主节点发送的携带有第i轮提案的提案消息后,可以验证该提案消息的合法性,且在确定该提案消息具备合法性的情况下,向第i+1轮主节点发送针对第i轮提案的投票。每个节点针对第i轮提案的投票可以包括使用自身的私钥对第i轮提案的摘要信息的签名。
55.验证携带有第i轮提案的提案消息的合法性的操作与相关技术中验证某个提案消息的合法性的操作类似,本技术实施例对此不进行详细阐述。例如,可以验证该提案消息中携带的主节点的签名,还可以验证该提案消息中携带的第i轮提案中包含的交易,如可以验证该交易是否存在重复打包问题、验证该交易的用户签名等,此外,还可以验证该提案消息中携带上一轮提案的聚合投票信息,如可以验证该聚合投票信息中包含的各个节点的签名。
56.值得说明的是,本技术实施例中,第i+1轮从节点在获取到携带有第i轮提案的提案消息后,仅对该提案消息的合法性做验证,而不对第i轮提案做执行处理,在合法性验证通过后,即将针对第i轮提案的投票发送给第i+1轮主节点。如此,避免了在共识过程中穿插执行流程。
57.步骤203:第i+1轮主节点根据第i+1轮从节点针对第i轮提案的投票生成第i轮提案的聚合投票信息,生成第i+1轮提案,向第i+1轮从节点发送携带有第i+1轮提案和第i轮提案的聚合投票信息的提案消息。
58.第i轮提案的聚合投票信息为第i轮提案的合法性提供了多票的证据。第i轮提案的聚合投票信息可以包括第i+1轮从节点中的一定数量的从节点针对第i轮提案的投票。
59.可选地,第i+1轮主节点可以在接收到的针对第i轮提案的多个投票的数量大于或等于第二数量阈值的情况下,根据该多个投票生成第i轮提案的聚合投票信息。此时第i轮提案的聚合投票信息可以包括该多个投票,即包括数量大于或等于第二数量阈值的多个节点中的每个节点针对第i轮提案的投票。
60.第二数量阈值可以预先进行设置。例如,第二数量阈值可以为2f+1,如此,若接收到的针对第i轮提案的多个投票的数量大于或等于2f+1,说明区块链系统中至少有2f+1个节点对第i轮提案进行了投票,则能够保证区块链系统中的f个恶意节点不能对正常节点的
共识过程造成影响。
61.其中,第i+1轮主节点生成第i+1轮提案的操作与第i轮主节点生成第i轮提案的操作类似,本技术实施例对此不再赘述。
62.步骤204:对于该多个节点中的每一个节点,这个节点获取在共识过程中生成的一个提案的聚合投票信息,若这个提案的聚合投票信息满足提交规则,则提交这个提案,且执行这个提案。
63.该多个节点中的每个节点可以通过上述步骤201-步骤203来得到某个提案的聚合投票信息,具体来讲,可以在每一轮共识过程中获取到上一轮提案的聚合投票信息。比如,每一轮的主节点可以生成上一轮提案的聚合投票信息,每一轮的从节点可以接收主节点发送的提案消息中携带的上一轮提案的聚合投票信息。如此,各个节点都可以获取到提案的聚合投票信息。
64.提交规则可以预先进行设置,比如,该提交规则可以是3-chain提交规则等。某个提案的聚合投票信息满足提交规则,表明已经有足够数量的节点对这个提案进行投票,即已完成对这个提案的共识,因而此时可以提交这个提案。
65.其中,chain是指链式共识过程。该3-chain提交规则是指:在获取到连续三轮提案中每轮提案的聚合投票信息的情况下,提交这三轮提案中最早生成的一轮提案。这种情况下,若获取到了连续三轮提案中每轮提案的聚合投票信息,说明这三轮提案中最早生成的一轮提案已达到最终确定状态,即已有足够数量的可信节点完成对此最早生成的一轮提案的共识,因而可以提交此最早生成的一轮提案。
66.节点提交这个提案即是标记这个提案的共识已完成,此时可以异步通知执行模块(也可称为状态机)执行这个提案。并且,节点提交这个提案后,不等待这个提案的执行结果,直接继续进行下一轮共识过程。如此,可将共识与执行解耦。
67.其中,节点执行这个提案的操作与相关技术中某个节点执行某个提案的操作类似,本技术实施例对此不进行详细阐述。
68.步骤205:对于该多个节点中的每一个节点,这个节点每提交k个提案,根据该k个提案中的第k个提案的执行结果生成该第k个提案的检查信息,将该第k个提案的检查信息存储至本地检查信息集。
69.k为正整数,且k可以预先进行设置,如k可以为1、5、10等。如此,节点在每提交一定数量的提案后,就可以异步等待执行模块对最新提交的这个提案的执行结果,然后根据这个提案的执行结果生成这个提案的检查信息。
70.这个提案的检查信息是用于检查这个提案的执行一致性的信息。示例地,这个提案的检查信息可以包括区块编号、区块轮次和这个提案的执行结果,进一步还可以包括区块执行高度、节点使用自身的私钥对这个提案的执行结果的签名等。其中,区块编号可以是这个提案包含的区块的哈希值,区块轮次可以是这个提案所在的共识轮次,区块执行高度可以是区块链在添加这个提案包含的区块后的高度,这个提案的执行结果可以包括执行这个提案后世界状态的根哈希值。
71.每个节点都具有本地检查信息集。节点的本地检查信息集中存储有该节点生成的其所提交且已获得执行结果的提案的检查信息,后续该节点可以根据该节点的本地检查信息集中的检查信息验证这些检查信息所属的提案的执行结果是否具有一致性,具体在如下
步骤206进行说明。
72.步骤206:对于该多个节点中的每一个节点,这个节点获取聚合检查信息,将本地检查信息集中的检查信息与该聚合检查信息进行比较,以从本地检查信息集中确定稳定检查信息。
73.聚合检查信息包括该多个节点中的至少部分节点针对同一提案生成的执行结果一致的检查信息,也即,聚合检查信息所属的提案已在一定程度上取得了执行一致性。示例地,一个提案的聚合检查信息包括该多个节点中数量大于或等于第一数量阈值的至少部分节点中的每个节点针对这一提案生成的检查信息,也即,一个提案的聚合检查信息包括数量大于或等于第一数量阈值的多个检查信息,且该多个检查信息是多个不同的节点生成的,该多个检查信息中每个检查信息中包括的执行结果相同。
74.第一数量阈值可以预先进行设置。例如,第一数量阈值可以为2f+1,如此,若获取到一个提案的聚合检查信息,说明区块链系统中至少有2f+1个节点均针对这个提案生成了执行结果一致的检查信息,即区块链系统中至少有2f+1个节点在执行这个提案后得到了相同的执行结果,从而能够保证区块链系统中的f个恶意节点不能对正常节点的执行过程造成影响。
75.节点的本地检查信息集中的检查信息是该节点已提交且已获得执行结果的提案的检查信息。该聚合检查信息所属的提案是已取得一定数量的节点执行一致性的提案。因而可将该节点的本地检查信息集中的检查信息与该聚合检查信息进行比较,以确定该节点的本地检查信息集中是否存在某个检查信息所属的提案已具备执行一致性,也即,确定该节点的本地检查信息集中是否存在稳定检查信息,该稳定检查信息所属的提案的执行结果具有一致性,即该稳定检查信息是可信的检查信息。
76.另外,由于区块链是链式块状结构,所以节点在确定稳定检查信息后,不仅可以确定稳定检查信息所属的提案的执行结果具有一致性,相应的,也可以确定轮次低于该提案的轮次的其他提案的执行结果也具有一致性。由于节点是每提交k个提案时生成其中的第k个提案的检查信息并存储至本地检查信息集,所以节点实际上是每k个提案来选取一个提案的执行结果进行验证,并以此实现间接验证其他k-1个提案的执行结果的目的,如此,实现了阶段性的一致性检查,可以在保证执行结果验证准确度的情况下,提高执行结果验证效率,且降低节点的处理压力。
77.值得说明的是,本技术实施例中,节点在提案的聚合投票信息满足提交规则时,即可提交这个提案,且执行这个提案。也即,节点在该提案的聚合投票信息满足提交规则时,即可标记该提案的共识已完成,而无需等待该提案的执行结果。节点每提交一定数量的提案后,可根据最新提交的这个提案的执行结果生成这个提案的检查信息并存储至本地检查信息集,之后,将本地检查信息集中的检查信息与聚合检查信息进行比较,来验证本地检查信息集中的检查信息所属的提案的执行结果是否具有一致性,以从本地检查信息集中确定稳定检查信息。这种情况下,通过检查机制单独负责执行结果的验证与一致性保证,保证了提案执行安全性。
78.如此,将共识过程与执行过程完全解耦。这种情况下,由于不需要在共识过程中穿插执行流程,所以共识时间是可预知的,只与共识消息体以及节点规模等有关,从而可以使用一个恰当的超时阈值来确保共识活性。并且,由于提案提交后才会执行,所以确保了待执
行的提案已经共识完毕,此时执行工作不会因共识视图的切换等原因而被抛弃,从而不会浪费处理资源。
79.其中,该多个节点中的每个节点获取聚合检查信息的操作可以有多种实现方式,下面对三种可能的方式进行说明。
80.第一种可能的方式:对于该多个节点中的每一个节点,这个节点每生成一个检查信息,向其他节点发送最新生成的这个检查信息。并且,这个节点在获取到属于同一提案的、数量大于或等于第一数量阈值、且执行结果相同的多个检查信息的情况下,根据这多个检查信息生成这一提案的聚合检查信息。
81.在这种方式中,是所有节点交叉广播自身生成的提案的检查信息,每个节点在收集到属于某一提案的一定数量的执行结果一致的检查信息后,就可以将这些检查信息聚合成这一提案的聚合检查信息。
82.示例地,聚合检查信息包括的所有检查信息携带有相同的区块编号、区块轮次、区块执行高度和执行结果,且携带有不同的节点签名。也即,聚合检查信息包括的所有检查信息中的提案信息相同,但签名信息不同。
83.可选地,节点可以在接收到其他节点发送的属于同一提案的、数量大于或等于第一数量阈值、且执行结果相同的多个检查信息的情况下,根据这多个检查信息生成这一提案的聚合检查信息。
84.或者,节点可以在接收到其他节点发送的属于同一提案且执行结果相同的检查信息后,在自身生成的属于这一提案的检查信息中的执行结果与其他节点发送的属于这一提案的检查信息中的执行结果相同,且自身生成的属于这一提案的检查信息的数量与其他节点发送的属于这一提案的检查信息的数量之和大于或等于第一数量阈值的情况下,根据自身生成的属于这一提案的检查信息和其他节点发送的属于这一提案的检查信息生成这一提案的聚合检查信息。
85.例如,如图3所示,图3中示出了聚合检查信息的生成过程。节点a、节点b、节点c和节点d第一次广播属于提案1的检查信息1后,节点a获取到了四个检查信息1,根据这四个检查信息1生成聚合检查信息1;节点b获取到了三个检查信息1,根据这三个检查信息1生成聚合检查信息1;节点c获取到了三个检查信息1,根据这三个检查信息1生成聚合检查信息1;节点d获取到了两个检查信息1,因数量不足,节点d未生成聚合检查信息。之后,节点a、节点b、节点c和节点d第二次广播属于提案2的检查信息2后,节点a获取到了四个检查信息2,根据这四个检查信息2生成聚合检查信息2;节点b获取到了一个检查信息2,因数量不足,节点b未生成聚合检查信息;节点c获取到了四个检查信息2,根据这四个检查信息2生成聚合检查信息2;节点d获取到了一个检查信息2,因数量不足,节点d未生成聚合检查信息。之后,节点a、节点b、节点c和节点d第三次广播属于提案3的检查信息3后,节点a获取到了一个检查信息3,因数量不足,节点a未生成聚合检查信息;节点b获取到了一个检查信息3,因数量不足,节点b未生成聚合检查信息;节点c获取到了两个检查信息3,因数量不足,节点c未生成聚合检查信息;节点d获取到了四个检查信息3,根据这四个检查信息3生成聚合检查信息3。之后,节点a、节点b、节点c和节点d第四次广播属于提案4的检查信息4后,节点a获取到了两个检查信息4,因数量不足,节点a未生成聚合检查信息;节点b获取到了两个检查信息4,因数量不足,节点b未生成聚合检查信息;节点c获取到了两个检查信息4,因数量不足,节点c
未生成聚合检查信息;节点d获取到了两个检查信息4,因数量不足,节点d未生成聚合检查信息。
86.值得注意的是,本技术实施例中,可以在检查信息的聚合过程中加入超时机制,也即,若某个节点在一定时间内未生成聚合检查信息,则可以尝试重新向其他节点广播最新生成的检查信息。
87.第二种可能的方式:第i+1轮从节点在确定携带有第i轮提案的提案消息具备合法性后,将针对第i轮提案的投票和最新生成的检查信息携带于一个消息中发送给第i+1轮主节点。第i+1轮主节点在获取到属于同一提案的、数量大于或等于第一数量阈值、且执行结果相同的多个检查信息后,根据这多个检查信息生成这一提案的聚合检查信息,将该聚合检查信息、第i+1轮提案和第i轮提案的聚合投票信息均携带于提案消息中发送给第i+1轮从节点。第i+1轮从节点接收携带有该聚合检查信息、第i+1轮提案和第i轮提案的聚合投票信息的提案消息。
88.在这种方式中,是从节点向同一轮主节点单播检查信息,主节点负责对检查信息进行聚合,然后将聚合检查信息广播给同一轮从节点。也即,从节点可以在每轮投票时附带最新生成的检查信息,将其发送给同一轮主节点。同时,主节点在向同一轮从节点广播提案消息时,附带最新生成的聚合检查信息。如此,可以降低从节点处理压力。
89.可选地,第i+1轮主节点可以在接收到第i+1轮从节点发送的属于同一提案的、数量大于或等于第一数量阈值、且执行结果相同的多个检查信息的情况下,根据这多个检查信息生成这一提案的聚合检查信息。
90.或者,第i+1轮主节点可以在接收到第i+1轮从节点发送的属于同一提案且执行结果相同的检查信息后,在自身生成的属于这一提案的检查信息中的执行结果与第i+1轮从节点发送的属于这一提案的检查信息中的执行结果相同,且自身生成的属于这一提案的检查信息的数量与第i+1轮从节点发送的属于这一提案的检查信息的数量之和大于或等于第一数量阈值的情况下,根据自身生成的属于这一提案的检查信息和第i+1轮从节点发送的属于这一提案的检查信息生成这一提案的聚合检查信息。
91.例如,如图4所示,图4示出了聚合检查信息的生成过程。在第一轮共识过程中,在第一轮提案的投票过程中,节点a、节点b、节点c和节点d均在本地生成了检查信息,假设节点b、节点c和节点d是第二轮共识过程中的从节点,节点a是第二轮共识过程中的主节点,因而从节点b、从节点c和从节点d将附带检查信息的投票发送给主节点a,此时主节点a获取到了四个检查信息,根据这四个检查信息可以生成聚合检查信息。在第二轮共识过程中,在第二轮提案的广播过程中,主节点a将聚合检查信息附带在提案消息中广播给从节点c和从节点d,此时从节点c和从节点d就获取到了聚合检查信息。在第二轮提案的投票过程中,假设节点a、节点c和节点d是第三轮共识过程中的从节点,节点b是第三轮共识过程中的主节点,因而从节点a、从节点c和从节点d将附带检查信息的投票发送给主节点b,此时主节点b获取到了四个检查信息,根据这四个检查信息可以生成聚合检查信息。在第三轮共识过程中,在第三轮提案的广播过程中,主节点b将聚合检查信息附带在提案消息中广播给从节点a、从节点c和从节点d。
92.第三种可能的方式:第i+1轮从节点每生成一个检查信息,将最新生成的这个检查信息发送给第i+j轮主节点。第i+j轮主节点在获取到属于同一提案的、数量大于或等于第
一数量阈值、且执行结果相同的多个检查信息后,根据这多个检查信息生成这一提案的聚合检查信息,将该聚合检查信息、第i+j轮提案和第i+j-1轮提案的聚合投票信息均携带于提案消息中发送给第i+j轮从节点。第i+j轮从节点接收携带有该聚合检查信息、第i+j轮提案和第i+j-1轮提案的聚合投票信息的提案消息。
93.j为正整数,且j可以预先设置,如j可以为1、2、3等。在j为1时,从节点是将检查信息发送给同一轮主节点;在j大于或等于2时,从节点是将检查信息发送给下几轮主节点。
94.在这种方式中,从节点生成检查信息后,可以直接将该检查信息发送给同一轮主节点或下几轮主节点,而无需等待提案投票时机的到来,此时投票与检查信息的发送可以是并行的,如此,可以提高灵活性。并且,在从节点将检查信息发送给下几轮主节点的情况下,可以减轻同一轮主节点的处理压力。
95.可选地,第i+j轮主节点可以在接收到其他节点发送的属于同一提案的、数量大于或等于第一数量阈值、且执行结果相同的多个检查信息的情况下,根据这多个检查信息生成这一提案的聚合检查信息。
96.或者,第i+j轮主节点可以在接收到其他节点发送的属于同一提案且执行结果相同的检查信息后,在自身生成的属于这一提案的检查信息中的执行结果与其他节点发送的属于这一提案的检查信息中的执行结果相同,且自身生成的属于这一提案的检查信息的数量与其他节点发送的属于这一提案的检查信息的数量之和大于或等于第一数量阈值的情况下,根据自身生成的属于这一提案的检查信息和其他节点发送的属于这一提案的检查信息生成这一提案的聚合检查信息。
97.例如,如图5所示,图5示出了聚合检查信息的生成过程。在第一轮共识过程中,在第一轮提案的投票过程中,假设节点b、节点c和节点d是第二轮共识过程中的从节点,节点a是第二轮共识过程中的主节点,此时从节点b、从节点c和从节点d向主节点a发送的投票不附带检查信息。在第二轮共识过程中,在第二轮提案的广播过程中,主节点a将提案消息广播给从节点b、从节点c和从节点d,同时,从节点b、从节点c和从节点d均在本地生成了检查信息,假设从节点b是第三轮共识过程中的主节点,则从节点c和从节点d向从节点b发送检查信息,此时从节点b获取到了三个检查信息,根据这三个检查信息可以生成聚合检查信息。在第二轮提案的投票过程中,第三轮共识过程中的从节点a、从节点c和从节点d向主节点b发送的投票不附带检查信息。在第三轮共识过程中,在第三轮提案的广播过程中,主节点b将聚合检查信息附带在提案消息中广播给从节点a、从节点c和从节点d,此时从节点a、从节点c和从节点d就获取到了聚合检查信息。
98.稳定检查信息所属的提案是已验证执行结果一致性的提案。也即,将该聚合检查信息与本地检查信息集中的所有检查信息进行比较后,就可以确定出本地检查信息集中的哪些检查信息所属的提案已取得执行结果的一致性,此时就可以将该提案的检查信息确定为稳定检查信息。
99.其中,节点将本地检查信息集中的检查信息与该聚合检查信息进行比较的操作可以包括如下四种情况:第一种情况:若本地检查信息集中存在与该聚合检查信息属于同一提案的目标检查信息,且目标检查信息中的执行结果与该聚合检查信息中的执行结果相同,则将目标检查信息设置为最新的稳定检查信息。
100.若本地检查信息集中的目标检查信息与该聚合检查信息属于同一提案、且其中的执行结果相同,说明当前节点对目标检查信息所属的提案的执行结果与一定数量的其他节点对此提案的执行结果相同,则可以确定该提案的执行结果具有一致性,从而可以确定目标检查信息为稳定检查信息。
101.由于在稳定检查信息所属的提案的执行结果具有一致性的情况下,轮次低于该提案的轮次的其他提案的执行结果也具有一致性,因此,可选地,节点在设置新的稳定检查信息后,可以持久化最新的稳定检查信息,然后清理轮次低于稳定检查信息所属的提案的轮次的相关提案缓存,如可以清理共识缓存(包括但不限于区块树、聚合投票信息等),并且,节点还可以清理本地检查信息集中轮次低于稳定检查信息所属的提案的轮次的提案的检查信息。
102.第二种情况:若本地检查信息集中最新的稳定检查信息所属的提案的轮次高于该聚合检查信息所属的提案的轮次,则忽略该聚合检查信息的处理,结束操作。
103.若本地检查信息集中最新的稳定检查信息所属的提案的轮次高于该聚合检查信息所属的提案的轮次,说明节点已验证了该聚合检查信息所属的提案的执行结果的一致性,所以此时节点无需进行操作。
104.第三种情况:若本地检查信息集中不存在与该聚合检查信息属于同一提案的检查信息,则执行区块同步操作。
105.节点执行区块同步操作的过程与相关技术中某个节点进行区块同步的过程类似,本技术实施例对此不进行详细阐述。
106.若本地检查信息集中不存在与该聚合检查信息属于同一提案的检查信息,说明当前节点很有可能丢失了对该聚合检查信息所属的提案的执行,因而此时可以触发区块同步。节点执行区块同步操作时,从其他节点处获取提案的相关信息,以尝试同步到该聚合检查信息所属的提案的执行结果,继而尝试同步到该聚合检查信息所属的提案的检查信息。
107.第四种情况:若本地检查信息集中存在与该聚合检查信息属于同一提案的目标检查信息,但是目标检查信息中的执行结果与该聚合检查信息中的执行结果不同,则执行区块回滚操作。
108.节点执行区块回滚操作的过程与相关技术中某个节点进行区块回滚的过程类似,本技术实施例对此不进行详细阐述。
109.若本地检查信息集中的目标检查信息与该聚合检查信息属于同一提案、但其中的执行结果不同,说明当前节点对目标检查信息所属的提案的执行结果与一定数量的其他节点对此提案的执行结果不同,则可以确定当前节点对该提案的执行很有可能发生错误,因而可以触发区块回滚。节点执行区块回滚操作时,会重新执行该提案,以尝试同步至该聚合检查信息中的执行结果。
110.进一步地,本技术实施例中,节点不仅可以在每提交k个提案时生成检查信息,还可以在发生共识集群变更的情况下,在提交相应的包含有配置区块(config block)的提案时,直接生成检查信息作为配置检查信息。配置区块是特殊的共识区块,用于更改共识配置,触发共识集群的变更。配置检查信息可以包含共识配置变更的相关信息,如可以包含新变更的共识集群成员列表。
111.具体来讲,主节点可以在处理共识集群变更交易时构建配置区块,且生成包含有
该配置区块的第一提案,然后通过上述步骤201-步骤204进行提案共识流程。这种情况下,任意一个节点可以在提交的提案为包含有配置区块的第一提案的情况下,根据第一提案的执行结果生成第一提案的检查信息作为配置检查信息,将配置检查信息存储至本地检查信息集,然后通过步骤206实现对本地检查信息集中的配置检查信息中的执行结果的验证。这种情况下,节点在本地检查信息集中的配置检查信息达到稳定前,即在本地检查信息集中的配置检查信息未成为稳定检查信息的情况下,只允许提交内容为空的提案,而不提交实质的提案,即不提交除内容为空的提案之外的其他提案。待本地检查信息集中的配置检查信息稳定后,即在本地检查信息集中的配置检查信息成为稳定检查信息后,以配置区块为初始区块继续进行提案共识,即开始新世代(epoch)的共识。
112.值得说明的是,由于共识集群变更会影响提案的共识过程,因而在处理共识集群变更交易的过程中,对于在共识集群变更交易之后待处理的其他交易,即对于在第一提案之后生成的其他提案,在第一提案执行成功前(即在共识集群变更完成前),不允许提交这些提案,以此保证区块链的安全性。
113.进一步地,为了保证检查机制的活性,可以在共识过程中加入包含有验证区块(proof block)的提案,在提交包含有验证区块的提案时,直接生成检查信息作为强制检查信息。验证区块是特殊的共识区块,可不包含交易,且在一定条件下不可以重复创建验证区块,比如,在3-chain内不可重复创建验证区块,也即,在创建一个验证区块之后的连续三轮共识过程中不能再创建验证区块,也就是说,在生成包含有验证区块的一个提案之后连续生成的三轮提案不能再包含验证区块。
114.具体地,当主节点发现长时间未形成稳定检查信息时,即主节点在本地检查信息集在预设时长内未形成稳定检查信息时,构建验证区块,且生成包含有该验证区块的第二提案,然后通过上述步骤201-步骤204进行提案共识流程。这种情况下,任意一个节点可以在提交的提案为包含有验证区块的第二提案的情况下,根据第二提案的执行结果生成第二提案的检查信息作为强制检查信息,将强制检查信息存储至本地检查信息集,然后通过步骤206实现对本地检查信息集中的强制检查信息中的执行结果的验证。
115.值得说明的是,本技术实施例中,在长时间未形成稳定检查信息的情况下,通过验证区块来强制生成强制检查信息并存储至本地检查信息集中。由于验证区块一般不包含交易,所以执行难度较低,容易达到一致,所以便于本地检查信息集中的强制检查信息在短时间内达到稳定,从而可以保持检查机制的活性。
116.在本技术实施例中,可将共识过程与执行过程完全解耦。由于执行模块在理论上是需要保证一致的,因此执行结果不一致时不应该影响共识结果,因而本技术实施例中共识协议在提交提案后就可以标记该提案的最终一致性,而无需等待该提案的执行结果,本技术实施例中通过检查机制单独负责执行结果的验证与一致性保证。如此,一方面,不影响共识活性。由于不需要在共识过程中穿插执行流程,共识时间是可以预知的,只与共识消息体以及节点规模等有关,因此可以使用一个恰当的超时阈值来确保共识活性。另一方面,资源利用率高。由于提案先完成共识提交后才会执行,即此时共识协议已经确保了待执行的区块已经共识完毕,因而执行工作不会因为共识视图切换等原因而被抛弃,不会造成执行资源浪费。
117.图6为本技术实施例提供的一种计算机设备的结构示意图。如图6所示,计算机设
备6包括:处理器60、存储器61以及存储在存储器61中并可在处理器60上运行的计算机程序62,处理器60执行计算机程序62时实现上述实施例中的提案共识执行方法中的步骤。
118.计算机设备6可以是一个通用计算机设备或一个专用计算机设备。在具体实现中,计算机设备6可以是包括有多个服务器的服务器集群,如可以是包括有多个节点的区块链系统。本领域技术人员可以理解,图6仅仅是计算机设备6的举例,并不构成对计算机设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
119.处理器60可以是中央处理单元(central processing unit,cpu),处理器60还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
120.存储器61在一些实施例中可以是计算机设备6的内部存储单元,比如计算机设备6的硬盘或内存。存储器61在另一些实施例中也可以是计算机设备6的外部存储设备,比如计算机设备6上配备的插接式硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,存储器61还可以既包括计算机设备6的内部存储单元也包括外部存储设备。存储器61用于存储操作系统、应用程序、引导装载程序(boot loader)、数据以及其他程序等。存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
121.本技术实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
122.本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
123.本技术实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
124.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、rom(read-only memory,只读存储器)、ram(random access memory,随机存取存储器)、cd-rom(compact disc read-only memory,只读光盘)、磁带、软盘和光数据存储设备等。本技术提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
125.应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
126.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
127.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
128.在本技术所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
129.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
130.以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1