提交备选区块的方法、装置、节点设备、系统及存储介质与流程

文档序号:21200221发布日期:2020-06-23 19:13阅读:175来源:国知局
提交备选区块的方法、装置、节点设备、系统及存储介质与流程
本申请涉及区块链
技术领域
,特别涉及一种提交备选区块的方法、装置、节点设备、系统及存储介质。
背景技术
:区块链系统是一种分布式的系统,共识机制是区块链系统中不可或缺的一环,通过共识机制可以协助区块链系统中各节点之间保持数据一致,也即解决分布式系统的一致性问题。共识机制简单来说就是一种投票机制,通过节点的投票,选举出用于提交备选区块的节点设备,由该节点设备创建备选区块,提交备选区块进行共识,在该备选区块达成共识后将该备选区块写入区块链。相关技术中,区块链的共识机制可以采用pos(proofofstake,权益证明)方式来实现。由于pos方式在选举出用于提交备选区块的节点设备时采用的是轮询的方式,因此非法用户可以预测出其控制的非法节点设备被选举为用于提交备选区块的节点设备的时机,使得非法用户可以向区块链提交非法的备选区块,实现以较低的成本对区块链发起攻击,从而对区块链造成损失。技术实现要素:本申请实施例提供了一种提交备选区块的方法、装置、节点设备、系统及存储介质,提高了用于提交备选区块的节点设备的不可预测性,从而提升了非法用户对区块链发起攻击的成本,降低了区块链系统的风险。所述技术方案如下:一方面,提供了一种提交备选区块的方法,应用于区块链系统,所述区块链系统包括多个节点设备,所述方法包括:所述多个节点设备基于上一区块对应的第一随机值,从所述多个节点设备中选举出用于提交备选区块的第一节点设备;所述第一节点设备基于可验证随机函数对所述上一区块的可变数据进行处理,得到所述第一节点设备创建的备选区块对应的第二随机值和所述第二随机值对应的验证证明,所述可变数据为随区块的变化而改变的数据;所述第一节点设备将所述第二随机值和所述验证证明写入所述备选区块,将所述备选区块在所述区块链系统中进行广播。在一种可选的实现方式中,所述多个节点设备基于上一区块对应的第一随机值,从所述多个节点设备中选举出第一节点设备,包括:所述多个节点设备分别基于目标算法对所述第一随机值进行处理,得到至少一个选举值;所述多个节点设备将满足目标条件的选举值作为目标选举值;所述多个节点设备将节点设备标识与所述目标选举值对应的节点设备作为所述第一节点设备。在一种可选的实现方式中,所述目标条件包括下述任一种:任一选举值在所述至少一个选举值中出现比例高于目标比例阈值;任一选举值在目标阈值范围。在一种可选的实现方式中,所述第一节点设备基于可验证随机函数对所述上一区块的可变数据进行处理,得到所述第一节点设备创建的备选区块对应的第二随机值和所述第二随机值对应的验证证明,包括:所述第一节点设备对所述可变数据进行哈希计算,得到哈希值;所述第一节点设备将所述哈希值和所述第一节点设备的私钥作为所述可验证随机函数的输入,得到所述第二随机值和所述验证证明。在一种可选的实现方式中,所述多个节点设备中的其他节点设备为用于验证备选区块的第二节点设备;所述方法还包括:对于任一第二节点设备,所述第二节点设备根据所述第一节点设备的唯一标识和所述第二节点设备存储的本地信息,验证所述第一节点设备的合法性和所述备选区块的正确性;所述第二节点设备对生成的第一验证结果进行签名,广播签名后的所述第一验证结果;所述第二节点设备接收其他第二节点设备广播的第二验证结果,对所述第二验证结果进行投票共识。在一种可选的实现方式中,所述第二节点设备验证所述备选区块的正确性,包括:所述第二节点设备解析所述备选区块,获取所述备选区块的区块内容、所述第一随机值和所述验证证明;所述第二节点设备验证所述区块内容的正确性;所述第二节点设备根据所述可验证随机函数验证所述第二随机值和所述验证证明是否对应。另一方面,提供了一种提交备选区块的方法,其特征在于,应用于区块链系统中的第一节点设备,所述方法包括:根据待上链数据创建备选区块;基于可验证随机函数对上一区块的可变数据进行处理,得到所述备选区块对应的第二随机值和所述第二随机值对应的验证证明,所述可变数据为随区块的变化而改变的数据;将所述第二随机值和所述验证证明写入所述备选区块,将所述备选区块在区块链系统中进行广播。另一方面,提供了一种验证备选区块的方法,其特征在于,应用于区块链系统中的第二节点设备,所述方法包括:接收所述区块链系统中用于提交备选区块的第一节点设备广播的备选区块;根据本地信息和所述第一节点设备的唯一标识,验证所述第一节点设备的合法性和所述备选区块的正确性;对所述备选区块的第一验证结果进行签名,广播签名后的所述第一验证结果。另一方面,提供了一种提交备选区块的装置,其特征在于,应用于区块链系统中的节点设备,所述装置包括:区块创建模块,用于根据待上链数据创建备选区块;数据处理模块,用于基于可验证随机函数对上一区块的可变数据进行处理,得到所述备选区块对应的第二随机值和所述第二随机值对应的验证证明,所述可变数据为随区块的变化而改变的数据;所述数据处理模块,还用于将所述第二随机值和所述验证证明写入所述备选区块;区块广播模块,用于将所述备选区块在区块链系统中进行广播。在一种可选的实现方式中,所述数据处理模块,还用于对所述可变数据进行哈希计算,得到哈希值;将所述哈希值和私钥作为所述可验证随机函数的输入,得到所述第二随机值和所述验证证明。另一方面,提供了一种验证备选区块的装置,其特征在于,应用于区块链系统中的节点设备,所述装置包括:接收模块,用于接收第一节点设备广播的备选区块;验证模块,用于根据本地信息和所述第一节点设备的唯一标识,验证所述第一节点设备的合法性和所述备选区块的正确性;签名模块,用于若所述备选区块通过验证,对第一验证结果进行签名,广播签名后的所述第一验证结果。在一种可选的实现方式中,所述验证模块,还用于根据所述第一节点设备的唯一标识,验证所述第一节点设备的合法性;根据所述本地信息中所述第一节点设备的公钥对所述备选区块进行解析,得到所述备选区块的区块内容、第二随机值和验证证明;验证所述区块内容的正确性;根据所述公钥和可验证随机函数,验证所述第二随机值和所述验证证明是否对应。在一种可能的实现方式中,所述装置还包括:接收所述区块链系统中其他第二节点设备广播的第二验证结果,对所述第二验证结果进行投票共识。另一方面,提供了一种节点设备,其特征在于,所述节点设备包括处理器和存储器,所述存储器用于存储至少一段程序代码,所述至少一段程序代码由所述处理器加载并执行以实现本申请实施例中的提交备选区块的方法。另一方面,提供了一种节点设备,其特征在于,所述节点设备包括处理器和存储器,所述存储器用于存储至少一段程序代码,所述至少一段程序代码由所述处理器加载并执行以实现本申请实施例中的验证备选区块的方法。另一方面,提供了一种区块链系统,其特征在于,所述区块链系统包括多个节点设备,所述节点设备用于实现本申请实施例所述的提交备选区块的方法,或者,所述节点设备用于实现本申请实施例所述的验证备选区块的方法。另一方面,提供了一种存储介质,所述存储介质中存储有至少一段程序代码,所述至少一段程序代码用于执行本申请实施例中的提交备选区块的方法,或者,本申请实施例中的验证备选区块的方法。本申请实施例提供的技术方案带来的有益效果是:在本申请实施例中,通过上一区块对应的第一随机值来选举出用于提交备选区块的第一节点设备,由该第一节点设备基于可验证随机函数生成备选区块对应的第二随机值,实现了将可变数据和可验证随机函数相结合来选举用于提交备选区块的节点设备,显著提高了用于提交备选区块的节点设备的不可预测性,从而提升了非法用户对区块链发起攻击的成本,降低了区块链系统的风险。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本申请实施例提供的一种区块链系统的系统架构图;图2是根据本申请实施例提供的一种区块链的结构示意图;图3是根据本申请实施例提供的一种新区块产生的流程图;图4是根据本申请实施例提供的一种区块链系统中节点设备的功能架构图;图5是根据本申请实施例提供的一种提交备选区块的方法流程图;图6是根据本申请实施例提供的一种提交备选区块的装置的框图;图7是根据本申请实施例提供的一种验证备选区块的装置的框图;图8是根据本申请实施例提供的一种计算机设备的结构示意图;图9是根据本申请实施例提供的一种终端的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。本申请中术语“至少一个”是指一个或者多个,“多个”的含义是指两个或两个以上,例如,多个节点设备是指两个或两个以上的节点设备。以下,对本申请涉及的术语进行解释。区块链(英文:blockchain):是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后,记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。共识机制(英文:consensusmechanism):是区块链系统中实现不同节点设备之间建立信任、获取权益的数学算法。在区块链系统中,通过特殊节点设备的投票,如本申请实施例中用于验证备选区块的节点设备的投票,可以在很短的时间内完成对交易的验证和确认,对一笔交易,如果利益不相干的若干个节点设备能够达成共识,就可以认为系统中的全部节点设备对此也能够达成共识。智能合约(英文:smartcontract):是一种旨在以信息化方式传播、验证或执行合同的计算机协议。区块链系统中的各个节点设备根据特定条件自动执行的合约程序,可以对链上存储的数据进行操作,是用户与区块链进行交互、利用区块链实现业务逻辑的重要途径。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本,它允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。公钥(英文:publickey)与私钥(英文:privatekey):是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密数据、验证数字签名等。通过这种算法能够确保得到的密钥对是唯一的,使用这种密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密,例如,用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。工作量证明(proof-of-work,pow)是一种对应服务与资源滥用、或是阻断服务攻击的经济对策。一般是要求用户进行一些耗时适当的复杂运算,并且答案能被服务方快速验算,以此耗用的时间、设备与能源做为担保成本,以确保服务与资源是被真正的需求所使用。此一技术成为了加密货币的主流共识机制之一。权益证明(proof-of-stake,pos)与要求证明人执行一定量的计算工作不同,权益证明要求证明人提供一定数量加密货币的所有权即可。权益证明机制是根据每个节点设备拥有代币的比例和时间,依据算法等比例地降低节点设备的挖矿难度,从而加快了寻找随机数的速度。这种共识机制可以缩短达成共识所需的时间,但本质上仍然需要网络中的节点设备进行挖矿运算。本申请实施例提供的提交备选区块的方法,可以应用于区块链系统中用于共识的节点设备中选举出用于提交备选区块的节点设备,由该节点设备提交备选区块的场景。在区块链系统中,可以通过共识机制来选举出每轮用于提交备选区块的节点设备。常用的共识机制有工作量证明、权益证明等。其中对于采用工作量证明选举出用于提交备选区块的节点设备的方式,虽然区块链中的节点设备都可以参与挖矿,但由于矿池的存在,变得越来越中心化,且耗能高效率低。而对于采用权益证明通过轮询选举用于提交备选区块的节点设备的方式,非法用户可以预测出其控制的非法节点设备被选举为用于提交备选区块的节点设备的时机,从而以较低的成本对区块链系统进行攻击。下面介绍一下本申请实施例提供的提交备选区块的方法的主要步骤。区块链系统中,将生成的区块添加到区块链中的过程可以称为一轮,区块链系统中通常包括多个用于共识的节点设备,通过用于共识的节点设备达成共识的区块才可以添加到区块链中。在每一轮对区块进行共识之前,从用于共识的节点设备中选举出一个用于提交备选区块的第一节点设备,剩余的共识节点设备为用于验证备选区块的第二节点设备。第一节点设备负责提出备选区块并在区块链系统中进行广播。之后是共识过程:第二节点设备负责验证第一节点设备的身份以及备选区块的内容,如果备选区块通过验证,则第二节点设备将验证结果签名后,在区块链系统中广播。第二节点设备还用于对其他第二节点设备广播的验证结果进行共识,当达成共识后,上述备选区块即可被添加到区块链中。然后多个节点设备再选举出下一轮的用于提交备选区块的节点设备和用于验证备选区块的节点设备。本申请实施例提供了基于上述区块链技术实现的区块链系统100,以下对该区块链系统的系统架构进行介绍。参见图1,该区块链系统中可以包括多个节点设备101,此外,区块链系统还可以包括客户端。节点设备101可以是网络中的任意形式的计算设备,如服务器、主机、用户终端等。节点设备101与节点设备101之间能够共享数据。其中,节点设备101之间可以基于点对点(peertopeer,p2p)协议,建立p2p网络。该p2p协议是一个运行在传输控制协议(transmissioncontrolprotocol,tcp)协议之上的应用层协议。每个节点设备101在进行正常工作的过程中,可以接收到输入信息,并基于接收到的输入信息维护该区块链系统内的共享数据。为了保证区块链系统内的信息互通,区块链系统中的每个节点设备之间可以存在信息连接,节点设备之间可以通过上述信息连接进行信息传输。例如,当区块链系统中的任意节点设备接收到输入信息时,区块链系统中的其他节点设备便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链系统中全部节点设备上存储的数据均一致。对于区块链系统中的每个节点设备,均具有与其对应的节点设备标识,而且区块链系统中的每个节点设备均可以存储有区块链系统中其他节点设备的节点设备标识,以便后续根据其他节点设备的节点设备标识,将生成的区块广播至区块链系统中的其他节点设备。每个节点设备中可维护一个如下表1所示的节点设备标识列表,将节点设备名称和节点设备标识对应存储至该节点设备标识列表中。其中,节点设备标识可为ip(internetprotocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点设备的信息,表1中仅以ip地址为例进行说明。表1节点设备名称节点设备标识节点设备1117.114.151.174节点设备2117.116.189.145……节点设备n119.123.789.258区块链系统中的每个节点设备均存储一条相同的区块链。区块链由多个区块组成,参见图2,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。在生成区块链中的各个区块时,参见图3,区块链所在的节点设备在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:sha256(sha256(version+prev_hash+merkle_root+ntime+nbits+x))<target其中,sha256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;target为特征值阈值,该特征值阈值可以根据nbits确定得到。这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点设备根据区块链系统中其他节点设备的节点设备标识,将新生成的区块分别发送给其所在的区块链系统中的其他节点设备,由其他节点设备对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。以下,对节点设备101的功能架构进行介绍。参见图4,节点设备101从功能上可以划分为硬件层、中间层、操作系统层和应用层,涉及的具体功能可以如下:1)路由,节点设备具有的基本功能,用于支持节点设备之间的通信。节点设备除具有路由功能外,还可以具有以下功能:2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点设备,供其他节点设备在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。例如,应用实现的业务包括:2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点设备,其他节点设备验证成功后,作为承认交易有效的响应,将交易的记录数据写入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点设备,其他节点设备验证有效后,作为承认账目数据有效的响应,将记录数据写入临时区块中,还可以向发起操作的节点设备发送确认。2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点设备提交的记录数据。图5是根据本申请实施例提供的一种提交备选区块的方法流程图,如图5所示,在本申请实施例中以应用于区块链系统为例进行说明。该区块链系统包括多个节点设备,该提交备选区块的方法包括以下步骤:501、多个节点设备基于上一区块对应的第一随机值,从多个节点设备中选举出用于提交备选区块的第一节点设备。在本申请实施例中,该多个节点设备可以为区块链系统中用于共识的节点设备。上一区块为最近写入区块链系统的备选区块,也即区块链上位于链尾的区块。当该多个节点设备中任一节点设备提交的备选区块通过共识,将该备选区块写入该区块链系统之后,多个节点设备可以基于该通过共识的备选区块对应的第一随机值来选举下一个用于提交备选区块的第一节点设备。其中,第一随机值由提交上一区块的节点设备基于可验证随机函数确定,确定方式可参见下述第二随机值的确定方式。例如,区块链系统中已有99个区块,用于提交备选区块的节点设备提交的备选区块通过了共识,则该备选区块成为了区块链系统中第100个区块,区块链系统中的多个用于共识的节点设备可以基于该第100个区块对应的第一随机值,从该多个节点设备中选举出用于提交可能成为第101个区块的备选区块的第一节点设备。在一种可选的实现方式中,每个节点设备均具有唯一的节点设备标识,多个节点设备可以根据该第一随机值,确定一个节点设备标识,将该节点设备标识对应的节点设备作为第一节点设备。相应的,本步骤可以为:多个节点设备分别基于目标算法对第一随机值进行处理,得到至少一个选举值,多个节点设备将满足目标条件的选举值作为目标选举值,多个节点设备将节点设备标识与该目标选举值对应的节点设备作为第一节点设备。其中,该目标算法可以为任意将第一随机值转换为另一在一定范围内的值的算法,如可以为根据第一随机值生成另一个随机值的算法、还可以为对第一随机值选取固定位数后取模的算法,本申请实施例对目标算法不做限定。例如,区块链系统中有100个用于共识的节点设备,这些节点设备的节点设备标识为1~100,则节点设备根据第一随机值生成的选举值应该在1~100之间,这样才可以从节点设备中选举出第一节点设备。若目标算法为选取第一随机值的前8位,然后对100取模,则每个节点设备基于该目标算法对该第一随机值进行处理后得到的选举值应该都相同。每个节点设备在计算得到选举值后,将该选举值在区块链系统中广播,接收其他节点设备广播的选举值。如果不存在非法节点设备,则多个节点设备收到的选举值均为同一个值。而在存在至少一个非法节点设备时,该至少一个非法节点设备为了使自己成为第一节点设备,会广播其节点设备标识作为选举值,或者广播同一个非法节点设备的选举值,此时多个节点设备收到的选举值为多个值。由于非法节点设备在用于共识的节点设备中占比较少,因此,多个节点设备可以将任一选举值在至少一个选举值中出现比例高于目标比例阈值作为目标条件,来确定目标选举值,该目标比例阈值可以为80%、85%、90%等,本申请实施例对此不进行限制。若目标算法为根据第一随机值生成另一个随机值的算法,则每个节点设备生成的随机值可能不同,则目标条件可以为任一选举值在目标阈值范围,如1~100,而将最先生成的满足目标条件的选举值作为目标选举值。502、第一节点设备根据待上链数据创建备选区块。在本申请实施例中,选举出的第一节点设备可以将待添加到区块链中的数据打包生成为区块,该区块即为备选区块。503、第一节点设备基于可验证随机函数对上一区块的可变数据进行处理,得到备选区块对应的第二随机值和第二随机值对应的验证证明,该可变数据为随区块的变化而改变的数据。在本申请实施例中,第一节点设备可以获取上一区块,也即最近添加到区块链系统的中的区块的可变数据,该可变数据随着区块的变化而改变,如该可变数据可以包括当前的区块高度、提交上一区块的节点设备的节点设备标识、上一区块对应的第一随机值等,本申请实施例对可变数据不进行限制。上述可验证随机函数可以根据节点设备的私钥和输入参数生成一组可验证的伪随机数以及对应的证明。在一种可选的实现方式中,第一节点设备可以对上述可变数据作哈希计算,将得到的哈希值作为可验证随机函数的输入参数。相应的,本步骤可以为:第一节点设备对上述可变数据进行哈希计算,得到哈希值,第一节点设备将该哈希值与该第一节点设备的私钥作为该可验证随机函数的输入,得到第二随机值和第二随机值对应的验证证明。其他节点设备可以根据第一节点设备的公钥和该验证证明来对第二随机值进行验证。例如,第一节点设备获取区块链系统中第100个区块的区块高度、提交第100个区块的节点设备的节点设备标识、第100个区块的stateroot(状态根,用于节点设备之间进行状态的互相验证)以及第100个区块的第一随机值。第一节点设备对上述获取到的数据进行哈希计算,得到哈希值,第一节点设备将该哈希值和第一节点设备的私钥输入vrf(verifiablerandomfunction,可验证随机函数)函数,运行vrf算法生成新的随机值以及对应的验证证明,将该随机值作为第二随机值。504、第一节点设备将第二随机值和验证证明写入备选区块,将该备选区块在区块链系统中进行广播。在本申请实施例中,第一节点设备可以将上述第二随机值和对应的验证证明写入在步骤502创建的备选区块中,然后该第一节点设备通过其私钥对该备选区块进行签名,将签名后的备选区块在区块链系统中进行广播,上述多个节点设备中的其他节点设备即可对该备选区块进行验证。也即上述多个节点设备中除第一节点设备外的其他节点设备为用于验证备选区块的第二节点设备。例如,第一节点设备的节点设备标识为32,该第一节点设备可以将该备选区块发送给区块链系统中节点设备标识为1~31以及节点设备标识为33~100的节点设备,由这99个节点设备对该备选区块分别进行验证。505、对于任一用于验证备选区块的第二节点设备,该第二节点设备接收第一节点设备广播的备选区块。在本申请实施例中,以任一用于验证备选区块的第二节点设备为例进行说明,该第二节点设备可以接收上述第一节点设备发送的备选区块。例如,以节点设备编号为45的第二节点设备为例,节点设备编号为32的第一节点设备向该节点设备编号为45的第二节点设备发送上述备选区块,节点设备编号为45的第二节点设备在接收到该节点编号为32的第一节点设备发送的备选区块后,可以执行步骤506。506、第二节点设备根据本地信息和第一节点设备的唯一标识,验证第一节点设备的合法性和备选区块的正确性。在本申请实施例中,第二节点设备的本地信息中存储有当前用于提交备选区块的节点设备的节点设备标识,以及其他节点设备的公钥。该第二节点设备在可以根据该第一节点设备的唯一标识,验证该第一节点设备的合法性,如果该第一节点设备的唯一标识与第二节点设备中存储的当前用于提交备选区块的节点设备的节点设备标识一致,则表示该第一节点设备合法。该第二节点设备可以根据本地信息中存储的第一节点设备的公钥对该备选区块进行解析,得到该备选区块的区块内容、第二随机值和验证证明。第二节点设备可以先验证区块内容的正确性,然后根据上述公钥和可验证随机函数,验证上述第二随机值和验证证明是否对应。例如,节点设备标识为45的第二节点设备的本地信息中存储有被选举为用于提交备选区块的节点设备的节点设备标识32,与第一节点设备的节点设备标识相一致,则确定第一节点设备为合法的提交备选区块的节点。第二节点设备从本地信息中获取节点设备标识为32的节点设备的公钥,根据该公钥对经过第一节点设备的私钥签名的备选区块进行解析。先验证区块内容是否正确,然后基于可验证随机函数和公钥,结合验证证明对第二随机值进行逆向运算,如果逆向运算的结果为上述第一随机值,则第二随机值与验证证明对应,且均合法。507、第二节点设备对生成的第一验证结果进行签名,广播签名后的第一验证结果。在本申请实施例中,第二节点设备对备选区块验证的结果为第一验证结果,该第二节点设备可以通过其私钥对该第一验证结果进行签名,以便于其他节点验证该第一验证结果是否为该第二节点设备生成的第一验证结果。第二节点设备将签名后的第一验证结果进行广播,发送给其他用于验证备选区块的第二节点设备。例如,节点设备标识为45的第二节点设备将该第一验证结果发送给区块链系统中节点设备标识为1~31、节点设备标识为33~44以及节点设备标识为46~100的节点设备,由这98个节点设备基于该第一验证结果进行投票共识。508、第二节点设备接收区块链系统中其他第二节点设备广播的第二验证结果,对该第二验证结果进行投票共识。在本申请实施例中,第二节点设备还可以接受区块链系统中其他第二节点设备发送的第二验证结果,如果其生成的第一验证结果和其他第二节点设备发送的第二验证结果与相一致,则该第二节点设备可以投票同意该第二验证结果;如果不一致,则该第二节点设备可以投票反对该第二验证结果。如果多个第二节点设备对同一验证结果达成了一致,则该验证结果即为备选区块的共识结果。例如,节点设备标识为45的第二节点设备的第一验证结果为通过验证,其他第二节点设备中有超过第一目标比例的节点设备的第二验证结果与该第一验证结果相一致,则多个节点设备达成共识,即上述备选区块通过验证。若节点设备标识为45的第二节点设备的第一验证结果为不通过验证,其他第二节点设备中有超过第二目标比例的节点设备的第二验证结果与该第一验证结果相一致,则多个节点设备达成共识,即上述备选区块不通过验证。需要说明的是,在备选区块达成共识之后,第一节点设备可以将该备选区块写入区块链系统中,然后上述多个节点设备可以基于该备选区块对应的第二随机值,重新选举出用于提交备选区块的节点设备。在本申请实施例中,通过上一区块对应的第一随机值来选举出用于提交备选区块的第一节点设备,由该第一节点设备基于可验证随机函数生成备选区块对应的第二随机值,实现了将可变数据和可验证随机函数相结合来选举用于提交备选区块的节点设备,显著提高了用于提交备选区块的节点设备的不可预测性,从而提升了非法用户对区块链发起攻击的成本,降低了区块链系统的风险。图6是根据本申请实施例提供的一种提交备选区块的装置的框图。该装置应用于区块链系统中的节点设备,用于执行上述提交备选区块的方法执行时的步骤,参见图6所示,装置包括:区块创建模块601、数据处理模块602和区块广播模块603。区块创建模块601,用于根据待上链数据创建备选区块;数据处理模块602,用于基于可验证随机函数对上一区块的可变数据进行处理,得到备选区块对应的第二随机值和第二随机值对应的验证证明,可变数据为随区块的变化而改变的数据;数据处理模块602,还用于将第二随机值和验证证明写入备选区块;区块广播模块603,用于将备选区块在区块链系统中进行广播。在一种可选的实现方式中,数据处理模块602,还用于对可变数据进行哈希计算,得到哈希值;将哈希值和私钥作为可验证随机函数的输入,得到第二随机值和验证证明。在本申请实施例中,通过上一区块对应的第一随机值来选举出用于提交备选区块的第一节点设备,由该第一节点设备基于可验证随机函数生成备选区块对应的第二随机值,实现了将可变数据和可验证随机函数相结合来选举用于提交备选区块的节点设备,显著提高了用于提交备选区块的节点设备的不可预测性,从而提升了非法用户对区块链发起攻击的成本,降低了区块链系统的风险。图7是根据本申请实施例提供的一种验证备选区块的装置的框图。该装置应用于区块链系统中的节点设备,用于执行上述验证备选区块的方法执行时的步骤,参见图7,装置包括:接收模块701、验证模块702和签名模块703。接收模块701,用于接收第一节点设备广播的备选区块;验证模块702,用于根据本地信息和第一节点设备的唯一标识,验证第一节点设备的合法性和备选区块的正确性;签名模块703,用于若备选区块通过验证,对第一验证结果进行签名,广播签名后的第一验证结果。在一种可选的实现方式中,验证模块702,还用于根据第一节点设备的唯一标识,验证第一节点设备的合法性;根据本地信息中第一节点设备的公钥对备选区块进行解析,得到备选区块的区块内容、第二随机值和验证证明;验证区块内容的正确性;根据公钥和可验证随机函数,验证第二随机值和验证证明是否对应。在一种可能的实现方式中,装置还包括:接收区块链系统中其他第二节点设备广播的第二验证结果,对第二验证结果进行投票共识。在本申请实施例中,通过上一区块对应的第一随机值来选举出用于提交备选区块的第一节点设备,由该第一节点设备基于可验证随机函数生成备选区块对应的第二随机值,实现了将可变数据和可验证随机函数相结合来选举用于提交备选区块的节点设备,显著提高了用于提交备选区块的节点设备的不可预测性,从而提升了非法用户对区块链发起攻击的成本,降低了区块链系统的风险。需要说明的是:上述实施例提供的装置在运行应用程序时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。在本申请实施例中,节点设备可以被实施为终端或者计算机设备,当被实施为终端时,可以由该终端实现上述的提交备选区块的方法或验证备选区块的方法所执行的操作,当被实施为计算机设备时,可以由该计算机设备实现上述的提交备选区块的方法或验证备选区块的方法所执行的操作,也可以由该计算机设备和终端的交互来实现上述提交备选区块的方法或验证备选区块的方法所执行的操作。图8是根据本申请实施例提供的一种计算机设备的结构示意图,该计算机设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)801和一个或一个以上的存储器802,其中,所述存储器802中存储有至少一条指令,所述至少一条指令由所述处理器801加载并执行以实现上述各个方法实施例提供的方法。当然,该计算机设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备还可以包括其他用于实现设备功能的部件,在此不做赘述。图9是根据本申请实施例提供的区块链系统中的终端900的结构框图。该终端900可以是:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。通常,终端900包括有:处理器901和存储器902。处理器901可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器901可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所执行以实现本申请中方法实施例提供的提交备选区块的方法或验证备选区块的方法。在一些实施例中,终端900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。具体地,外围设备包括:射频电路904、显示屏905、摄像头组件906、音频电路907、定位组件908和电源909中的至少一种。外围设备接口903可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器901和存储器902。在一些实施例中,处理器901、存储器902和外围设备接口903被集成在同一芯片或电路板上;在一些其他实施例中,处理器901、存储器902和外围设备接口903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。射频电路904用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路904包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路904还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。显示屏905用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器901进行处理。此时,显示屏905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905可以为一个,设置终端900的前面板;在另一些实施例中,显示屏905可以为至少两个,分别设置在终端900的不同表面或呈折叠设计;在再一些实施例中,显示屏905可以是柔性显示屏,设置在终端900的弯曲表面上或折叠面上。甚至,显示屏905还可以设置成非矩形的不规则图形,也即异形屏。显示屏905可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。摄像头组件906用于采集图像或视频。可选地,摄像头组件906包括前置摄像头和后置摄像头。通常,前置摄像头设置在节点设备的前面板,后置摄像头设置在节点设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。音频电路907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路907还可以包括耳机插孔。定位组件908用于定位终端900的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件908可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。电源909用于为终端900中的各个组件进行供电。电源909可以是交流电、直流电、一次性电池或可充电电池。当电源909包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。在一些实施例中,终端900还包括有一个或多个传感器910。该一个或多个传感器910包括但不限于:加速度传感器911、陀螺仪传感器912、压力传感器913、指纹传感器914、光学传感器915以及接近传感器916。加速度传感器911可以检测以终端900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器911可以用于检测重力加速度在三个坐标轴上的分量。处理器901可以根据加速度传感器911采集的重力加速度信号,控制显示屏905以横向视图或纵向视图进行用户界面的显示。加速度传感器911还可以用于游戏或者用户的运动数据的采集。陀螺仪传感器912可以检测终端900的机体方向及转动角度,陀螺仪传感器912可以与加速度传感器911协同采集用户对终端900的3d动作。处理器901根据陀螺仪传感器912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。压力传感器913可以设置在终端900的侧边框和/或显示屏905的下层。当压力传感器913设置在终端900的侧边框时,可以检测用户对终端900的握持信号,由处理器901根据压力传感器913采集的握持信号进行左右手识别或快捷操作。当压力传感器913设置在显示屏905的下层时,由处理器901根据用户对显示屏905的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。指纹传感器914用于采集用户的指纹,由处理器901根据指纹传感器914采集到的指纹识别用户的身份,或者,由指纹传感器914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器901授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器914可以被设置终端900的正面、背面或侧面。当终端900上设置有物理按键或厂商logo时,指纹传感器914可以与物理按键或厂商logo集成在一起。光学传感器915用于采集环境光强度。在一个实施例中,处理器901可以根据光学传感器915采集的环境光强度,控制显示屏905的显示亮度。具体地,当环境光强度较高时,调高显示屏905的显示亮度;当环境光强度较低时,调低显示屏905的显示亮度。在另一个实施例中,处理器901还可以根据光学传感器915采集的环境光强度,动态调整摄像头组件906的拍摄参数。接近传感器916,也称距离传感器,通常设置在终端900的前面板。接近传感器916用于采集用户与终端900的正面之间的距离。在一个实施例中,当接近传感器916检测到用户与终端900的正面之间的距离逐渐变小时,由处理器901控制显示屏905从亮屏状态切换为息屏状态;当接近传感器916检测到用户与终端900的正面之间的距离逐渐变大时,由处理器901控制显示屏905从息屏状态切换为亮屏状态。本领域技术人员可以理解,图9中示出的结构并不构成对终端900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。本申请实施例还提供了一种区块链系统,其特征在于,该区块链系统包括多个节点设备,该节点设备用于实现本申请实施例的提交备选区块的方法,或者,该节点设备用于实现本申请实施例的验证备选区块的方法。本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质应用于区块链系统中的节点设备,该计算机可读存储介质中存储有至少一段程序代码,该至少一段程序代码用于被处理器执行并实现本申请实施例中的提交备选区块的方法中节点设备所执行的操作,或者该至少一段程序代码用于被处理器执行并实现本申请实施例中的验证备选区块的方法中节点设备所执行的操作。本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1