CN110599173B - 区块链的共识节点确定方法、装置、设备及存储介质 - Google Patents
区块链的共识节点确定方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110599173B CN110599173B CN201910890951.3A CN201910890951A CN110599173B CN 110599173 B CN110599173 B CN 110599173B CN 201910890951 A CN201910890951 A CN 201910890951A CN 110599173 B CN110599173 B CN 110599173B
- Authority
- CN
- China
- Prior art keywords
- node
- random number
- nodes
- participating
- participated
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请公开了一种区块链的共识节点确定方法、装置、设备及存储介质,属于区块链技术领域。所述方法包括:接收多个参选节点发送的包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据的交易数据,对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验,当校验通过时,根据每个参选节点生成的随机数和抵押权益值,确定每个参选节点的选中概率,并基于该选中概率,从多个参选节点中确定下一轮的共识节点。如此,根据每个参选节点的随机数和抵押权益值确定每个参选节点的选中概率,保证了结果的随机性,避免出现同一个节点被选为共识节点的问题。
Description
技术领域
本申请涉及区块链技术领域,特别涉及一种区块链的共识节点确定方法、装置、设备及存储介质。
背景技术
区块链系统一般包括多个节点,该多个节点中包括共识节点,该共识节点可以用于产生区块,并在区块链系统中进行区块广播。在实施中,若一直由固定的节点作为共识节点,共识节点可能会被恶意攻击,从而给区块链系统带来安全隐患。因此,每隔一段时间需要从区块链系统的参选节点中重新确定下一轮的共识节点,其中,参选节点是指在区块链系统中进行了权益抵押的节点。
相关技术中,可以由本轮的共识节点生成随机数,然后根据该随机数确定下一轮的共识节点。例如,可以预先对参选节点进行编号,建立参选节点与编号之间的索引映射关系,将生成的随机数转换为64位的二进制数,可以根据前8位确定一个数值作为第一个编号,根据索引映射关系,将该第一个编号对应的参选节点确定为第一个共识节点,再根据下一个8位确定一个数值作为第二个编号,根据索引映射关系确定第二个共识节点,以此类推,可以确定8个共识节点。
但这种方法在生成随机数时,可能出现多次生成的随机数的数值大小比较接近,如此将随机数转换为二进制数时,导致多个随机数的高位上的数字相同,进而通过高位上的数字确定共识节点时可能出现多次将同一个参选节点确定为共识节点,导致该参选节点可能会被恶意攻击,使得区块链系统存在安全问题。
发明内容
本申请提供了一种区块链的共识节点确定方法、装置、设备及存储介质,可以解决相关技术的多次将同一个参选节点确定为共识节点,导致该参选节点被恶意,进而给区块链系统带来安全隐患的问题。所述技术方案如下:
一方面,提供了一种区块链的共识节点确定方法,应用于区块链系统中本轮的一个共识节点,所述方法包括:
接收多个参选节点发送的交易数据,每个参选节点的交易数据包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据,所述多个参选节点是指所述区块链系统中进行权益抵押的节点;
对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验;
当校验通过时,根据每个参选节点生成的随机数和抵押权益值,确定每个参选节点的选中概率;
基于每个参选节点的选中概率,从所述多个参选节点中确定下一轮的共识节点。
另一方面,提供了一种区块链的共识节点确定装置,应用于区块链系统中本轮的一个共识节点,所述装置包括:
接收模块,用于接收多个参选节点发送的交易数据,每个参选节点的交易数据包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据,所述多个参选节点是指所述区块链系统中进行权益抵押的节点;
校验模块,用于对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验;
第一确定模块,用于当校验通过时,根据每个参选节点生成的随机数和抵押权益值,确定每个参选节点的选中概率;
第二确定模块,用于基于每个参选节点的选中概率,从所述多个参选节点中确定下一轮的共识节点。
另一方面,提供了一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现上述所述的区块链的共识节点确定方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现上述所述的区块链的共识节点确定方法。
另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的区块链的共识节点确定方法。
本申请提供的技术方案至少可以带来以下有益效果:
在本申请实施例中,一个共识节点接收多个参选节点发送的交易数据,每个参选节点的交易数据包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据,该多个参选节点是指区块链系统中进行权益抵押的节点,为了确定该交易数据是否合法,可以对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验,当校验通过时,可以认为该交易数据合法,可以根据每个参选节点生成的随机数和抵押权益值,确定每个参选节点的选中概率,如此,基于随机数和抵押权益值两个数值对参选节点的选中概率进行确定,保证了结果的随机性,然后基于每个参选节点的选中概率,从多个参选节点中确定下一轮的共识节点。也即是,本申请中对随机数进行验证保证了随机数不能被修改,而根据每个参选节点的随机数和抵押权益值确定每个参选节点的选中概率,保证了结果的随机性,避免出现同一个节点被选为共识节点的问题,提高了区块链系统的安全性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种实施环境的示意图;
图2是根据一示例性实施例示出的一种区块结构的示意图;
图3是根据一示例性实施例示出的一种区块链的共识节点确定方法的流程图;
图4是根据一示例性实施例示出的一种区块链的共识节点确定装置的结构示意图;
图5是根据一示例性实施例示出的一种设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例提供的区块链的共识节点确定方法进行详细的解释说明之前,先对本申请实施例提供的实施环境进行介绍。
请参见图1,图1是根据一示例性实施例示出的一种实施环境的示意图。该实施环境包括区块链系统,该区块链系统可以包括多个节点,该多个节点可以分为共识节点101和参选节点102,共识节点可以用于产生区块,参选节点为在区块链系统中进行了权益抵押的节点。其中,该多个节点可以为接入网络中的任意形式的计算设备,如服务器、用户终端等。
该多个节点之间形成P2P(Peer To Peer,点对点)网络,P2P协议是一个运行在TCP(Transmission Control Protocol,传输控制协议)协议之上的应用层协议。在该区块链系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图1示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
参见图2,图2是根据一示例性实施例示出的一种区块结构(Block Structure)的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。
接下来对本申请实施例提供的区块链的共识节点确定方法进行详细的解释说明。请参考图3,图3是根据一示例性实施例示出的一种区块链的共识节点确定方法的流程图,该方法应用于上述图1所示的实施环境中,该方法可以由区块链系统中本轮的一个共识节点来实现。该方法可以包括如下步骤:
步骤301:接收多个参选节点发送的交易数据,每个参选节点的交易数据包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据,该多个参选节点是指区块链系统中进行权益抵押的节点。
其中,随机数校验数据可以用来验证随机数的正确性。
其中,该参选节点可以包括本轮的共识节点和除了本轮的共识节点之外的其他节点。本轮的共识节点是指当前周期内当选的共识节点。
在一些实施例中,每个参选节点可以基于随机数种子生成随机数和随机校验数据,将随机数和随机校验数据打包成交易数据,并且在该交易数据中进行签名,然后将包括节点签名、随机数和随机数校验数据的交易数据在全网进行广播,即将自己的交易数据发送给区块链系统中的其他节点,区块链系统中的其他节点接收到多个参选节点发送的交易数据,本轮的共识节点自然也接收到多个参选节点发送的交易数据。
作为一种示例,每个参选节点可以通过VRF(Verifiable Random Function,可验证随机函数)算法生成对应的随机数和随机数校验数据。示例性地,对于一个候选节点来说,可以将随机数种子和该候选节点的私钥作为VRF算法的输入,VRF算法可以输出随机数和对应的随机数校验数据。
其中,VRF算法可以根据私钥和输入参数信息产生可验证的随机数以及随机数校验数据。也即是,通过VRF算法可以生成真正随机、无法被预测且可验证的随机函数。
需要说明的是,每个节点的私钥可以在节点注册的时候由数据管理中心生成,数据管理中心将该节点的私钥发送给该节点,该节点将自己的私钥进行存储;或者,每个节点的私钥可以由该节点自己生成并存储;或者,每个节点的私钥可以由多个节点根据预先设定的加密系统共同合作生成。
进一步地,共识节点可以通过DKG(Distributed Key Generation,分布式秘钥生成)或BLS算法,生成随机数种子。
其中,DKG协议是一种分布式秘钥生成协议,可以由多个节点共同合作生成公钥和私钥,并且将公钥以公开的形式广播出去,以便区块链系统上的所有节点可以存储有该公钥,但私钥只发送给对应的节点,由对应的节点进行存储。也就是说,区块链系统中的每个节点都可以存储有公钥,但每个节点只能存储自己对应的私钥,无法得知其他节点的私钥。
其中,BLS算法是一种可以实现签名聚合和秘钥聚合的算法,可以将多个秘钥聚合成一个秘钥,将多个签名聚合成一个签名。
在本申请实施例中,可以使用DKG或BLS算法,生成随机数种子。
作为一种示例,一个共识节点可以获取自身基于预设消息生成的第一签名信息,并获取其他共识节点基于该预设消息生成的第二签名信息,然后通过BLS算法将第一签名信息和第二签名信息聚合,得到聚合后的签名信息,根据聚合后的签名信息,可以生成随机数种子,由其他共识节点对该随机数种子进行验证,获取其他共识节点对该随机数种子的合法性验证结果,当基于其他共识节点的合法性验证结果确定该随机数种子合法时,所有共识节点将该随机数种子进行存储。
示例性地,其他共识节点可以通过公钥对该随机数种子的合法性进行验证。
作为另一种示例,还可以通过智能合约生成随机数种子。共识节点可以对智能合约上的数据分别签名,然后将签名数据组合成随机数种子。
需要说明的是,随机数种子是共识节点生成的,只有共识节点存储有该随机数种子,而参选节点没有存储。因此,参选节点要基于随机数种子生成随机数,需要先存储该随机数种子。
在一些实施例中,可以由共识节点中的出块节点在生成区块时将随机数种子存储在区块中,并对该区块进行签名,然后由其他共识节点对该区块进行共识,共识完成后出块节点将该区块存储在自己所配置的区块链中,并将该区块在全网广播,参选节点接收到该区块后对该区块的合法性进行验证,当验证成功后可以将该区块存储在自身所配置的区块链上,并使用该区块中存储的随机数种子。
其中,共识节点可以分为出块节点和验证节点。出块节点为在本轮的一段时间内可以产生区块的节点,除了出块节点之外的其他共识节点都是验证节点。多个共识节点可以按照一定的顺序轮流进行出块,即出块节点不是共识节点中一个确定的节点,在不同的时间段,或产生的区块数量达到不同高度时,出块节点可能是不同的。验证节点用于对出块节点产生的区块进行验证,主要验证区块的合法性和区块中存储数据的正确性。
作为一种示例,出块节点可以在生成区块时将随机数种子存储在区块中,并将自己的节点签名存储在区块中,验证节点可以根据公钥对该节点签名进行验证,确定该区块是否合法,并且根据自身存储的随机数种子对该区块中的随机数种子进行验证,确定该区块中存储的随机数种子是否正确。当公钥与该节点签名相同时,可以确定该区块合法,当验证节点自身存储的随机数种子与该区块中的随机数种子相同时,可以确定该随机数种子是正确的。
作为一种示例,当确定该区块合法且该随机数种子正确时,验证节点可以在该区块上进行签名,出块节点将该区块存储至所配置的区块链中,并将该区块在全网广播。参选节点接收到该区块后,可以根据验证节点的签名的数量检验区块的合法性。当验证节点的签名的数量大于节点数量阈值时,可以认为该区块合法,参选节点将该区块存储至所配置的区块链中。
其中,节点数量阈值可以由区块链系统根据共识机制确定,若区块链系统使用的共识机制不同,节点数量阈值也可能不同,本申请实施例对此不做限定。
如此,参选节点可以直接从所配置的区块链上获取随机数种子,并基于随机数种子和自己的私钥生成随机数和随机数校验数据。
作为另一种示例,参选节点接收到该区块后,若验证该区块不合法,可以不存储该区块,等待下一个合法区块的到来。
在一些实施例中,一个共识节点可以基于随机数种子和私钥,生成本端的随机数和随机数验证数据,基于本端的节点签名、所生成的随机数和随机数验证数据生成交易数据,在区块链系统中广播所生成的交易数据。
也就是说,区块链系统中的共识节点也要基于随机数种子和自己的私钥生成随机数和对应的随机数验证数据,并且将自己的节点签名、所生成的随机数和随机数验证数据生成交易数据,在区块链系统中广播自己的交易数据,以使得区块链系统中的其他节点都可以接收到自己的交易数据。
需要说明的是,区块链系统中的每个节点都基于随机数种子和自己的私钥生成了自己对应的随机数和随机数验证数据,并且将自己的节点签名、自己生成的随机数和自己生成的随机数验证数据打包成交易数据,将自己的交易数据在区块链系统中广播,以使得区块链系统中的其他节点都可以接收到自己的交易数据。
也就是说,区块链系统中的每个节点都广播了自己的交易数据,也都接收到了其他节点的交易数据。
步骤302:对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验。
共识节点接收到参选节点的交易数据后,为了避免交易数据出现问题,需要对参选节点的交易数据进行校验,包括对每个参选节点的节点签名进行校验、以及对每个参选节点生成的随机数进行校验。
在一些实施例中,可以根据每个参选节点的公钥,对每个参选节点的节点签名的合法性进行校验,以及根据每个参选节点的随机数验证数据和公钥,对每个参选节点的随机数的正确性进行校验,当确定每个参选节点的节点签名合法且对应的随机数正确时,可以确定校验通过。
作为一种示例,每个参选节点可以用自己的私钥对交易数据进行签名,共识节点可以根据每个参选节点的公钥对该签名进行校验,可以确定该交易数据是否是公钥对应的参选节点发送的,若是,可以认为该节点签名合法,若不是,可以认为该节点签名不合法,不对该交易数据进行后续操作。
作为一种示例,共识节点根据每个参选节点的公钥和每个参选节点生成的随机数校验数据对随机数进行验证时,可以将每个参选节点的公钥、每个参选节点生成的随机数校验数据和每个参选节点生成的随机数输入VRF算法中,该VRF算法可以直接输出校验结果。若校验结果为正确,可以认为该随机数是正确的;若校验结果为错误,可以认为该随机数不正确,可能被篡改或者出现了其他问题,不对该交易数据进行后续操作。
作为一种示例,当确定每个参选节点的节点签名合法且对应的随机数正确时,可以确定校验通过;当确定每个参选节点的节点签名不合法和/或每个参选节点对应的随机数不正确时,可以确定校验未通过。
也就是说,要确定校验通过,必须同时满足每个参选节点的节点签名合法和每个节点对应的随机数正确两个条件,而只要在这两个条件中有至少一个不满足,就可以确定校验未通过。
其中,对随机数的正确性进行校验的VRF算法与上述基于随机数种子和私钥生成随机数和随机数校验数据的VRF算法可以为相同的算法,只是算法的输入不同,导致算法的输出不同,进而实现的功能也不同。
步骤303:当校验通过时,根据每个参选节点生成的随机数和抵押权益值,确定每个参选节点的选中概率。
其中,抵押权益值由节点自身生成,不能随意更改,并且写在智能合约中向全网广播,因此,区块链系统中的每个节点都存储由其他候选节点的抵押权益值。
作为一种示例,当校验通过时,可以将每个参选节点生成的随机数和抵押权益值作为输入,输入到抽签算法中,通过抽签算法可以输出每个参选节点的选中概率。抽签算法可以保证结果的公平性与随机性,且结果无法预测。
在一些实施例中,可以对每个参选节点生成的随机数进行哈希计算,得到每个参选节点的随机数的哈希值,然后将每个参选节点的随机数的哈希值与第一指定数值相除,得到每个参选节点对应的第一数值,再基于每个参选节点对应的第一数值和抵押权益值,确定每个参选节点的选中概率。
示例性地,该第一指定数值可以为32位最大整数,以二进制表示为11.....11,共32个1,转化为十进制的数即为4294967295;或者,该第一指定数值可以由抽签算法默认设置,并且可以根据实际需要进行调整,本申请实施例对此不做限定。
作为一种示例,对于每个参选节点,可以根据下述公式(1)确定第一数值。
Random=float64(hash(随机数))/MaxUint32 (1)
其中,Random表示第一数值,hash(随机数)表示随机数的哈希值,float64(hash(随机数))表示将随机数的哈希值转换为64位浮点数,MaxUint32表示第一指定数值。
然后再根据每个参选节点的第一数值和每个参选节点的抵押权益值进行计算,确定每个参选节点的选中概率。
作为一种示例,基于每个参选节点对应的第一数值和抵押权益值确定每个参选节点的选中概率可以包括:将每个参选节点的抵押权益值转化为指定位数的浮点数,确定转化后的抵押权益值的倒数,得到第二数值,将第二数值与第二指定数值相乘,得到第三数值,将以每个参选节点对应的第一数值为底数、以第三数值为指数的数值作为每个参考节点的选中概率。
其中,第二指定数值可以由抽签算法默认设置,也可以根据实际需要进行调整,本申请实施例对此不做限定。
示例性地,可以根据下述公式(2)对每个参选节点的选中概率进行计算。
Chance=Random(1.0/float64(抵押权益值))*n (2)
其中,Chance表示每个参选节点的选中概率,1.0/float64(抵押权益值)表示第二数值,n表示第二指定数值,1.0/float64(抵押权益值)*n表示第三数值。
示例性地,第二指定数值n可以为1000000000。
步骤304:基于每个参选节点的选中概率,从多个参选节点中确定下一轮的共识节点。
作为一种示例,可以预先设置接收交易数据的截止时间,当达到该截止时间时,共识节点可以停止接收交易数据,并基于每个参选节点的选中概率,从多个参选节点中确定下一轮的共识节点中。
作为一种示例,可以基于每个参选节点的选中概率,按照选中概率从大到小的顺序对多个参选节点进行排序,将排序后的多个参选节点中的前数量阈值个参选节点确定为下一轮的共识节点。
其中,该数量阈值可以由区块链系统默认设置,也可以由用户根据实际需要进行设置,本申请实施例对此不做限定。
需要说明的是,本申请实施例仅是以上述将前数量阈值个参选节点确定为下一轮的共识节点为例,在实际实现中,还可以根据其他的方法确定下一轮的共识节点。
示例性地,还可以预先设置概率阈值,基于每个参选节点的选中概率,将选中概率大于或等于概率阈值的参选节点确定为下一轮的共识节点。
其中,概率阈值可以由区块链系统默认设置,也可以由用户根据实际需要进行设置,本申请实施例对此不做限定。
进一步地,每个共识节点都根据自己确定的每个参选节点的选中概率确定下一轮的共识节点。出块节点将自己选择的下一轮的共识节点的节点标识存储在生成的区块中,由其他共识节点进行共识,若达成共识,可以将该区块存储至所配置的区块链中,并将该区块在全网广播,若未达成共识,可以由其他共识节点将自己确定的下一轮共识节点的节点标识存储在生成的区块中进行共识,直到有节点数量阈值个共识节点对区块进行签名,确定该区块合法,才可以将该区块进行全网广播。参选节点收到该区块后,可以根据区块中存储的区块标识确定自己是否被选中。若是,在下一轮开始时,被选中的候选节点可以接替当前轮共识节点称为新的共识节点。
在本申请实施例中,一个共识节点接收多个参选节点发送的交易数据,每个参选节点的交易数据包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据,该多个参选节点是指区块链系统中进行权益抵押的节点,为了确定该交易数据是否合法,可以对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验,当校验通过时,可以认为该交易数据合法,可以根据每个参选节点生成的随机数和抵押权益值,确定每个参选节点的选中概率,如此,基于随机数和抵押权益值两个数值对参选节点的选中概率进行确定,保证了结果的随机性,然后基于每个参选节点的选中概率,从多个参选节点中确定下一轮的共识节点。也即是,本申请中对随机数进行验证保证了随机数不能被修改,而根据每个参选节点的随机数和抵押权益值确定每个参选节点的选中概率,保证了结果的随机性,避免出现同一个节点被选为共识节点的问题,提高了区块链系统的安全性。
图4是根据一示例性实施例示出的一种区块链的共识节点确定装置的结构示意图,该装置可以由软件、硬件或者两者的结合实现成为设备的部分或者全部。请参考图4,该装置包括:接收模块401、校验模块402、第一确定模块403和第二确定模块404。
接收模块401,用于接收多个参选节点发送的交易数据,每个参选节点的交易数据包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据,所述多个参选节点是指所述区块链系统中进行权益抵押的节点;
校验模块402,用于对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验;
第一确定模块403,用于当校验通过时,根据每个参选节点生成的随机数和抵押权益值,确定每个参选节点的选中概率;
第二确定模块404,用于基于每个参选节点的选中概率,从所述多个参选节点中确定下一轮的共识节点。
在本申请一种可能的实现方式中,该第一确定模块403用于:
对每个参选节点生成的随机数进行哈希计算,得到每个参选节点的随机数的哈希值;
将每个参选节点的随机数的哈希值与第一指定数值相除,得到每个参选节点对应的第一数值;
基于每个参选节点对应的第一数值和抵押权益值,确定每个参选节点的选中概率。
在本申请一种可能的实现方式中,该第一确定模块403用于:
将每个参选节点的抵押权益值转化为指定位数的浮点数;
确定转化后的抵押权益值的倒数,得到第二数值;
将所述第二数值与第二指定数值相乘,得到第三数值;
将以每个参选节点对应的第一数值为底数、以所述第三数值为指数的数值作为每个参考节点的选中概率。
在本申请一种可能的实现方式中,该第二确定模块404用于:
基于每个参选节点的选中概率,按照选中概率从大到小的顺序对所述多个参选节点进行排序;
将排序后的多个参选节点中的前数量阈值个参选节点确定为所述下一轮的共识节点。
在本申请一种可能的实现方式中,该校验模块402用于:
根据每个参选节点的公钥,对每个参选节点的节点签名的合法性进行校验,以及根据每个参选节点的随机数验证数据和公钥,对每个参选节点的随机数的正确性进行校验;
当确定每个参选节点的节点签名合法且对应的随机数正确时,确定校验通过。
在本申请一种可能的实现方式中,该第二确定模块404还用于:
通过分布式秘钥生成DKG或BLS算法,生成随机数种子;
基于所述随机数种子和私钥,生成本端的随机数和随机数验证数据;
基于本端的节点签名、所生成的随机数和随机数验证数据生成交易数据,在所述区块链系统中广播所生成的交易数据。
在本申请实施例中,一个共识节点接收多个参选节点发送的交易数据,每个参选节点的交易数据包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据,该多个参选节点是指区块链系统中进行权益抵押的节点,为了确定该交易数据是否合法,可以对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验,当校验通过时,可以认为该交易数据合法,可以根据每个参选节点生成的随机数和抵押权益值,确定每个参选节点的选中概率,如此,基于随机数和抵押权益值两个数值对参选节点的选中概率进行确定,保证了结果的随机性,然后基于每个参选节点的选中概率,从多个参选节点中确定下一轮的共识节点。也即是,本申请中对随机数进行验证保证了随机数不能被修改,而根据每个参选节点的随机数和抵押权益值确定每个参选节点的选中概率,保证了结果的随机性,避免出现同一个节点被选为共识节点的问题,提高了区块链系统的安全性。
需要说明的是:上述实施例提供的区块链的共识节点确定装置在确定区块链的共识节点时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的区块链的共识节点确定装置与区块链的共识节点确定方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图5是本申请实施例提供的一种设备的结构示意图。设备500包括中央处理单元(CPU,Central Processing unit)501、包括随机存取存储器(RAM,Random Access Memory)502和只读存储器(ROM,Read-Only Memory)503的系统存储器504,以及连接系统存储器504和中央处理单元501的系统总线505。设备500还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O,(Input/Output系统)506,和用于存储操作系统513、应用程序514和其他程序模块515的大容量存储设备507。
基本输入/输出系统506包括有用于显示信息的显示器508和用于用户输入信息的诸如鼠标、键盘之类的输入设备509。其中显示器508和输入设备509都通过连接到系统总线505的输入输出控制器510连接到中央处理单元501。基本输入/输出系统506还可以包括输入输出控制器510以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器510还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备507通过连接到系统总线505的大容量存储控制器(未示出)连接到中央处理单元501。大容量存储设备507及其相关联的计算机可读介质为设备500提供非易失性存储。也就是说,大容量存储设备507可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器)、EEPROM(Electrically Erasable Programmable read only memory,带电可擦可编程只读存储器)、闪存或其他固态存储其技术,CD-ROM(Compact Disc Read-Only Memory,只读光盘)、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器504和大容量存储设备507可以统称为存储器。
根据本申请的各种实施例,设备500还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即设备500可以通过连接在系统总线505上的网络接口单元511连接到网络512,或者说,也可以使用网络接口单元511来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。
在一些实施例中,还提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述实施例中区块链的共识节点确定方法。例如,所述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
值得注意的是,本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。所述计算机指令可以存储在上述计算机可读存储介质中。
也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的区块链的共识节点确定方法。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种区块链的共识节点确定方法,其特征在于,应用于区块链系统中本轮的一个共识节点,所述方法包括:
接收多个参选节点发送的交易数据,每个参选节点的交易数据包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据,所述多个参选节点是指所述区块链系统中进行权益抵押的节点;
对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验;
当校验通过时,对每个参选节点生成的随机数进行哈希计算,得到每个参选节点的随机数的哈希值;将每个参选节点的随机数的哈希值与第一指定数值相除,得到每个参选节点对应的第一数值;基于每个参选节点对应的第一数值和抵押权益值,确定每个参选节点的选中概率;
基于每个参选节点的选中概率,从所述多个参选节点中确定下一轮的共识节点。
2.如权利要求1所述的方法,其特征在于,所述基于每个参选节点对应的第一数值和抵押权益值,确定每个参选节点的选中概率,包括:
将每个参选节点的抵押权益值转化为指定位数的浮点数;
确定转化后的抵押权益值的倒数,得到第二数值;
将所述第二数值与第二指定数值相乘,得到第三数值;
将以每个参选节点对应的第一数值为底数、以所述第三数值为指数的数值作为每个参考节点的选中概率。
3.如权利要求1-2任一项所述的方法,其特征在于,所述基于每个参选节点的选中概率,从所述多个参选节点中确定下一轮的共识节点,包括:
基于每个参选节点的选中概率,按照选中概率从大到小的顺序对所述多个参选节点进行排序;
将排序后的多个参选节点中的前数量阈值个参选节点确定为所述下一轮的共识节点。
4.如权利要求1所述的方法,其特征在于,所述对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验,包括:
根据每个参选节点的公钥,对每个参选节点的节点签名的合法性进行校验,以及根据每个参选节点的随机数验证数据和公钥,对每个参选节点的随机数的正确性进行校验;
当确定每个参选节点的节点签名合法且对应的随机数正确时,确定校验通过。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
通过分布式秘钥生成DKG或BLS算法,生成随机数种子;
基于所述随机数种子和私钥,生成本端的随机数和随机数验证数据;
基于本端的节点签名、所生成的随机数和随机数验证数据生成交易数据,在所述区块链系统中广播所生成的交易数据。
6.一种区块链的共识节点确定装置,其特征在于,应用于区块链系统中本轮的一个共识节点,所述装置包括:
接收模块,用于接收多个参选节点发送的交易数据,每个参选节点的交易数据包括每个参选节点的节点签名、以及每个参选节点基于随机数种子生成的随机数和随机数校验数据,所述多个参选节点是指所述区块链系统中进行权益抵押的节点;
校验模块,用于对每个参选节点的节点签名进行校验,以及基于每个参选节点生成的随机校验数据对每个参选节点生成的随机数进行校验;
第一确定模块,用于当校验通过时,对每个参选节点生成的随机数进行哈希计算,得到每个参选节点的随机数的哈希值;将每个参选节点的随机数的哈希值与第一指定数值相除,得到每个参选节点对应的第一数值;基于每个参选节点对应的第一数值和抵押权益值,确定每个参选节点的选中概率;
第二确定模块,用于基于每个参选节点的选中概率,从所述多个参选节点中确定下一轮的共识节点。
7.一种设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现如权利要求1至5任一所述的区块链的共识节点确定方法。
8.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由处理器加载并执行以实现如权利要求1至5任一所述的区块链的共识节点确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910890951.3A CN110599173B (zh) | 2019-09-20 | 2019-09-20 | 区块链的共识节点确定方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910890951.3A CN110599173B (zh) | 2019-09-20 | 2019-09-20 | 区块链的共识节点确定方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110599173A CN110599173A (zh) | 2019-12-20 |
CN110599173B true CN110599173B (zh) | 2021-08-17 |
Family
ID=68861545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910890951.3A Active CN110599173B (zh) | 2019-09-20 | 2019-09-20 | 区块链的共识节点确定方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110599173B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111062058B (zh) * | 2019-12-26 | 2022-04-15 | 深圳天玑数据有限公司 | 基于区块链的密钥对处理方法、装置、终端及可读存储介质 |
CN111125259B (zh) * | 2019-12-31 | 2023-08-18 | 预言机(重庆)科技有限公司 | 一种基于区块链底层的随机种子提供方法 |
CN111147242B (zh) * | 2019-12-31 | 2023-10-17 | 百度在线网络技术(北京)有限公司 | 区块生成方法、装置、电子设备和存储介质 |
CN111371744B (zh) * | 2020-02-21 | 2022-06-03 | 重庆邮电大学 | 一种基于分布式密钥的拜占庭容错共识方法 |
CN111443895A (zh) * | 2020-03-12 | 2020-07-24 | 杭州泛链科技有限公司 | 一种应用于区块链的可验证随机数生成方法 |
CN111090892B (zh) * | 2020-03-24 | 2021-04-30 | 吕晟珉 | 一种基于vrf和门限签名的区块链共识方法和装置 |
CN111447274B (zh) * | 2020-03-26 | 2023-06-02 | 北京京东振世信息技术有限公司 | 节点选取方法及装置 |
CN113472561A (zh) * | 2020-03-31 | 2021-10-01 | 华为技术有限公司 | 一种区块链数据处理方法及其设备 |
CN111523890B (zh) * | 2020-04-23 | 2024-06-07 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、存储介质及设备 |
CN111884807B (zh) * | 2020-07-13 | 2021-10-26 | 腾讯科技(深圳)有限公司 | 基于区块链的物品预约方法、装置、设备以及介质 |
CN112101940A (zh) * | 2020-09-16 | 2020-12-18 | 上海万向区块链股份公司 | 用区块链实施的随机可验证样本选取系统 |
CN112435120B (zh) * | 2020-11-05 | 2023-01-31 | 德州职业技术学院(德州市技师学院) | 一种区块链数据监管方法和系统 |
CN112636904B (zh) * | 2020-11-17 | 2023-08-22 | 中信银行股份有限公司 | 随机数生成与验证方法、装置、电子设备及可读存储介质 |
CN116208344A (zh) * | 2020-11-18 | 2023-06-02 | 北京数码视讯科技股份有限公司 | 共识方法、共识网络、电子设备及可读存储介质 |
CN112257095B (zh) * | 2020-11-23 | 2022-03-22 | 中电万维信息技术有限责任公司 | 一种联盟链共识节点的选择方法 |
CN113301114B (zh) * | 2021-04-13 | 2022-03-04 | 广东电网有限责任公司 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
CN113221163B (zh) * | 2021-04-29 | 2023-05-23 | 深圳大学 | 一种训练模型的方法及系统 |
CN113676331B (zh) * | 2021-08-12 | 2022-06-21 | 云南电网有限责任公司信息中心 | 一种基于区块链的sdn架构轻量级共识方法及sdn交换机 |
CN113935737B (zh) * | 2021-12-15 | 2022-10-25 | 支付宝(杭州)信息技术有限公司 | 基于区块链的随机数生成方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109743173A (zh) * | 2018-12-20 | 2019-05-10 | 弗洛格(武汉)信息科技有限公司 | 区块链中出块节点确定方法、区块验证方法及区块链系统 |
CN110022231A (zh) * | 2019-03-26 | 2019-07-16 | 广州供电局有限公司 | 区块链共识推举方法 |
CN110049029A (zh) * | 2019-04-04 | 2019-07-23 | 矩阵元技术(深圳)有限公司 | 共识节点确定方法、装置、计算机设备和存储介质 |
CN110198213A (zh) * | 2019-04-01 | 2019-09-03 | 上海能链众合科技有限公司 | 一种基于秘密共享随机数共识算法的系统 |
CN110213059A (zh) * | 2019-06-20 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 一种随机数的生成方法、生成装置及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102417067B1 (ko) * | 2017-12-08 | 2022-07-05 | 한국전자통신연구원 | 블록 체인 네트워크의 노드에서 수행되는 블록 생성 방법 및 장치 |
CN109981281B (zh) * | 2019-01-14 | 2021-11-26 | 北京领主科技有限公司 | 基于区块链提案随机共识确定候选元素的方法及装置 |
-
2019
- 2019-09-20 CN CN201910890951.3A patent/CN110599173B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109743173A (zh) * | 2018-12-20 | 2019-05-10 | 弗洛格(武汉)信息科技有限公司 | 区块链中出块节点确定方法、区块验证方法及区块链系统 |
CN110022231A (zh) * | 2019-03-26 | 2019-07-16 | 广州供电局有限公司 | 区块链共识推举方法 |
CN110198213A (zh) * | 2019-04-01 | 2019-09-03 | 上海能链众合科技有限公司 | 一种基于秘密共享随机数共识算法的系统 |
CN110049029A (zh) * | 2019-04-04 | 2019-07-23 | 矩阵元技术(深圳)有限公司 | 共识节点确定方法、装置、计算机设备和存储介质 |
CN110213059A (zh) * | 2019-06-20 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 一种随机数的生成方法、生成装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110599173A (zh) | 2019-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110599173B (zh) | 区块链的共识节点确定方法、装置、设备及存储介质 | |
CN111445333B (zh) | 区块生成方法、装置、计算机设备以及存储介质 | |
CN111427957B (zh) | 区块链投票信息校验方法、装置、设备以及存储介质 | |
CN111464518B (zh) | 一种跨链通信数据的发送、验证方法及装置 | |
CN111314067B (zh) | 区块存储方法、装置、计算机设备及存储介质 | |
CN110602217B (zh) | 基于区块链的联盟管理方法、装置、设备及存储介质 | |
KR20180014534A (ko) | 블록체인 기반 트랜잭션 검증 시스템 및 그 방법 | |
CN111291060A (zh) | 一种管理区块链节点的方法、装置及计算机可读介质 | |
CN111523890A (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
CN111311211A (zh) | 一种基于区块链的数据处理方法以及设备 | |
CN110717832A (zh) | 基于区块链的清洁能源交易方法、系统、装置及存储介质 | |
CN110601896B (zh) | 一种基于区块链节点的数据处理方法以及设备 | |
JP2017157910A (ja) | 電子抽選システム及び電子抽選方法 | |
CN110968644A (zh) | 一种数据处理方法以及设备 | |
CN111416709B (zh) | 基于区块链系统的投票方法、装置、设备及存储介质 | |
CN110738783A (zh) | 投票数据的更新系统、方法、装置、设备及可读存储介质 | |
CN110866289A (zh) | 基于区块链的数据处理方法、装置、服务器及存储介质 | |
CN112953978A (zh) | 一种多重签名认证方法、装置、设备及介质 | |
CN111461881A (zh) | 数据管理方法、装置、计算机设备及存储介质 | |
CN112712452A (zh) | 基于区块链的审批信息处理方法和装置 | |
CN111488626A (zh) | 基于区块链的数据处理方法、装置、设备及介质 | |
CN110599270A (zh) | 电子票据生成方法、装置和计算机设备 | |
CN111274597B (zh) | 一种数据处理方法以及设备 | |
CN110941840A (zh) | 一种数据处理方法、系统及终端 | |
CN110599384A (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 |