CN116980281A - 节点选取方法、装置、第一节点、存储介质及程序产品 - Google Patents

节点选取方法、装置、第一节点、存储介质及程序产品 Download PDF

Info

Publication number
CN116980281A
CN116980281A CN202211530053.5A CN202211530053A CN116980281A CN 116980281 A CN116980281 A CN 116980281A CN 202211530053 A CN202211530053 A CN 202211530053A CN 116980281 A CN116980281 A CN 116980281A
Authority
CN
China
Prior art keywords
node
target
group
nodes
consensus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211530053.5A
Other languages
English (en)
Inventor
邵珠光
李力
张建俊
邵兵
苏蹦蹦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211530053.5A priority Critical patent/CN116980281A/zh
Publication of CN116980281A publication Critical patent/CN116980281A/zh
Priority to US18/388,501 priority patent/US20240179018A1/en
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种节点选取方法、装置、第一节点、存储介质及程序产品;在本申请实施例中,按照区块链中各个节点的属性权重的大小顺序对各个节点进行分组,得到多个节点组;从多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从目标节点组中筛选出预设数量的候选共识节点;将目标节点组中非候选共识节点存储至初始节点组;将初始节点组作为目标节点组,并返回执行从目标节点组中筛选出候选共识节点的步骤;将候选共识节点广播至各个节点中的第二节点进行验证;若在预设时间内接收到第二节点对候选共识节点的验证通过信息,则将候选共识节点作为区块链的目标共识节点。本申请实施例可以提高区块链网络的稳定性。

Description

节点选取方法、装置、第一节点、存储介质及程序产品
技术领域
本申请涉及区块链技术领域,具体涉及一种节点选取方法、装置、第一节点、存储介质及程序产品。
背景技术
区块链,指由一个个区块组成的链条,每一个区块中保存了信息,它们按照各自产生的时间顺序连接成链条,这个链条被保存在区块链中所有的节点中。
为了去中心化,在区块链中采用了共识机制,共识机制包括工作量证明机制、权益证明机制以及委托权益证明机制等。在委托权益证明机制中,需要选取出共识节点去打包区块和验证区块。然而,目前,目前共识节点的选取方法使得区块链网络的稳定性较差。
发明内容
本申请实施例提供一种节点选取方法、装置、第一节点、存储介质及程序产品,可以解决区块链网络的稳定性较差的技术问题。
本申请实施例提供一种节点选取方法,包括:
获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组;
从上述多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从上述目标节点组中筛选出预设数量的候选共识节点;
将上述目标节点组中非候选共识节点存储至初始节点组,上述初始节点组为上述多个节点组中除了上述目标节点组之外的且与上述目标节点组匹配的组;
将上述初始节点组作为上述目标节点组,并返回执行从上述目标节点组中筛选出候选共识节点的步骤,直至完成上述多个节点组中所有节点组的筛选;
将上述候选共识节点广播至各个上述节点中的第二节点进行验证;
若在预设时间内接收到上述第二节点对上述候选共识节点的验证通过信息,则将上述候选共识节点作为上述区块链的目标共识节点。
相应地,本申请实施例提供一种节点选取装置,包括:
获取模块,用于获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组;
筛选模块,用于从上述多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从上述目标节点组中筛选出预设数量的候选共识节点;
存储模块,用于将上述目标节点组中非候选共识节点存储至初始节点组,上述初始节点组为上述多个节点组中除了上述目标节点组之外的且与上述目标节点组匹配的组;
返回模块,用于将上述初始节点组作为上述目标节点组,并返回执行从上述目标节点组中筛选出候选共识节点的步骤,直至完成上述多个节点组中所有节点组的筛选;
验证模块,用于将上述候选共识节点广播至各个上述节点中的第二节点进行验证;
作为模块,用于若在预设时间内接收到上述第二节点对上述候选共识节点的验证通过信息,则将上述候选共识节点作为上述区块链的目标共识节点。
可选地,获取模块具体用于执行:
按照属性权重的大小顺序对各个节点进行排序,得到排序队列;
对上述排序队列进行划分,得到多个节点组。
可选地,存储模块具体用于执行:
从候选节点组中筛选出与上述目标节点组相邻且属性权重小于上述目标节点组的候选节点组,得到与上述目标节点组匹配的初始节点组,上述候选节点组为多个节点组中除了目标节点组之外的节点组
将上述目标节点组中非候选共识节点存储至上述初始节点组。
可选地,上述节点组中包括第一预设数量的节点。相应地,筛选模块具体用于执行:
根据上述第一预设数量和上述预设数量,确定上述目标节点组对应的随机数;
根据上述随机数,从上述目标节点组中筛选出预设数量的候选共识节点。
可选地,筛选模块具体用于执行:
将上述预设数量,作为上述目标节点组对应的随机数的目标数量;
在上述第一预设数量内,生成上述目标节点组对应的上述目标数量的随机数。
可选地,筛选模块具体用于执行:
将上述随机数作为上述目标节点组中的节点序号;
将上述节点序号对应的节点,作为上述目标节点组对应的候选共识节点。
可选地,验证模块具体用于执行:
计算上述候选共识节点的默尔克根;
将上述默尔克根广播至各个上述节点中的第二节点进行验证。
可选地,获取模块具体用于执行:
获取区块链中每个节点对应的多个属性信息;
根据上述属性信息对应的信息权重,确定上述节点对应的属性权重。
可选地,获取模块具体用于执行:
获取上述属性信息对应的信息权重,并获取上述信息权重对应的调整系数;
根据上述调整系数对上述信息权重进行调整,得到调整后信息权重;
根据上述调整后信息权重,确定上述节点对应的属性权重。
可选地,节点选取装置还包括:
区块存储模块,用于执行:
获取待验证区块,并通过上述目标共识节点对上述待验证区块进行共识;
若对上述待验证区块的共识通过,则将上述待验证区块存储至上述区块链中。
可选地,区块存储模块具体用于执行:
若对上述待验证区块的共识通过,则将上述待验证区块广播至上述区块链中非共识节点进行验证;
若对上述待验证区块的验证通过的非共识节点的数量满足预设数量要求,则将上述待验证区块存储至上述区块链中。
此外,本申请实施例还提供一种第一节点,包括处理器和存储器,上述存储器存储有计算机程序,上述处理器用于运行上述存储器内的计算机程序实现本申请实施例提供的节点选取方法。
此外,本申请实施例还提供一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序适于处理器进行加载,以执行本申请实施例所提供的任一种节点选取方法。
此外,本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本申请实施例所提供的任一种节点选取方法。
在本申请实施例中,获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组,从多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从目标节点组中筛选出预设数量的候选共识节点,从目标节点组中筛选出的候选共识节点可能为目标节点组中属性权重较大的节点,也可能为目标节点组中属性权重较小的节点;将目标节点组中非候选共识节点存储至初始节点组,初始节点组为多个节点组中除了目标节点组之外的且与目标节点组匹配的组,将初始节点组作为目标节点组,并返回执行从目标节点组中筛选出候选共识节点的步骤,直至完成多个节点组中所有节点组的筛选;将候选共识节点广播至各个节点中的第二节点进行验证;若在预设时间内接收到第二节点对候选共识节点的验证通过信息,则将候选共识节点作为区块链的目标共识节点。
即在本申请实施例中,由于属性权重满足预设条件的目标节点组比如可以为属性权重较大的节点组且初始节点组为多个节点组中除了目标节点组之外的且与目标节点组匹配的组,因此,将目标节点组中非候选共识节点存储至初始节点组中再次参与筛选,可以提高多个节点中属性权重较大的节点的筛选次数,从而提高多个节点中属性权重较大的节点被筛选为候选共识节点的概率。
因为从目标节点组中筛选出的候选共识节点可能为目标节点组中属性权重较大的节点,也可能为目标节点组中属性权重较小的节点,从初始节点组中筛选出的候选共识节点也可能为初始节点组中属性权重较大的节点,也可能为初始节点组中属性权重较小的节点,所以,当筛选完成时得到的候选共识节点可能为多个节点中属性权重较大的节点,也可能为多个节点中属性权重较小的节点,实现不但可以为属性权重较大的节点提供更高的被选中概率,而且也可以为属性权重较小的节点提供被选中的机会,从而提高区块链网络的稳定性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请实施例提供的数据共享系统的示意图;
图1B是本申请实施例提供的区块链的示意图;
图1C是本申请实施例提供的区块产生过程的示意图;
图2是本申请实施例提供的节点选取方法的流程示意图;
图3是本申请实施例提供的共识节点产生的示意图;
图4是本申请实施例提供的属性信息的示意图;
图5是本申请实施例提供的节点组的示意图;
图6是本申请实施例提供的候选共识节点的筛选过程的示意图;
图7是本申请实施例提供的候选共识节点的默尔克根的计算过程的示意图;
图8是本申请实施例提供的另一种区块链的示意图;
图9是本申请实施例提供的另一种区块产生的示意图;
图10是本申请实施例提供的另一种区块链的示意图;
图11是本申请实施例提供的另一种区块产生的示意图;
图12是本申请实施例提供的另一种节点选取方法的流程示意图;
图13是本申请实施例提供的世代切换的示意图;
图14是本申请实施例提供的另一种节点选取方法的流程示意图;
图15是本申请实施例提供的节点选取装置的结构示意图;
图16是本申请实施例提供的第一节点的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种节点选取方法、装置、第一节点、存储介质及程序产品,其中,存储介质可以为计算机存储介质,程序产品可以为计算机程序产品。该节点选取装置可以集成在第一节点中,该第一节点可以是服务器,也可以是终端等设备。
其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、网络加速服务(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
另外,本申请实施例中的“多个”指两个或两个以上。本申请实施例中的“第一”和“第二”等用于区分描述,而不能理解为暗示相对重要性。
参见图1A所示的数据共享系统,数据共享系统100是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节点101,多个节点101可以是指数据共享系统中各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
节点名称 节点标识
节点1 117.114.151.174
节点2 117.116.189.145
节点N x.x.x.x
数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图1B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图1C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
以下分别进行详细说明。需要说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
在本实施例中,将从节点选取装置的角度进行描述,为了方便对本申请的节点选取方法进行说明,以下将以节点选取装置集成在第一节点中进行详细说明,即以第一节点作为执行主体进行详细说明。
请参阅图2,图2是本申请一实施例提供的节点选取方法的流程示意图。该节点选取方法可以包括:
S201、获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组。
第一节点可以为各个节点中任一节点,即本申请实施例可以由区块链中任意一个节点执行。
属性权重表示节点在区块链中的贡献度,贡献度可以根据节点的属性信息确定。
在一些实施例中,节点的属性信息可以包括节点的质押资产和节点得到的投票数中至少一种。然而,根据节点的质押资产和投票数确定节点的属性权重,导致节点对应的用户需要先投入资产才能参与共识,降低了节点对应的用户的参与度,并且,仅仅根据质押资产确定节点的属性权重,没有考虑其他因素,从整个区块链网络规模的分布度、覆盖度上会有所欠缺,不利于整个区块链网络的稳定。
比如,如图3所示,区块链的节点通过质押资产成为提案者,如果节点质押的资产达标,则节点可以成为候选人参与选举,如果选举成功,则成功验证人,即成为共识节点。
因此,在另一些实施例中,如图4所示,节点的属性信息可以包括产块总数、上个世代(世代指角色转换真正生效的周期)产块总数、投票作恶(对于同一个高度区块而言,每个节点只允许投一次赞成票,也就是不能对同一个高度的多个区块投赞成票,若节点如此操作,则表明该节点投票作恶)、作为主节点作恶(主节点为产生区块的共识节点)、身份认证以及地理位置中的至少一种,使得当根据节点的属性信息确定节点的属性权重时,无需根据节点的质押资产和投票数确定节点的属性权重,并且,当根据节点的多种属性信息确定节点的属性权重时,可以实现从多个角度考虑节点的属性权重,以便当根据属性权重选取共识节点时,可以降低作恶节点被选取作为共识节点的概率,从而降低在共识的过程中共识节点出现错误的概率,提高区块链网络的稳定性。
区块链网络的稳定性指在共识过程中,共识节点出现错误的概率在容错范围内,区块链网络仍可以正常运行。
当节点的属性信息包括多种时,获取区块链中各个节点对应的属性权重,包括:
获取区块链中每个节点对应的多个属性信息;
根据属性信息对应的信息权重,确定节点对应的属性权重。
在本实施例中,通过多个属性信息对应的信息权重,确定节点对应的属性权重,充分考虑多个因素,从而进一步提高整个区块链网络的稳定。
其中,第一节点可以直接将属性信息对应的信息权重相加,从而得到节点对应的属性权重。或者,第一节点也可以获取每个信息权重可以存在对应的调整系数,然后可以根据调整系数对信息权重进行调整,得到调整后信息权重,最后再将调整信息权重相加从而得到每个节点对应的属性权重。
可选地,在每次选取共识节点的过程中,每个属性信息对应的信息权重可以是相同的,或者,每个属性信息对应的信息权重在不同次选取共识节点的过程中也可以是不同的。当属性信息对应的信息权重在不同次选取共识节点的过程中不同时,可以根据该属性信息的节点在区块链网络当中的行为信息确定。
比如,属性信息可以为投票作恶,投票作恶对应的信息权重可以为负权重,节点n1在上个世代中多次投票作恶,则在当前的节点选取过程中,可以增大投票作恶对应的信息权重。
第一节点在得到各个节点的属性权重之后,可以根据属性权重的大小顺序,对各个节点进行分组,得到多个节点组。
其中,第一节点可以获取多个预设权重区间,然后将属于同一个预设权重区间的属性权重对应的节点存储至同一个节点组中,实现将属性权重较大的节点存储到同一个节点组中。
或者,第一节点也可以按照属性权重的大小顺序对各个节点进行排序,得到排序队列,然后对排序队列进行划分,得到多个节点组。其中,排序可以是降序排序或升序排序,划分可以是平均划分,或者按照预先设置的数值进行划分。
比如,各个节点包括节点n1、节点n2、...以及节点nz,第一节点为节点n1,节点n1的属性权重w1>节点n2的属性权重w2>...>节点nz的属性权重wz,则排序队列可以为如图5所示,对排序队列进行平均划分之后,可以得到的各个节点组可以如图5所示。
第一节点可以在检测到需要进行世代切换时,获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组,或者,第一节点也可以在接收到选取指令时,获取区块链中各个节点对应的属性权重,本实施例在此不做限定。
S202、从多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从目标节点组中筛选出预设数量的候选共识节点。
属性权重满足预设条件的节点组,可以指节点组中属性权重较大的节点组。比如,可以将节点组中属性权重第二大的节点组作为目标节点组,或者,也可以将节点组中属性权重最大的节点组作为目标节点组。
第一节点在得到各个节点组之后,可以先根据节点组中各个节点的属性权重确定节点组的属性权重,然后将节点组的属性权重进行比较,从而得到节点组中属性权重较大的节点组。
或者,第一节点也可以将一个节点组中节点的最大属性权重与另外一个节点组中节点的最小属性权重进行比较,如果最大属性权重小于最小属性权重,表明最小属性权重对应的节点组的属性权重较大。
又或者,如果是对排序队列(降序排序)进行划分之后得到节点组,则可以直接将排序在前的节点组作为目标节点组。比如,如图6所示,直接将节点组g1作为目标节点组。
第一节点在得到目标节点组之后,可以从目标节点组中筛选出预设数量的候选共识节点,候选共识节点可以为目标节点组中属性权重较大的节点,或者,候选共识节点也可以为目标节点组中属性权重较小的节点。
比如,当目标节点组为节点组g1时,候选共识节点为节点n1和节点n2,非候选共识节点为节点n3,由于节点n1的属性权重大于节点n2的属性权重,节点n2的属性权重大于节点n3的属性权重,因此,此时,选取出的候选共识节点为属性权重较大的节点。
其中,第一节点可以获取目标节点组的预设阈值,然后将大于预设阈值的属性权重对应的节点作为候选共识节点,或者,第一节点也可以将小于预设阈值的属性权重对应的节点作为候选共识节点,每个目标节点组对应的预设阈值不相同,每个目标节点组是将大于预设阈值的属性权重对应的节点作为候选共识节点还是将小于预设阈值的属性权重对应的节点作为候选共识节点也可以不相同,以便使得候选共识节点为目标节点组中属性权重较大的节点或者为目标节点组中属性权重较小的节点。
比如,节点组g1和节点组g2,节点组g1对应预设阈值t1,节点组g2对应预设阈值t2,当节点组g1作为目标节点组时,可以是将大于预设阈值t1的属性权重对应的节点作为候选共识节点,当节点组g2作为目标节点组时,可以是将小于预设阈值t2的属性权重对应的节点作为候选共识节点。
或者,第一节点也可以随机从目标节点组中筛选出预设数量的候选共识节点,从而使得候选共识节点为目标节点组中属性权重较大的节点或者为目标节点组中属性权重较小的节点。
随机从目标节点组中筛选出预设数量的候选共识节点的方法可以根据实际情况进行选择,比如,可以通过随机函数从目标节点组中筛选出预设数量的候选共识节点,随机函数可以为VRF随机函数或伪随机函数,本实施例在此不做限定。
当随机从目标节点组中筛选出预设数量的候选共识节点时,从目标节点组中筛选出预设数量的候选共识节点,包括:
根据第一预设数量和预设数量,确定目标节点组对应的随机数;
根据随机数,从目标节点组中随机筛选出预设数量的候选共识节点。
其中,第一节点可以通过随机函数根据第一预设数量和预设数量,确定每个预设数值的概率,然后将概率较大的预设数值作为目标节点组对应的随机数。
或者,第一节点也可以通过随机函数,将预设数量,作为目标节点组对应的随机数的目标数量,然后在第一预设数量内,生成目标节点组对应的目标数量的随机数。此时,预设数量表示随机数的数量,第一预设数量表示随机数所在的数值区间。
比如,第一预设数量为3,预设数量为2,则表示在[0,3]内生成两个随机数。
第一节点在得到随机数之后,再根据随机数,从目标节点组中筛选出预设数量的候选共识节点。
可选地,第一节点可以将随机数作为目标节点组中的节点序号,然后将节点序号对应的节点,作为目标节点组对应的候选共识节点。
比如,随机数为1和2,序号1对应的节点为节点n1,序号2对应的节点为节点n2,则将节点n1和节点n2作为目标节点组对应的候选共识节点。
在本实施例中,将随机数作为目标节点组中的节点序号,然后将节点序号对应的节点,作为目标节点组对应的候选共识节点,从而实现随机从目标节点组中筛选出候选共识节点,使得候选共识节点为目标节点组中属性权重较大的节点或者为目标节点组中属性权重较小的节点。
S203、将目标节点组中非候选共识节点存储至初始节点组,初始节点组为多个节点组中除了目标节点组之外的且与目标节点组匹配的组。
多个节点组中除了目标节点组之外的节点组可以成为候选节点组,比如,多个节点组可以如图6所示,目标节点组为g1,则候选节点组包括可以节点组g2、节点组g3、...、以及节点组gm等。
初始节点组为多个节点组中除了目标节点组之外的且与目标节点组匹配的组,可以理解为候选节点组中与目标节点组同样满足预设条件的节点组,比如,目标节点组为节点组中属性权重最大的节点组,则初始节点组可以理解为候选节点组中属性权重最大的节点组。
在本实施例中,在目标节点组中的节点被确定为目标节点组对应的非候选共识节点时,可以将目标节点组中的非候选共识节点存储至初始节点组中,然后继续从初始节点组中筛选出候选共识节点,使得属性权重较大的节点参与多次筛选,提高属性权重较大的节点被选为候选共识节点的概率。
比如,各个节点组可以如图6所示,目标节点组为节点组g1,初始节点组为节点组g2,目标节点组对应的候选共识节点为节点n1和节点n2,目标节点组中的非候选共识节点为节点n3,则将节点n3存储至节点组g2,此时,节点组g2可以如图6所示。
当通过对排序队列进行划分,得到节点组时,将目标节点组中非候选共识节点存储至初始节点组,包括:
从候选节点组中筛选出与目标节点组相邻且属性权重小于目标节点组的候选节点组,得到与目标节点组匹配的初始节点组,候选节点组为多个节点组中除了目标节点组之外的节点组
将目标节点组中非候选共识节点存储至初始节点组。
比如,如图6所示,第一节点在得到各个节点组之后,直接将排序在第一位的节点组g1作为目标节点组,在从节点组g1筛选出节点n1和节点n2作为候选共识节点之后,由于节点组g2为与属性权重小于节点组g2的且与节点组g2相邻的节点组,因此,将节点组g2作为初始节点组,并将节点组g1的非候选共识节点n3存储至节点组g2中。
或者,在得到目标节点组的候选共识节点和非候选共识节点之后,目标节点组不存在,则可以将排序在前的节点组作为初始节点组。比如,如图6所示,在得到节点组g1的候选共识节点和非候选共识节点之后,节点组g1不存在,此时,节点组g2排序在第一位,第一节点则仍然可以将第一位的节点组g2作为初始节点组。
S204、将初始节点组作为目标节点组,并返回执行从目标节点组中筛选出候选共识节点的步骤,直至完成多个节点组中所有节点组的筛选。
第一节点在得到初始节点组之后,再将初始节点组作为目标节点组,并返回执行从目标节点组中筛选出候选共识节点的步骤,直至完成多个节点组中所有节点组的筛选。
比如,如图6所示,第一节点在得到各个节点组之后,将节点组中属性权重最大的节点组g1作为目标节点组,然后从目标节点组中筛选出节点n1和节点n2作为候选共识节点,节点n3作为非候选共识节点。
第一节点将候选节点组中属性权重最大的节点组g2作为初始节点组,并将节点n3存储至节点组g2中,然后,第一节点从节点组g2中筛选出节点n4和n5作为候选共识节点,节点n3和节点n6作为非候选共识节点。
第一节点将候选节点组中属性权重最大的节点组g3作为初始节点组,并将节点n3和节点n6存储至节点组g3中,然后继续从节点组g3中筛选出候选共识节点和非候选共识节点,重复循环该过程,直至从节点组gm中筛选出候选共识节点,停止候选共识节点的选取。
应理解,从目标节点组中筛选出候选共识节点的执行的次数可以根据节点组的个数确定,比如,当节点组的个数为m时,表明第一节点重复执行m次从目标节点组中筛选出候选共识节点的步骤。
当将初始节点组作为目标节点组,并返回执行从目标节点组中筛选出候选共识节点的步骤时,从初始节点组筛选出的候选共识节点可能为初始节点组中属性权重较大的节点,也可能为初始节点组中属性权重较小的节点。
比如,如图6所示,第一节点在得到各个节点组之后,将节点组中属性权重最大的节点组g1作为目标节点组,然后从目标节点组中筛选出节点n1和节点n2作为候选共识节点,节点n3作为非候选共识节点。
由于节点n1的属性权重大于节点n2的属性权重,节点n2的属性权重大于节点n3的属性权重,因此,此时,将目标节点组中属性权重较大的节点作为候选共识节点。
第一节点将候选节点组中属性权重最大的节点组g2作为初始节点组,并将节点n3存储至节点组g2中,然后,第一节点从节点组g2中筛选出节点n4和n5作为候选共识节点,节点n3和节点n6作为非候选共识节点。
由于节点n3的属性权重大于节点n4的属性权重,节点n4的属性权重大于节点n5的属性权重,节点n5的属性权重大于节点n6的属性权重,因此,此时,将初始节点组中属性权重较小的节点作为候选共识节点。
需要说明的是,当将非候选共识节点存储至初始节点组之后,初始节点组中包括的节点的数量发生了变化,则在返回从目标节点组中筛选出候选共识节点的步骤时,第一预设数量可以指初始节点组中包括的节点的数量。
一个节点在不同的节点组中可以是候选共识节点,也可以是非候选共识节点。比如,在节点组g1组为目标节点组时,将节点n1和节点n2作为节点组g1对应的候选共识节点,节点n3为节点组g1对应的非候选共识节点,在节点组g2为目标节点组时,将节点n3和节点n5作为节点组g2对应的候选共识节点,也即是,在节点组g1中,节点n3是非候选共识节点,在节点组g2中,节点n3是候选共识节点。
S205、将候选共识节点广播至各个节点中的第二节点进行验证。
当一个节点接收到广播的候选共识节点时,该节点可以称为第二节点。应理解,一个节点可以同时为第一节点和第二节点。比如,节点n1从各个节点组中筛选出候选共识节点,节点n2也从各个节点组中筛选出候选共识节点,节点n1和节点n2均称为第一节点,节点n1在从各个节点组中筛选出候选共识节点之后,如果接收到节点n2广播的候选共识节点,则节点n1称为第二节点,节点n2在从各个节点组中筛选出候选共识节点之后,如果接收到节点n1广播的候选共识节点,则节点n2称为第二节点。
第一节点在得到一个目标节点组的候选共识节点之后,可以先将该目标节点组的候选共识节点进行广播,即第一节点在从目标节点组中筛选出预设数量的候选共识节点之后,先执行步骤S205,然后再执行步骤S203,或者,第一节点也可以在得到所有节点组的候选共识节点之后,再将所有的候选共识节点进行广播,即第一节点在从目标节点组中筛选出预设数量的候选共识节点后,先步骤S203和步骤204,再执行步骤S205,本实施例在此不做限定。
将候选共识节点广播至各个节点中的第二节点进行验证,可以理解为将候选共识节点对应的标识广播至各个节点中的第二节点进行验证,或者,也可以先对候选共识节点的标识进行映射,得到映射结果,然后再将映射结果广播至各个节点中的第二节点进行验证。
当对候选共识节点的标识进行映射,得到映射结果,然后再将映射结果广播至各个节点中的第二节点进行验证时,可以将多个候选共识节点的标识进行拼接,得到拼接标识,然后再对拼接标识进行哈希映射,从而得到映射结果。或者,也可以是对每个候选共识节点的标识分别进行哈希映射,得到每个候选共识节点的子映射结果,然后再根据每个候选共识节点的子映射结果确定映射结果。
当对每个候选共识节点的标识分别进行哈希映射,得到每个候选共识节点的子映射结果,然后再根据每个候选共识节点的子映射结果确定映射结果时,将候选共识节点广播至各个节点中的第二节点进行验证,包括:
计算候选共识节点的默尔克根;
将默尔克根广播至各个节点中的第二节点进行验证。
默尔克根指对各个对象进行分别哈希,然后将各个对象的哈希结果进行相加后得到的哈希值或将各个对象的哈希结果再次进行哈希相加后得到的哈希值。对象可以为交易,或者,对象也可以为节点。
其中,计算候选共识节点的默尔克根的过程可以为:第一节点先分别对每个候选共识节点进行哈希,得到每个候选共识节点对应的哈希值,然后对相邻的候选共识节点的哈希值再次进行哈希,得到候选哈希值,如果候选哈希值的不是一个,则再将相邻的候选哈希值进行哈希,直至得到的候选哈希值为一个时,将候选哈希值作为候选共识节点的默尔克根。
比如,如图7所示,候选共识节点包括节点n1、节点n2、节点n3、节点n4、节点n5、节点n6、节点n7以及节点n8,则对节点n1-n8分别进行哈希,得到节点n1-n8对应的哈希值,然后将节点n1的哈希值和节点n2的哈希值再次进行哈希,得到候选哈希值12,将节点n3的哈希值和节点n4的哈希值再次进行哈希,得到候选哈希值34,将节点n5的哈希值和节点n6的哈希值再次进行哈希,得到候选哈希值56,将节点n7的哈希值和节点n8的哈希值再次进行哈希,得到候选哈希值78。
由于存在四个候选哈希值,因此,继续对候选哈希值12和候选哈希值34再次进行哈希,得到候选哈希值1234,对候选哈希值56和候选哈希值78再次进行哈希,得到候选哈希值5678。此时,存在两个候选哈希值,则继续对候选哈希值1234和候选哈希值5678进行进行哈希,得到候选哈希值12345678,此时,只剩下一个候选哈希值12345678,则将候选哈希值12345678作为候选共识节点对应的默尔克根。
在本实施例中,通过将候选共识节点的默尔克根进行广播,从而简化节点之间的消息通信复杂度。并且,在广播默尔克根时,只广播候选共识节点的默尔克根,无需广播所有节点的默尔克根,从而进一步简化节点之间的消息通信复杂度。
S206、若在预设时间内接收到第二节点对候选共识节点的验证通过信息,则将候选共识节点作为区块链的目标共识节点。
区块链在不同的世代中的共识节点不相同,将候选共识节点作为区块链的目标共识节点,可以理解为将候选共识节点作为区块链的下个世代的目标共识节点。
第二节点在接收到候选共识节点之后,可以候选共识节点与第二节点从节点组筛选出的候选共识节点进行比对,如果比对结果为相同,则对候选共识节点的验证通过,如果比对结果不相同,则对候选共识节点的验证不通过。
如果第二节点接收到的是默尔克根,则将接收到的默尔克根和第二节点计算到的默尔克根进行比对,如果比对结果为相同,则对候选共识节点的验证通过,如果比对结果不相同,则对候选共识节点的验证不通过。
当第一节点先将一个目标节点组的候选共识节点进行广播时,第一节点可以在预设时间内接收到第二节点对候选共识节点的验证通过信息,将候选共识节点作为区块链的目标共识节点之后,再将目标节点组的非候选共识节点存储至初始节点组,并将初始节点组作为目标节点组,返回执行从目标节点组中筛选出候选共识节点的步骤。
或者,第一节点也可以将一个目标节点组的候选共识节点进行广播的同时,将目标节点组的非候选共识节点存储至初始节点组,并将初始节点组作为目标节点组,返回执行从目标节点组中筛选出候选共识节点的步骤,本实施例在此不做限定。
可选地,第一节点也可以在预设时间内接收到对候选共识节点的验证通过信息的个数满足预设个数时,才将候选共识节点作为区块链的目标共识节点。
比如,预设个数为3个,节点n1将候选共识节点广播至节点n2、节点n3、节点n4以及节点n5中进行验证,并在预设时间内接收到节点n2、节点n3以及节点n4对候选共识节点的验证通过信息,由于在预设时间内接收到3个节点对候选共识节点的验证通过信息,因此,将候选共识节点作为区块链的目标共识节点。
需要说明的是,若在预设时间内未接收到第二节点对候选共识节点的验证通过信息,则不将候选共识节点作为区块链的目标共识节点,此时,可能是因为第一节点内存中所包含的节点的属性信息与其他节点内存中所包含的节点的属性信息不一致导致,则第一节点可以通过状态同步的方法,从其他节点中获取各个节点的属性信息,然后再次进行候选共识节点的选取,即再次执行步骤S201-S206。
在得到区块链的各个目标共识节点之后,可以通过各个目标共识节点将交易打包成待验证区块和对待验证区块进行验证。如果目标共识节点对待验证区块的验证通过,则将待验证区块在区块链中广播,使得区块链中非共识节点和目标共识节点将待验证区块存储至本身存储的区块链上。
比如,区块链可以如图8所示,节点n1、节点n2、节点n3以及节点n4为区块链中目标共识节点,节点n5、节点n6、节点n7、节点n8、节点n9、节点n10、节点n11、以及节点n12为区块链中非共识节点,实线表示该节点可以参与共识,虚线表示该节点只是同步待验证区块,被动地接收区块,不能参与共识。
在一些实施例中,通过各个目标共识节点对交易打包成待验证区块和对待验证区块进行验证的过程为:
从目标共识节点中筛选出一个目标共识节点作为主节点将交易打包成待验证区块,并将待验证区块发送至目标共识节点中其他共识节点,目标共识节点中其他共识节点为目标共识节点中除了主节点之外的目标共识结果,然后目标共识节点中其他共识节点对待验证区块进行验证,如果其他共识节点对待验证区块的验证通过,主节点则将待验证区块在区块链中广播,使得区块链中非共识节点可以将待验证区块存储至本身存储的区块链上,区块链中目标共识节点可以将待验证区块存储至本身存储的区块链上。
因此,当第一节点为主节点时,在将候选共识节点作为区块链的目标共识节点之后,还包括:
获取待验证区块,并通过目标共识节点对待验证区块进行共识;
若对待验证区块的共识通过,则将待验证区块存储至区块链中。
其中,第一节点可以获取当前交易数据,然后将当前交易数据打包成待验证区块。如果对待验证区块的共识通过,则将待验证区块存储至第一节点存储的区块链中,并同时将待验证区块在区块链中进行广播,使得区块链中其他节点可以将待验证区块存储至本身存储的的区块链中。
在本实施例中,通过区块链中各个目标共识节点生成区块和验证区块,减少生成区块和验证区块的节点的数量,从而降低通信复杂度,提高共识效率。
然而,通过各个目标共识节点生成区块和验证区块,使得区块链中多数节点没有参与到共识中,也就是没有对区块有投票权,投票的权利掌握在少数节点上,导致存在中心化的问题。
为了解决中心化的问题,在另一些实施例中,若对待验证区块的共识通过,则将待验证区块存储至区块链中,包括:
若对待验证区块的共识通过,则将待验证区块广播至区块链中非共识节点进行验证;
若对待验证区块的验证通过的非共识节点的数量满足预设数量要求,则将待验证区块存储至区块链中。
比如,如图9所示,主节点产生待验证区块之后,将待验证区块发送至其他共识节点进行验证,如果其他共识节点对待验证区块的验证通过,则将待验证区块在区块链中进行广播,如果对待验证区块的验证通过的非共识节点的数量满足预设数量要求,则将待验证区块存储至区块链中。
此时,待验证区块在目标共识节点间达成一致后,可以仅仅表示待验证区块被提案,称之为propose阶段,propose阶段后,目标共识节点会在区块链中广播该待验证区块,使得非共识节点接收到该待验证区块,每个非共识节点收到该待验证区块后都会对其进行投票,一个待验证区块的确认以收到大多数非共识节点的赞成票为准,当收到大多数节点的赞成票后,该待验证区块被认可,称之为commit阶段。
也即是,此时,区块链可以如图10所示,节点n1、节点n2、节点n3以及节点n4为区块链中目标共识节点,节点n5、节点n6、节点n7、节点n8、节点n9、节点n10、节点n11、以及节点n12为区块链中非共识节点,实线表示该节点可以参与共识,也即是,表明非共识节点也可以参与共识。
在本实施例中,当目标共识节点对待验证区块的共识通过时,并不立即将待验证区块存储至区块链中,而是通过区块链中非共识节点对待验证区块进行验证,当对待验证区块的验证通过的非共识节点的数量满足预设数量要求时,才将待验证区块存储至区块链中,使得区块链中非共识节点也可以参与共识过程,从而减少中心化的程度。
在另一些实施例中,若对待验证区块的验证通过的非共识节点的数量满足预设数量要求,则将待验证区块存储至区块链中,包括:
若对待验证区块的验证通过的非共识节点的数量满足预设数量要求,则获取待验证区块的上一区块;
如果对上一区块的验证通过的非共识节点的数量满足预设数量要求,则将待验证区块存储至区块链中。
在整个区块链中会区块会被投赞成票与不赞成票,只要不赞成票达到要求就说明该区块无法被达成一致,对于一个共识节点而言,它要检测自己产生区块的上一区块是否收到足够的赞成票,如果上一区块被达成一致,才将待验证区块存储至区块链中。
如果上一区块无法被达成一致,需要该共识节点接替产生上一区块的共识节点的职责,产生上一区块,此时,在若对待验证区块的验证通过的非共识节点的数量满足预设数量要求,则获取待验证区块的上一区块之后,还包括:
若对上一区块的验证通过的非共识节点的数量不满足预设数量要求,则生成上一区块,并将上一区块作为待验证区块;
返回执行获取待验证区块,并通过目标共识节点对待验证区块进行共识的步骤。
此时,当前区块由该共识节点的下一个共识节点进行打包。
比如,如图11所示,区块2为当前区块,节点n2在验证区块2的过程中,发现对区块1的验证通过的非共识节点的数量不满足预设数量要求,则节点n2生成区块1’,并通过节点n3生成区块2’。
由以上可知,在本申请实施例中,获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组,从多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从目标节点组中筛选出预设数量的候选共识节点,将目标节点组中非候选共识节点存储至初始节点组,初始节点组为多个节点组中除了目标节点组之外的且与目标节点组匹配的组,将初始节点组作为目标节点组,并返回执行从目标节点组中筛选出候选共识节点的步骤,直至完成多个节点组中所有节点组的筛选;将候选共识节点广播至各个节点中的第二节点进行验证;若在预设时间内接收到第二节点对候选共识节点的验证通过信息,则将候选共识节点作为区块链的目标共识节点。
即在本申请实施例中,按照属性权重的大小顺序对节点进行分组,将属性权重满足预设条件的节点组作为目标节点组,从目标节点组中筛选出候选共识节点,从目标节点组中筛选出的候选共识节点可能为目标节点组中属性权重较大的节点,也可能为目标节点组中属性权重较小的节点。
将目标节点组中非候选共识节点存储至初始节点组中,从初始节点组继续中筛选出候选共识节点,从初始节点组中筛选出的候选共识节点可能为初始节点组中属性权重较大的节点,也可能为初始节点组中属性权重较小的节点。
由于属性权重满足预设条件的目标节点组比如可以为属性权重较大的节点组且初始节点组为多个节点组中除了目标节点组之外的且与目标节点组匹配的组,因此,将目标节点组中非候选共识节点存储至初始节点组中再次参与筛选,可以提高多个节点中属性权重较大的节点的筛选次数,从而提高多个节点中属性权重较大的节点被筛选为候选共识节点的概率。
因为从目标节点组中筛选出的候选共识节点可能为目标节点组中属性权重较大的节点,也可能为目标节点组中属性权重较小的节点,从初始节点组中筛选出的候选共识节点也可能为初始节点组中属性权重较大的节点,也可能为初始节点组中属性权重较小的节点,所以,当筛选完成时得到的候选共识节点可能为多个节点中属性权重较大的节点,也可能为多个节点中属性权重较小的节点,实现不但可以为属性权重较大的节点提供更高的被选中概率,而且也可以为属性权重较小的节点提供被选中的机会,降低作恶节点被选取为共识节点的概率,从而降低在共识的过程中共识节点出现错误的概率,进而提高区块链网络的稳定性。
根据上述实施例所描述的方法,以下将举例作进一步详细说明。
本申请实施例中的节点选取方法可以应用于区块链中的共识节点的选取过程,下面将本申请实施例中节点选取方法应用于区块链的DPoS共识机制中共识节点选取过程。
请参阅图12,图12为本申请实施例提供的节点选取方法的流程示意图。该节点选取方法流程可以包括:
S1201、第一节点检测到处于世代切换阶段时,获取区块链中每个节点对应的多个属性信息,并根据属性信息对应的信息权重,确定节点对应的属性权重。
在DPoS共识机制中,通常是在一个世代的最后一个区块中确认下个世代的共识节点的信息,并将下个世代的共识节点的信息存储至区块链中。然而,为了保证较多的共识节点,共识节点的数量会较大,使得下个世代的共识节点的信息较多,导致存储下个世代的共识节点的信息的区块会较大。
另外,有时候为了利益,共识节点可能故意作恶,选择自己作为下一个世代的候选人节点,该过程没有其他节点的参与,导致安全性比较难保证。
因此,在本实施例中,通过添加世代切换阶段实现共识节点的选取,即可以避免共识节点的作恶,提高安全性,而且不将共识节点的信息存储至区块链中,仅仅记录在节点的本地,从而减少区块链的大小。
比如,如图13所示,在世代k接收时,进入世代切换阶段,在世代切换阶段,选取共识节点,不产生区块,当世代切换阶段结束时,在世代(k+1)开始产生区块。
也即是,当第一节点获取到交易数据时,可以检测是否处于世代切换阶段,如果处于世代切换阶段,则获取区块链中每个节点对应的多个属性信息,如果不是处于世代切换阶段,则判断第一节点是否为主节点。如图14所示。
S1202、第一节点按照属性权重的大小顺序对各个节点进行排序,得到排序队列,并对排序队列进行平均划分,得到多个节点组。
S1203、第一节点从多个节点组中筛选出属性权重最大的节点组,得到目标节点组,并获取预设数量。
S1204、第一节点将预设数量,作为目标节点组对应的随机数的目标数量,并通过随机函数在第一预设数量内,生成目标节点组对应的目标数量的随机数,第一预设数量为目标节点组包括的节点的数量。
S1205、第一节点将随机数作为目标节点组中的节点序号,并将节点序号对应的节点,作为目标节点组对应的候选共识节点。
S1206、第一节点从候选节点组中筛选出与目标节点组相邻且属性权重小于目标节点组的候选节点组,得到与目标节点组匹配的初始节点组,候选节点组为多个节点组中除了目标节点组之外的节点组。
S1207、第一节点将目标节点组对应的非候选共识节点存储至初始节点组,并将初始节点组作为目标节点组,以及返回执行步骤S1204。
S1208、第一节点计算候选共识节点的默尔克根,并将默尔克根广播至各个节点中的第二节点进行验证。
S1209、第二节点将接收到的默尔克根与本身计算到的默尔克根进行比对,得到比对结果。
S12010、若比对结果为相同,则返回验证通过消息至第一节点,若比对结果为不相同,则返回验证不通过消息至第一节点。
S12011、若在预设时间内,接收到对候选共识节点的验证通过信息的个数满足预设个数,第一节点则将候选共识节点作为区块链的目标共识节点。
S12012、第一节点计算各个目标共识节点的出块顺序并保存。
S12013、若在预设时间内,接收到对候选共识节点的验证通过信息的个数不要满足预设个数,则更新属性信息,并返回执行根据属性信息对应的信息权重,确定节点对应的属性权重的步骤。
应理解,第一节点在第零轮从节点组中筛选出候选共识节点时,可以根据上个世代的最后一个区块中的哈希值(BlockHash)确定随机函数的种子,然后根据随机函数得到目标节点组的随机数,如果第零轮得到候选共识节点的验证不通过,则在返回执行的过程中,可以根据轮数(轮数比如可以为第零轮、第一轮、第二轮等,当随机函数为VRF函数时,轮数可以指round)和上个世代的最后一个区块中哈希值确定随机函数的种子。
根据上个世代的最后一个区块中的哈希值(BlockHash)确定随机函数的种子,由于上个世代的最后一个区块中的哈希值在上个世代的最后一个区块未产生之前是无法预测的,因此,可以保证随机数的随机性。
S12014、目标共识节点获取当前交易数据,并根据目标共识节点的出块顺序,确定本身是否为主节点。
S12015、若目标共识节点为主节点,主节点则生成当前交易数据对应的待验证区块。
S12016、主节点将待验证区块发送至其他共识节点,其他共识节点为目标共识节点中除了主节点之外的共识节点。
如图14所示,当目标共识节点获取到交易数据,并确定自己是当前区块的主节点时,目标共识节点生成交易数据对应的待验证区块。
S12017、若其他共识节点对待验证区块的共识通过,主节点则将待验证区块广播至区块链中非共识节点进行验证。
S12018、若对待验证区块的验证通过的非共识节点的数量满足预设数量要求,主节点则获取待验证区块的上一区块。
S12019、若对上一区块的验证通过的非共识节点的数量满足预设数量要求,主节点则将待验证区块存储至区块链中。
S12020、若对上一区块的验证通过的非共识节点的数量不满足预设数量要求,主节点则根据上一区块的交易数据重新生成待验证区块,并返回执行步骤S12016。
本实施例中具体实现过程以及对应的有益效果,具体可以参照上述节点选取方法实施例,本实例在此不再赘述。
为便于更好的实施本申请实施例提供的节点选取方法,本申请实施例还提供一种基于上述节点选取方法的装置。其中名词的含义与上述节点选取方法中相同,具体实现细节可以参考方法实施例中的说明。
例如,如图15所示,该节点选取装置可以包括:
获取模块1501,用于获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组。
筛选模块1502,用于从多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从目标节点组中筛选出预设数量的候选共识节点。
存储模块1503,用于将目标节点组中非候选共识节点存储至初始节点组,初始节点组为多个节点组中除了目标节点组之外的且与目标节点组匹配的组。
返回模块1504,用于将初始节点组作为目标节点组,并返回执行从目标节点组中筛选出候选共识节点的步骤,直至完成多个节点组中所有节点组的筛选。
验证模块1505,用于将候选共识节点广播至各个节点中的第二节点进行验证。
作为模块1506,用于若在预设时间内接收到第二节点对候选共识节点的验证通过信息,则将候选共识节点作为区块链的目标共识节点。
可选地,获取模块1501具体用于执行:
按照属性权重的大小顺序对各个节点进行排序,得到排序队列;
对排序队列进行划分,得到多个节点组。
可选地,存储模块1503具体用于执行:
从候选节点组中筛选出与目标节点组相邻且属性权重小于目标节点组的候选节点组,得到与目标节点组匹配的初始节点组,候选节点组为多个节点组中除了目标节点组之外的节点组
将目标节点组中非候选共识节点存储至初始节点组。
可选地,节点组中包括第一预设数量的节点。相应地,筛选模块1502具体用于执行:
根据第一预设数量和预设数量,确定目标节点组对应的随机数;
根据随机数,从目标节点组中筛选出预设数量的候选共识节点。
可选地,筛选模块1502具体用于执行:
将预设数量,作为目标节点组对应的随机数的目标数量;
在第一预设数量内,生成目标节点组对应的目标数量的随机数。
可选地,筛选模块1502具体用于执行:
将随机数作为目标节点组中的节点序号;
将节点序号对应的节点,作为目标节点组对应的候选共识节点。
可选地,验证模块1505具体用于执行:
计算候选共识节点的默尔克根;
将默尔克根广播至各个节点中的第二节点进行验证。
可选地,获取模块1501具体用于执行:
获取区块链中每个节点对应的多个属性信息;
根据属性信息对应的信息权重,确定节点对应的属性权重。
可选地,获取模块1501具体用于执行:
获取属性信息对应的信息权重,并获取信息权重对应的调整系数;
根据调整系数对信息权重进行调整,得到调整后信息权重;
根据调整后信息权重,确定节点对应的属性权重。
可选地,节点选取装置还包括:
区块存储模块,用于执行:
获取待验证区块,并通过目标共识节点对待验证区块进行共识;
若对待验证区块的共识通过,则将待验证区块存储至区块链中。
可选地,区块存储模块具体用于执行:
若对待验证区块的共识通过,则将待验证区块广播至区块链中非共识节点进行验证;
若对待验证区块的验证通过的非共识节点的数量满足预设数量要求,则将待验证区块存储至区块链中。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施方式以及对应的有益效果可参见前面的方法实施例,在此不再赘述。
本申请实施例还提供一种第一节点,该第一节点可以是服务器或终端等,如图16所示,其示出了本申请实施例所涉及的第一节点的结构示意图,具体来讲:
该第一节点可以包括一个或者一个以上处理核心的处理器1601、一个或一个以上计算机可读存储介质的存储器1602、电源1603和输入单元1604等部件。本领域技术人员可以理解,图16中示出的第一节点结构并不构成对第一节点的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器1601是该第一节点的控制中心,利用各种接口和线路连接整个第一节点的各个部分,通过运行或执行存储在存储器1602内的计算机程序和/或模块,以及调用存储在存储器1602内的数据,执行第一节点的各种功能和处理数据。可选的,处理器1601可包括一个或多个处理核心;优选的,处理器1601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1601中。
存储器1602可用于存储计算机程序以及模块,处理器1601通过运行存储在存储器1602的计算机程序以及模块,从而执行各种功能应用以及数据处理。存储器1602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的计算机程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据第一节点的使用所创建的数据等。此外,存储器1602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1602还可以包括存储器控制器,以提供处理器1601对存储器1602的访问。
第一节点还包括给各个部件供电的电源1603,优选的,电源1603可以通过电源管理系统与处理器1601逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1603还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该第一节点还可包括输入单元1604,该输入单元1604可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,第一节点还可以包括显示单元等,在此不再赘述。具体在本实施例中,第一节点中的处理器1601会按照如下的指令,将一个或一个以上的计算机程序的进程对应的可执行文件加载到存储器1602中,并由处理器1601来运行存储在存储器1602中的计算机程序,从而实现各种功能,比如:
获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组;
从多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从目标节点组中筛选出预设数量的候选共识节点;
将目标节点组中非候选共识节点存储至初始节点组,初始节点组为多个节点组中除了目标节点组之外的且与目标节点组匹配的组;
将初始节点组作为目标节点组,并返回执行从目标节点组中筛选出候选共识节点的步骤,直至完成多个节点组中所有节点组的筛选;
将候选共识节点广播至各个节点中的第二节点进行验证;
若在预设时间内接收到第二节点对候选共识节点的验证通过信息,则将候选共识节点作为区块链的目标共识节点。
以上各个操作的具体实施方式以及对应的有益效果可参见上文对节点选取方法的详细描述,在此不作赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过计算机程序来完成,或通过计算机程序控制相关的硬件来完成,该计算机程序可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种节点选取方法中的步骤。例如,该计算机程序可以执行如下步骤:
获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组;
从多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从目标节点组中筛选出预设数量的候选共识节点;
将目标节点组中非候选共识节点存储至初始节点组,初始节点组为多个节点组中除了目标节点组之外的且与目标节点组匹配的组;
将初始节点组作为目标节点组,并返回执行从目标节点组中筛选出候选共识节点的步骤,直至完成多个节点组中所有节点组的筛选;
将候选共识节点广播至各个节点中的第二节点进行验证;
若在预设时间内接收到第二节点对候选共识节点的验证通过信息,则将候选共识节点作为区块链的目标共识节点。
以上各个操作的具体实施方式以及对应的有益效果可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种节点选取方法中的步骤,因此,可以实现本申请实施例所提供的任一种节点选取方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
其中,根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述节点选取方法。
以上对本申请实施例所提供的一种节点选取方法、装置、第一节点、存储介质及程序产品进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (15)

1.一种节点选取方法,其特征在于,应用于区块链中第一节点,包括:
获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组;
从所述多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从所述目标节点组中筛选出预设数量的候选共识节点;
将所述目标节点组中非候选共识节点存储至初始节点组,所述初始节点组为所述多个节点组中除了所述目标节点组之外的且与所述目标节点组匹配的组;
将所述初始节点组作为所述目标节点组,并返回执行从所述目标节点组中筛选出候选共识节点的步骤,直至完成所述多个节点组中所有节点组的筛选;
将所述候选共识节点广播至各个所述节点中的第二节点进行验证;
若在预设时间内接收到所述第二节点对所述候选共识节点的验证通过信息,则将所述候选共识节点作为所述区块链的目标共识节点。
2.根据权利要求1所述的节点选取方法,其特征在于,按照属性权重的大小顺序对各个节点进行分组,得到多个节点组,包括:
按照属性权重的大小顺序对各个节点进行排序,得到排序队列;
对所述排序队列进行划分,得到多个节点组。
3.根据权利要求2所述的节点选取方法,其特征在于,所述所述将所述目标节点组中非候选共识节点存储至初始节点组,包括:
从候选节点组中筛选出与所述目标节点组相邻且属性权重小于所述目标节点组的候选节点组,得到与所述目标节点组匹配的初始节点组,所述候选节点组为多个节点组中除了目标节点组之外的节点组
将所述目标节点组中非候选共识节点存储至所述初始节点组。
4.根据权利要求1所述的节点选取方法,其特征在于,所述节点组中包括第一预设数量的节点,所述从所述目标节点组中筛选出预设数量的候选共识节点,包括:
根据所述第一预设数量和所述预设数量,确定所述目标节点组对应的随机数;
根据所述随机数,从所述目标节点组中筛选出预设数量的候选共识节点。
5.根据权利要求4所述的节点选取方法,其特征在于,所述根据所述第一预设数量和所述预设数量,确定所述目标节点组对应的随机数,包括:
将所述预设数量,作为所述目标节点组对应的随机数的目标数量;
在所述第一预设数量内,生成所述目标节点组对应的所述目标数量的随机数。
6.根据权利要求5所述的节点选取方法,其特征在于,所述根据所述随机数,从所述目标节点组中随机筛选出预设数量的候选共识节点,包括:
将所述随机数作为所述目标节点组中的节点序号;
将所述节点序号对应的节点,作为所述目标节点组对应的候选共识节点。
7.根据权利要求1所述的节点选取方法,其特征在于,所述将所述候选共识节点广播至各个所述节点中的第二节点进行验证,包括:
计算所述候选共识节点的默尔克根;
将所述默尔克根广播至各个所述节点中的第二节点进行验证。
8.根据权利要求1所述的节点选取方法,其特征在于,所述获取区块链中各个节点对应的属性权重,包括:
获取区块链中每个节点对应的多个属性信息;
根据所述属性信息对应的信息权重,确定所述节点对应的属性权重。
9.根据权利要求8所述的节点选取方法,其特征在于,所述根据所述属性信息对应的信息权重,确定所述节点对应的属性权重,包括:
获取所述属性信息对应的信息权重,并获取所述信息权重对应的调整系数;
根据所述调整系数对所述信息权重进行调整,得到调整后信息权重;
根据所述调整后信息权重,确定所述节点对应的属性权重。
10.根据权利要求1-9任一项所述的节点选取方法,其特征在于,在所述将所述候选共识节点作为所述区块链的目标共识节点之后,还包括:
获取待验证区块,并通过所述目标共识节点对所述待验证区块进行共识;
若对所述待验证区块的共识通过,则将所述待验证区块存储至所述区块链中。
11.根据权利要求10所述的节点选取方法,其特征在于,所述若对所述待验证区块的共识通过,则将所述待验证区块存储至所述区块链中,包括:
若对所述待验证区块的共识通过,则将所述待验证区块广播至所述区块链中非共识节点进行验证;
若对所述待验证区块的验证通过的非共识节点的数量满足预设数量要求,则将所述待验证区块存储至所述区块链中。
12.一种节点选取装置,其特征在于,包括:
获取模块,用于获取区块链中各个节点对应的属性权重,并按照属性权重的大小顺序对各个节点进行分组,得到多个节点组;
筛选模块,用于从所述多个节点组中筛选出属性权重满足预设条件的节点组,得到目标节点组,并从所述目标节点组中筛选出预设数量的候选共识节点;
存储模块,用于将所述目标节点组中非候选共识节点存储至初始节点组,所述初始节点组为所述多个节点组中除了所述目标节点组之外的且与所述目标节点组匹配的组;
返回模块,用于将所述初始节点组作为所述目标节点组,并返回执行从所述目标节点组中筛选出候选共识节点的步骤,直至完成所述多个节点组中所有节点组的筛选;
验证模块,用于将所述候选共识节点广播至各个所述节点中的第二节点进行验证;
作为模块,用于若在预设时间内接收到所述第二节点对所述候选共识节点的验证通过信息,则将所述候选共识节点作为所述区块链的目标共识节点。
13.一种第一节点,其特征在于,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器用于运行所述存储器内的计算机程序,以执行权利要求1至11任一项所述的节点选取方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行权利要求1至11任一项所述的节点选取方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品存储有计算机程序,所述计算机程序适于处理器进行加载,以执行权利要求1至11任一项所述的节点选取方法。
CN202211530053.5A 2022-11-30 2022-11-30 节点选取方法、装置、第一节点、存储介质及程序产品 Pending CN116980281A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211530053.5A CN116980281A (zh) 2022-11-30 2022-11-30 节点选取方法、装置、第一节点、存储介质及程序产品
US18/388,501 US20240179018A1 (en) 2022-11-30 2023-11-09 Node selection method and apparatus, first node, storage medium, and program product

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211530053.5A CN116980281A (zh) 2022-11-30 2022-11-30 节点选取方法、装置、第一节点、存储介质及程序产品

Publications (1)

Publication Number Publication Date
CN116980281A true CN116980281A (zh) 2023-10-31

Family

ID=88483767

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211530053.5A Pending CN116980281A (zh) 2022-11-30 2022-11-30 节点选取方法、装置、第一节点、存储介质及程序产品

Country Status (1)

Country Link
CN (1) CN116980281A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117478299A (zh) * 2023-12-27 2024-01-30 湖南天河国云科技有限公司 区块链共识算法切换方法、装置和计算机设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117478299A (zh) * 2023-12-27 2024-01-30 湖南天河国云科技有限公司 区块链共识算法切换方法、装置和计算机设备
CN117478299B (zh) * 2023-12-27 2024-03-01 湖南天河国云科技有限公司 区块链共识算法切换方法、装置和计算机设备

Similar Documents

Publication Publication Date Title
CN110602148B (zh) 一种区块的状态树的生成和链上数据验证的方法及装置
JP7114629B2 (ja) ブロックチェーントランザクションの並列検証のためのシステム及び方法
US20210256016A1 (en) Blockchain system and method
US20200044854A1 (en) Estimable proof-of-work for blockchain
US20210203476A1 (en) Primary and secondary blockchain device
CN111935207A (zh) 基于改进型c4.5算法区块链系统共识方法
US20210158353A1 (en) Methods, systems, apparatuses, and devices for processing request in consortium blockchain
KR101411321B1 (ko) 액티브 노드와 유사한 특성을 가지는 이웃 노드의 관리방법, 장치 및 그 방법을 구현하기 위한 프로그램이 기록된기록매체
CN113259179B (zh) 一种基于节点评分的拜占庭容错共识方法与系统
CN116980281A (zh) 节点选取方法、装置、第一节点、存储介质及程序产品
CN112348518A (zh) 一种区块链交易证明的方法及装置
US20190108416A1 (en) Methods for more effectively moderating one or more images and devices thereof
CN116915505B (zh) 基于改进pbft算法的区块链共识方法及设备
JP2020204898A (ja) 分散台帳システムの運用管理方法、分散台帳システムの運用管理システム、および分散台帳システムの運用管理プログラム
US20090083379A1 (en) Enabling connections for use with a network
CN111008071A (zh) 任务调度系统、方法和服务器
WO2024113956A1 (zh) 节点选取方法、装置、第一节点、存储介质及程序产品
US20240179018A1 (en) Node selection method and apparatus, first node, storage medium, and program product
CN112258184B (zh) 冻结区块链网络的方法、装置、电子设备及可读存储介质
CN111562990B (zh) 一种基于消息的轻量级无服务器计算方法
CN115987998B (zh) 微服务系统领袖者选举方法、系统、存储介质和电子设备
US20230269087A1 (en) Method for simultaneous execution of transactions on a blockchain via a coin set model
CN113923166B (zh) 负载均衡方法和分布式集群系统
CN115412737B (zh) 直播回源中继节点确定方法及装置
CN113542439B (zh) 一种分布式的数据存储访问方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication