基于无协商随机抽签的用于区块链系统的共识方法和装置与流程

文档序号:14912129发布日期:2018-07-10 23:42阅读:415来源:国知局

本发明涉及区块链技术领域,尤其涉及一种基于无协商随机抽签的用于区块链系统的共识方法和装置。



背景技术:

区块链的每个节点在本地维护着一个由前后区块链接构成的账本,每个区块记录了账本从前一个状态迁移到后一状态所经历的变更,在区块中具体体现为交易集合及其顺序。所谓的输入共识,指的就是在区块链网络的每个节点上,相同高度的区块,它们包含的交易集合及其顺序是一致的。输入共识是区块链系统实现账本一致的保证——如果每个节点在初始状态是一致的,并且从前一个状态迁移到后一状态所经历的变更也是一致的,那么它们的后一状态也应当是一致,以此类推它们的最新状态也应当是一致的,从而实现了分布式账本的同步。

要在区块链节点之间达成输入共识(即从当前状态迁移到下一状态的变更共识),有两种方法:一是通过节点之间相互通信协商达成如何变更;二是无须临时协商,节点之前事先约定和内置一种规则,由这种规则决定如何变更。考虑到网络通信的延迟,以及节点对协商协议的解析和应答耗时,显然后者在达成输入共识的实时性及节约算力方面具有巨大的优势。但是无协商方式的安全隐患在于:由于这种规则是事先约定的,会存在被人为操纵的风险。



技术实现要素:

本发明提供的基于无协商随机抽签的用于区块链系统的共识方法和装置,能够防止恶意节点操纵抽签结果,确保区块链运行的安全性;另一方面,由于在每个特定时段只有唯一节点拥有出块资格,避免了竞争性的分叉,从而提高区块链系统的交易实时性。

第一方面,本发明提供一种基于无协商随机抽签的用于区块链系统的共识方法,所述方法包括:

在接收到合法的区块之后,根据全网信任证书列表确定当前具备候选资格的节点;

对当前具备候选资格的节点进行无协商随机抽签,获得按顺序排列的节点序列,所述节点序列决定了在随后的每个特定时段,拥有出块资格的唯一出块节点;

在随后的每个特定时段内,出块节点发送预出块并收集背书;

背书节点在接收到背书请求之后,检查预出块的合法性并对合法的预出块签名;

在出块节点收集到超过50%的背书签名之后,将背书签名追加到预出块,形成正式区块,向全网广播。

可选地,所述对当前具备候选资格的节点进行无协商随机抽签,获得按顺序排列的节点序列包括:以接收到的合法区块的哈希值为随机种子,以当前具备候选资格的节点的集合为输入,执行相同的算式,获得按顺序排列的节点序列。

可选地,所述在随后的每个特定时段内,发送预出块并收集背书包括:

在随后的每个特定时段内,根据收集的交易进行排序并预执行,获得有效的交易集合,进行打包和签名之后形成预出块,广播到背书节点,请求背书节点对所述预出块进行签名;

收集背书节点的签名。

可选地,所述方法还包括:在出块节点完成正式出块之后,在本地确定下一轮具备候选资格的节点,进行无协商随机抽签。

可选地,所述方法还包括:在全网节点接收到广播的正式区块之后,检查所述正式区块的合法性;

在正式区块的合法性检查通过之后,顺序执行正式区块中的交易,完成状态迁移;

在本地确定下一轮具备候选资格的节点,进行无协商随机抽签。

可选地,所述方法还包括:

如果在所述出块时间段内未完成状态迁移,指定所述节点序列中的下一节点作为当前时段的合法出块节点。

第二方面,本发明提供一种基于无协商随机抽签的用于区块链系统的共识装置,所述装置包括:

确定单元,用于在接收到合法的区块之后,根据全网信任证书列表确定当前具备候选资格的节点;

第一选举单元,对当前具备候选资格的节点进行无协商随机抽签,获得按顺序排列的节点序列,所述节点序列决定了在随后的每个特定时段,拥有出块资格的唯一出块节点;

预执行单元,用于在随后的每个特定时段内,出块节点发送预出块并收集背书;

背书单元,用于背书节点在接收到背书请求之后,检查预出块的合法性并对合法的预出块签名;

出块单元,用于在出块节点收集到超过50%的背书签名之后,将背书签名追加到预出块,形成正式区块,向全网广播。

可选地,所述第一选举单元,用于以接收到的合法区块的哈希值为随机种子,以当前具备候选资格的节点的集合为输入,执行相同的算式,获得按顺序排列的节点序列。

可选地,所述预执行单元包括:

预执行模块,用于根据收集的交易进行排序并预执行,获得有效的交易集合,进行打包和签名之后形成预出块,广播到背书节点,请求背书节点对所述预出块进行签名;

收集模块,用于收集背书节点的签名。

可选地,所述装置还包括:

第二选举单元,用于在所述出块单元完成正式出块之后,在本地确定下一轮具备候选资格的节点,进行无协商随机抽签。

可选地,所述装置还包括:

检查单元,用于在全网节点接收到广播的正式区块之后,检查所述正式区块的合法性;

执行单元,用于在正式区块的合法性检查通过之后,顺序执行正式区块中的交易,完成状态迁移;

第三选举单元,用于在本地确定下一轮具备候选资格的节点,进行无协商随机抽签。

可选地,所述装置还包括:

指定单元,用于如果在所述出块时间段内未完成状态迁移,指定所述节点序列中的下一节点作为当前时段的合法出块节点。

本发明实施例提供的基于无协商随机抽签的用于区块链系统的共识方法和装置,各节点基于无协商随机抽签算法选举出一致的出块节点序列,达成分布式节点间的输入共识,根据选举结果按顺序执行区块中的交易,完成区块链前一状态向后一状态的迁移。与现有技术相比,本发明能够防止恶意节点操纵抽签结果,确保区块链运行的安全性;另一方面,由于在每个特定时段只有唯一节点拥有出块资格,避免了竞争性的分叉,从而提高区块链系统的交易实时性。

附图说明

图1为本发明一实施例基于无协商随机抽签的用于区块链系统的共识方法的流程图;

图2为本发明另一实施例基于无协商随机抽签的用于区块链系统的共识方法的流程图;

图3为本发明一实施例基于无协商随机抽签的用于区块链系统的共识装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明采用的无协商共识机制通过节点之间事先约定和内置一种规则,并且在规则之上引入不可预知的随机因素,以达到共识结果不可事先预知的效果。本发明采用一种无协商随机抽签算法(Consultation-free random draw algorithm with distributed environment,CFRD)实现上述目标。基于所述无协商随机抽签算法本发明提供一种基于无协商随机抽签的用于区块链系统的共识方法,如图1所示,所述方法包括:

S11、在接收到合法的区块之后,根据全网信任证书列表确定当前具备候选资格的节点;

S12、对当前具备候选资格的节点进行无协商随机抽签,获得按顺序排列的节点序列,所述节点序列决定了在随后的每个特定时段,拥有出块资格的唯一出块节点;

具体地,S11与S12为执行无协商随机抽签算法的过程,执行本发明提供的无协商随机抽签算法的前提条件包括:区块链中组网的每个节点具备与其他节点通信的手段;每个节点维护了一张全网信任证书列表;每个可能成为候选的节点不断收集全网传播的交易。

触发本发明提供的无协商随机抽签算法的时机为:每个节点接收到上一个合法的区块之后,在本地触发下一轮负责出块的节点序列的选举。

可选地,所述根据全网信任证书列表确定当前具备候选资格的节点包括:在接收到正式区块之后,以在网节点为全集,根据角色配置确定目前具备候选资格的节点;

所述对当前具备候选资格的节点进行无协商随机抽签,获得按顺序排列的节点序列包括:以接收到的合法区块的哈希值为随机种子,以当前具备候选资格的节点的集合为输入,执行相同的算式,获得按顺序排列的节点序列。

由于上一个正式区块的哈希值受时间戳、交易集合等事先无法预知的因素扰动,因此导致选举结果无法预知,从而防止恶意节点操纵选举,同时这个哈希值在各节点上又是一致的,因此各节点各自运算,获得的选举结果是一致的。通过无需协商达成输入共识,能够极大地降低共识成本,提高区块链系统的交易通量和交易实时性。

无协商随机抽签完成之后,决定了在本轮出块中,每一个特定时段,一个特定的节点必定处于以下三种角色之一:

出块节点(Blocker):负责决定本轮区块的交易集合及其顺序;发送预出块并收集背书,如果收集到足额的背书并完成正式出块,完成状态迁移,并触发下轮无协商随机抽签算法的执行。

背书节点(Endorser):负责检查Blocker发送的预出块的合法性,如果合法对其进行背书签名;接收正式区块并检查其合法性,如果检查通过,顺序执行正式区块中的交易,完成状态迁移,并触发下轮无协商随机抽签算法的执行。

普通节点(Follower):接收正式区块并检查其合法性,如果检查通过,顺序执行正式区块中交易,完成状态迁移,并触发下轮无协商随机抽签算法的执行。

序列中的每个出块节点拥有按顺序对应的出块时间段,时间段基线是接收到上次正式区块的时刻,每个节点收到时刻有先后,节点之间的时间基线误差取决于正式区块的网络传播速度,对多数正常节点而言这个误差在可预判的范围,因此,系统可以依据此预判设置出块超时时间,使得在出块超时前能够做到:出块节点有足够时间完成出块;多数节点能够正确判定合法出块者的时间段资格。

假定对当前具备候选资格的节点进行无协商随机抽签,获得负责出块的节点序列为[blocker1,blocker2,…,blokern],配置出块超时为1分钟,那么所有节点承认blocker1在第1分钟拥有出块资格(Blocker),序列中的其他节点具有背书资格(Endorser),不在序列中的节点为普通节点(Follower)。如图2所示,为出块节点blocker1,背书节点blocker2及普通节点Follower的运行流程图。

S13、在随后的每个特定时段内,出块节点发送预出块并收集背书;

可选地,所述在出块节点的出块时间段内,发送预出块并收集背书包括:

在随后的每个特定时段内,根据收集的交易进行排序并预执行,获得有效的交易集合,进行打包和签名之后形成预出块,广播到背书节点,请求背书节点对所述预出块进行签名;

收集背书节点的签名。

在第1分钟之内blocker1根据它收集的交易,对其进行排序并预执行,获得一个排序的有效交易集合,并将其打包、签名之后广播到背书节点。

S14、背书节点在接收到背书请求之后,检查预出块的合法性并对合法的预出块签名;

背书节点接到背书请求之后,验证发送者blocker1的合法性,验证过程包括:与本地的选举结果对比,执行如下检查:

1.发送者blocker1是否是本轮选举出的出块人;

2.当前时段是否是blocker1的出块时段;

3.打包中的每条交易是否具备合法的签名;

4.按顺序预执行每条交易,执行过程是否正常;输出结果是否与blocker1在背书块中申明的一致。

如果以上检查均通过,背书节点对该块签名。

S15、在出块节点收集到超过50%的背书签名之后,将背书签名追加到预出块,形成正式区块,向全网广播。

出块节点收集超过50%的背书签名才能形成正式区块,这一过程应用了无协商随机抽签算法的选举结果防止非51%的节点攻击。

可选地,所述方法还包括:在出块节点完成正式出块之后,在本地确定下一轮具备候选资格的节点,进行无协商随机抽签。

在blocker1完成正式出块之后,会在本地触发下一轮的无协商随机抽签算法的执行。

可选地,所述方法还包括:在全网节点接收到广播的正式区块之后,检查所述正式区块的合法性;

在正式区块的合法性检查通过之后,顺序执行正式区块中的交易,完成状态迁移;

在本地确定下一轮具备候选资格的节点,进行无协商随机抽签。

全网每个节点接受到正式块之后,执行以下检查:

1.发送者blocker1是否是本轮选举出的出块人;

2.当前时段是否是blocker1的出块时段;

3.背书签名者是否有背书资格;

4.背书签名的数量是否达到要求。

如果以上检查均通过,节点承认此区块的合法性,并执行区块中的交易,实现前一状态向后一状态的迁移。各节点在本地触发下一轮的无协商随机抽签算法的执行。

可选地,所述方法还包括:如果在所述出块时间段内未完成状态迁移,指定所述节点序列中的下一节点作为当前时段的合法出块节点。

如果在约定的blocker1的出块时段(第1分钟)没有完成正式出块,那么全网节点根据出块节点序列,将下一出块节点blocker2视作当前时段的合法出块节点,以此类推。

本发明实施例提供的基于无协商随机抽签的用于区块链系统的共识方法,各节点基于无协商随机抽签算法选举出一致的出块节点序列,达成分布式节点间的输入共识,根据选举结果按顺序执行区块中的交易,完成区块链前一状态向后一状态的迁移。与现有技术相比,本发明能够防止恶意节点操纵抽签结果,确保区块链运行的安全性;另一方面,由于在每个特定时段只有唯一节点拥有出块资格,避免了竞争性的分叉,从而提高区块链系统的交易实时性。

本发明实施例还提供一种基于无协商随机抽签的用于区块链系统的共识装置,如图3所示,所述装置包括:

确定单元11,用于在接收到合法的区块之后,根据全网信任证书列表确定当前具备候选资格的节点;

第一选举单元12,对当前具备候选资格的节点进行无协商随机抽签,获得按顺序排列的节点序列,所述节点序列决定了在随后的每个特定时段,拥有出块资格的唯一出块节点;

预执行单元13,用于在随后的每个特定时段内,出块节点发送预出块并收集背书;

背书单元14,用于背书节点在接收到背书请求之后,检查预出块的合法性并对合法的预出块签名;

出块单元15,用于在出块节点收集到超过50%的背书签名之后,将背书签名追加到预出块,形成正式区块,向全网广播。

可选地,所述第一选举单元,用于以接收到的合法区块的哈希值为随机种子,以当前具备候选资格的节点的集合为输入,执行相同的算式,获得按顺序排列的节点序列。

可选地,所述预执行单元13包括:

预执行模块,用于根据收集的交易进行排序并预执行,获得有效的交易集合,进行打包和签名之后形成预出块,广播到背书节点,请求背书节点对所述预出块进行签名;

收集模块,用于收集背书节点的签名。

可选地,所述装置还包括:

第二选举单元,用于在所述出块单元完成正式出块之后,在本地确定下一轮具备候选资格的节点,进行无协商随机抽签。

可选地,所述装置还包括:

检查单元,用于在全网节点接收到广播的正式区块之后,检查所述正式区块的合法性;

执行单元,用于在正式区块的合法性检查通过之后,顺序执行正式区块中的交易,完成状态迁移;

第三选举单元,用于在本地确定下一轮具备候选资格的节点,进行无协商随机抽签。

可选地,所述装置还包括:

指定单元,用于如果在所述出块时间段内未完成状态迁移,指定所述节点序列中的下一节点作为当前时段的合法出块节点。

本发明实施例提供的基于无协商随机抽签的用于区块链系统的共识装置,各节点基于无协商随机抽签算法选举出一致的出块节点序列,达成分布式节点间的输入共识,根据选举结果按顺序执行区块中的交易,完成区块链前一状态向后一状态的迁移。与现有技术相比,本发明能够防止恶意节点操纵抽签结果,确保区块链运行的安全性;另一方面,由于在每个特定时段只有唯一节点拥有出块资格,避免了竞争性的分叉,从而提高区块链系统的交易实时性。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1