CN110784521B - 区块链的共识方法、电子设备和存储介质 - Google Patents
区块链的共识方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN110784521B CN110784521B CN201910945180.3A CN201910945180A CN110784521B CN 110784521 B CN110784521 B CN 110784521B CN 201910945180 A CN201910945180 A CN 201910945180A CN 110784521 B CN110784521 B CN 110784521B
- Authority
- CN
- China
- Prior art keywords
- block
- main chain
- candidate
- candidate main
- witness nodes
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了区块链的共识方法、电子设备和存储介质,其中,所述方法包括检测区块链是否有多条支链;若是,确定从最新区块回溯至创世区块的多条第一候选主链;分别计算每条第一候选主链的见证节点数量之和;基于见证节点数量之和确定区块链主链。通过上述方式,本申请能够及时准确地确认最可信的区块链主链,提高区块链上存储的数据的安全性和可信度。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及区块链的共识方法、电子设备和存储介质。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,强调去中心化、开放性、独立性、安全性、匿名性。区块链技术正在研究与发展之中,其技术本身尚未完全成熟,性能、安全、扩展三者之间难以完全兼顾,性能的提升直接决定了***吞吐量和交易处理效率。提高区块链性能的主要手段之一便是改善共识机制。
共识机制是指在区块链的分布式***中,多个互不信任的节点遵循一定的预设规则参与共识,进而对交易的有效性达成一致确认。高效的共识机制对不同节点之间的交易快速、可信验证至关重要。传统区块链技术是同步验证,一个块打包出来全网络节点同步,块与块是依照时间有先后顺序的。这种单线程的交易验证制约着区块链***的性能,易造成区块链节点的计算资源浪费。
发明内容
本申请主要解决的技术问题是:提供区块链的共识方法、电子设备和存储介质,能够及时准确地确认最可信的区块链主链,提高区块链上存储的数据的安全性和可信度。
为解决上述技术问题,本申请采用的一个技术方案是:提供一种区块链的共识方法,包括:
检测区块链是否有多条支链;
若是,确定从最新区块回溯至创世区块的多条第一候选主链;
分别计算每条第一候选主链的见证节点数量之和;
基于见证节点数量之和确定区块链主链。
可选地,分别计算每条第一候选主链的见证节点数量之和包括:
计算每条第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和;
基于见证节点数量之和确定区块链主链包括:
确定不同见证节点数量之和最大的第一候选主链为区块链主链。
可选地,计算每条第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和包括:
沿第一候选主链的最新区块向创世区块回溯,获取第一候选主链的部分或全部区块的见证节点并对不同的见证节点进行计数。
可选地,计算每条第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和之前还包括:
建立见证节点列表,见证节点列表至少包括区块链的全部见证节点的数量以及身份信息;
沿第一候选主链的最新区块向创世区块回溯,获取第一候选主链的部分或全部区块的见证节点并对不同的见证节点进行计数包括:
获取第一候选主链的部分或全部区块的见证节点的身份信息,计算不同的身份信息的数量作为第一候选主链的不同见证节点数量之和。
可选地,沿第一候选主链的最新区块向创世区块回溯,获取第一候选主链的部分或全部区块的见证节点并对不同的见证节点进行计数还包括:
若计算第一候选主链的不同见证节点数量之和等于见证节点列表中保存的见证节点的数量,则停止回溯。
可选地,若不同见证节点数量之和最大的第一候选主链有多条,确定多条不同见证节点数量之和最大的第一候选主链为第二候选主链;
分别计算多条第二候选主链的区块数量;
确定区块数量最大的第二候选主链为区块链主链。
可选地,分别计算多条第二候选主链的区块数量包括:
沿第二候选主链的最新区块向创世区块回溯,对第二候选主链的区块进行计数。
可选地,若区块数量最大的第二候选主链有多条,确定多条区块数量最大的第二候选主链为第三候选主链;
分别获取多条第三候选主链的最新区块的哈希值;
确定哈希值最小的最新区块所在的第三候选主链为区块链主链。
为解决上述技术问题,本申请采用的另一个技术方案是:提供一种电子设备,包括处理器和存储器,处理器耦接存储器;其中,
存储器用于存储处理器执行的程序指令;
处理器用于执行程序指令以实现上述本申请区块链的共识方法。
为解决上述技术问题,本申请采用的又一个技术方案是:提供一种存储介质,用于存储程序指令,程序指令能够被处理器运行,以实现上述本申请区块链的共识方法。
本申请的有益效果是:本申请在区块链产生多条支链时,通过确定候选主链并计算每条候选主链的见证节点数量之和,见证节点数量之和可以指示该候选主链中的区块在上链时被验证的次数,基于见证节点数量之和确认区块链主链,能够及时且准确地确认最可信的区块链主链,提高区块链上存储的数据的安全性和可信度。
附图说明
图1是本申请区块链的共识方法第一实施例流程示意图;
图2是本申请区块链的共识方法第二实施例流程示意图;
图3是本申请区块链的共识方法第三实施例流程示意图;
图4是本申请电子设备实施例的结构示意图;
图5是本申请存储介质实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的发明人经过长期的研究发现:在基于区块链的交易过程中,节点对接收到的交易进行打包,并不断进行确认,打上时间戳,以将交易信息上链存储,形成区块链主链,主链上的交易是真实、可信且不可篡改的。但当参与交易的用户数量过多时,交易打包成区块确认频繁,导致在某一时刻会有多个最新区块,使得区块链产生多条支链,形成多条同步异链,影响区块链上存储的数据的安全性和可信度。且后续上链的交易信息若是沿着多个支链继续延伸,不仅不能保证数据的可信度,且导致节点的计算资源浪费,影响节点的工作效率。因此,在将交易信息进行上链的过程中,及时准确地确认最可信的区块链主链尤为重要。为了解决这些问题,本申请提出至少以下实施例。
参阅图1,本申请区块链的共识方法第一实施例包括:
S101:检测区块链是否有多条支链。
在本实施例中,多条是指大于一条。检测区块链是否有多条支链可以由区块链节点来完成。该节点例如是记账节点,在每次将交易信息打包成区块进行上链之前检测区块链是否产生多条支链。例如,区块链节点之间可以通过交换最新区块的区块高度,确认相同区块高度的区块的随机数或是根哈希值是否相同等方式来检测区块链是否产生了多条支链。
在本实施例中,若没有检测到多条支链,则可以继续进行检测,或是不执行其他操作。若检测到区块链存在多条支链,则可以执行以下S102的步骤。
S102:确定从最新区块回溯至创世区块的多条第一候选主链。
本实施例中,若检测到区块链存在多条支链,则可以从最新区块回溯至创世区块,确认从最新区块回溯至创世区块的多条第一候选主链。最新区块可以是当前时间各个支链的区块高度最大的区块。
在一些实施方式中,从最新区块回溯至创世区块例如是根据每个区块的区块头中存储的本区块的哈希值和前一区块的哈希值进行回溯。比如,确认最新区块的区块头中保存的前一区块的哈希值,据此查找到前一区块后,从前一区块的区块头确认再前一区块的哈希值,依次不断向前查找,最终确认多条第一候选主链。
S103:分别计算每条第一候选主链的见证节点数量之和。
在本实施例中,当确认多条第一候选主链后,可以分别计算每条第一候选主链的见证节点数量之和。见证节点例如是区块上链时对区块进行验证的节点。见证节点可以是区块链中的全部节点或者部分节点。例如在联盟链中,可以指定区块链中的某部分节点作为见证点,比如一些信誉度高、贡献较大的节点作为见证节点。见证节点往往是固定的部分节点或全部节点。
计算见证节点数量之和,例如是计算第一候选主链的每一个区块的见证节点数量之和。区块的见证节点数量可以指示该区块在上链时被验证的次数。见证节点数量之和可以指示第一候选主链中的所有区块在上链时被验证的总次数。
在一些实施方式中,每一个区块在上链前被验证过程中,可以记录被验证的次数和/或验证节点的相关信息,区块上链后还可以进行保存以便于后续查验或其他操作。在计算每条第一候选主链的见证节点数量之和时,还可以通过统计第一候选主链的每一个区块被验证的次数和/或验证节点的相关信息来进行计算。
S104:基于见证节点数量之和确定区块链主链。
本实施例中,可以基于见证节点数量之和确定区块链主链。例如,可以选取见证节点数量之和超过设定的阈值的第一候选主链为区块链主链。比如,可以根据区块链的区块高度设置相应的见证节点数量之和的阈值。
在一些实施方式中,在基于见证节点数量之和确认区块链主链时,也可以选择见证节点数量之和最大的第一候选主链为区块链主链。见证节点数量之和越大,则第一候选主链的区块被验证的总次数越高,相应的工作量也越大,可信度越高。
在一些实施方式中,在确定区块链主链后,对于不在区块链主链上的交易信息,可以进行回滚,重新打包上链,保证交易信息的有效性。
本实施例在区块链产生多条支链时,通过确定候选主链并计算每条候选主链的见证节点数量之和,见证节点数量之和可以指示该候选主链中的区块在上链时被验证的次数,基于见证节点数量之和确认区块链主链,能够及时且准确地确认最可信的区块链主链,提高区块链上存储的数据的安全性和可信度。
在本实施例中,步骤S101至S104的顺序是本实施例中的描述顺序,并不限制为本实施例的方法在执行过程中的顺序。在能够实现本方法的前提下,某些步骤可以调换顺序。
参阅图2,本申请区块链的共识方法第二实施例是在本申请区块链的共识方法第一实施例的基础上进一步描述。本实施例与本申请区块链的共识方法第一实施例相同的步骤在此不再赘述。本实施例包括:
S201:检测区块链是否有多条支链。
在本实施例中,若没有检测到多条支链,则可以继续进行检测,或是不执行其他操作。若检测到区块链存在多条支链,则可以执行以下S202的步骤。
S202:确定从最新区块回溯至创世区块的多条第一候选主链。
S203:计算每条第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和。
本实施例中,在分别计算每条第一候选主链的见证节点数量之和时,可以分别计算每条第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和。本实施例中,不同见证节点可以是指位于区块链网络中的不同见证节点,这些见证节点的地址不同。第一候选主链的不同见证节点数量之和越大,则表明第一候选主链的区块被越多的见证节点验证,可信度越高。
在本实施例中,在计算不同见证节点数量之和时,可以选取第一候选主链的部分区块进行计算。例如是选取从最新区块回溯到最初产生支链的区块的第一候选主链的区块进行计算。比如,区块链存在两条第一候选主链,可以选取从各自的最新区块回溯到产生支链的区块的这些区块,分别计算两条第一候选主链各自的这些区块的不同见证节点数量之和。由于在产生支链的区块前,各第一候选主链的区块是相同的,在计算不同见证节点数量之和时,从最初产生支链的区块开始计算,既能保证各第一候选主链的不同见证节点数量之和相对大小不变,且可以减少对产生支链前的区块链的见证节点数量的计算,节省计算工作量,提高计算效率。
在本实施例中,在计算不同见证节点数量之和时,也可以选取第一候选主链的全部区块进行计算。例如,在区块链产生支链形成多条第一候选主链后,这些第一候选主链的区块继续增长,某一时刻可能再次产生新的支链,形成新的第一候选主链。由于在区块链上形成多个支链的交叉点,在计算各第一候选主链的不同见证节点数量之和时情况更加复杂。通过计算第一候选主链的全部区块的不同见证节点数量之和可以有效保证计算结果的准确度,减少因漏算造成计算结果的误差。
可选地,S203还可以包括:沿第一候选主链的最新区块向创世区块回溯,获取第一候选主链的部分或全部个区块的见证节点并对不同的见证节点进行计数。
在本实施方式中,沿第一候选主链的最新区块向创世区块回溯例如是根据每个区块的区块头中存储的本区块的哈希值和前一区块的哈希值进行回溯。从最新区块向创世区块进行回溯,可以完整有序地对第一候选主链的区块的不同见证节点进行计算,避免漏算造成计算结果误差。
在一些实施方式中,当检测到区块链产生存在多条支链后,可以在从最新区块回溯至创世区块以确定多条第一候选主链的过程中同时对区块中的不同见证节点进行计数。如此可以有效节省计算工作量,提高效率。
可选地,在计算每条第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和之前,还可以建立见证节点列表。见证节点列表至少包括区块链的全部见证节点的数量以及身份信息。身份信息例如包括见证节点的地址、签名信息、所属用户信息等相关的信息。身份信息可以用于标识见证节点。见证节点列表还可以被各个区块链节点获得,以便于对见证节点进行监督。
例如,在区块链***中,见证节点可以是由选举产生的一些信誉较高、贡献较大的区块链节点,见证节点负责对要上链的区块进行验证,通过建立见证节点列表,可以将这些见证节点的身份信息保存在见证节点列表中。当见证节点发生变动时,如加入了新的见证节点或是见证节点掉线或退出时,还可以更新见证节点列表。在一些实施方式中,见证节点列表还可以记录这些见证节点的工作量和信誉度,便于管理和监督。
在本实施方式中,建立见证节点列表可以是在计算第一候选主链的不同见证节点数量之和之前完成,例如在上述S203步骤之前完成,或者也可以在S201或S202之前或同时完成。或者,建立见证节点列表也可以是在区块链产生之前完成,见证节点列表还可以被维护更新。
在本实施方式中,对不同的见证节点进行计数时,还可以获取第一候选主链的部分或全部区块的见证节点的身份信息,对不同的见证节点的身份信息进行计数。本实施方式中,见证节点的身份信息可以用于标识见证节点。区块在上链时,可以记录并保存被验证时的见证节点的身份信息。在从最新区块向创世区块回溯时,可以获取每一个区块保存的见证节点的身份信息,并对不同的身份信息进行计数。计算不同的身份信息的数量可以作为第一候选主链的不同见证节点数量之和,以快速准确地确定每个区块的见证节点并完成第一候选主链的不同见证节点数量之和的计算。
在一些实施方式中,当计算第一候选主链的不同见证节点数量之和等于见证节点列表中保存的见证节点的数量时,还可以停止回溯。本实施方式中,见证节点的身份信息标识见证节点,若计算不同见证节点数量之和,也即不同的见证节点的身份信息的数量,等于见证节点列表中保存的见证节点的数量,则表明见证节点列表中的全部见证节点均对该第一候选主链进行验证过。此时,若继续向创世区块回溯计数,见证节点数量之和也不会再增加,通过停止回溯,可以节省计算量,提高计算效率。
S204:确定不同见证节点数量之和最大的第一候选主链为区块链主链。
在本实施例中,在基于见证节点数量之和确认区块链主链时,可以选择不同见证节点数量之和最大的第一候选主链为区块链主链。不同见证节点数量之和越大,则表明第一候选主链的区块被越多的见证节点验证过,如此减少了少数见证节点作弊的可能,相应的区块链上存储的数据的安全性更高,可信度越大。
本实施例中,在检测到区块链产生多条支链时,通过计算每条候选主链的不同见证节点数量之和,不同见证节点数量之和越大,则表明第一候选主链的区块被越多的见证节点验证过,如此减少了少数见证节点作弊的可能,并通过确定不同见证节点数量之和最大的第一候选主链为区块链主链,能够及时且准确地确认最可信的区块链主链,提高区块链上存储的数据的安全性和可信度。
在本实施例中,步骤S201至S204的顺序是本实施例中的描述顺序,并不限制为本实施例的方法在执行过程中的顺序。在能够实现本方法的前提下,某些步骤可以调换顺序。
参阅图3,本申请区块链的共识方法第三实施例是在本申请区块链的共识方法第一实施例的基础上进一步描述。本实施例与本申请区块链的共识方法第一实施例相同的步骤在此不再赘述。本实施例包括:
S301:检测区块链是否有多条支链。
在本实施例中,若没有检测到多条支链,则可以继续进行检测,或是不执行其他操作。若检测到区块链存在多条支链,则可以执行以下S302的步骤。
S302:确定从最新区块回溯至创世区块的多条第一候选主链。
S303:计算每条第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和。
S304:判断不同见证节点数量之和最大的第一候选主链是否有多条。
在本实施例中,多条是指大于一条。不同见证节点数量之和最大表明该第一候选主链被最多的见证节点验证过。不同见证节点数量之和最大的第一候选主链,例如是在计算完成每条第一候选主链的不同见证节点数量之和后,比较每条第一候选主链的不同见证节点数量之和的大小而得到。在本实施例中,可以判断不同见证节点数量之和最大的第一候选主链是一条或是有多条。
在一些实施方式中,当计算第一候选主链的不同见证节点数量之和等于见证节点列表中保存的见证节点的数量时,也可以确定该第一候选主链为不同见证节点数量之和最大的第一候选主链。关于见证节点列表的描述可以参照以上本申请区块链的共识方法第二实施例的描述。
在本实施例中,若判断不同见证节点数量之和最大的第一候选主链只有一条,则可以执行以下S305的步骤。
若判断不同见证节点数量之和最大的第一候选主链有多条,则可以执行以下S306的步骤。
S305:确定不同见证节点数量之和最大的第一候选主链为区块链主链。
在本实施例中,若判断不同见证节点数量之和最大的第一候选主链只有一条,则可以确定该第一候选主链为区块链主链。
可选地,在本步骤确定区块链主链后,可以不再执行以下步骤。
S306:确定多条不同见证节点数量之和最大的第一候选主链为第二候选主链。
在本实施例中,若判断不同见证节点数量之和最大的第一候选主链有多条,则可以确定该多条不同见证节点数量之和最大的第一候选主链为第二候选主链。如此可以筛选出多条第一候选主链中相对可信度更高的第一候选主链,确定为第二候选主链后,便于后续的处理。
本实施例中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
S307:分别计算多条第二候选主链的区块数量。
本实施例中,在确定第二候选主链后,可以分别计算每条第二候选主链的区块数量,并基于第二候选主链的区块数量确定区块链主链。例如,可以通过获取每条第二候选主链的最新区块的区块高度,得到第二候选主链的区块数量。或者,也可以通过对每条第二候选主链的区块进行计数得到区块数量。
例如,S307包括:沿第二候选主链的最新区块向创世区块回溯,对第二候选主链的区块进行计数。
在确定第二候选主链后,可以沿第二候选主链的最新区块向创世区块进行回溯,以对第二候选主链的区块进行计数。例如,可以通过哈希值不断向创世区块回溯,对第二候选主链的每一个区块的哈希值进行计数,得到第二候选主链的区块数量。
在一些实施方式中,当检测到区块链产生多条支链后,在从最新区块回溯至创世区块以确定多条第一候选主链的同时,可以分别计算每条第一候选主链的不同见证节点的数量之和,也可以对每条第一候选主链的区块进行计数。在判断有多条不同见证节点数量之和最大的第一候选主链后,确定多条不同见证节点数量之和最大的第一候选主链为第二候选主链,同时确定相应的第二候选主链的区块数量。如此可以有效减少多次回溯的计算量,提高计算效率。
S308:判断区块数量最大的第二候选主链是否有多条。
本实施例中,区块数量越大,表明第二候选主链上存储的数据越多,数据上链的工作量也越大。区块数量最大的第二候选主链,例如是在计算完成每条第二候选主链的区块数量后,比较每条第二候选主链的区块数量的大小而得到。在本实施例中,可以判断区块数量最大的第二候选主链是一条或是有多条。
在本实施例中,若判断区块数量最大的第二候选主链只有一条,则可以执行以下S309的步骤。
若判断区块数量最大的第二候选主链有多条,则可以执行以下S310的步骤。
S309:确定区块数量最大的第二候选主链为区块链主链。
在本实施例中,若判断区块数量最大的第二候选主链只有一条,则可以确定该第二候选主链为区块链主链。在本步骤中确定的区块链主链具有不同见证节点数量之和最大且区块数量最多的特点。不同见证节点数量最多表明受到最多的见证节点的验证,有效地减少了少数节点作弊的可能性。区块数量最多表明存储的数据越多且工作量越大,有效地保证了多数节点的工作量有效。如此确定的区块链主链有效地提高了区块链上存储的数据的安全性和可信度。
可选地,在本步骤确定区块链主链后,可以不再执行以下步骤。
S310:确定多条区块数量最大的第二候选主链为第三候选主链。
在本实施例中,若判断区块数量最大的第二候选主链有多条,还可以确定该多条区块数量最大的第二候选主链为第三候选主链。如此可以筛选出多条第二候选主链中相对工作量更多的第二候选主链,确定为第二候选主链后,便于后续的处理。
S311:分别获取多条第三候选主链的最新区块的哈希值。
本实施例中,区块链中的每一个区块的区块头保存了本区块的哈希值以及上一个区块的哈希值,通过哈希值的链接形成完整的区块链。在确定多条第三候选主链后,可以从每条第三候选主链的最新区块的区块头中获取对应的最新区块的哈希值。
S312:确定哈希值最小的最新区块所在的第三候选主链为区块链主链。
本实施例中,在确认不同见证节点数量之和最大、区块数量最多的第三候选主链后,可以哈希值最小的最新区块所在的第三候选主链为区块链主链。由于每个区块的哈希值不同,基于哈希值确定区块链主链保证了区块链主链的唯一性。
在本实施例中,对于区块链的多条支链,采取依次按照不同见证节点数量之和最大、区块数量最多、哈希值最小的方法确定区块链主链。不同见证节点数量最多表明受到最多的见证节点的验证,有效地减少了少数节点作弊的可能性。区块数量最多表明存储的数据越多且工作量越大,有效地保证了多数节点的工作量有效。哈希值最小则保证了区块链主链的唯一性,如此有效地提高了区块链上存储的数据的安全性和可信度。
在本实施例中,步骤S301至S312的顺序是本实施例中的描述顺序,并不限制为本实施例的方法在执行过程中的顺序。在能够实现本方法的前提下,某些步骤可以调换顺序、分别进行或是同时进行。本实施例可以与上述本申请区块链的共识方法第一实施例和/或第二实施例结合。
在本申请一个具体的应用场景中,区块链***中至少包括轻量节点、中枢节点和见证节点。其中,轻量节点例如是手机移动终端、PC端等,用于帮助用户完成全网内通信,负责与用户交互,收发交易、消息、支付验证等功能,轻量节点可以连接到中枢节点;中枢节点负责为连接到它的设备提供端到端的加密消息传输通道,并将轻量节点提供的交易进行打包;见证节点负责不间断地共识确认交易和区块,并保存完整的区块链数据。
具体过程如下:用户通过轻量节点发起交易,传输给中枢节点进行全网广播,中枢节点依据用户提供的通证(Token)将交易进行排序,并按照通证价值更高的顺序将交易打包成区块并提交给多个见证节点进行验证,见证节点将验证结果回传至中枢节点,再由中枢节点将确认结果广播并共享至全网。
在一些情况下,当参与交易的用户数量过多时,交易打包成区块确认频繁,导致在某一时刻会有多个最新区块,使得区块链产生多条支链,形成多条同步异链。见证节点在将区块验证上链时,可以预先确认区块链主链,例如是从最新区块回溯至创世区块,依次以不同见证节点数量之和最大、区块数量最多、哈希值最小的策略来确认区块链主链。
例如,在检测到区块链产生多条支链时,从当前最新区块回溯至创世区块,确定多条第一候选主链。在回溯时,可以对每条第一候选主链的不同见证节点进行计数,同时对区块进行计数。回溯完成时,判断不同见证节点数量之和最大的第一候选主链是否有多条。若没有,则确定不同见证节点数量之和最大的第一候选主链为区块链主链。若有多条,则将不同见证节点数量之和最大的多条第一候选主链确定为第二候选主链。进一步判断区块数量最大的第二候选主链是否有多条。若没有,则确定区块数量最大的第二候选主链为区块链主链。若有多条,则将区块数量最大的多条第二候选主链确定为第三候选主链。获取每条第三候选主链的最新区块的哈希值,选取哈希值最小的区块所在的第三候选主链为区块链主链。确定区块链主链后,对于不再区块链主链上的交易合约,还可以进行回滚,重新打包上链至区块链主链。通过该方法,不仅可以及时快速的确定区块链主链,减少区块链节点的资源浪费,保证了多数节点的工作量有效,并且有效地提高了区块链上存储的数据的安全性和可信度。
参阅图4,图4是本申请电子设备实施例的结构示意图。本实施例中电子设备40包括处理器410和存储器420,处理器410耦接存储器420。本实施例中,处理器410通过总线与存储器420连接。在其他实施例中,处理器410也可以直接与存储器420连接;或者也可以通过其他方式连接。在此对处理器410与存储器420之间的连接方式不做限定。
本实施例中电子设备40例如是电脑、平板、手机等设备。电子设备40也可以是区块链网络中的节点,可以参与区块链的交易、通信、记账或存储等功能。电子设备40的存储器420用于存储处理器410执行的程序指令。处理器410用于执行程序指令以至少实现上述本申请区块链的共识方法第一至第三实施例的步骤。
在本实施例中,处理器410还可以称为CPU(Central Processing Unit,中央处理单元)。处理器410可能是一种集成电路芯片,具有信号的处理能力。处理器410还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本实施例中关于电子设备40的更多执行过程和功能等可以参照上述本申请区块链的共识方法第一实施例至第三实施例,在此不再赘述。
参阅图5,图5是本申请存储介质实施例的结构示意图。本实施例中存储介质50用于存储程序指令510,程序指令510能够被处理器运行,以实现上述本申请区块链的共识方法第一实施例至第三实施例的步骤。
本申请区块链的共识方法第一实施例至第三实施例所涉及的方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式方法的全部或部分步骤。而前述的存储介质510包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或包括存储介质的移动终端等其他装置。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种区块链的共识方法,其特征在于,包括:
检测区块链是否有多条支链;
若是,确定从最新区块回溯至创世区块的多条第一候选主链;
分别计算每条所述第一候选主链的见证节点数量之和;
确定不同见证节点数量之和最大的所述第一候选主链为所述区块链主链。
2.根据权利要求1所述的共识方法,其特征在于,
所述分别计算每条所述第一候选主链的见证节点数量之和包括:
计算每条所述第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和。
3.根据权利要求2所述的共识方法,其特征在于,
所述计算每条所述第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和包括:
沿所述第一候选主链的最新区块向创世区块回溯,获取所述第一候选主链的部分或全部区块的见证节点并对不同的见证节点进行计数。
4.根据权利要求3所述的共识方法,其特征在于,
所述计算每条所述第一候选主链的部分或全部区块的见证节点中不同见证节点数量之和之前还包括:
建立见证节点列表,所述见证节点列表至少包括所述区块链的全部见证节点的数量以及身份信息;
所述沿所述第一候选主链的最新区块向创世区块回溯,获取所述第一候选主链的部分或全部区块的见证节点并对不同的见证节点进行计数包括:
获取所述第一候选主链的部分或全部区块的见证节点的身份信息,计算不同的所述身份信息的数量作为所述第一候选主链的不同见证节点数量之和。
5.根据权利要求4所述的共识方法,其特征在于,
所述沿所述第一候选主链的最新区块向创世区块回溯,获取所述第一候选主链的部分或全部区块的见证节点并对不同的见证节点进行计数还包括:
若计算所述第一候选主链的不同见证节点数量之和等于所述见证节点列表中保存的见证节点的数量,则停止回溯。
6.根据权利要求2所述的共识方法,其特征在于,还包括:
若不同见证节点数量之和最大的第一候选主链有多条,确定多条所述不同见证节点数量之和最大的第一候选主链为第二候选主链;
分别计算多条所述第二候选主链的区块数量;
确定区块数量最大的第二候选主链为区块链主链。
7.根据权利要求6所述的共识方法,其特征在于,
所述分别计算多条所述第二候选主链的区块数量包括:
沿所述第二候选主链的最新区块向创世区块回溯,对所述第二候选主链的区块进行计数。
8.根据权利要求7所述的共识方法,其特征在于,还包括:
若所述区块数量最大的第二候选主链有多条,确定多条所述区块数量最大的第二候选主链为第三候选主链;
分别获取多条所述第三候选主链的最新区块的哈希值;
确定哈希值最小的所述最新区块所在的第三候选主链为区块链主链。
9.一种电子设备,其特征在于,包括处理器和存储器,所述处理器耦接所述存储器,其中,
所述存储器用于存储所述处理器执行的程序指令;
所述处理器用于执行所述程序指令以实现如权利要求1~8任一项所述的共识方法。
10.一种存储介质,其特征在于,所述存储介质用于存储程序指令,所述程序指令能够被处理器运行,以实现如权利要求1~8任意一项所述的共识方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910945180.3A CN110784521B (zh) | 2019-09-30 | 2019-09-30 | 区块链的共识方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910945180.3A CN110784521B (zh) | 2019-09-30 | 2019-09-30 | 区块链的共识方法、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110784521A CN110784521A (zh) | 2020-02-11 |
CN110784521B true CN110784521B (zh) | 2022-05-27 |
Family
ID=69385399
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910945180.3A Active CN110784521B (zh) | 2019-09-30 | 2019-09-30 | 区块链的共识方法、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110784521B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324489B (zh) * | 2020-02-18 | 2023-04-07 | 杭州复杂美科技有限公司 | 主链游戏结果展示方法、设备和存储介质 |
CN111683117B (zh) * | 2020-05-11 | 2021-12-10 | 厦门潭宏信息科技有限公司 | 一种方法、设备及存储介质 |
CN111597268B (zh) * | 2020-05-21 | 2023-09-12 | 昆明大棒客科技有限公司 | 一种区块链扩展方法、区块链节点及区块链*** |
CN114884977B (zh) * | 2022-05-09 | 2023-07-04 | 深圳嘉业产业发展有限公司 | 一种基于区块链的数据共享方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
CN108960837A (zh) * | 2018-06-05 | 2018-12-07 | 上海和数软件有限公司 | 区块链共识验证方法、装置及计算机可读存储介质 |
CN109525671A (zh) * | 2018-11-26 | 2019-03-26 | 远光软件股份有限公司 | 基于区块链的数据存储方法、电子设备及存储介质 |
CN109859047A (zh) * | 2019-01-31 | 2019-06-07 | 北京瑞卓喜投科技发展有限公司 | 一种区块链更新方法和区块链更新*** |
CN110059136A (zh) * | 2019-04-17 | 2019-07-26 | 江苏全链通信息科技有限公司 | 基于域名区块链的信息存储方法、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10491378B2 (en) * | 2016-11-16 | 2019-11-26 | StreamSpace, LLC | Decentralized nodal network for providing security of files in distributed filesystems |
CN109240826B (zh) * | 2018-08-15 | 2020-10-23 | 泰链(厦门)科技有限公司 | 多区块链网络中节点共用计算设备时的计算资源分配方法 |
CN109242685B (zh) * | 2018-08-29 | 2020-05-12 | 众安信息技术服务有限公司 | 基于区块链的共识和验证方法及装置 |
CN109409889B (zh) * | 2018-11-13 | 2021-11-12 | 杭州秘猿科技有限公司 | 一种区块链中的区块确定方法、装置及电子设备 |
-
2019
- 2019-09-30 CN CN201910945180.3A patent/CN110784521B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107315786A (zh) * | 2017-06-12 | 2017-11-03 | 腾讯科技(深圳)有限公司 | 业务数据存储方法及装置 |
CN108960837A (zh) * | 2018-06-05 | 2018-12-07 | 上海和数软件有限公司 | 区块链共识验证方法、装置及计算机可读存储介质 |
CN109525671A (zh) * | 2018-11-26 | 2019-03-26 | 远光软件股份有限公司 | 基于区块链的数据存储方法、电子设备及存储介质 |
CN109859047A (zh) * | 2019-01-31 | 2019-06-07 | 北京瑞卓喜投科技发展有限公司 | 一种区块链更新方法和区块链更新*** |
CN110059136A (zh) * | 2019-04-17 | 2019-07-26 | 江苏全链通信息科技有限公司 | 基于域名区块链的信息存储方法、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
主从多链模型下的区块链共识性能研究;徐宇芹;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20190115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110784521A (zh) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110784521B (zh) | 区块链的共识方法、电子设备和存储介质 | |
KR102469267B1 (ko) | 블록 체인 합의 방법, 어카운팅 노드 및 노드 | |
CN108023896B (zh) | 区块同步方法及*** | |
CN106453415B (zh) | 基于区块链的设备认证方法、认证服务器及用户设备 | |
EP4053711A1 (en) | Consensus method for blockchain, and consensus node, electronic device and storage medium | |
CN108876384B (zh) | 一种交易数据的处理方法及装置 | |
US20220272105A1 (en) | Blockchain-based data detection method, apparatus, and computer-readable storage medium | |
CN110838063B (zh) | 基于区块链的交易处理方法、电子设备和存储介质 | |
CN113301114B (zh) | 区块链共识节点选择方法、装置、计算机设备和存储介质 | |
CN111444211A (zh) | 区块链共识节点校验方法、装置、设备以及存储介质 | |
CN113326516A (zh) | 区块链共识方法、区块链***及计算机设备 | |
CN110659905B (zh) | 交易验证方法、装置、终端设备以及存储介质 | |
CN110704464B (zh) | 一种分叉问题的处理方法及装置 | |
CN111010284B (zh) | 一种待共识区块的处理方法、相关装置及区块链*** | |
CN109145651B (zh) | 一种数据处理方法及装置 | |
CN112232957A (zh) | 交易共识方法、装置和电子设备 | |
CN112184436B (zh) | 数据同步方法、电子设备及可读存储介质 | |
CN111061735A (zh) | 一种基于单链区块链的扩容方法及装置 | |
CN111224782B (zh) | 基于数字签名的数据校验方法、智能设备及存储介质 | |
CN111367621A (zh) | 智能合约定时处理方法、区块链节点及存储介质 | |
CN111259428A (zh) | 基于区块链的数据处理方法、装置、节点设备及存储介质 | |
CN116455974A (zh) | 交易缓存及排序的方法、装置、电子设备和存储介质 | |
CN110730186A (zh) | 基于区块链的Token发放方法、记账节点及介质 | |
CN112258184B (zh) | 冻结区块链网络的方法、装置、电子设备及可读存储介质 | |
CN111522876B (zh) | 区块链共识方法、装置和计算机设备、及区块链节点 |
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 |