超级节点投票和选举方法、装置和网络节点与流程

文档序号:16515735发布日期:2019-01-05 09:37阅读:968来源:国知局
超级节点投票和选举方法、装置和网络节点与流程
本发明涉及区块链
技术领域
,尤其涉及一种超级节点投票和选举方法、装置和网络节点。
背景技术
:区块链(blockchain),也被称之为分布式数据记录账本,其主要特点是去中心化以及数据不可篡改,有效地保障了交易记录的安全性和公开透明性。目前的区块链主要包括联盟链(consortiumblockchain)、私有链(privateblockchain)和公有链(publicblockchain)。其中,公有链,或称公共区块链,是指全世界任何节点都可读取、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。其中,公有链中的共识过程是指通过该链中所有节点对一笔交易进行见证并达成共识的过程,若是所有节点都达成共识承认该交易,那么就会将该交易记录到该链中。但是,由于公有链是人人均可参与的,一次共识过程所需要经历的节点数量众多,从而一次共识过程就需要消耗大量的时间,因而针对此问题提出了超级节点的概念,超级节点作为节点代表,在一次共识过程中只需要选举出的超级节点达成共识即可,从而大大缩短了共识过程所需的时间,使得区块链系统的效率更高。因此,超级节点在区块链中有着至关重要的作用,目前对于如何使得选举出的超级节点更具代表性,现有技术中并没有给出十分有效的解决方法。技术实现要素:本发明实施例提供一种超级节点投票和选举方法、装置和网络节点,用于根据节点间的投票进行超级节点的选举。第一方面,本发明实施例提供了一种超级节点选举方法,该方法包括:接收来自其它投票节点的投票请求,其中,投票请求中包括投票节点为至少一个候选节点投票的票数,其中,投票节点能够为候选节点投票的票数是根据多个参数确定,所述多个参数除其当前所拥有的代币token的数量外,还至少包括:其所拥有的token的综合时长和/或设定时间段中所拥有的token的数量的最小值与最大值的比值;根据各个投票节点分别为其他候选节点的投票数,确定每个候选节点的得票数;基于每个候选节点的得票数,将符合超级节点选举条件的候选节点选举为超级节点。本发明实施例中,每个节点能够投票的票数是根据该节点拥有的token的数量、拥有token的综合时长以及拥有token的数量的最小值与最大值的比值来共同确定的,其中,节点拥有token的综合时长以及拥有token的数量的最小值与最大值的比值可以表明该节点所对应的用户对该区块链的看好程度,以及该用户希望在该区块链上长期发展的决心,那么就可以根据节点拥有token的综合时长以及拥有token的数量的最小值与最大值的比值来衡量该节点的可信任度,从而确定该节点能够投票的票数,这样,增加了超级节点选举中拉取选票的难度,使得超级节点的选举过程更加公平,降低选举中心化的风险。可选的,所述投票节点能够为候选节点投票的票数是根据多个参数确定,包括:基于所述多个参数计算所述投票节点的投票权比例系数;基于所述投票权比例系数以及所有投票节点能够投票的总票数确定所述投票节点能够投票的票数。本发明实施例中,可以根据一个节点拥有的token的数量、拥有token的综合时长以及拥有token的数量的最小值与最大值的比值来计算该节点拥有的投票权比例系数,从而计算得到该节点能够投票的票数。这样,通过多个维度的参数考量,增加了超级节点选举中拉取选票的难度,使得超级节点的选举过程更加公平,降低选举中心化的风险。可选的,所述方法还包括:获取自身能够为候选节点投票的票数;基于所述能够为候选节点投票的票数以及用户的投票操作,生成所述投票请求;将所述投票请求发送给其他投票节点。可选的,所述基于每个候选节点的得票数,将符合超级节点选举条件的候选节点选举为超级节点,包括:在投票率大于或者等于预设投票率阈值时,基于每个候选节点的得票数,将当前符合超级节点选举条件的候选节点选举为超级节点,其中,所述投票率为整个网络中已投票的票数与能够投票的总票数的比值;或者,每间隔预设时间段,基于每个候选节点的得票数,将当前符合超级节点选举条件的候选节点选举为超级节点,其中,所述预设时间段为选举的超级节点完成一轮区块的生成所需的时间。本发明实施例中,投票率超过预设投票率阈值,说明投票数已经能够满足选举要求了,那么此时可以进行最终超级节点的确定过程了,或者,由于在实际运行过程中,超级节点的支持率可能是会发生变化的,因而,超级节点的确定过程还可以不间断的进行,从而使得选举出的超级节点始终是节点支持率最高的,进而选举出的超级节点的可信度更高。可选的,所述基于每个候选节点的得票数,将符合超级节点选举条件的候选节点选举为超级节点,包括:基于每个候选节点的得票数由大到小的排序,将前l个候选节点选举为超级节点,l为大于1的正整数;或者,根据每个候选节点的得票数以及处理能力指数计算每个候选节点的得分,将得分靠前的l个候选节点选举为超级节点;或者,根据每个候选节点的得票数以及拥有token的数量计算每个候选节点的得分,将得分靠前的l个候选节点选举为超级节点。可选的,所述方法还包括:接收来自其它投票节点的投票修改请求,其中,投票修改请求用于指示投票节点请求修改对所述至少一个候选节点投票的票数;根据所述投票修改请求重新确定每个候选节点的得票数,并基于重新确定的得票数进行超级节点的选举。第二方面,本发明实施例还提供了一种为候选节点投票的方法,该方法包括:获取自身能够为候选节点投票的票数;其中,所述能够为候选节点投票的票数是根据多个参数确定,所述多个参数除其当前所拥有的代币token的数量外,还至少包括:其所拥有的token的综合时长和/或设定时间段中所拥有的token的数量的最小值与最大值的比值;基于所述能够为候选节点投票的票数以及用户的投票操作,生成所述投票请求;将所述投票请求发送给其他投票节点。可选的,根据用户的投票修改操作,生成投票修改请求,其中,投票修改请求用于请求修改对所述至少一个候选节点投票的票数;将所述投票修改请求发送给其他投票节点。第三方面,本发明实施例还提供了一种超级节点选举装置,该装置包括:接收单元,用于接收来自其它投票节点的投票请求,其中,投票请求中包括投票节点为至少一个候选节点投票的票数,其中,投票节点能够为候选节点投票的票数是根据多个参数确定,所述多个参数除其当前所拥有的代币token的数量外,还至少包括:其所拥有的token的综合时长和/或设定时间段中所拥有的token的数量的最小值与最大值的比值;第一确定单元,用于根据各个投票节点分别为其他候选节点的投票数,确定每个候选节点的得票数;以及,基于每个候选节点的得票数,将符合超级节点选举条件的候选节点选举为超级节点。可选的,所述第一确定单元,还用于:基于所述多个参数计算所述投票节点的投票权比例系数;基于所述投票权比例系数以及所有投票节点能够投票的总票数确定所述投票节点能够投票的票数。可选的,所述装置还包括第一获取单元和第一发送单元;所述第一获取单元,用于获取自身能够为候选节点投票的票数;所述第一确定单元,还用于基于所述能够为候选节点投票的票数以及用户的投票操作,生成所述投票请求;所述第一发送单元,用于将所述投票请求发送给其他投票节点。可选的,所述第一确定单元,具体用于:在投票率大于或者等于预设投票率阈值时,基于每个候选节点的得票数,将当前符合超级节点选举条件的候选节点选举为超级节点,其中,所述投票率为整个网络中已投票的票数与能够投票的总票数的比值;或者,每间隔预设时间段,基于每个候选节点的得票数,将当前符合超级节点选举条件的候选节点选举为超级节点,其中,所述预设时间段为选举的超级节点完成一轮区块的生成所需的时间。可选的,所述第一确定单元,具体用于:基于每个候选节点的得票数由大到小的排序,将前l个候选节点选举为超级节点,l为大于1的正整数;或者,根据每个候选节点的得票数以及处理能力指数计算每个候选节点的得分,将得分靠前的l个候选节点选举为超级节点;或者,根据每个候选节点的得票数以及拥有token的数量计算每个候选节点的得分,将得分靠前的l个候选节点选举为超级节点。可选的,所述接收单元,还用于接收来自其它投票节点的投票修改请求,其中,投票修改请求用于指示投票节点请求修改对所述至少一个候选节点投票的票数;所述第一确定单元,还用于根据所述投票修改请求重新确定每个候选节点的得票数,并基于重新确定的得票数进行超级节点的选举。第四方面,本发明实施例还提供了一种为候选节点投票的装置,所述装置包括:第二获取单元,用于获取自身能够为候选节点投票的票数;其中,所述能够为候选节点投票的票数是根据多个参数确定,所述多个参数除其当前所拥有的代币token的数量外,还至少包括:其所拥有的token的综合时长和/或设定时间段中所拥有的token的数量的最小值与最大值的比值;第二确定单元,用于基于所述能够为候选节点投票的票数以及用户的投票操作,生成所述投票请求;第二发送单元,用于将所述投票请求发送给其他投票节点。可选的,所述第二确定单元,还用于根据用户的投票修改操作,生成投票修改请求,其中,投票修改请求用于请求修改对所述至少一个候选节点投票的票数;所述第二发送单元,还用于将所述投票修改请求发送给其他投票节点。第五方面,本发明实施例提供了一种网络节点,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面或第二方面所述的方法。第六方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面或第二方面所述的方法。本发明实施例中,可以根据一个节点拥有的token的数量、拥有token的综合时长以及拥有token的数量的最小值与最大值的比值来计算该节点拥有的投票权比例系数,从而计算得到该节点能够投票的票数,其中,节点拥有token的综合时长以及拥有token的数量的最小值与最大值的比值可以表明该节点所对应的用户对该区块链的看好程度,以及该用户希望在该区块链上长期发展的决心,那么就可以根据节点拥有token的综合时长以及拥有token的数量的最小值与最大值的比值来衡量该节点的可信任度,从而确定该节点能够投票的票数,这样,增加了超级节点选举中拉取选票的难度,使得超级节点的选举过程更加公平,降低选举中心化的风险。进一步的,除了选举超级节点之外,还会进行备用节点的选举,这样,在超级节点无法出现故障,或者其他原因无法正常工作时,则可以将备用节点确定为新的超级节点,顶替无法正常工作的超级节点,从而提高区块链系统工作的可靠性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。图1为本发明实施例的一种应用场景示意图;图2为本发明实施例的为候选节点投票的方法的流程示意图;图3为本发明实施例的投票界面的示意图;图4为本发明实施例的票数选择界面的示意图;图5为本发明实施例的确定能够投票的票数的流程示意图;图6为本发明实施例的投票修改的流程示意图;图7为本发明实施例的投票修改界面的流程示意图;图8为本发明实施例的超级节点选举方法的流程示意图;图9为本发明实施例的一种区块链网络的部分节点的示意图;图10为本发明实施例的另一种区块链网络的部分节点的示意图;图11为本发明实施例的又一种区块链网络的部分节点的示意图;图12为本发明实施例的各个投票节点之间进行超级节点同步的流程示意图。图13为本发明实施例的超级节点选举装置的一种结构示意图;图14为本发明实施例的为候选节点投票的装置的一种结构示意图;图15为本发明实施例的网络节点的一种结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。为便于理解本发明实施例提供的技术方案,这里先对本发明实施例使用的一些关键名词进行解释:区块(block):用于记录按照一定条件划分出的交易集合和状态结果,是在各个节点达成共识之后形成的。具体的,区块可以是以时间进行划分,例如每间隔10秒(s)产生一个区块,那么这个区块即是记录这10s内的所有交易,或者每间隔一天产生一个区块,那么这个区块即是记录这一天内的所有交易;或者,区块还可以是根据交易的数量进行划分,例如,在产生指定数量的交易之后,生成一个区块,那么这个区块即是用于记录已产生的指定数量的交易,当然,本发明实施例对区块具体的划分方式并不进行限制。区块链:或称分布式数据记录账本,是一种按照一定顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。节点:指区块链网络中参与交易处理的计算设备,例如计算机,手机、矿机、台式机或者服务器等拥有计算能力的设备均可作为区块链网络中的节点。例如,在比特币网络中,通过在已连接到互联网的电脑上运行bitcoind程序后,该电脑也就成为了比特币网络中的一个节点。超级节点:通过节点进行投票选出的节点代表。在区块链中,通过超级节点进行区块的生成以及共识过程,可以减少全网节点参与共识所消耗的时间,工作效率更高。投票节点:区块链的所有节点中,投票选举超级节点的节点,投票节点可以是所有节点,也可能是部分节点,每一个节点均有可能作为投票节点,参与超级节点的投票选举过程。候选节点:有可能被选举为超级节点的节点,理论上来讲,区块链网络中的每一个节点均可以称为候选节点,但是在实际运行中,由于超级节点所需的计算能力是较大的,以及经济方面的消耗的也是巨大的,普通节点很难得到长久的维持,因而候选节点通常会是一些拥有一定计算能力基础以及经济实力的节点。授权股权证明机制(delegatedproofofstake,dpos):一种共识机制,它的原理是让区块链中多个节点进行投票,由此产生多个超级节点,这些超级节点履行交易的收集和验证以存储到区块中等责任,并且,这些超级节点彼此之间的权利是完全对等的。在具体实践过程中,公有链中的一次共识过程所需要经历的节点数量众多,从而一次共识过程就需要消耗大量的时间,因而针对此问题提出了超级节点的概念,超级节点作为节点代表,在一次共识过程中只需要选举出的超级节点达成共识即可,从而大大缩短了共识过程所需的时间,使得区块链的效率更高。而本发明的发明人发现,超级节点在区块链中有着至关重要的作用,但是目前对于如何使得选举出的超级节点更具代表性,现有技术中并没有给出十分有效的解决方法。本发明人对现有技术进行分析后发现,现有技术在进行超级节点的投票时,是将每个节点所拥有的token的数量作为唯一的依据,例如,该节点拥有的token的数量为10,那么这个节点就可以投出10票,这样,候选节点可能就会大量的收集币(例如大量购买token),使得自身的票数更多,或者大量的拉票,从而增加造成选举中心化的风险,显然违背了区块链去中心化的初衷。鉴于此,本发明人考虑到,可以在token的数量这一单一因素的基础上,再通过其他的条件加以限制,这样,投票时就可以不仅需要考虑token的数量这一维度的因素,还需要综合各方面的条件进行衡量,从而增加超级节点选举中拉取选票的难度,使得超级节点的选举过程更加公平,选举出的超级节点更具代表性,降低选举中心化的风险。鉴于上述的分析和考虑,本发明实施例提供了一种超级节点选举方法,在该方法中,每个节点能够投票的票数是根据该节点拥有的token的数量、拥有token的综合时长以及拥有token的数量的最小值与最大值的比值来共同确定的,其中,节点拥有token的综合时长以及拥有token的数量的最小值与最大值的比值可以表明该节点所对应的用户对该区块链的看好程度,以及该用户希望在该区块链上长期发展的决心,那么就可以根据节点拥有token的综合时长以及拥有token的数量的最小值与最大值的比值来衡量该节点的可信任度,从而确定该节点能够投票的票数。换句话说,节点拥有token的综合时长越长,表明用户常驻该区块链的时间更长,那么该节点对区块链的信任度也就更高,并且该节点对应的用户对于该区块链的了解以及发展趋势都是更加了解的,能够做出更好的判断,那么区块链可以更好的反馈该节点,即可以赋予该节点更多的投票权,这样,通过相互的信任与维持,来使得区块链的发展更加人性化以及合理化。在介绍完本发明实施例的设计思想之后,下面对本发明实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本发明实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本发明实施例提供的技术方案。请参见图1,为本发明实施例中的技术方案能够适用的一种应用场景,在该场景中可以包括多个网络节点,图1中示出的节点数量为5个,但需要知道的是,在实际应用中,通常还可以拥有更多的节点数量,本发明实施例对此并不做限制。其中,每一个网络节点例如可以是服务器101、笔记本电脑102或者台式电脑103等拥有计算能力的设备,任意两个网络节点之间都可以通过网络进行通信,网络的形式可以是无线网络或者有线网络。服务器101的类型也是可以多种多样的,根据服务器大小进行划分,服务器101例如可以是小型服务器、大型服务器或者服务器集群等,根据服务类型进行划分,服务器101例如可以是文件服务器、数据库服务器、应用程序服务器或者万维网(worldwideweb,web)服务器等。其中,在上述网络节点中可以运行区块链的程序,例如在比特币网络中,可以在网络节点中运行bitcoind程序,或者在商用分布式计区块链操作系统(enterpriseoperationsystem,eos)网络中,可以在网络节点中运行eos相对应的程序。具体的,当有交易发生时,例如两个网络节点之间发生了交易,那么这两个网络节点都会将该次交易广播给其他的网络节点,通过其他网络节点来共同见证这次交易以及存储这次交易的交易记录。如前介绍的,上述每一个节点都可以作为投票节点,并且也可以作为候选节点。任何一个投票节点,在投票选举超级节点的过程中,既要为候选节点投票,还要根据收到的投票请求选举出超级节点。当然,在实际应用中,由于候选节点需要一定的计算能力基础和运维经济基础,因而通常会倾向于大型服务器或者服务器集群所在的节点上。当然,本发明实施例提供的方法并不限用于图1中所示的应用场景中,还可以用于其他可能的应用场景,本发明实施例并不进行限制。为进一步说明本发明实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本发明实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本发明实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。在选举超级节点之前,还需要各个投票节点为支持的候选节点进行投票,请参见图2所示,本发明实施例提供一种为候选节点投票的方法,以一个投票节点的投票过程为例,该方法的流程包括如下步骤:步骤201:投票节点确定能够投票的票数。本发明实施例中,投票节点例如可以是图1中所示的网络节点中的任一节点。在进行投票之前,投票节点需要知道自身能够投票的票数。具体的,投票节点可以根据自身的多个参数自行计算能够投票的票数,或者,投票节点还可以向连接的服务器发送查询请求,以查询自身能够投票的票数。本发明实施例中,不管是投票节点自行计算,或者是服务器来计算,能够投票的票数都可以是根据投票节点自身的多个参数确定的,多个参数可以包括投票节点当前所拥有的token的数量,还可以包括投票节点拥有token的综合时长和/或在设定时段中所拥有的token的数量的最小值与最大值的比值。在一种可能的实施方式中,投票节点拥有token的综合时长可以是指该投票节点拥有token的平均时长。例如,投票节点中拥有的token的情况如表1所示:存在时长(h)数量(个)1000020300003040000405000010表1如上表所述,该投票节点所拥有的token的总数量为100个,其中,存在时长为10000s的token的数量为20个,存在时长为30000s的token的数量为30个,存在时长为40000s的token的数量为40个,存在时长为50000s的token的数量为10个,那么该投票节点拥有token的平均时长则可以通过如下公式进行计算:其中,为投票节点拥有token的平均时长,xj和tj分别为第j类时长相同的token的时长和数量,n表示具有相同时长的token的类的数量,如表1中所示的,具有相同时长的token的类的数量n为4。根据上述公式,则该投票节点拥有token的平均时长则为42000s,即该投票节点拥有token的综合时长为42000s。在另一种可能的实施方式中,由于token的时长较大的话,表明该投票节点对应的用户进驻该区块链的时间更长,那么该节点对区块链的信任度也就更高,因而可以考虑给该用户的投票权可以更大,那么可以给不同的时长设置不同的权重,时长较大所占的权重可以更大,进而投票节点拥有token的综合时长可以是指根据具体时长以及权重计算得到的加权平均时长。例如,不同时长的token的权重可以如表2所示:表2具体的,该投票节点拥有token的加权平均时长则可以通过如下公式进行计算:其中,为投票节点拥有token的加权平均时长,bj为第j类时长相同的token的权重。根据上述表1和表2中的数据,则该投票节点拥有token的加权平均时长则为8800s,即该投票节点拥有token的综合时长为8800s。本发明实施例中,投票节点拥有token的综合时长还可以通过其他可能的方式进行表达,本发明实施例对此并不做限制。本发明实施例中,设定时段中所拥有的token的数量的最小值与最大值的比值可以反映出在设定时段中投票节点的token的变化程度。例如,设定时段可以是从投票节点开始加入区块链中,成为该区块链中的一个节点的时刻开始,到当前时刻之间的这一段时间,或者,设定时间段还可以是从该投票节点开始加入区块链中之后的任意一个时刻开始,到当前时刻的这一段时间,例如距离当前时刻的三个月内,或者,距离当前时刻的一年内等,因此,设定时段可以根据区块链中超级节点的选举的具体需求进行灵活的设置。步骤202:投票节点接收用户的投票操作,并基于投票操作生成投票请求。本发明实施例中,用户可以通过投票节点为自己支持的候选节点投票,以增加自己支持的候选节点成为超级节点的机会。在一种可能的实施方式中,用户可以通过投票指令为支持的候选节点进行投票。例如,在eos网络中,用户可以通过eosio.system::okproducer函数选中候选节点,在该函数中,函数参数“account:”的值为投票节点身份标识(identity,id),“producer:”的值为候选节点id,“vote:”的值表征投票节点对候选节点支持或者是反对,其中,“vote:”的值为真(true)表示表征投票节点对候选节点支持,“vote:”的值为否(false)表示表征投票节点对候选节点反对。eosio.system::stakevote函数用于给候选节点投票,在该函数中,函数参数“account:”的值为候选节点id,“amount:”的值为该候选节点投票的票数。在实际应用中,上述id可以是网络节点在该区块链网络中的编号,或者该网络节点的网络协议(internetprotocol,ip)地址,或者其他任何能够唯一识别网络节点的信息。除上面所述之外,用户还可以将自己的投票权授权给代理节点,从而委托代理节点进行投票。在另一种可能的实施方式中,用户还可以在投票节点中通过浏览器打开投票页面,或者在投票节点中安装投票应用,以进行投票操作,这样,由于网页页面或者投票应用都拥有着可视化界面,用户能够更加直观和舒适的进行操作。例如,例如,在eos网络中,投票的进行可以是在tokenpocket中进行的。请参见图3,为tokenpocket中投票操作页面的示意图。其中,在候选节点显示区域,可以显示多个候选节点的摘要信息,用户也可以点击每个候选节点的相应区域,进入候选节点的详情页,以查看候选节点的详细信息。用户确定自己想要支持的候选节点之后,可以通过在每个候选节点的选择框内进行操作,例如0图3所示的操作界面,可以勾选候选节点左侧区域的圆圈,从而选择相应的候选节点。用户选择好候选节点之后,则可以点击投票按钮,这样,则会弹出票数选择窗口,如图4中所示,用户可以在票数输入界面中输入想要投票的票数,或者通过输入界面左右的“-”“+”按钮进行票数的减少和增加操作,当输入界面中为用户想要投票的票数时,用户可以对“确认”按钮进行操作,那么投票节点则可以根据上述操作生成投票请求。步骤203:投票节点将投票请求发送给其余投票节点。本发明实施例中,在根据用户的操作生成投票请求之后,投票节点则可以将投票请求发送给区块链网络中的其余投票节点。请参见图5所示,投票节点确定能够投票的票数具体可以包括如下步骤:步骤2011:投票节点获取自身的投票权比例系数。本发明实施例中,假设在一个区块链网络中包括m个网络节点,并且每个网络节点都可以作为投票节点,为了对投票节点进行区分,可以通过不同的编号对节点进行区分,例如节点的编号可以用i表示,那么i的取值范围则可以为1、2、3……m。投票节点的投票权比例系数的计算可以通过如下公式进行:其中,ki为第i个投票节点的投票权比例系数,wi为第i个投票节点拥有的token系数,ci为第i个投票节点所拥有的token的数量,c总为网络中所有投票节点的token的数量,ti为第i个投票节点所拥有的token的综合时长,例如上面所述的平均时长或者加权平均时长ai为第i个投票节点所拥有的token的最小值与最大值的比值。步骤2012:基于投票权比例系数以及所有投票节点能够投票的总票数确定投票节点能够投票的票数。本发明实施例中,可以预先设定区块链网络中能够投票的总票数,进而在此总票数不变的基础上,通过每个投票节点的投票权比例系数来决定每个投票节点所能投票的票数。例如,区块链网络中能够投票的总票数可以为100000票,其中一个投票节点的投票权比例系数为0.0001,那么该投票节点能够投票的票数则为10票,当然,此处的数值仅为举例,在实际的应用中,总票数可以根据区块链中节点数量等因素进行合理的设置。本发明实施例中,若是由投票节点自身进行能够投票的票数的计算,在该投票计算得到能够投票的票数时,则可以将票数显示在投票节点的显示单元上,以便用户能够得知。或者,若是由服务器来进行投票节点能够投票的票数的计算,那么服务器在计算完成之后,可以通过网络将计算结果发送给投票节点,以使得投票节点获取计算结果之后,能够将票数显示在投票节点的显示单元上,以便用户能够得知。其中,投票节点能够投票的票数例如可以显示在如图3中的可投票数显示区域。请参见图6,本发明实施例中,用户在对候选节点进行投票之后,还可以修改之前的投票,流程如下:步骤601:投票节点修改投票,并生成投票修改请求。本发明实施例中,用户同样可以根据投票修改指令修改已投票的票数的数量,或者,还可以在网页页面或者投票应用中进行已投票的票数的数量的修改。下面以在投票应用中进行修改为例进行描述。请参见图7,为修改投票界面的示意图。其中,用户可以在“已投”的显示界面中查看到自己已经投票的候选节点,并通过选择框选择其中的候选节点之后,点击下方的“修改投票按钮”,则会弹出票数选择窗口。通常来讲,票数选择窗口中默认显示的值为用户上次投票时选择的数量,方便用户知道自己投了多少票给该节点。用户可以在票数选择窗口中的票数输入界面中输入想要投票的票数,或者通过输入界面左右的“-”“+”按钮进行票数的减少和增加操作,当输入界面中为用户想要投票的票数时,用户可以对“确认”按钮进行操作,那么投票节点则可以根据上述操作生成投票修改请求。步骤602:投票节点将投票修改请求发送给其他投票节点。本发明实施例中,用户在投票节点进行投票修改操作之后,投票节点即会将投票修改请求发送出去,该投票修改请求用于指示该投票节点请求修改对至少一个候选节点投票的票数。在投票节点投票之后,则可以对投票结果进行统计,以及根据投票结果进行超级节点的选举,因此,请参见图8所示,本发明实施例还提供一种超级节点选举方法,以一个投票节点的投票选举过程为例,该方法的流程包括如下步骤:步骤801:投票节点接收其他投票节点发送的投票请求或者投票修改请求。本发明实施例中,投票节点可以向其余投票节点发送投票请求或者投票修改请求,也可以接收其他投票节点发送的投票请求或者投票修改请求,并且这两个过程之间并没有严格的时间关系,例如投票节点可以一边发送自己的投票请求一边接收其他节点的投票请求。其中,具体的,在区块链中的每个投票节点中,都可以存储一张选举表,在选举表中保存每个候选节点当前拥有的票数,因此,在投票节点收到新的投票请求或者投票修改请求时,都可以根据该投票请求或者投票修改请求更新选举表。这样,由于通过区块链来进行投票过程中票数的存储,并基于区块链本身的数据不可篡改性,使得选举过程更加透明公开,提高选举的公平性。步骤802:投票节点根据所有投票统计每个候选节点的得票数。本发明实施例中,投票节点既可以进行投票(进行投票的节点可称为投票节点),也可以进行最终投票结果的统计(进行投票结果的统计的节点可称为统计节点),因此在区块链网络中,一个节点可以仅为投票节点,也可以仅为统计节点,或者一个节点还可以即是投票节点,又是统计节点,又或者一个节点还可以既不是投票节点,又不是统计节点。请参见图9,为一种区块链网络的部分节点的示意图,其中,在图9中,节点1~3均可以作为投票节点和统计节点,那么这3个节点中任意两个节点都可以存在如图9中所示的数据交互,即,节点1可以向节点2和节点3发送投票请求,以及对投票结果进行统计,节点2和节点3同样如此。请参见图10,为另一种区块链网络的部分节点的示意图,其中,在图10中,节点1为统计节点,节点2和节点3均可以作为投票节点和统计节点,那么则可以存在如图10中所示的数据交互,即,节点1可以接收节点2和节点3发送的投票请求,以及对投票结果进行统计,但不会向节点2和节点3发送投票请求,而节点2和节点3均可以发送投票请求,也可以接收投票请求以及对投票结果进行统计。请参见图11,为又一种区块链网络的部分节点的示意图,其中,在图11中,节点1既不是投票节点,也不是统计节点,节点2仅为统计节点,节点3仅为投票节点,那么则可以存在如图11中所示的数据交互,即,节点1不会接收节点2和节点3发送的投票请求,也不会向节点2和节点3发送投票请求,节点2可以只能够接收投票请求,进而对投票结果进行统计,而节点3只能发送投票请求。在后续的描述中,以一个节点即是投票节点,又是统计节点为例进行描述,因此后续均称为投票节点。步骤803:投票节点基于每个候选节点的得票数,将符合超级节点选举条件的候选节点选举为超级节点。本发明实施例中,当投票进度达到一定值时,则可以对之前的投票结果进行结算。如图3中所示,在投票进度显示区域,用户可以得知当前的投票进度。投票进度可以通过投票率进行衡量,投票率是指整个网络中当前已投票的票数与能够投票的总票数的比值,例如当前已投票的票数为15000,而能够投票的总票数为100000,那么投票率则为15%。其中,当投票率大于或者等于预设投票率阈值时,则可以之前的投票结果进行结算,以确定出超级节点。预设投票率阈值例如可以是15%,或者20%等,本发明实施例对此不做限制。本发明实施例中,可以根据每个候选节点的得票数,从中选择满足超级节点选举条件的候选节点作为超级节点。具体的,可以将每个候选节点的得票数按照由大到小的顺序进行排序,从而从中选择前l个候选节点作为超级节点,l为大于1的正整数。在发起超级节点的选举时,通常就会给出超级节点的数量,例如,若需要选举出的超级节点的数量为21个,那么就可以根据得票数的顺序,从中选择出得票数在前21位的候选节点作为超级节点。当然,在实际应用中,根据后期实际的需求的增加,也可以增加超级节点的数量,那么可以从得票数靠后的几个超级节点中选择需求数量的超级节点。具体的,在超级节点的选择时,除了候选节点的得票数,还可以综合其他的一些因素进行考虑。例如,由于超级节点作为多数节点的代表,因而超级节点的处理能力也就显得十分重要,因而还可以将候选节点的处理能力指数作为超级节点选举的一个考虑因素。其中,可以对得票数以及处理能力指数分别设置权重,进而根据得票数以及处理能力指数以及相应的权重来计算每个候选节点的得分,以选择得分靠前的l个候选节点作为超级节点。例如,还可以将候选节点的自身拥有的token的数量作为超级节点选举的一个考虑因素。其中,可以对得票数以及token的数量分别设置权重,进而根据得票数以及token的数量以及相应的权重来计算每个候选节点的得分,以选择得分靠前的l个候选节点作为超级节点。本发明实施例中,在超级节点选举出来之后,投票节点依然可以继续进行投票,那么后续还可以根据最新的得票数重新进行超级节点的选举。例如,在区块链中,通常超级节点需要参与区块的生成,为了不妨碍每一轮区块的生成,那么可以在每一轮区块生成完成之后,进行一次得票数的结算,也就是根据当前的得票数重新从中选举出满足超级节点选举条件的候选节点。在具体实施过程中,由于每个投票节点都可以进行确定超级节点的过程,因此各个投票节点之间进行超级节点的同步,来使得所有投票节点选举的超级节点保持一致。因此请参见图12,本发明实施例中,在每个投票节点选举出超级节点之后,还可以包括如下步骤:步骤1201:投票节点接收其他投票节点发送的超级节点列表。本发明实施例中,投票节点确定超级节点之后,则可以将自身确定的超级节点列表发送给其余的超级节点。相应的,投票节点也可以接收其他投票节点发送的超级节点列表。步骤1202:投票节点确定并存储最终的超级节点列表。投票节点可以根据接收到的超级节点列表,从所有的超级节点列表中确定超级节点列表中的超级节点相同,并且在所有超级节点列表中所占的比例最大的超级节点列表,换句话说,就是将大多数投票节点确定的相同的超级节点确定为最终的超级节点,这样,由于每个投票节点所收到的超级节点列表是相同的,那么每个投票节点最终确定的超级节点也就是相同的,从而保持每个节点存储的超级节点的信息一致。本发明实施例中,若是该次选举无法选择出最终的超级节点,则认为该次选举无效,等待下一次的选举,或者,重新进行投票选举。在超级节点选举出来之后的实际运行过程中,超级节点有可能出现故障或者其他的原因造成的超级节点无法正确工作,例如超级节点未能生成区块,那么则可以将该超级节点进行除名,而选举新的节点替补该超级节点。因此,除了选举多个超级节点之外,还可以选举多个备用节点,以在,超级节点中的一个或者多个未能正确工作时,将从备用节点中选择相应数量的备用节点作为新的超级节点。具体的,从候选节点中选举出了超级节点之后,则可以在剩余的候选节点中选举备用节点,备用节点的选举条件可以与超级节点的相同,因此,在此不再过多赘述了。综上所述,本发明实施例中,每个节点能够投票的票数是根据该节点拥有的token的数量、拥有token的综合时长以及拥有token的数量的最小值与最大值的比值来共同确定的,其中,节点拥有token的综合时长以及拥有token的数量的最小值与最大值的比值可以表明该节点所对应的用户对该区块链的看好程度,以及该用户希望在该区块链上长期发展的决心,那么就可以根据节点拥有token的综合时长以及拥有token的数量的最小值与最大值的比值来衡量该节点的可信任度,从而确定该节点能够投票的票数。换句话说,节点拥有token的综合时长越长,表明用户常驻该区块链的时间更长,那么该节点对区块链的信任度也就更高,并且该节点对应的用户对于该区块链的了解以及发展趋势都是更加了解的,能够做出更好的判断,那么区块链可以更好的反馈该节点,即可以赋予该节点更多的投票权,这样,通过相互的信任与维持,来使得区块链的发展更加人性化以及合理化。请参见图13,基于同一发明构思,本发明实施例还提供了一种超级节点选举装置,该装置包括:接收单元1301,用于接收来自其它投票节点的投票请求,其中,投票请求中包括投票节点为至少一个候选节点投票的票数,其中,投票节点能够为候选节点投票的票数是根据多个参数确定,所述多个参数除其当前所拥有的代币token的数量外,还至少包括:其所拥有的token的综合时长和/或设定时间段中所拥有的token的数量的最小值与最大值的比值;第一确定单元1302,用于根据各个投票节点分别为其他候选节点的投票数,确定每个候选节点的得票数;以及,基于每个候选节点的得票数,将符合超级节点选举条件的候选节点选举为超级节点。可选的,所述第一确定单元1302,还用于:基于所述多个参数计算所述投票节点的投票权比例系数;基于所述投票权比例系数以及所有投票节点能够投票的总票数确定所述投票节点能够投票的票数。可选的,所述装置还包括第一获取单元1303和第一发送单元1304;所述第一获取单元1303,用于获取自身能够为候选节点投票的票数;所述第一确定单元1302,还用于基于所述能够为候选节点投票的票数以及用户的投票操作,生成所述投票请求;所述第一发送单元1304,用于将所述投票请求发送给其他投票节点。可选的,所述第一确定单元1302,具体用于:在投票率大于或者等于预设投票率阈值时,基于每个候选节点的得票数,将当前符合超级节点选举条件的候选节点选举为超级节点,其中,所述投票率为整个网络中已投票的票数与能够投票的总票数的比值;或者,每间隔预设时间段,基于每个候选节点的得票数,将当前符合超级节点选举条件的候选节点选举为超级节点,其中,所述预设时间段为选举的超级节点完成一轮区块的生成所需的时间。可选的,所述第一确定单元1302,具体用于:基于每个候选节点的得票数由大到小的排序,将前l个候选节点选举为超级节点,l为大于1的正整数;或者,根据每个候选节点的得票数以及处理能力指数计算每个候选节点的得分,将得分靠前的l个候选节点选举为超级节点;或者,根据每个候选节点的得票数以及拥有token的数量计算每个候选节点的得分,将得分靠前的l个候选节点选举为超级节点。可选的,所述接收单元1301,还用于接收来自其它投票节点的投票修改请求,其中,投票修改请求用于指示投票节点请求修改对所述至少一个候选节点投票的票数;所述第一确定单元1302,还用于根据所述投票修改请求重新确定每个候选节点的得票数,并基于重新确定的得票数进行超级节点的选举。其中,第一获取单元1303和第一发送单元1304在图13中一并示出,但需要知道的是,第一获取单元1303和第一发送单元1304并不是必选的功能单元,因此在图13中以虚线示出。该装置可以用于执行图2~图12所示的实施例所提供的方法,因此,对于该装置的各功能模块所能够实现的功能等可参考图2~图12所示的实施例的描述,不多赘述。请参见图14,基于同一发明构思,本发明实施例还提供了一种为候选节点投票的装置,所述装置包括:第二获取单元1401,用于获取自身能够为候选节点投票的票数;其中,所述能够为候选节点投票的票数是根据多个参数确定,所述多个参数除其当前所拥有的代币token的数量外,还至少包括:其所拥有的token的综合时长和/或设定时间段中所拥有的token的数量的最小值与最大值的比值;第二确定单元1402,用于基于所述能够为候选节点投票的票数以及用户的投票操作,生成所述投票请求;第二发送单元1403,用于将所述投票请求发送给其他投票节点。可选的,所述第二确定单元1402,还用于根据用户的投票修改操作,生成投票修改请求,其中,投票修改请求用于请求修改对所述至少一个候选节点投票的票数;所述第二发送单元1403,还用于将所述投票修改请求发送给其他投票节点。该装置可以用于执行图2~图7所示的实施例所提供的方法,因此,对于该装置的各功能模块所能够实现的功能等可参考图2~图7所示的实施例的描述,不多赘述。请参见图15,基于同一技术构思,本发明实施例还提供了一种网络节点,可以包括存储器1501和处理器1502。所述存储器1501,用于存储处理器1502执行的计算机程序。存储器1501可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据表情识别设备的使用所创建的数据等。处理器1502,可以是一个中央处理单元(centralprocessingunit,cpu),或者为数字处理单元等等。本发明实施例中不限定上述存储器1501和处理器1502之间的具体连接介质。本发明实施例在图15中以存储器1501和处理器1502之间通过总线1503连接,总线1503在图15中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线1503可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器1501可以是易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram);存储器1501也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)、或者存储器1501是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1501可以是上述存储器的组合。处理器1502,用于调用所述存储器1501中存储的计算机程序时执行如图2~图7中所示的实施例提供的为候选节点投票的方法和超级节点选举方法。本发明实施例还提供了一种计算机可读存储介质,存储为执行上述处理器所需执行的计算机可执行指令,其包含用于执行上述处理器所需执行的程序。在一些可能的实施方式中,本发明提供的为候选节点投票的方法和超级节点选举方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本发明各种示例性实施方式的为候选节点投票的方法和超级节点选举方法中的步骤,例如,所述计算机设备可以执行如图2~图7中所示的实施例提供的为候选节点投票的方法和超级节点选举方法。所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。本发明的实施方式的用于为候选节点投票的方法和超级节点选举方法的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在计算设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、rf等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如java、c++等,还包括常规的过程式程序设计语言-诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)-连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1