区块链共识处理方法、电子装置及计算机可读存储介质与流程

文档序号:15923095发布日期:2018-11-14 00:50阅读:160来源:国知局
本发明涉及区块链
技术领域
,尤其涉及一种区块链共识处理方法、电子装置及计算机可读存储介质。
背景技术
目前的区块链共识机制通常可以分为两个大类,即概率一致性共识机制和绝对一致性共识机制。概率一致性共识机制以工作量证明(proofofwork,pow)算法和股权证明(proofofstake,pos)算法为代表,其优点在于适用于大规模分布式网络,网络规模越大,区块链共识过程越趋向于稳定。而它的缺点在于共识效率低,产生区块速度相对较慢,这样也就会在一些高频业务领域影响用户体验。另外这种机制存在出现“分叉”的风险,即在某一个区块高度上有一定概率出现两个不同的区块。虽然随着区块高度的增长,这种“分叉”会有很大概率被消除,但对于一些对一致性要求比较高的业务场景,如金融系统,这种“分叉”是难以被用户容忍的。绝对一致性共识机制以实用拜占庭容错算法(practicalbyzantinefault-tolerance,pbft)为代表,其优点在于在相对较小规模的节点间共识效率很高,且共识结果在节点间具有绝对一致性,不会出现区块“分叉”的现象。而它的缺点在于不适用于大规模分布式网络。当节点规模较大时,共识效率随节点数量增长以节点数量平方级降低,这将导致区块链在节点较多的情况下可用性严重降低。而若节点数量保持较小,又会导致区块链面临中心化风险,这将可能会与业务使用者的初衷相违背。技术实现要素:有鉴于此,本发明提出一种区块链共识处理方法、电子装置及计算机可读存储介质,以将概率一致性共识算法与绝对一致性共识算法相结合,在大规模网络节点中先通过概率一致性共识算法选取相对较少数量的节点,然后再利用绝对一致性共识算法对共识内容进行高效共识。首先,为实现上述目的,本发明提出一种区块链共识处理方法,该方法包括步骤:从区块链系统中根据周期性轮换机制和pow算法选取预设数量的高质量节点;及在已选取的节点间进行交易共识处理。可选地,所述从区块链系统中根据周期性轮换机制和pow算法选取预设数量的高质量节点的步骤包括:设置轮换周期;当到达所述轮换周期中的竞选起点时,通过pow算法选择预设数量的备选节点;当下一个所述轮换周期开始时,以所述备选节点替换当前使用的共识节点。可选地,所述轮换周期为n个区块,所述竞选起点为区块高度能被n/2整除且不能被n整除时。可选地,所述通过pow算法选择预设数量的备选节点的步骤包括:当到达所述轮换周期中的竞选起点时,所有节点对所述竞选起点的区块做pow运算;每个节点在算出结果后向预设的目标账户中发送一笔交易,将运算结果附加在交易的extension字段中,用于校验交易有效性;从所述账户中查找有效的交易,按交易顺序添加所述备选节点。可选地,所述在已选取的节点间进行交易共识处理的步骤包括:在每个所述轮换周期开始时,根据替换后的共识节点,将交易打包为区块后,采用实用拜占庭容错算法在所述替换后的共识节点间达成共识。此外,为实现上述目的,本发明还提供一种电子装置,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的区块链共识处理程序,所述区块链共识处理程序被所述处理器执行时实现如下步骤:从区块链系统中根据周期性轮换机制和pow算法选取预设数量的高质量节点;及在已选取的节点间进行交易共识处理。可选地,所述从区块链系统中根据周期性轮换机制和pow算法选取预设数量的高质量节点的步骤包括:设置轮换周期;当到达所述轮换周期中的竞选起点时,通过pow算法选择预设数量的备选节点;当下一个所述轮换周期开始时,以所述备选节点替换当前使用的共识节点。可选地,所述轮换周期为n个区块,所述竞选起点为区块高度能被n/2整除且不能被n整除时。可选地,所述通过pow算法选择预设数量的备选节点的步骤包括:当到达所述轮换周期中的竞选起点时,所有节点对所述竞选起点的区块做pow运算;每个节点在算出结果后向预设的目标账户中发送一笔交易,将运算结果附加在交易的extension字段中,用于校验交易有效性;从所述账户中查找有效的交易,按交易顺序添加所述备选节点。可选地,所述在已选取的节点间进行交易共识处理的步骤包括:在每个所述轮换周期开始时,根据替换后的共识节点,将交易打包为区块后,采用实用拜占庭容错算法在所述替换后的共识节点间达成共识。进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有区块链共识处理程序,所述区块链共识处理程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的区块链共识处理方法的步骤。相较于现有技术,本发明所提出的区块链共识处理方法、电子装置及计算机可读存储介质,可以在区块链系统中实现一种分层的共识机制,将概率一致性共识算法与绝对一致性共识算法相结合,在大规模网络节点中先通过概率一致性共识算法选取相对较少数量的节点,然后再利用绝对一致性共识算法在所选节点中对共识内容进行高效共识。并且,所选择的节点以周期性轮换机制的形式,基于区块链共识本身保证了未来的轮换周期中数据的共识。本方案既可以适用于大规模分布式网络中,同时还可以高效地产生区块,提高了区块链系统的可用性,并扩展了区块链系统的适用范围,使区块链系统底层可以满足更多种业务场景的需求。附图说明图1是本发明第一实施例提出的一种电子装置的架构示意图;图2是本发明第二实施例提出的一种区块链共识处理方法的流程示意图;图3是图2中步骤s10的具体细化流程示意图。本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。第一实施例参阅图1所示,本发明第一实施例提出一种实现区块链共识处理方法的电子装置1。在本实施例中,电子装置1可以是服务器、智能手机、平板电脑、个人电脑、便携计算机以及其它具有运算功能的电子设备。所述电子装置1包括:存储器11、处理器13、网络接口15及通信总线17。其中,网络接口15可选地可以包括标准的有线接口、无线接口(如wi-fi接口)。通信总线17用于实现这些组件之间的连接通信。存储器11至少包括一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器等的非易失性存储介质。在一些实施例中,所述存储器11可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘。在另一些实施例中,所述存储器11也可以是所述电子装置1的外部存储单元,例如所述电子装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。在本实施例中,所述存储器11可以用于存储安装于所述电子装置1的应用软件及各类数据,例如区块链共识处理程序10的程序代码及其运行过程中产生的相关数据。处理器13在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其它数据处理芯片,用于运行存储器11中存储的程序代码或处理数据。图1仅示出了具有组件11-17以及区块链共识处理程序10的电子装置1,但是应理解的是,图1并未示出电子装置1的所有组件,可以替代实施更多或者更少的组件。在图1所示的电子装置1实施例中,作为一种计算机存储介质的存储器11中存储区块链共识处理程序10的程序代码,处理器13执行所述区块链共识处理程序10的程序代码时,实现如下步骤:(1)从区块链系统中根据周期性轮换机制和pow算法选取预设数量的高质量节点。具体包括:a.设置轮换周期。在本实施例中,可以设置每n个区块(例如n=10000)为一个轮换周期,针对每个轮换周期,都要重新选取一批高质量节点。b.当到达所述轮换周期中的竞选起点时,通过pow算法选择预设数量的备选节点。在本实施例中,所述竞选起点为区块高度能被n/2整除且不能被n整除(例如能被5000整除且不能被10000整除)时,也就是所述轮换周期进行到一半时,剩下半个轮换周期的时间用来做所述备选节点的选取。此时,所有节点对所述竞选起点的区块做pow运算,并在算出结果后向预设的公开系统账户发送一笔交易,交易额可以是任意值(推荐为允许的最低值),将运算结果附加在交易的extension字段中,用于后续校验有效性。然后,从所述账户中查找有效的交易,按交易顺序添加所述备选节点。c.当下一个所述轮换周期开始时,以所述备选节点替换当前使用的共识节点。在本实施例中,每个所述轮换周期都对应有预设数量的共识节点。当下一个所述轮换周期开始时,当前使用的共识节点失效,以所选择的所述备选节点替换为新的一批共识节点,用来处理该轮换周期的共识工作。(2)在已选取的节点间进行交易共识处理。在本实施例中,在每个所述轮换周期开始时,根据替换后的共识节点,将交易打包为区块后,在这些替换后的共识节点间达成共识。上述步骤的详细说明请参阅下述第二实施例,在此不再赘述。第二实施例参阅图2所示,本发明第二实施例提出一种区块链共识处理方法。在本实施例中,根据不同的需求,图2所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。此外,有关区块链系统的常规处理步骤,可以根据实际应用场景纳入本发明。该方法包括以下步骤:步骤s10,从区块链系统中根据周期性轮换机制和pow算法选取预设数量的高质量节点。参阅图3所示,为该步骤的具体细化流程图。在本实施例中,该步骤具体包括:步骤s100,设置轮换周期。具体地,为了保证选举的公平性和保证节点的高可用性,所选取的共识节点将采取周期性轮换机制。在本实施例中,可以设置每n个区块(例如n=10000)为一个轮换周期,针对每个轮换周期,都要重新选取一批高质量节点作为共识节点。步骤s102,当到达所述轮换周期中的竞选起点时,通过pow算法选择预设数量的备选节点。在本实施例中,所述竞选起点为区块高度能被n/2整除且不能被n整除(例如能被5000整除且不能被10000整除)时,也就是所述轮换周期进行到一半时,剩下半个轮换周期的时间用来做所述备选节点的选取。此时,所有节点对所述竞选起点的区块做pow运算,并在算出结果后向预设的公开系统账户(pow目标账户)发送一笔交易,交易额可以是任意值(推荐为允许的最低值),将运算结果附加在交易的extension字段中,用于后续校验有效性。然后,从所述账户中查找有效的交易(即运算结果正确的交易),按交易顺序添加所述备选节点。具体地,在区块链系统中,对于每个节点,有三种状态:peer,validator和candidate。其中,peer节点为尚未被选中的节点,负责区块同步和交易转发;validator节点为被选举出来的节点,用于下一步进行区块共识;candidate节点为validator节点的备用节点。validator节点和candidate节点仍保有peer节点的区块同步和交易转发功能。当到达所述轮换周期中的竞选起点时,所有节点对所述竞选起点的区块做pow运算,具体运算为,找到一个随机数值nonce,满足:sha256(sha256(block_header_hash||nonce))<=2^m,其中m为小于256的正整数,表示难度系数,在本实施例中m可以为240。计算出nonce的节点立刻向预设的公开系统账户发送一笔交易,并将运算结果附加在交易的extension字段中,用于后续校验该交易的有效性。所述pow运算的目的是为了检验每个节点的网络环境和运算环境,后续根据所述账户接收到所述交易的顺序,可以判断出每个节点的运算速度,从而挑选出高质量的节点。在本实施例中,每个节点需要保存三个表和组网信息。所述三个表为当前节点任职表、当前周期有效节点列表、下一周期有效节点(即备选节点)列表。其中:表1:当前节点任职表idvalidatorcandidate在所述当前节点任职表中,id为validator节点编号,validator为每个id对应的validator节点地址,candidate为每个validator节点对应的candidate节点地址。所述validator节点的数量可以根据当前交易的需要设定,表1中以validator节点数量为4个为例。所述validator节点和candidate节点均为当前周期有效节点,也就是当前轮换周期使用的共识节点。所述当前节点任职表为每个所述轮换周期开始时,根据下述表2和表3进行填写。表2:当前周期有效节点列表idaddripblock_postx_pos在所述当前周期有效节点列表中,id为所述账户接收到交易的先后顺序,排名靠前的交易id也更靠前,对应节点也会优先被选为validator节点。addr为节点地址,ip为节点的ip地址,block_pos为pow证明交易(即该节点向所述账户发送的带有pow运算结果的交易)所在区块高度,tx_pos为pow证明交易所在区块中的交易id,用于验证该节点是否为合法节点。所述当前周期有效节点列表为根据从所述账户接收到的交易(pow证明交易)中获取的信息填写,由于这些交易是通过共识而来,所有节点查询的结果相同。表3:下一周期有效节点列表idaddripblock_postx_pos在所述下一周期有效节点列表中,id为所述账户接收到交易的先后顺序,排名靠前的交易id也更靠前,对应节点也会优先被选为validator节点。addr为节点地址,ip为节点的ip地址,block_pos为pow证明交易所在区块高度,tx_pos为pow证明交易所在区块中的交易id,用于验证该节点是否为合法节点。所述下一周期有效节点列表也是根据从所述账户接收到的交易(pow证明交易)中获取的信息填写,由于这些交易是通过共识而来,所有节点查询的结果相同。当到达所述轮换周期中的竞选起点后,所述账户陆续接收到各个节点发送的pow证明交易,所有节点从所述账户所在分区交易中查找有效的交易,按交易顺序将对应合法节点添加到表3中。其中,每个validator节点不能连任,也就是相同的节点不能在连续两个轮换周期中担任validator节点。以表1中validator节点数量为4个为例,即表2中的前4个节点不能被填入到表3中的前4个节点的位置。即使表2中的前4个节点在所述账户中这次又存在排名靠前的有效交易,在填入表3的过程中也要从第5个位置开始记录,防止validator节点连任。步骤s104,当下一个所述轮换周期开始时,以所述备选节点替换当前使用的共识节点。在本实施例中,每个所述轮换周期都对应有预设数量的共识节点。当下一个所述轮换周期开始时,当前使用的共识节点失效,以所选择的所述备选节点替换为新的一批共识节点,用来处理该轮换周期的共识工作。具体地,在当前的轮换周期结束后,下一个轮换周期开始时,用表3替换原表2,即所选取的备选节点成为所述下一个轮换周期的有效的共识节点。另外,根据所需的validator节点的数量,按照顺序从替换后的表2(原表3)中分别获取相应数量的validator节点和candidate节点,填入表1。例如,以所需的validator节点为4个为例,将替换后的表2中前4个节点信息填入表1的validator部分,第5~8个节点信息填入表1的candidate部分。回到图2,步骤s20,在已选取的节点间进行交易共识处理。在本实施例中,在每个所述轮换周期开始时,根据替换后的共识节点,将交易打包为区块后,在这些替换后的共识节点间达成共识。具体地,在每个所述轮换周期开始时,通过表1中的validator节点组网进行共识。所述共识可以采用任意一种一致性共识算法,在本实施例中以pbft为例。被选中的validator节点打包交易生成区块,并在validator节点中对区块进行共识。共识成功的区块会被存入validator节点本地区块链,其他节点也会从validator节点同步最新的区块。当某个validator节点无法正常进行共识工作时,其他的节点将会从公共的表1中选择这个validator节点对应的candidate节点进行替换。并且,所述对应的candidate节点在成为新的validator节点之前,还要从表2中顺序选择符合规则的下一个节点作为新的validator节点对应的candidate节点。以表1中validator节点数量为4个为例,当某个validator节点无法正常进行共识工作时,其他的节点将会从表1中选择这个validator节点对应的candidate节点进行替换,并从表2中选择第9个节点作为新的validator节点对应的candidate节点。本实施例提供的区块链共识处理方法,可以在区块链系统中实现一种分层的共识机制,将概率一致性共识算法与绝对一致性共识算法相结合,在大规模网络节点中先通过概率一致性共识算法选取相对较少数量的节点,然后再利用绝对一致性共识算法在所选节点中对共识内容进行高效共识。并且,所选择的节点以周期性轮换机制的形式,基于区块链共识本身保证了未来的轮换周期中数据的共识。本方案既可以适用于大规模分布式网络中,同时还可以高效地产生区块,提高了区块链系统的可用性,并扩展了区块链系统的适用范围,使区块链系统底层可以满足更多种业务场景的需求。第三实施例本发明还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有区块链共识处理程序10,所述区块链共识处理程序10可被至少一个处理器执行,以使所述至少一个处理器执行如上述的区块链共识处理方法的步骤。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台客户端(可以是手机,计算机,电子装置,空调器,或者网络设备等)执行本发明各个实施例所述的方法。以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
,均同理包括在本发明的专利保护范围内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1