CN112671732B - 一种共识方法、装置及系统 - Google Patents
一种共识方法、装置及系统 Download PDFInfo
- Publication number
- CN112671732B CN112671732B CN202011480839.1A CN202011480839A CN112671732B CN 112671732 B CN112671732 B CN 112671732B CN 202011480839 A CN202011480839 A CN 202011480839A CN 112671732 B CN112671732 B CN 112671732B
- Authority
- CN
- China
- Prior art keywords
- node
- efficiency
- consensus
- blocks
- arrangement
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种共识方法、装置及系统,涉及通信技术领域,在共识过程中,可以同时具有较高的共识效率,较高的共识公平性,以及较高的安全性。该方法可以包括:获取区块链中全部节点的效率;一个节点的效率用于表示一个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率;获取候选节点的效率验证结果;一个节点的效率验证结果包括正确,或者错误;候选节点为全部节点中满足候选条件的节点;将候选节点的验证结果为正确的效率中,效率最高的节点确定为记账节点。
Description
技术领域
本申请的实施例涉及通信技术领域,尤其涉及一种共识方法、装置及系统。
背景技术
区块链技术是一种结合了数据存储、点对点传输、共识机制、加密等方法的分布式记账技术。由于其具有去中心化、开放性、独立性、安全性、匿名性等特点,在各大领域得到广泛的发展。
其中,区块链使用共识算法使其上的全部节点存储的数据保持一致。具体为:当有新的区块需要写入时,通过共识算法选取出记账节点,将记账节点生成的待写入区块写入到区块链上的全部节点。
目前主流的共识算法包括竞争型共识算法和非竞争型共识算法。其中,竞争型共识算法(例如,工作量证明(proofofwork,POW)算法)的原理主要包括:每个节点解决一个的相同的密码难题,将最先解决密码难题的节点作为记帐节点。非竞争型共识算法(例如,权益证明(proofof stake,POS)算法)的原理主要包括:根据每个节点持有资源占总资源的百分比以及每个节点持有资源的时长,计算出每个节点在本次共识中的“股权”;一个节点持有的股权越多,其获得记账权的概率越大。
所以,对于POW算法,具有较低的共识效率。并且随着区块高度不断的增加,共识效率会越来越低。对于POS算法,虽然具有较高的共识效率。但是,具有较低的公平性。
可以看出,目前并不存在共识效率高、且公平性好的共识算法。
发明内容
本申请提供一种共识方法、装置及系统,在共识过程中,可以同时具有较高的共识效率,较高的共识公平性,以及较高的安全性。
本申请采用如下技术方案:
第一方面,本申请提供一种共识方法,该共识方法可以应用于区块链中的第一节点,该共识方法可以包括:获取区块链中全部节点的效率;一个节点的效率用于表示一个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率;获取候选节点的效率验证结果;一个节点的效率验证结果包括正确,或者错误;候选节点为全部节点中满足候选条件的节点;将候选节点的验证结果为正确的效率中,效率最高的节点确定为记账节点。
通过本申请提供的共识方法,先获取每个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率,作为每个节点的效率;然后获取候选节点的效率验证结果,将效率的验证结果正确的效率中,效率最高的节点作为记账节点。这样,一方面,本申请的共识算法比较的是节点解决排列组合方案的效率,不需要依靠大量的算力资源,所以共识时间短,共识效率高,并且随着区块高度的不断增加,共识效率不会降低。另一方面,该共识方法对于区块链上的每个节点来说,具有相同的约束,即只要节点的效率高,无论持有多少股权,都可以获得记帐权;所以具有较高的公平性。再一方面,本申请提供的共识方法,在确定记账节点时,需要通过其他节点的验证,所以具有较高的安全性。
结合第一方面,在一种可能的实现方式中,获取区块链中全部节点的效率,可以包括:获取第一节点的效率;获取全部节点中除第一节点之外的其他节点的效率。在该可能的实现方式中,可以灵活的配置获取全部节点的效率的方法,实现灵活性高。
结合第一方面或上述一种可能的实现方式中,在另一种可能的实现方式中,获取第一节点的效率,包括:获取在预设时间内生成的F个排列实例;将F个排列实例整理为第一排列实例集合;根据第一排列实例集合,确定第一节点的效率。在该可能的实现方式中,可以通过F个排列实例得到第一节点的效率,较POW算法相比,实现过程简单。
结合第一方面或上述任一种可能的实现方式中,在另一种可能的实现方式中,获取在预设时间内生成的F个排列实例,包括:获取G个区块的特征值;G个区块包括A个模拟区块和B个实际区块;A大于或等于1;B大于或等于1;根据G个区块的特征值生成G个区块的宽度和G个区块的高度;在预设时间内,按照F种排列组合方式排列G个矩形,生成F个排列实例;其中,一种排列组合方式对应生成一个排列实例;G个矩形为G个区块的宽度和G个区块的高度对应组成的矩形。在该可能的实现方式中,每个节点采用自己的排列方式排列G个矩形,从而得到第一排列实例集合,通用性较高。
结合第一方面或上述任一种可能的实现方式中,在另一种可能的实现方式中,在预设时间内,按照F种排列组合方式排列G个矩形,生成F个排列实例,可以包括:采用下述方式确定第一排列实例,第一排列实例为F个排列实例中的任意一个排列实例:将G个区块的宽度和G个区块的高度对应组成G个矩形;在预设时间内,按照第一排列组合方式排列G个矩形;确定按照第一排列组合方式排列G个矩形后的最小外接矩形的面积,作为第一排列实例在第一排列组合方式下的实际面积;将G个区块的理论面积之和除以实际面积,得到第一排列实例在第一排列组合方式下的精度;一个区块的理论面积为一个区块的高度与一个区块的宽度的乘积;将第一排列实例的标识、第一排列组合方式和实际面积以及精度,作为第一排列实例;第一排列组合方式用于表示G个矩形之间的位置关系。在该可能的实现方式中,给出了具体得到排列实例的方案,该方案简单、有效。
结合第一方面或上述任一种可能的实现方式中,在另一种可能的实现方式中,获取G个区块的特征值,可以包括:采用下述方式获取第一区块的特征值,第一区块为A个模拟区块中的任一模拟区块:向其他节点发送共识请求,共识请求用于请求获取一组随机数;接收其他节点发送的一组随机数;将每个节点的一组随机数组合后,通过第一算法转换为第一区块的特征值;第一算法包括SHA-256算法,或者SHA-512算法。采用下述方式获取第二区块的特征值,第二区块为B个实际区块中的任一实际区块:获取第二区块的内容,将第二区块的内容通过第一算法转换为第二区块的特征值。在该可能的实现方式中,G个区块不仅包括实际区块,也包括模拟区块,使节点的效率更加准确,共识更加公平。
结合第一方面或上述任一种可能的实现方式中,在另一种可能的实现方式中,针对第三区块,第三区块为G个区块中的任一区块;根据G个区块的特征值生成G个区块的宽度和G个区块的宽度高度,可以包括:统计第三区块的特征值转换后的第一数值的数量,作为第三区块的宽度;统计第三区块的特征值转换后的第二数值的数量,作为第三区块的高度;第一数值与第二数值不同。在该可能的实现方式中,通过该方案得到区块的宽度和区块的高度,实现简单,准确。
结合第一方面或上述任一种可能的实现方式中,在另一种可能的实现方式中,共识参数包括数量阈值N、惩罚比P;N大于1;P小于或等于1,且P大于0;将F个排列实例整理为第一排列实例集合,可以包括:若F大于或等于N,则在F个排列实例中抽取N个排列实例,作为第一排列实例集合;或者,若F小于N,则在F个排列实例中抽取D个排列实例,作为第一排列实例集合;D等于F与P的乘积;或者,若F小于N,则在F个排列实例中抽取D个排列实例,并将D个排列实例中的每个排列实例的精度乘以P后的结果,作为第一排列实例集合。在该可能的实现方式中,可以根据实际情况选择确定第一排列实例集合的方法,实现灵活度高。
结合第一方面或上述任一种可能的实现方式中,在另一种可能的实现方式中,共识参数包括精度阈值R;根据第一排列实例集合,确定第一节点的效率,可以包括:统计第一排列实例集合中精度大于或等于R的排列实例的数量;确定第一排列实例集合中精度大于或等于R的排列实例的精度的平均值;确定第一节点的效率;其中,第一节点的效率与该数量正相关,且与该平均值正相关;或者,第一节点的效率与该数量正相关,且与该平均值正相关,且与惩罚比正相关。在该可能的实现方式中,确定节点的效率时,与精度阈值等参数相关,具体实现时,可以根据实际需求配置相关共识参数,实现灵活。
结合第一方面或上述任一种可能的实现方式中,在另一种可能的实现方式中,该共识方法还可以包括:统计共识的发生时长;若共识的发生时长大于或等于时间阈值,调整下述一项或者多项共识参数,以减小共识的发生时长;共识参数包括:预设时间、数量阈值N以及精度阈值R。在该可能的实现方式中,可以通过调整共识参数,改变共识发生时长,从而提高共识效率。
结合第一方面或上述任一种可能的实现方式中,在另一种可能的实现方式中,调整下述一项或者多项共识参数,可以包括:将预设时间减小一个时间单位;或者,将预设时间减小一个时间值,且将R减小一个精度单位;或者,将预设时间减小一个时间值,且将R减小一个精度单位;且将N减小一个数量单位。在该可能的实现方式中,可以根据实际选择调整的参数以及调整的大小,实现简单灵活。
第二方面,本申请还提供了一种共识装置,该装置可以为上述第一方面或第一方面任一种可能的实现方式中的第一节点,或者该装置可以部署于该第一节点。该装置可以包括第一获取单元、第二获取单元和确定单元。其中:
第一获取单元,可以用于获取区块链中全部节点的效率;一个节点的效率用于表示一个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率。
第二获取单元,可以用于获取候选节点的效率验证结果;一个节点的效率验证结果包括正确,或者错误;候选节点为该全部节点中满足候选条件的节点。
确定单元,可以用于将候选节点的验证结果为正确的效率中,效率最高的节点确定为记账节点。
需要说明的是,第二方面提供的共识装置,用于执行上述第一方面或第一方面任一种可能的实现方式提供的共识方法,具体实现可以参考上述第一方面的具体实现,此处不再赘述。
第三方面,本申请提供了一种节点,也可以称为节点设备。该设备可以包括处理器,用于实现上述第一方面描述的共识方法。该设备还可以包括存储器,存储器与处理器耦合,处理器执行存储器中存储的指令时,可以实现上述第一方面或第一方面任一种可能的实现方式描述的共识方法。该设备还可以包括通信接口,通信接口用于该装置与其它设备进行通信,示例性的,通信接口可以是收发器、电路、总线、模块或其它类型的通信接口。在一种可能的实现中,该设备可以包括:
存储器,可以用于存储指令。
处理器,可以用于获取区块链中全部节点的效率;一个节点的效率用于表示一个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率;获取候选节点的效率验证结果;一个节点的效率验证结果包括正确,或者错误;候选节点为全部节点中满足候选条件的节点;将候选节点的验证结果为正确的效率中,效率最高的节点确定为记账节点。
需要说明的是,本申请中存储器中的指令可以预先存储也可以使用该装置时从互联网下载后存储,本申请对于存储器中指令的来源不进行具体限定。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或连接,其可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。
第四方面,提供了一种共识系统,该系统中可以包括共识装置,该共识装置可以是第二方面或第二方面任一种可能的实现方式中的装置。
第五方面,提供了一种共识系统,该系统中可以包括多个节点,多个节点中包括第一节点,该第一节点可以是第三方面或第三方面任一种可能的实现方式中的设备。
第六方面,本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述任一方面或任意一种可能的实现方式所述的共识方法。
第七方面,本申请实施例中还提供一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一方面或任意一种可能的实现方式所述的共识方法。
第八方面,本申请实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现上述方法中第一节点执行的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
上述第二方面至第八方面提供的方案,用于实现上述第一方面提供的共识方法,因此可以与第一方面达到相同的有益效果,此处不再进行赘述。
需要说明的是,上述各个方面中的任意一个方面的各种可能的实现方式,在方案不矛盾的前提下,均可以进行组合。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中,各附图中的连线只表示两个设备之间可以通信。具体的通信方式可以是无线通信,也可以是有线通信;可以根据实际情况确定。
图1为本申请实施例提供的一种网络架构的结构示意图;
图2为本申请实施例提供的一种节点设备的结构示意图;
图3为本申请实施例提供的一种共识方法的流程示意图;
图4为本申请实施例提供的另一种共识方法的流程示意图;
图5为本申请实施例提供的一种排列组合方式的结构示意图;
图6为本申请实施例提供的一种待共识区块的结构示意图;
图7为本申请实施例提供的又一种共识方法的流程示意图;
图8为本申请实施例提供的一种共识装置的结构示意图;
图9为本申请实施例提供的另一种共识装置的结构示意图;
图10为本申请实施例提供的另一种节点设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中,为了便于清楚描述本申请实施例的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。该“第一”、第二”描述的技术特征间无先后顺序或者大小顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
在本申请实施例中,至少一个还可以描述为一个或多个,多个可以是两个、三个、四个或者更多个,本申请不做限制。
先对现有技术的共识过程做简单介绍。
首先,区块链包括多个节点,节点之间可以互相通信,从而产生交易数据。当产生的交易数据或者交易次数满足生成区块的条件时,每个节点将其保存的交易数据生成一个新的区块。然后选取一个记账节点,将记账节点的区块写入区块链上的每个节点。
在选取记账节点时,对于POW算法,将最先解决密码难题(例如,最先计算出特定格式哈希值)的节点作为记帐节点。这样,在共识过程中,每个节点需要耗费大量的算力资源进行计算,计算时间较长,资源消耗率极高;所以具有较低的共识效率。并且,由于POW算法中该密码难题的难度与该区块链包括的区块数量正相关,所以随着区块高度不断的增加,共识效率越来越低。
在选取记账节点时,对于POS算法,一个节点持有的股权越多,其获得记账权的概率越大。这样,POS算法虽然具有较高的共识效率;但是,随着区块高度值的不断增加,记账权将倾向于股权多的节点,从而造成了资源与权利的中心化,降低了共识算法的公平性。
基于此,本申请提供了一种共识方法,先获取每个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率,作为每个节点的效率;然后获取候选节点的效率验证结果,将效率的验证结果正确的效率中,效率最高的节点作为记账节点。这样,一方面,本申请的共识算法比较的是节点解决排列组合方案的效率,不需要依靠大量的算力资源,所以共识时间短,共识效率高,并且随着区块高度的不断增加,共识效率不会降低。另一方面,该共识方法对于区块链上的每个节点来说,具有相同的约束,即只要节点的效率高,无论持有多少股权,都可以获得记帐权;所以具有较高的公平性。再一方面,本申请提供的共识方法,在确定记账节点时,需要通过其他节点的验证,所以具有较高的安全性。
为了便于理解本申请实施例中方案的实现过程,首先对本申请实施例中的网络架构进行描述。
需要说明的是,该网络架构或者也可以称为应用场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似架构与场景,同样适用。
如图1所示,提供了一种的网络架构的结构示意图。如图1所示,共识系统10可以包括多个节点101。其中,节点101之间可以互相通信。
具体的,共识系统10,也可以称为区块链系统。
节点101,也可以称为节点设备。示例性的,一个节点101可以用于与其他节点101之间产生交易数据;或者,一个节点101还可以用于生成区块。其中,节点101可以包括但不限于服务器或者终端设备。例如,服务器可以包括物理服务器或者云服务器。终端设备可以包括:移动电话(mobile phone),平板电脑(tablet computer),可穿戴设备(比如智能手表,智能手环),以及其他具有通信功能的电子设备。
需要说明的是,本申请实施例对于网络架构中包括的各设备的数量、连接方式等不予具体限定;图1所示网络架构仅为示例性架构图。
下面将结合附图对本申请实施例的实施方式进行详细描述。
一方面,本申请实施例提供一种共识装置,用于执行本申请提供的共识方法。该共识装置可以为图1的节点101;或者,该共识装置可以部署于图1的节点101;或者,该共识装置可以为与图1的节点101可以交互信息的其他装置。
图2为本申请实施例提供的一种节点设备的结构组成示意图,如图2所示,该节点设备20可以包括至少一个处理器21,存储器22、通信接口23、通信总线24。下面结合图2对节点设备20的各个构成部件进行具体的介绍:
处理器21,可以是一个处理器,也可以是多个处理元件的统称。例如,处理器21是一个中央处理器(central processing unit,CPU),也可以是特定集成电路(applicationspecific integrated circuit,ASIC),或者是被配置成实施本申请实施例的一个或多个集成电路,例如:一个或多个微处理器(digital signal processor,DSP),或,一个或者多个现场可编程门阵列(field programmable gate array,FPGA)。
其中,处理器21可以通过运行或执行存储在存储器22内的软件程序,以及调用存储在存储器22内的数据,执行各种功能。在具体的实现中,作为一种实施例,处理器21可以包括一个或多个CPU,例如图2中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,该节点设备20可以包括多个处理器,例如图2中所示的处理器21和处理器25。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
存储器22可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器22可以是独立存在,通过通信总线24与处理器21相连接。存储器22也可以和处理器21集成在一起。其中,存储器22用于存储执行本申请方案的软件程序,并由处理器21来控制执行。
通信接口23,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
通信总线24,可以是工业标准体系结构(industry standard architecture,ISA)总线、外部设备互连(peripheral component,PCI)总线或扩展工业标准体系结构(extended industry standard architecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要指出的是,图2中示出的部件并不构成对该共识服务器的限定,除图2所示部件之外,该共识服务器可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
具体的,处理器21通过运行或执行存储在存储器22内的软件程序和/或模块,以及调用存储在存储器22内的数据,执行如下功能:
获取区块链中全部节点的效率;一个节点的效率用于表示一个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率;获取候选节点的效率验证结果;一个节点的效率验证结果包括正确,或者错误;候选节点为全部节点中满足候选条件的节点;将候选节点的验证结果为正确的效率中,效率最高的节点确定为记账节点。
另一方面,本申请实施例提供一种共识方法,可以应用于图2所示的节点设备20。本申请实施例提供的共识方法可以用于确定记账节点,先以区块链中的第一节点为例,对该共识方法进行说明,对于其他节点可以参考第一节点的实现过程,此处不再赘述。
如图3所示,该方法可以包括:
S301、第一节点获取区块链中全部节点的效率。
其中,一个节点的效率用于表示一个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率。
具体的,S301可以实现为:第一节点可以获取第一节点的效率;并且获取全部节点中除第一节点之外的其他节点的效率。
其中,如图4所示,第一节点获取第一节点的效率的过程可以包括但不限于下述S3011至S3013。
S3011、第一节点获取在预设时间内生成的F个排列实例。
首先,第一节点获取到G个区块的特征值;然后,第一节点根据G个区块的特征值生成G个区块的宽度和G个区块的高度;再,第一节点在预设时间内,按照F种排列组合方式排列G个矩形,生成F个排列实例。
其中,G个区块包括A个模拟区块和B个实际区块;A大于或等于1;B大于或等于1。一种排列组合方式对应生成一个排列实例;G个矩形为G个区块的宽度和G个区块的高度对应组成的矩形。
现具体说明第一节点如何获取A个模拟区块的特征值。下面以第一区块为例,对第一节点获取第一区块的特征值的过程进行说明。其他模拟区块的特征值的获取过程与第一区块的获取过程类似,不再一一赘述。
其中,第一区块为A个模拟区块中的任一模拟区块。
一种可能的实现方式中,第一节点向其他节点发送共识请求,共识请求用于请求获取一组随机数;其他节点接收到该共识请求后,向第一节点发送一组随机数;第一节点接收其他节点发送的随机数;然后将每个节点的随机数组合后,通过第一算法转换为第一区块的特征值。
其中,第一算法可以包括但不限于SHA-256算法;或者,SHA-512算法。
另一种可能的实现方式中,第一区块的特征值是第一节点之外的其他节点生成的。该节点在生成第一区块的特征值后,将第一区块的特征值广播给除自己之外的节点;对应的,第一节点接收该第一区块的特征值。
示例性的,获取第一区块的特征值的节点可以为上次共识过程的记账节点(也可以称为头节点或者leader节点)。
可以理解的,采用与获取第一区块的特征值相同的方法,第一节点可以获取到A个模拟区块的特征值。
现具体说明第一节点如何获取B个实际区块的特征值。
需要说明的是实际区块即区块链中实际存储的区块。
用户可以根据实际需求配置B个实际区块的具体内容,本申请实施例对此不予具体限定。
一种可能的实现方式中,B个实际区块可以包括区块链中存储的所有区块。
另一种可能的实现方式中,B个实际区块可以包括区块链中前一个或者前多个区块;即,按区块高度值从小到大排序后的,前一个或者前多个区块。
再一种可能的实现方式中,B个实际区块可以包括区块链中后一个或者后多个区块;即,按区块高度值从大到小排序后的,前一个或者前多个区块。
下面以第二区块为例,对第一节点获取第二区块的特征值的过程进行说明。其他实际区块的特征值的获取过程与第二区块的获取过程类似,不再一一赘述。
其中,第二区块为B个实际区块中的任一实际区块。
第一节点读取第二区块的内容,将第二区块的内容通过第一算法转换为第二区块的特征值。
可以理解的,采用与获取第二区块的特征值相同的方法,第一节点可以获取到B个实际区块的特征值。
现具体说明第一节点如何根据G个区块的特征值得到G个区块的宽度和G个区块的高度。
以第三区块为例,对第一节点生成第三区块的宽度和第三区块的高度的过程进行说明。对于第一节点生成其他区块的宽度和高度的过程,可以参考其生成第三区块的宽度和第三区块的高度的实现,不再一一赘述。
具体的,第一节点统计第三区块的特征值转换后的第一数值的数量,作为第三区块的宽度;统计第三区块的特征值转换后的第二数值的数量,作为第三区块的高度。
其中,第一数值与第二数值不同。
示例性的,第一节点统计第三区块的特征值转换为二进制后的0的数量,作为第三区块的宽度;统计第三区块的特征值转换为二进制后的1数量,作为第三区块的高度。
可以理解的,采用与获取第一区块的宽度和第一区块的高度相同的方法,第一节点可以获取到G个区块的宽度和G个区块的高度。
例如,假设第一节点获取到3个实际区块(block1、block2、block3)的特征值和1个虚拟区块(blockvir)的特征值。
其中,block1的特征值为:9A59C5F8229AAB55E9F855173EF94485AAB8497EEA0588F365C871D6D0561722。
Block2的特征值为:6D0B07EE773591F2A1B492D3CA65AFDEFC90E1CADFCC542A74048BB0AE7DAA27。
Block3的特征值为:7E56DDAFF5FF44D9E1732B1FD138A2057DF045B163385068988554F 72047E272。
blockvir的特征值为:b9a1f9eb7e0ff5363b8c03eea6f4b9c0b2b392bf2ed25cee3cf b2781bdb11a09。
block1的特征值转换为二进制后为:(1001101001011001110001011111100000100010100110101010101101010101111010011111100001010101000101110011111011111001010001001000010110101010101110000100100101111110111010100000010110001000111100110110010111001000011100011101011011010000010101100001011100100010。
Block2的特征值转换为二进制后为:110110100001011000001111110111001110111001101011001000111110010101000011011010010010010110100111100101001100101101011111101111011111100100100001110000111001010110111111100110001010100001010100111010000000100100010111011000010101110011111011010101000100111。
Block3的特征值转换为二进制后为:111111001010110110111011010111111110101111111110100010011011001111000010111001100101011000111111101000100111000101000100000010101111101111100000100010110110001011000110011100001010000011010001001100010000101010101001111011100100000010001111110001001110010。
blockvir的特征值转换为二进制后为:1011100110100001111110011110101101111110000011111111010100110110001110111000110000000011111011101010011011110100101110011100000010110010101100111001001010111111001011101101001001011100111011100011110011111011001001111000000110111101101100010001101000001001。
所以,统计block1的特征值转换为二进制后1的数量为129,block1的特征值转换为二进制后0的数量为127;统计block2的特征值转换为二进制后1的数量为121,block2的特征值转换为二进制后0的数量为134;统计block3的特征值转换为二进制后1的数量为124,block3的特征值转换为二进制后0的数量为131;统计blockvir的特征值转换为二进制后1的数量为141,blockvir的特征值转换为二进制后0的数量为115。
第一节点将统计后的1的数量作为区块的高度,将统计后的0的数量作为区块的宽度。
所以,block1的高度height1=129;block1的宽度width1=127。
Block2的高度height2=121;block2的宽度width2=134。
Block3的宽度height3=124;block3的宽度width3=131。
blockvir的宽度heightvir=141;blockvir的宽度widthvir=115。
现具体说明第一节点是如何生成F个排列实例的。下面以第一节点采用第一排列方式确定第一排列实例为例进行说明,参考生成第一排列实例的过程,第一节点采用F种排列方式生成了F种排列实例。
其中,第一排列实例为F个排列实例中的任意一个排列实例。
具体的,第一节点将一个区块的宽度和该区块的高度组成一个矩形,依次,将G个区块的宽度和G个区块的高度对应组成G个矩形。然后在预设时间内,按照第一排列组合方式排列G个矩形;计算出按照第一排列组合方式排列G个矩形后的最小外接矩形的面积,作为第一排列实例在第一排列组合方式下的实际面积。第一节点将G个区块的理论面积之和除以实际面积,得到第一排列实例在第一排列组合方式下的精度。一个区块的理论面积为一个区块的高度与一个区块的宽度的乘积。
第一节点将第一排列实例的标识、第一排列组合方式、实际面积以及第一排列组合方式下精度,作为第一排列实例。
其中,第一排列组合方式用于表示G个矩形之间的位置关系。
示例性的,第一节点可以用polish表达法、树状表达法、序列集等表达法来表示G个矩形之间的位置关系。
例如,如图5所示,第一排列实例可以包括:{实例序号36;排列组合方式为polish=B2B3|B1-B4-;实际面积=8868;精度=0.9565}。其中,Bi表示第i个区块对应的矩形。
S3012、第一节点将F个排列实例整理为第一排列实例集合。
具体的,S3012的实现可以包括但不限于下述实现1至实现4。
实现1、第一节点判断若其在预设时间内生成的排列实例的数量F大于或等于数量阈值N,则在F个排列实例中抽取N个排列实例,作为第一排列实例集合。
其中,可以根据实际需求选择抽取的算法,本申请实施例对此不予具体限定。示例性的,可以采用随机抽取算法。
实现2、第一节点判断若其在预设时间内生成的排列实例的数量F小于N,第一节点将该F个排列实例,作为第一排列实例集合。
实现3、第一节点判断若其在预设时间内生成的排列实例的数量F小于N,第一节点在F个排列实例中抽取D个排列实例,作为第一排列实例集合。
其中,D等于F与惩罚比P的乘积。P大于0,且小于等于1。
可以根据实际需求配置惩罚比的具体取值,本申请实施例对此不予具体限定。
例如,P可以等于F除以N。其中,F小于N。
实现4、第一节点判断若其在预设时间内生成的排列实例的数量F小于N,第一节点在F个排列实例中抽取D个排列实例,并将D个排列实例中的每个排列实例的精度乘以P后的结果,作为第一排列实例集合。
S3013、第一节点根据第一排列实例集合,确定第一节点的效率。
具体的,第一节点先统计第一排列实例集合中精度大于或等于精度阈值R的排列实例的数量;并计算出第一排列实例集合中精度大于或等于R的排列实例的精度的平均值;然后根据该数量与该平均值确定第一节点的效率。
其中,第一节点的效率与该数量正相关,且与该平均值正相关。
一种可能的实现方式中,第一节点将第一排列实例集合中精度大于或等于R的排列实例的数量除以N,再乘以该平均值的结果,作为第一节点的效率。
另一种可能的实现方式中,第一节点将第一排列实例集合中精度大于或等于R的排列实例的数量除以N,再乘以该平均值,再乘以惩罚比P的结果,作为第一节点的效率。
可以理解的,其他节点可以采用与第一节点同样的方法得到各自节点的效率。
其中,第一节点获取其他节点的效率可以实现为:第一节点向其他节点发送读取请求,其他节点接收到该效率请求后,向第一节点发送自身节点的效率;或者,其他节点在得到自身节点的效率后,向第一节点发送自身节点的效率。
S302、第一节点获取候选节点的效率验证结果。
其中,一个节点的效率验证结果包括正确,或者错误。
候选节点可以为全部节点中满足候选条件的节点。
可以根据实际配置候选条件的具体内容,本申请实施例对此不予具体限定。
一种可能的实现方式中,候选条件可以包括效率值大于或者等于效率阈值的节点。
可以根据实际配置效率阈值的具体取值。本申请实施例对此不予唯一限定。
另一种可能的实现方式中,候选条件可以包括按效率值从大到小排序后的前C个节点。
在S301中,第一节点获取了所有节点的效率后,第一节点通过选举机制在所有节点中选择满足满足候选条件的节点作为候选节点,然后向候选节点发送指示验证信息,以指示候选节点验证其节点的效率是否正确。
其中,选举机制是所有节点共同遵守的规则,不受单个节点控制;即单个节点无法篡改与选举机制相关过程的数据。
可以理解的,选举机制不受单个节点的控制,所以通过选举机制选取候选节点的过程也可以认为由其他节点执行,或者由所有节点共同执行。
以第一节点作为候选节点为例,对验证过程做简单说明。
第一节点向其他所有除第一节点之外的节点发送待共识区块,如图6所示,该待共识区块包括区块头和区块体;区块体可以包括交易数据,区块头可以包括第一排列实例集合、共识参数。以指示除第一节点之外的每个节点采用与第一节点相同的方法,根据待共识区块包括的第一排列实例集合计算第一节点的效率。除第一节点之外的每个节点将自身计算的第一节点的效率发送给第一节点,然后第一节点通过效率验证机制遍历每个节点计算的第一节点的效率,依次判断其他节点发送的第一节点的效率与第一节点自身计算的效率是否相同;若效率相同的数量大于或等于验证阈值,则认为第一节点的效率验证结果为正确,若效率相同的数量小于验证阈值,则认为第一节点的效率验证结果为错误,从而得到第一节点的验证结果。
其中,效率验证机制是所有节点共同遵守的规则,不受单个节点控制。即单个节点无法篡改与效率验证机制相关过程的数据。
可以理解的,效率验证机制不受单个节点的控制,所以通过效率验证机制验证节点效率是否正确的过程也可以认为由其他节点执行,或者由所有节点共同执行。
其中,可以根据实际需求配置验证阈值的取值,本申请实施例对此不予具体限定。
示例性的,验证阈值可以为所有节点的数量的一半。
在一种可能的实现方式中,S302可以实现为:第一节点向候选节点发送获取效率验证结果的请求信息,候选节点在接收到效率验证结果请求信息后将自身的效率验证结果发送给第一节点;第一节点接收候选节点发送的各自的效率验证结果。
在一种可能的实现方式中,S302可以实现为:候选节点在得到各自的效率验证结果后,将自身的效率验证结果发送给第一节点;第一节点接收候选节点发送的各自的效率验证结果。
S303、第一节点将候选节点的验证结果为正确的效率中,效率最高的节点确定为记账节点。
具体的,第一节点通过选举机制在候选节点的验证结果为正确的效率中,选择效率最高的节点作为记账节点。
其中,选举机制是所有节点共同遵守的规则,不受单个节点控制。即单个节点无法篡改与选举机制相关过程的数据。
可以理解的,选举机制不受单个节点的控制,所以通过选举机制选取记账节点的过程也可以认为由其他节点执行,或者由所有节点共同执行。
通过本申请提供的共识方法,先获取每个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率,作为每个节点的效率;然后获取候选节点的效率验证结果,将效率的验证结果正确的效率中,效率最高的节点作为记账节点。这样,一方面,本申请的共识算法比较的是节点解决排列组合方案的效率,不需要依靠大量的算力资源,所以共识时间短,共识效率高,并且随着区块高度的不断增加,共识效率不会降低。另一方面,该共识方法对于区块链上的每个节点来说,具有相同的约束,即只要节点的效率高,无论持有多少股权,都可以获得记帐权;所以具有较高的公平性。再一方面,本申请提供的共识方法,在确定记账节点时,需要通过其他节点的验证,所以具有较高的安全性。
进一步的,本申请实施例提供的共识方法还可以调整共识参数,以使调整后的共识参数满足用户的需求。
现以共识效率低,即共识时间长为例,对该调整共识参数的过程进行说明。如图7所示,该调整共识参数的过程可以包括但不限于下述S304和S305。
需要说明的是,区块链中的任一个节点均可以执行下述S304和S305,以调整共识参数;现以第一节点为例进行说明。
S304、第一节点统计共识的发生时长。
具体的,第一节点可以通过计时器等统计该共识(选择记账节点)过程的发生时长。
S305、若该共识的发生时长大于或等于时间阈值,第一节点调整下述一项或者多项共识参数,以减小共识的发生时长。
其中,用户可以根据实际需求配置时间阈值的具体取值,本申请实施例对此不予唯一限定。
具体的,第一节点判断S304中获取的共识的发生时长大于或等于时间阈值时,调整一项躲着多项共识参数,以减小共识的发生时长。
用户可以根据实际配置调整的共识参数以及每次调整的大小。
一种可能的实现方式中,第一节点可以将共识参数包括的预设时间减小一个时间单位。
另一种可能的实现方式中,第一节点可以将共识参数包括的预设时间减小一个时间值,且共识参数包括的将精度阈值R减小一个精度单位。
再一种可能的实现方式中,第一节点可以将共识参数包括的预设时间减小一个时间值,且将共识参数包括的精度阈值R减小一个精度单位;且将共识参数包括的数量阈值N减小一个数量单位。
可以根据实际需求配置时间单位、精度单位和数量单位的大小,本申请实施例对此不予具体限定。
可以理解的,可以通过调整共识参数来控制排列方案的难度,或者说,可以通过调整共识参数来控制节点的效率。例如,可以通过降低数量阈值N,降低精度阈值R,可以降低排列方法的难度,增大节点的效率值。
进一步的,本申请实施例提供的共识方法还可以包括在确定记账节点后,将记账节点的区块写入到区块链中的所有节点。该写入过程可以包括实现为:记账节点向其他节点发送写入请求,以使其他节点将记账节点的待同步区块写入自身节点。
上述主要从网络中的节点设备在共识过程的实现原理的角度对本发明实施例提供的方案进行了介绍。可以理解的是,节点设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例对节点设备等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图8示为本申请实施例提供的一种共识装置80,用于实现上述实施例中共识服务器的功能。该共识装置80可以是节点设备;或者,该共识装置80可以部署于节点设备。如图8所示,共识装置80可以包括:第一获取单元801、第二获取单元802和确定单元803。
其中,第一获取单元801可以用于获取区块链中全部节点的效率;一个节点的效率用于表示一个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率。例如,结合图3或图7,第一获取单元801用于执行图3或图7中S301。
第二获取单元802可以用于获取候选节点的效率验证结果;一个节点的效率验证结果包括正确,或者错误;候选节点为全部节点中满足候选条件的节点。例如,结合图3或图7,第二获取单元802用于执行图3或图7中S302。
确定单元803可以用于将候选节点的验证结果为正确的效率中,效率最高的节点确定为记账节点。例如,结合图3或图7,确定单元803用于执行图3或图7中S303。
进一步的,如图9所示,共识装置80还可以包括统计单元804和调整单元805。其中,统计单元804可以用于统计共识的发生时长。例如,结合图7,统计单元804用于执行图7中S304。调整单元805可以用于若共识的发生时长大于或等于时间阈值,调整下述一项或者多项共识参数,以减小共识的发生时长;共识参数包括:预设时间、数量阈值N以及精度阈值R。例如,结合图7,调整单元805用于执行图7中S305。
在采用集成的单元的情况下,如图10所示为本申请实施例提供的节点设备100,用于实现上述方法中第一节点的功能。节点设备100可以包括至少一个处理模块1001,用于实现本申请实施例中共识服务器的功能。示例性地,处理模块1001可以用于执行图3或图7中的过程S303,具体参见方法示例中的详细描述,此处不做赘述。
节点设备100还可以包括至少一个存储模块1002,用于存储程序指令和/或数据。存储模块1002和处理模块1001耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理模块1001可能和存储模块1002协同操作。处理模块1001可以执行存储模块1002中存储的程序指令。所述至少一个存储模块中的至少一个可以包括于处理模块中。
节点设备100还可以包括通信模块1003,用于通过传输介质和其它设备进行通信,从而用于确定节点设备100可以和其它设备进行通信。通信模块1003用于该设备与其它设备进行通信。示例性的,处理模块1001可以利用通信模块1003执行图3或图7中的过程S301。
在实际实现时,第一获取单元801、第二获取单元802、确定单元803、统计单元804和调整单元805可以由图2所示的处理器21调用存储器22中的程序代码来实现。或者,可以由图2所示的处理器21通过通信接口23的来实现,具体的执行过程可参考图3或图7所示的共识方法部分的描述,此处不再赘述。
如前述,本申请实施例提供的共识装置80或节点设备100可以用于实施上述本申请各实施例实现的方法中节点设备100设备的功能,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请各实施例。
本申请另一些实施例提供一种共识系统,该系统中可以包括共识设备,该共识设备可以实现上述实施例中第一节点的功能,例如,共识设备可以为本申请实施例描述的第一节点。
本申请另一些实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现上述图3或图7所示实施例中第一节点的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
本申请另一些实施例还提供一种计算机可读存储介质,该计算机可读存储介质可包括计算机程序,当该计算机程序在计算机上运行时,使得该计算机执行上述图3或图7所示实施例中第一节点执行的各个步骤。
本申请另一些实施例还提供一种计算机程序产品,该计算机产品包含计算机程序,当该计算机程序产品在计算机上运行时,使得该计算机执行上述图3或图7所示实施例中第一节点执行的各个步骤。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种共识方法,其特征在于,所述共识方法应用于区块链中的第一节点;所述共识方法包括:
获取所述区块链中全部节点的效率;一个节点的效率用于表示所述一个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率;
获取候选节点的效率验证结果;一个节点的效率验证结果包括正确,或者错误;所述候选节点为所述全部节点中满足候选条件的节点;
将所述候选节点的验证结果为正确的效率中,效率最高的节点确定为记账节点;
所述获取区块链中全部节点的效率,包括:
获取所述第一节点的效率;
获取所述全部节点中除所述第一节点之外的其他节点的效率;
所述获取所述第一节点的效率,包括:
获取在所述预设时间内生成的F个排列实例;
将所述F个排列实例整理为第一排列实例集合;
根据所述第一排列实例集合,确定所述第一节点的效率;
所述获取在所述预设时间内生成的F个排列实例,包括:
获取G个区块的特征值;所述G个区块包括A个模拟区块和B个实际区块;所述A大于或等于1;所述B大于或等于1;
根据所述G个区块的特征值生成所述G个区块的宽度和所述G个区块的高度;
在所述预设时间内,按照F种排列组合方式排列G个矩形,生成F个排列实例;其中,一种排列组合方式对应生成一个排列实例;所述G个矩形为所述G个区块的宽度和所述G个区块的高度对应组成的矩形;
所述在所述预设时间内,按照F种排列组合方式排列G个矩形,生成F个排列实例,包括:
采用下述方式确定第一排列实例,所述第一排列实例为所述F个排列实例中的任意一个排列实例:
将所述G个区块的宽度和所述G个区块的高度对应组成所述G个矩形;
在所述预设时间内,按照第一排列组合方式排列所述G个矩形;
确定按照所述第一排列组合方式排列所述G个矩形后的最小外接矩形的面积,作为所述第一排列实例在所述第一排列组合方式下的实际面积;
将所述G个区块的理论面积之和除以所述实际面积,得到所述第一排列实例在所述第一排列组合方式下的精度;一个区块的理论面积为所述一个区块的高度与所述一个区块的宽度的乘积;
将所述第一排列实例的标识、所述第一排列组合方式和所述实际面积以及所述精度,作为所述第一排列实例;所述第一排列组合方式用于表示所述G个矩形之间的位置关系。
2.根据权利要求1所述的共识方法,其特征在于,所述获取G个区块的特征值,包括:
采用下述方式获取第一区块的特征值,所述第一区块为所述A个模拟区块中的任一模拟区块:
向所述其他节点发送共识请求,所述共识请求用于请求获取一组随机数;接收所述其他节点发送的所述一组随机数;将每个节点的所述一组随机数组合后,通过第一算法转换为所述第一区块的特征值;所述第一算法包括SHA-256算法,或者SHA-512算法;
采用下述方式获取第二区块的特征值,所述第二区块为所述B个实际区块中的任一实际区块:
获取所述第二区块的内容,将所述第二区块的内容通过所述第一算法转换为所述第二区块的特征值。
3.根据权利要求1所述的共识方法,其特征在于,针对第三区块,所述第三区块为所述G个区块中的任一区块;所述根据所述G个区块的特征值生成所述G个区块的宽度和所述G个区块的宽度高度,包括:
统计所述第三区块的特征值转换后的第一数值的数量,作为所述第三区块的宽度;
统计所述第三区块的特征值转换后的第二数值的数量,作为所述第三区块的高度;所述第一数值与所述第二数值不同。
4.根据权利要求1所述的共识方法,其特征在于,共识参数包括数量阈值N、惩罚比P;所述N大于1;所述P小于或等于1,且所述P大于0;所述将所述F个排列实例整理为第一排列实例集合,包括:
若所述F大于或等于所述N,则在所述F个排列实例中抽取N个排列实例,作为第一排列实例集合;
或者,若所述F小于所述N,则在所述F个排列实例中抽取D个排列实例,作为第一排列实例集合;所述D等于所述F与所述P的乘积;
或者,若所述F小于所述N,则在所述F个排列实例中抽取D个排列实例,并将所述D个排列实例中的每个排列实例的精度乘以所述P后的结果,作为第一排列实例集合。
5.根据权利要求1所述的共识方法,其特征在于,共识参数包括精度阈值R;所述根据所述第一排列实例集合,确定所述第一节点的效率,包括:
统计所述第一排列实例集合中精度大于或等于所述R的排列实例的数量;
确定所述第一排列实例集合中精度大于或等于所述R的排列实例的精度的平均值;
确定所述第一节点的效率;其中,所述第一节点的效率与所述数量正相关,且与所述平均值正相关;或者,所述第一节点的效率与所述数量正相关,且与所述平均值正相关,且与惩罚比正相关。
6.根据权利要求1-5任一项所述的共识方法,其特征在于,所述共识方法还包括:
统计共识的发生时长;
若所述共识的发生时长大于或等于时间阈值,调整下述一项或者多项共识参数,以减小共识的发生时长;所述共识参数包括:所述预设时间、数量阈值N以及精度阈值R。
7.根据权利要求6所述的共识方法,其特征在于,所述调整下述一项或者多项共识参数,包括:
将所述预设时间减小一个时间单位;
或者,将所述预设时间减小一个时间值,且将所述R减小一个精度单位;
或者,将所述预设时间减小一个时间值,且将所述R减小一个精度单位;且将所述N减小一个数量单位。
8.一种共识装置,其特征在于,所述共识装置部署于区块链中的第一节点,所述共识装置包括:
第一获取单元,用于获取所述区块链中全部节点的效率;一个节点的效率用于表示所述一个节点在预设时间内按照不同的排列组合方式生成不同排列实例的效率;
第二获取单元,用于获取候选节点的效率验证结果;一个节点的效率验证结果包括正确,或者错误;所述候选节点为所述全部节点中满足候选条件的节点;
确定单元,用于将所述候选节点的验证结果为正确的效率中,效率最高的节点确定为记账节点;
所述第一获取单元,还用于获取所述第一节点的效率;获取所述全部节点中除所述第一节点之外的其他节点的效率;
所述第一获取单元,还用于获取在所述预设时间内生成的F个排列实例;
将所述F个排列实例整理为第一排列实例集合;
根据所述第一排列实例集合,确定所述第一节点的效率;
所述第一获取单元,还用于获取G个区块的特征值;所述G个区块包括A个模拟区块和B个实际区块;所述A大于或等于1;所述B大于或等于1;
根据所述G个区块的特征值生成所述G个区块的宽度和所述G个区块的高度;
在所述预设时间内,按照F种排列组合方式排列G个矩形,生成F个排列实例;其中,一种排列组合方式对应生成一个排列实例;所述G个矩形为所述G个区块的宽度和所述G个区块的高度对应组成的矩形;
采用下述方式确定第一排列实例,所述第一排列实例为所述F个排列实例中的任意一个排列实例:
将所述G个区块的宽度和所述G个区块的高度对应组成所述G个矩形;
在所述预设时间内,按照第一排列组合方式排列所述G个矩形;
确定按照所述第一排列组合方式排列所述G个矩形后的最小外接矩形的面积,作为所述第一排列实例在所述第一排列组合方式下的实际面积;
将所述G个区块的理论面积之和除以所述实际面积,得到所述第一排列实例在所述第一排列组合方式下的精度;一个区块的理论面积为所述一个区块的高度与所述一个区块的宽度的乘积;
将所述第一排列实例的标识、所述第一排列组合方式和所述实际面积以及所述精度,作为所述第一排列实例;所述第一排列组合方式用于表示所述G个矩形之间的位置关系。
9.一种节点,其特征在于,所述节点包括:处理器,存储器;所述处理器和所述存储器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述节点执行时,使得所述节点执行如权利要求1-7中任一项所述的共识方法。
10.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1-7任一项所述的共识方法。
11.一种共识系统,其特征在于,所述共识系统包括多个节点;所述多个节点包括第一节点;其中,所述第一节点,用于执行上述权利要求1-7任一项所述的共识方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011480839.1A CN112671732B (zh) | 2020-12-15 | 2020-12-15 | 一种共识方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011480839.1A CN112671732B (zh) | 2020-12-15 | 2020-12-15 | 一种共识方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112671732A CN112671732A (zh) | 2021-04-16 |
CN112671732B true CN112671732B (zh) | 2022-11-22 |
Family
ID=75404927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011480839.1A Active CN112671732B (zh) | 2020-12-15 | 2020-12-15 | 一种共识方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112671732B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108665274A (zh) * | 2018-05-14 | 2018-10-16 | 北京链享未来科技有限公司 | 一种记账节点智能选择方法 |
CN109684798A (zh) * | 2019-01-04 | 2019-04-26 | 深圳银链科技有限公司 | 一种基于公有区块链的共识算法、设备及存储介质 |
CN110047004A (zh) * | 2019-04-23 | 2019-07-23 | 重庆金窝窝网络科技有限公司 | 区块链记账节点选择方法和装置 |
CN110120868A (zh) * | 2019-05-27 | 2019-08-13 | 浙江工商大学 | 一种基于区块链技术的智能电网安全数据聚合方法及系统 |
WO2019246567A1 (en) * | 2018-06-21 | 2019-12-26 | 9Th Gear Technologies, Inc. | Blockchain-based method, apparatus, and system to accelerate transaction processing |
CN110930149A (zh) * | 2018-12-07 | 2020-03-27 | 深圳市智税链科技有限公司 | 在区块链网络中确定记账节点的方法、代理节点和介质 |
CN111177262A (zh) * | 2019-12-27 | 2020-05-19 | 中思博安科技(北京)有限公司 | 一种区块链共识方法、相关装置及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10171629B2 (en) * | 2015-09-08 | 2019-01-01 | International Business Machines Corporation | Client-initiated leader election in distributed client-server systems |
TWI684100B (zh) * | 2018-06-12 | 2020-02-01 | 中華電信股份有限公司 | 分散式公開帳本的共識形成方法及使用該共識形成方法的系統 |
-
2020
- 2020-12-15 CN CN202011480839.1A patent/CN112671732B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108665274A (zh) * | 2018-05-14 | 2018-10-16 | 北京链享未来科技有限公司 | 一种记账节点智能选择方法 |
WO2019246567A1 (en) * | 2018-06-21 | 2019-12-26 | 9Th Gear Technologies, Inc. | Blockchain-based method, apparatus, and system to accelerate transaction processing |
CN110930149A (zh) * | 2018-12-07 | 2020-03-27 | 深圳市智税链科技有限公司 | 在区块链网络中确定记账节点的方法、代理节点和介质 |
CN109684798A (zh) * | 2019-01-04 | 2019-04-26 | 深圳银链科技有限公司 | 一种基于公有区块链的共识算法、设备及存储介质 |
CN110047004A (zh) * | 2019-04-23 | 2019-07-23 | 重庆金窝窝网络科技有限公司 | 区块链记账节点选择方法和装置 |
CN110120868A (zh) * | 2019-05-27 | 2019-08-13 | 浙江工商大学 | 一种基于区块链技术的智能电网安全数据聚合方法及系统 |
CN111177262A (zh) * | 2019-12-27 | 2020-05-19 | 中思博安科技(北京)有限公司 | 一种区块链共识方法、相关装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112671732A (zh) | 2021-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
der Boor et al. | Scalable load balancing in networked systems: A survey of recent advances | |
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
Truong-Huu et al. | To offload or to wait: An opportunistic offloading algorithm for parallel tasks in a mobile cloud | |
TW202013272A (zh) | 一種虛擬資源的分配方法和裝置 | |
CN113553377B (zh) | 基于区块链和联邦学习的数据共享方法及装置 | |
CN110110269A (zh) | 一种基于区块链的事件订阅方法及装置 | |
WO2022267715A1 (zh) | 一种预言机节点筛选方法、装置、存储介质及电子装置 | |
US20230393813A1 (en) | Sorting apparatus and method | |
CN111858458B (zh) | 一种互联通道的调整方法、装置、系统、设备和介质 | |
CN116680060B (zh) | 面向异构计算系统的任务分配方法、装置、设备和介质 | |
CN112671732B (zh) | 一种共识方法、装置及系统 | |
CN109729013A (zh) | 一种流量整形中添加令牌的方法、装置及计算机可读存储介质 | |
Dai | Platform modelling and scheduling game with multiple intelligent cloud-computing pools for big data | |
CN115391053B (zh) | 基于cpu和gpu混合计算的在线服务方法及装置 | |
CN112465371A (zh) | 一种资源数据分配方法、装置及设备 | |
CN112068965A (zh) | 数据处理方法、装置、电子设备和可读存储介质 | |
CN111651522A (zh) | 一种数据同步方法及装置 | |
Yang et al. | Study on static task scheduling based on heterogeneous multi-core processor | |
CN113138847A (zh) | 基于联邦学习的计算机资源分配调度方法和装置 | |
CN115834054A (zh) | 一种多级密钥级数管理方法及装置 | |
CN113381873B (zh) | 网络设备的扩容方法和相关装置 | |
CN111585789B (zh) | 数据预测方法及装置 | |
CN110958565B (zh) | 计算信号距离的方法、装置、计算机设备和存储介质 | |
CN113703945A (zh) | 微服务集群的调度方法、装置、设备及存储介质 | |
US8694730B2 (en) | Binary tree based multilevel cache system for multicore processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |