首页 / 专利库 / 银行与财务事项 / 区块链交易 / 一种区块链共识方法、系统、电子设备、存储介质

一种链共识方法、系统、电子设备、存储介质

阅读:780发布:2020-05-11

专利汇可以提供一种链共识方法、系统、电子设备、存储介质专利检索,专利查询,专利分析的服务。并且本 申请 公开了一种 区 块 链 共识方法、系统、 电子 设备、存储介质。该方法包括:当前提议 节点 收集交易池中的交易打包成交易区块,并向当前验证节点发送交易区块;当前验证节点对交易区块进行至少两轮验证投票;若所有轮验证投票均通过,则交易区块共识成功。通过上述方式,能够实现对交易区块的共识。,下面是一种链共识方法、系统、电子设备、存储介质专利的具体信息内容。

1.一种链共识方法,其特征在于,包括:
当前提议节点收集交易池中的交易打包成交易区块,并向当前验证节点发送所述交易区块;
所述当前验证节点对所述交易区块进行至少两轮验证投票,每轮所述验证投票中,每个所述当前验证节点对所述交易区块进行验证得到验证结果,向其他所述当前验证节点发送与所述验证结果对应的投票消息并接收来自于其他所述当前验证节点的投票消息,所述投票消息包括肯定投票消息或否定投票消息,每轮验证投票通过的条件为所有所述投票消息中所述肯定投票消息的占比大于预设阈值
若所有轮所述验证投票均通过,则所述交易区块共识成功。
2.根据权利要求1所述的方法,其特征在于,
所述每个所述当前验证节点对所述交易区块进行验证得到验证结果包括:
若所述当前验证节点在第一时段内收到所述交易区块,则读取所述交易区块并对其中的每笔交易进行验证;
若所有所述交易通过所述验证,则所述验证结果为通过,对应的所述投票消息为肯定投票消息;若至少一笔所述交易未通过所述验证,则所述验证结果为未通过,对应的所述投票消息为否定投票消息。
3.根据权利要求1所述的方法,其特征在于,
所述每个所述当前验证节点对所述交易区块进行验证得到验证结果,向其他所述当前验证节点发送与所述验证结果对应的投票消息并接收来自于其他所述当前验证节点的投票消息之后进一步包括:
统计节点统计每个所述当前验证节点收到的所述肯定投票消息的数量;
若所有所述肯定投票消息的数量与所有所述投票消息的数量的比值大于所述预设阈值,则本轮验证投票通过。
4.根据权利要求1所述的方法,其特征在于,
所述每个所述当前验证节点对所述交易区块进行验证得到验证结果,向其他所述当前验证节点发送与所述验证结果对应的投票消息并接收来自于其他所述当前验证节点的投票消息之后进一步包括:
每个所述当前验证节点统计收到所述肯定投票消息的数量,若所述肯定投票消息的数量与其他所述当前验证节点理论上收到所述投票消息的数量的比值大于所述预设阈值,则向统计节点发送通过消息;
所述统计节点统计收到的所述通过消息的数量,若所述通过消息的数量与所述当前验证节点的数量相等,则本轮验证投票通过。
5.根据权利要求3或4所述的方法,其特征在于,所述本轮验证投票通过之后进一步包括:
所述统计节点通知部分或全部所述当前验证节点进行下一轮验证投票;或所述统计节点通知所述当前提议节点,所述当前提议节点通知部分或全部所述当前验证节点进行下一轮验证投票。
6.根据权利要求5所述的方法,其特征在于,
所述统计节点为一所述当前验证节点、所述当前提议节点或独立于所述当前验证节点和所述当前提议节点的其他节点。
7.根据权利要求5所述的方法,其特征在于,
进行第i+1轮验证投票的当前验证节点为第i轮验证投票中发送所述肯定投票消息的当前验证节点。
8.根据权利要求1所述的方法,其特征在于,
不同轮的验证投票中所述当前验证节点对所述交易区块的验证内容不同。
9.根据权利要求1所述的方法,其特征在于,
所述交易区块共识成功之后进一步包括:
记账节点将所述交易记录打包为新区块添加到区块链上。
10.根据权利要求9所述的方法,其特征在于,
所述记账节点将所述交易记录打包为新区块添加到区块链上之前进一步包括:
排序节点接收来自于所述当前提议节点或所述当前验证节点的共识成功的所述交易区块;
所述排序节点将指定时段内收到的共识成功的所述交易区块按照时间进行排序,并将排序后的所述交易区块发送给所述记账节点。
11.根据权利要求10所述的方法,其特征在于,
所述记账节点将所述交易执行记录打包为新区块添加到区块链上之后进一步包括:
所述排序节点检测到本地存储的区块链的高度小于所述记账节点存储的区块链的高度时,所述排序节点从所述记账节点获取所述新区块并添加到本地存储的区块链账本中。
12.根据权利要求1所述的方法,其特征在于,
所述当前提议节点收集交易池中的交易打包成交易区块之前进一步包括:
排序节点接收来自于交易发起方的交易;
所述排序节点将所述交易放入所述交易池中。
13.根据权利要求12所述的方法,其特征在于,所述排序节点将所述交易放入所述交易池中之前进一步包括:
所述排序节点对所述交易进行排序和/或初步验证。
14.一种区块链共识方法,其特征在于,包括:
当前验证节点接收来自于当前提议节点的交易区块,所述交易区块是所述当前提议节点收集交易池中的交易打包而成的;
所述当前验证节点对所述交易区块进行至少两轮验证投票,每轮所述验证投票中,所述当前验证节点对所述交易区块进行验证得到验证结果,向其他当前验证节点发送与所述验证结果对应的投票消息并接收来自于所述其他当前验证节点的投票消息,所述投票消息包括肯定投票消息或否定投票消息,每轮验证投票通过的条件为所有所述投票消息中所述肯定投票消息的占比大于预设阈值;
若所有轮验证投票均通过,则所述交易区块共识成功。
15.根据权利要求14所述的方法,其特征在于,
所述当前验证节点对所述交易区块进行验证得到验证结果包括:
若所述当前验证节点在第一时段内收到所述交易区块,则读取所述交易区块并对其中的每笔交易进行验证;
若所有所述交易通过所述验证,则所述验证结果为通过,对应的所述投票消息为肯定投票消息;若至少一笔所述交易未通过所述验证,则所述验证结果为未通过,对应的所述投票消息为否定投票消息。
16.根据权利要求14所述的方法,其特征在于,
所述当前验证节点对所述交易区块进行验证得到验证结果,向其他所述当前验证节点发送与所述验证结果对应的投票消息并接收来自于其他所述当前验证节点的投票消息之后进一步包括:
所述当前验证节点统计收到所述肯定投票消息的数量,若所述肯定投票消息的数量与其他所述当前验证节点理论上收到所述投票消息的数量的比值大于所述预设阈值,则向统计节点发送通过消息。
17.根据权利要求14所述的方法,其特征在于,
所述当前验证节点对所述交易区块进行验证得到验证结果,向其他所述当前验证节点发送与所述验证结果对应的投票消息并接收来自于其他所述当前验证节点的投票消息之后进一步包括:
所述当前验证节点作为统计节点统计所述其他当前验证节点收到的所述肯定投票消息的数量;
若所有所述肯定投票消息的数量与所有所述投票消息的数量的比值大于所述预设阈值,则本轮验证投票通过。
18.根据权利要求14所述的方法,其特征在于,
所述当前验证节点对所述交易区块进行验证得到验证结果,向其他所述当前验证节点发送与所述验证结果对应的投票消息并接收来自于其他所述当前验证节点的投票消息之后进一步包括:
所述当前验证节点作为统计节点统计收到的通过消息的数量,所述通过消息是所述其他当前验证节点收到的所述肯定投票消息的数量与其他所述当前验证节点理论上收到所述投票消息的数量的比值大于所述预设阈值的情况下发送的,若所述通过消息的数量与所述当前验证节点的数量相等,则本轮验证投票通过。
19.根据权利要求17或18所述的方法,其特征在于,所述本轮验证投票通过之后进一步包括:
所述当前验证节点作为统计节点通知部分或全部所述其他当前验证节点进行下一轮验证投票;或
所述统计节点通知所述当前提议节点,所述当前提议节点通知部分或全部所述其他当前验证节点进行下一轮验证投票。
20.根据权利要求14所述的方法,其特征在于,
不同轮的验证投票中所述当前验证节点对所述交易区块的验证内容不同。
21.一种区块链共识系统,其特征在于,包括:
当前提议节点用于收集交易池中的交易打包成交易区块,并向当前验证节点发送所述交易区块;
所述当前验证节点用于对所述交易区块进行至少两轮验证投票,每轮所述验证投票中,每个所述当前验证节点对所述交易区块进行验证得到验证结果,向其他所述当前验证节点发送与所述验证结果对应的投票消息并接收来自于其他所述当前验证节点的投票消息,所述投票消息包括肯定投票消息或否定投票消息,每轮验证投票通过的条件为所有所述投票消息中所述肯定投票消息的占比大于预设阈值;
若所有轮验证投票均通过,则所述交易区块共识成功。
22.一种电子设备,其特征在于,所述电子设备包括处理器、与所述处理器耦接的存储器,其中,
所述存储器存储有用于实现如权利要求14-20中任一项所述的区块链交易方法的程序指令;
所述处理器用于执行所述存储器存储的所述程序指令以实现区块链交易。
23.一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序被执行时实现权利要求1-20中任一项所述方法的步骤。

说明书全文

一种链共识方法、系统、电子设备、存储介质

技术领域

[0001] 本申请涉及区块链领域,特别涉及一种区块链共识方法、系统、电子设备、存储介质。

背景技术

[0002] 区块链是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。共识机制作为区块链的核心技术之一,能够保证上链数据始终分布一致性。
[0003] 然而当前主流的如工作量证明(PoW)、权益证明(PoS)、股份授权证明(DPoS)等共识机制还不够完善。发明内容
[0004] 本申请主要解决的技术问题是提供一种区块链共识方法、系统、电子设备、存储介质,能够解决共识机制还不够完善的问题,提高交易区块的共识结果的准确性。
[0005] 为解决上述技术问题,本申请第一方面提供了一种区块链共识方法,该方法包括:当前提议节点收集交易池中的交易打包成交易区块,并向当前验证节点发送交易区块;当前验证节点对交易区块进行至少两轮验证投票,每轮验证投票中,每个当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息,投票消息包括肯定投票消息或否定投票消息,每轮验证投票通过的条件为所有投票消息中肯定投票消息的占比大于预设阈值;若所有轮验证投票均通过,则交易区块共识成功。
[0006] 为解决上述技术问题,本申请第二方面提供了一种区块链共识方法,该方法包括:当前验证节点接收来自于当前提议节点的交易区块,交易区块是当前提议节点收集交易池中的交易打包而成的;当前验证节点对交易区块进行至少两轮验证投票,每轮验证投票中,当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息,投票消息包括肯定投票消息或否定投票消息,每轮验证投票通过的条件为所有投票消息中肯定投票消息的占比大于预设阈值;若所有轮验证投票均通过,则交易区块共识成功。
[0007] 为解决上述技术问题,本申请第三方面提供了一种区块链共识系统,该系统包括:当前提议节点用于收集交易池中的交易打包成交易区块,并向当前验证节点发送交易区块;当前验证节点用于对交易区块进行至少两轮验证投票,每轮验证投票中,每个当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息,投票消息包括肯定投票消息或否定投票消息,每轮验证投票通过的条件为所有投票消息中肯定投票消息的占比大于预设阈值;若所有轮验证投票均通过,则交易区块共识成功。
[0008] 为解决上述技术问题,本申请第四方面提供了一种电子设备,该电子设备包括处理器以及与处理器耦接的存储器,该存储器存储有用于在处理器运行后实现本申请第一方面和第二方面提供的方法的程序指令。
[0009] 为解决上述技术问题,本申请第五方面提供了一种计算机存储介质,该计算机存储介质存储有计算机程序,计算机程序被执行时实现本申请第一方面和第二方面提供的方法。
[0010] 上述方案,由当前提议节点发起对交易区块的共识,在共识过程中,当前验证节点对交易区块进行多轮验证,并在每轮验证得到验证结果后,根据验证结果向其他当前验证节点发送投票消息,接收来自其他当前验证节点的投票消息,当所有轮当前验证节点接收到的投票消息中肯定投票消息占比超过预设阈值时,交易区块才共识成功,从而能够提高交易区块共识结果的准确性;整个共识过程并非依赖单一节点完成,而是多个节点协同完成,能够提高共识过程的效率。附图说明
[0011] 图1为本申请第一实施例提供的区块链共识方法的流程图
[0012] 图2为本申请第二实施例提供的区块链共识方法的流程图;
[0013] 图3为本申请第三实施例提供的区块链共识方法的流程图;
[0014] 图4为本申请第四实施例提供的区块链共识方法的流程图;
[0015] 图5为本申请第五实施例提供的区块链共识方法的流程图;
[0016] 图6为本申请第六实施例提供的区块链交易方法的流程图;
[0017] 图7为本申请第七实施例提供的区块链共识方法的流程图;
[0018] 图8为本申请第八实施例提供的区块链共识方法的流程图;
[0019] 图9为本申请第九实施例提供的区块链共识方法的流程图;
[0020] 图10为本申请第十实施例提供的区块链共识方法的流程图;
[0021] 图11为本申请第十一实施例提供的区块链共识方法的流程图;
[0022] 图12为本申请第十二实施例提供的区块链共识方法的流程图;
[0023] 图13为本申请第十三实施例提供的区块链共识方法的流程图;
[0024] 图14为本申请第十四实施例提供的区块链共识方法的流程图;
[0025] 图15为本申请第十五实施例提供的区块链共识系统的结构示意图;
[0026] 图16为本申请第十六实施例提供的区块链共识系统的结构示意图;
[0027] 图17为本申请第十七实施例提供的一种电子设备的结构示意图。

具体实施方式

[0028] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0029] 本申请中的术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括至少一个该特征。本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。
[0030] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。需注意的是,对于下述方法实施例,若有实质上相同的结果,本申请的方法并不以图示的流程顺序为限。
[0031] 请参阅图1,图1为本申请第一实施例提供的区块链共识方法流程图。如图1所示,本实施例提供的区块链共识方法可以包括以下步骤:
[0032] S101:当前提议节点收集交易池中的交易打包成交易区块,并向当前验证节点发送交易区块。
[0033] 当前提议节点可以将交易打包成交易区块后发给当前验证节点,当前验证节点可以在接收到提议节点发来的交易区块后发起对交易区块的共识。
[0034] 当前提议节点可以是从多个核心节点中选择出来的发起本轮共识的节点,当前验证节点可以为剩余核心节点中的部分或全部。
[0035] 可选地,核心节点被选中成为当前提议节点的概率与其投票权重正相关,即核心节点的投票权重越大,则被选中成为当前提议节点的概率越大。可以根据非阻塞轮询选择算法从多个核心节点组成的集合中选出当前提议节点。例如,当前提议节点可以为所有核心节点中投票权重最高的一个。在多个核心节点中选择一个作为当前提议节点后,剩余的部分或全部核心节点可以作为当前验证节点对交易区块进行验证投票。
[0036] 在其他实施例中,可以采用其他的方式选择当前提议节点和/或当前验证节点。或者,当前提议节点和/或当前验证节点可以是固定不变的。
[0037] 本实施例中,核心节点可以包括应用状态机模块、共识算法模块、P2P网络通信模块、加密模块和应用区块链接口
[0038] 其中,应用状态机模块是交易的真正执行者,对交易进行应用逻辑处理,并可选地针对某些持久状态执行事务,同时应用状态数据;共识算法模块能够确保不同节点以相同的应用逻辑对不同交易进行有序的记账与多节点事务同步;P2P网络通信模块用于实现节点与节点之间的通信;加密模块用于对加密信息进行加密,其加密方式可以为对称加密技术、非对称加密技术、混合加密技术等。应用区块链接口是一个协议,用于支持用任何编程语言对交易进行处理。当区块链接收到应用层发起的交易时,可以通过该应用区块链接口发送交易,并调用区块链服务的节点,执行共识服务。
[0039] S102:当前验证节点对交易区块进行至少两轮验证投票。
[0040] 每轮验证投票中,每个当前验证节点对接收到的交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息。投票消息包括肯定投票消息或否定投票消息。每轮验证投票通过的条件为所有投票消息中肯定投票消息的占比大于预设阈值。
[0041] 可选地,若当前验证节点在第一时段内收到交易区块,则读取交易区块并对其中的每笔交易进行验证。
[0042] 其中,当前提议节点发起提议时会向所有当前验证节点发送开始提议的消息,第一时段的起点为当前提议节点发送开始提议的消息的时刻。第一时段的长度可以人为给定。在当前提议节点发起提议后,启动本轮验证投票的是接收交易区块,交易区块起到了启动本轮验证投票的作用。当然也可以采用其他的触发信号,例如启动验证投票的通知来启动本轮验证投票。
[0043] 可选地,不同轮的验证投票中当前验证节点对交易区块的验证内容可以不同。在一些具体实施例中,验证的内容可以为发起交易的节点的身份、交易余额、信用评级,交易内容的完整性等。不同轮的验证投票中当前验证节点对交易区块的验证方式也可以不同。比如,验证方式可以为数字签名验证,当然,也可以为其他形式的验证。
[0044] 可以理解的是,数字签名验证有两个作用:一是证明消息确实是由信息发送方签名并发出来的,二是确定消息的完整性。数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
[0045] 在本步骤中,发起交易的节点可以作为交易的发起方,其可以为本实施例中涉及到的提议节点、当前验证节点,也可以是其他能够接收用户需求指令的节点。
[0046] 可选地,若所有交易通过验证,则验证结果为通过,对应的投票消息为肯定投票消息;若至少一笔交易未通过验证,则验证结果为未通过,对应的所述投票消息为否定投票消息。
[0047] 当前验证节点可以在交易区块内的所有交易均通过验证时向其他的当前验证节点发送肯定票消息,在交易区块内存在交易没有通过验证时会向其他的当前验证节点发送否定票消息,当前,也可以在交易区块内存在交易没有通过验证时不发送否定投票消息。在当前验证节点对交易区块进行验证投票的过程中,每个当前验证节点不仅可以向其他验证节点发送投票消息,也可以接收其他当前验证节点所发送的投票消息。
[0048] 所有投票消息可以为每个当前验证节点理论上接收到其他当前验证节点发送的投票消息数量。当每轮所有投票消息中肯定投票消息的占比均大于预设阈值时,认为该交易区块通过当前验证节点的该轮验证投票。
[0049] 在一具体实施例中,预设阈值可以为2/3,当前验证节点个数为N,则所有当前验证节点能够接收到的最大投票消息数量为N(N-1)。在一轮验证投票中,当前验证节点在交易区块内的所有交易均通过验证时向其他的当前验证节点发送肯定票消息,在交易区块内存在交易没有通过验证时向其他的当前验证节点发送否定票消息,,当最终得到的肯定票数量超过 时,交易区块通过本轮验证投票;当最终得到的肯定票数量小于或等于时,该交易区块没有通过本轮验证投票。若该交易区块没有通过此轮验证,则此轮验证流程会被当前验证节点自动中断。共识过程中断后,可以从多个核心节点中选择新的核心节点作为当前提议节点,以重新发起新一轮共识。新一轮共识的对象可以是上一轮共识失败的交易区块、上一轮共识失败的交易区块拆分出的区块或是新的当前提议节点重新打包得到的新的交易区块。
[0050] 而当当前提议节点和/或当前验证节点所处网络出现异常,如延迟、掉线、离线等情况时,当前验证节点可能会在以当前提议节点向所有当前验证节点广播开始提议的消息为起点的长度为T1的第一时段内接收不到当前提议节点发来的交易区块。而当前验证节点在长度为T1的第一时段内没有接收到交易区块时,可以将第一时段的长度延长为T1+t1,以增加当前验证节点能够接收到交易区块的可能性。若在长度为T1+t1的时段内当前验证节点依然没有接收到交易区块,则当前验证节点自动中断后续共识流程。该过程可以为单点故障容错过程,可通过智能合约来进行,智能合约的输入条件为:当网络延迟、掉线、离线,导致当前验证节点未在长度为T1+t1的时段内接收到交易区块;输出结果为:当前验证节点自动中断后续共识流程。
[0051] S103:若所有轮验证投票均通过,则交易区块共识成功。
[0052] 当交易区块通过当前验证节点的每一轮验证投票时,认为该交易区块共识成功。
[0053] 本实施例提供的共识方法中,将当前验证节点接收到的肯定票数量作为各轮验证投票通过的依据,当前验证节点接收到的所有投票消息中肯定投票消息占比超过预设阈值时,交易区块才共识成功,从而能够提高共识结果的准确性。整个共识过程并非依赖单一节点完成,而是多个节点协同完成,能够提高共识过程的效率。
[0054] 此外,核心节点被选中成为当前提议节点的概率与其投票权重呈正相关,从而能够降低单个节点控制权过大的概率,减小系统过于中心化而造成不公平、不公正、不可信的可能性。
[0055] 并且,当网络正常时也能够完成对交易区块的共识,而当网络出现异常导致当前验证节点无法在设置的时间内收到当前提议节点发来的交易区块时,当前验证节点自动中断后续共识流程,从多个核心节点中选择新的核心节点作为当前提议节点,以重新发起新一轮共识。新一轮共识的对象可以是上一轮共识失败的交易区块、上一轮共识失败的交易区块拆分出的区块或是新的当前提议节点重新打包得到的新的交易区块,这样既可以确保每次共识的无缝连接,也可减小网络异常对交易区块共识流程带来的影响。
[0056] 请参阅图2,图2为本申请第二实施例提供的区块链共识方法的流程图。如图2所示,在第一实施例的基础上,本实施例提供的区块链共识方法,在每个当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息之后,还可以进一步包括步骤:
[0057] S201:统计节点统计每个当前验证节点收到的肯定投票消息的数量。
[0058] 可选地,统计节点为一当前验证节点、当前提议节点或独立于当前验证节点和当前提议节点的其他节点。
[0059] S202:若所有肯定投票消息的数量与所有投票消息的数量的比值大于预设阈值,则本轮验证投票通过。
[0060] 若所有肯定投票消息的数量与所有投票消息的数量的比值小于或等于预设阈值,则本轮验证投票不通过,开启新的一轮共识。
[0061] S203:统计节点通知部分或全部当前验证节点进行下一轮验证投票。
[0062] 在第i(i为正整数)轮验证投票通过后,可以由统计节点直接通知当前验证节点当前轮验证投票已通过,然而当前验证节点开始对交易区块的第i+1轮验证投票。
[0063] 可选地,第i+1轮验证投票的当前验证节点可以为第i轮验证投票中发送肯定投票消息的当前验证节点。当第i轮验证投票中发送肯定投票消息的当前验证节点仅为当前验证节点的一部分时,统计节点可以仅通知第i轮验证投票中发送肯定投票消息的这部分当前验证节点对交易区块的开始第i+1轮验证投票,以提高第i+1轮投票的有效性。
[0064] 通过上述方式,能够完成当前验证节点对交易区块的多轮验证投票。
[0065] 请参阅图3,图3为本申请第三实施例提供的区块链共识方法的流程图。如图3所示,在第一实施例的基础上,本实施例提供的区块链共识方法,在每个当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息之后,还可以进一步包括步骤:
[0066] S301:统计节点统计每个当前验证节点收到的肯定投票消息的数量。
[0067] S302:若所有肯定投票消息的数量与所有投票消息的数量的比值大于预设阈值,则本轮验证投票通过。
[0068] 本实施例中,S301~S302的详细描述请参见第二实施例,在此不再重复。
[0069] S303:统计节点通知当前提议节点,当前提议节点通知部分或全部当前验证节点进行下一轮验证投票。
[0070] 在第i轮验证投票通过后,可以由统计节点先把通知发给当前提议节点,然后由当前提议节点来负责通知当前验证节点开始对交易区块的第i+1轮验证投票。
[0071] 当第i轮验证投票中发送肯定投票消息的当前验证节点仅为当前验证节点的一部分时,提议节点可以在接收到统计节点发来的第i轮验证投票通过的消息后,通知第i轮验证投票中发送肯定投票消息的这部分当前验证节点对交易区块的开始第i+1轮验证投票,以提高第i+1轮投票的有效性。
[0072] 请参阅图4,图4为本申请提供的第四实施例的区块链共识方法的流程图。如图4所示,在第一实施例的基础上,本实施例提供的区块链共识方法,在每个当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息之后,还可以进一步包括步骤:
[0073] S401:每个当前验证节点统计收到肯定投票消息的数量,若肯定投票消息的数量与其他当前验证节点理论上收到投票消息的数量的比值大于预设阈值,则向统计节点发送通过消息。
[0074] 本步骤中,每个当前验证节点不仅可以向其他当前验证节点发送投票消息以及接收来自于其他当前验证节点的投票消息,还可以对接收到的投票消息进行统计。其中,统计方式包括但不限于计数方式。
[0075] S402:统计节点统计收到的通过消息的数量,若通过消息的数量与当前验证节点的数量相等,则本轮验证投票通过。
[0076] 统计节点收到的通过消息的数量与当前验证节点的数量相等就代表每个当前验证节点收到的肯定投票消息的数量与其他当前验证节点的数量的比值大于预设阈值。
[0077] S403:统计节点通知部分或全部当前验证节点进行下一轮验证投票。
[0078] 本步骤详细描述请参见S203,在此不再重复。
[0079] 请参阅图5,图5为本申请提供的第五实施例的区块链共识方法的流程图。如图5所示,在第一实施例的基础上,本实施例提供的区块链共识方法,在每个当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息之后,还可以进一步包括步骤:
[0080] S501:每个当前验证节点统计收到肯定投票消息的数量,若肯定投票消息的数量与其他当前验证节点理论上收到投票消息的数量的比值大于预设阈值,则向统计节点发送通过消息。
[0081] S502:统计节点统计收到的通过消息的数量,若通过消息的数量与当前验证节点的数量相等,则本轮验证投票通过。
[0082] 本实施例中,S501~S502请参见上述第四实施例,在此不再重复。
[0083] S503:统计节点通知当前提议节点,当前提议节点通知部分或全部当前验证节点进行下一轮验证投票。
[0084] 本步骤详细描述与S303相同,在此不再重复。
[0085] 请参阅图6,图6为本申请第六实施例提供的区块链交易方法的流程图。如图6所示,本实施例提供的区块链交易方法可以包括以下步骤:
[0086] S601:排序节点接收来自于交易发起方的交易。
[0087] 交易发起方可以接收用户输入的交易需求指令,并根据该交易需求指令代理用户生成交易后发送至排序节点。
[0088] S602:排序节点对交易进行排序和/或初步验证。
[0089] 排序节点收到交易后可以通过Order方法和Configure方法对交易进行排序,也可以通过应用区块链接口调用应用逻辑(状态转移函数)对交易序列号、发送方余额等信息进行初步验证,确认交易是否合规。
[0090] S603:排序节点将交易放入交易池中。
[0091] 交易经过排序后和/或通过初步验证后才能被放入交易池中。
[0092] S604:当前提议节点收集交易池中的交易打包成交易区块,并向当前验证节点发送交易区块。
[0093] S605:当前验证节点对交易区块进行至少两轮验证投票。
[0094] S606:若所有轮验证投票均通过,则交易区块共识成功。
[0095] 本实施例中,S604~S606的详细描述请参见上述实施例,在此不再重复。
[0096] S607:排序节点接收来自于当前提议节点或当前验证节点的共识成功的交易区块。
[0097] 交易区块共识成功后,可以由当前验证节点直接将该交易区块发送至排序节点,也可以由当前验证节点先将共识成功的交易区块发送至当前提议节点,然后由提议节点将共识成功的交易区块发送至排序节点。
[0098] S608:排序节点将指定时段内收到的共识成功的交易区块按照时间进行排序,并将排序后的交易区块发送给记账节点。
[0099] S609:记账节点将交易记录打包为新区块添加到区块链上。
[0100] 记账节点在接收到排序节点发来的指定时段内共识成功的交易区块后,可以直接将这些交易区块内的交易记录打包为新区块添加到区块链上,也可以先验证交易区块内的交易,再将通过验证的交易记录形成一个新的区块添加到区块链上。S610:排序节点检测到本地存储的区块链的高度小于记账节点存储的区块链的高度时,排序节点从记账节点获取新区块并添加到本地存储的区块链账本中。
[0101] 排序节点可以读取记账节点存储的区块,与本地存储的区块相比,当记账节点存在新增的区块时,将该新增区块添加到本地存储的区块链账本中,因此排序节点存储的区块链账本中区块高度增加。核心节点也可以读取记账节点的区块高度以实现其存储的区块链账本同步。
[0102] 本实施例中,交易区块由多个当前验证节点进行多轮验证投票,当参与共识的多个当前验证节点接收到的投票消息为依据来判断交易区块是否合法,能够提高交易区块共识的效率和提高最终得到的交易区块共识结果的准确性,进而能够提高交易的安全性,优化区块链的性能。并且,在记账节点可以将交易记录形成新区块加到区块链上,各节点(排序节点、核心节点)能够检测记账节点存储的区块链的高度,并在检测到的本地存储的区块高度小于记账节点存储的区块高度时,将记账节点的区块链上新增的区块添加到本地存储的区块链账本中,从而能够实现各节点所存储的账本中区块高度的同步。
[0103] 请参阅图7,图7为本申请第七实施例提供的区块链共识方法流程图。如图7所示,本实施例提供的区块链共识方法可以包括以下步骤:
[0104] S701:当前验证节点接收来自于当前提议节点的交易区块。
[0105] 交易区块是当前提议节点收集交易池中的交易打包而成的,当前提议节点是从多个核心节点中选择出来的发起本轮共识的节点,当前验证节点为剩余核心节点中的一个,核心节点被选中成为当前提议节点的概率与其投票权重正相关。
[0106] 可以根据非阻塞轮询选择算法从多个核心节点组成的集合中选出提议节点,核心节点的投票权重越大,则被选中成为提议节点的概率越大。例如,当前提议节点可以为所有核心节点中投票权重最高的一个。
[0107] S702:当前验证节点对交易区块进行至少两轮验证投票。
[0108] 每轮验证投票中,当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息,投票消息包括肯定投票消息或否定投票消息,每轮验证投票通过的条件为所有投票消息中肯定投票消息的占比大于预设阈值。
[0109] 可选地,若当前验证节点在第一时段内收到交易区块,则读取交易区块并对其中的每笔交易进行验证。
[0110] 若所有交易通过验证,则验证结果为通过,对应的投票消息为肯定投票消息;若至少一笔交易未通过验证,则验证结果为未通过,对应的投票消息为否定投票消息。
[0111] 可选地,不同轮的验证投票中所述当前验证节点对所述交易区块的验证内容不同。
[0112] S703:若所有轮验证投票均通过,则交易区块共识成功。
[0113] 本实施例中,S701~S703的详细描述请参见第一实施例,在此不再重复。
[0114] 请参阅图8,图8为本申请第八实施例提供的区块链共识方法的流程图。如图8所示,本实施例提供的区块链共识方法,在当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息之后进一步包括:
[0115] S801:当前验证节点统计收到肯定投票消息的数量。
[0116] 当前验证节点可以自行统计其接收到的肯定投票消息数量。
[0117] S802:若肯定投票消息的数量与其他当前验证节点理论上收到投票消息的数量的比值大于预设阈值,则向统计节点发送通过消息。
[0118] 若当前验证节点统计出来的其他当前验证节点发来的肯定投票消息数量与其他当前验证节点理论上收到投票消息的数量的比值大于预设阈值,则对于该当前验证节点而言,验证投票通过,向统计节点发送通过消息。
[0119] 统计节点的详细描述请参见前述实施例。
[0120] 请参阅图9,图9为本申请第九实施例提供的区块链共识方法的部分流程图。如图9所示,本实施例提供的区块链共识方法,在当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息之后进一步包括:
[0121] S901:当前验证节点作为统计节点统计其他当前验证节点收到的肯定投票消息的数量。
[0122] 可以从所有当前验证节点中选择一个作为统计节点来统计其他当前验证节点收到的肯定投票消息数量。本实施例的执行主体就是选中的当前验证节点。统计方式包括但不限于计数方式。
[0123] S902:若所有肯定投票消息的数量与所有投票消息的数量的比值大于预设阈值,则本轮验证投票通过。
[0124] 所有肯定投票消息的数量可以为统计节点统计出来的所有当前验证节点收到的肯定投票消息数量之和,所有投票消息的数量可以为统计节点利用当前验证节点的数量计算出来的所有投票消息数量的理论值。
[0125] S903:当前验证节点作为统计节点通知部分或全部其他当前验证节点进行下一轮验证投票。
[0126] 请参阅图10,图10为本申请第十实施例提供的区块链共识方法的流程图。如图10所示,本实施例提供的区块链共识方法,在当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息之后进一步包括:
[0127] S1001:当前验证节点作为统计节点统计其他当前验证节点收到的肯定投票消息的数量。
[0128] S1002:若所有肯定投票消息的数量与所有投票消息的数量的比值大于预设阈值,则本轮验证投票通过。
[0129] S1003:当前验证节点作为统计节点通知当前提议节点,当前提议节点通知部分或全部其他当前验证节点进行下一轮验证投票。
[0130] 本实施例中,S1001~S1003的详细描述请参见前述实施例,在此不再重复。
[0131] 请参阅图11,图11为本申请第十一实施例提供的区块链共识方法的流程图。如图11所示,本实施例提供的区块链共识方法,在当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息之后进一步包括:
[0132] S1101:当前验证节点作为统计节点统计收到的通过消息的数量。
[0133] 可选地,通过消息可以是其他当前验证节点收到的肯定投票消息的数量与其他当前验证节点理论上收到投票消息的数量的比值大于预设阈值的情况下发送的。
[0134] 每个当前验证节点(可包括作为统计节点的当前验证节点)可自行统计收到的肯定投票消息的数量、其他当前验证节点理论上收到投票消息的数量及收到的肯定投票消息的数量与其他当前验证节点理论上收到投票消息的数量的比值,当该比值大于预设阈值时,向作为统计节点的当前验证节点发送一条通知消息。
[0135] S1102:若通过消息的数量与当前验证节点的数量相等,则本轮验证投票通过。
[0136] 若作为统计节点的当前验证节点收到的通过消息条数(包括自身的通过消息)等于当前验证节点的数量,则认为交易区块通过了本轮验证投票。
[0137] S1103:当前验证节点作为统计节点通知部分或全部其他当前验证节点进行下一轮验证投票。
[0138] 本步骤详细描述请参见上述实施例,在此不再重复。
[0139] 请参阅图12,图12为本申请第十二实施例提供的区块链共识方法的流程图。如图12所示,本实施例提供的区块链共识方法,在当前验证节点对交易区块进行验证得到验证结果,向其他当前验证节点发送与验证结果对应的投票消息并接收来自于其他当前验证节点的投票消息之后进一步包括:
[0140] S1201:当前验证节点作为统计节点统计收到的通过消息的数量。
[0141] 可选地,通过消息可以是其他当前验证节点收到的肯定投票消息的数量与其他当前验证节点理论上收到投票消息的数量的比值大于预设阈值的情况下发送的。
[0142] S1202:若通过消息的数量与当前验证节点的数量相等,则本轮验证投票通过。
[0143] S1203:当前验证节点作为统计节点通知当前提议节点,当前提议节点通知部分或全部其他当前验证节点进行下一轮验证投票。
[0144] 本实施例中S1201~S1203的详细描述可参见上述实施例,在此不再重复。
[0145] 请参阅图13,图13为本申请第十三实施例提供的区块链共识方法的流程图。如图13所示,本实施例提供的区块链共识方法可以包括以下步骤:
[0146] S1301:从多个核心节点中选择一个作为当前提议节点,剩余核心节点中的部分或全部作为当前验证节点,核心节点被选中成为当前提议节点的概率与其投票权重正相关。
[0147] 核心节点的投票权重越大,被选为当前提议节点的概率越大。可选地,当前提议节点为所有核心节点中投票权重最高的一个。
[0148] S1302:当前提议节点收集交易池中的交易打包成交易区块,并向当前验证节点发送交易区块。
[0149] S1303:当前验证节点对交易区块进行至少一轮验证投票。
[0150] 每轮验证投票可以采用前述实施例中验证投票的机制,也可以采用其他机制,例如工作量证明(POW)、权益证明(POS)、股份授权证明(DPOS)、授权拜占庭容错(DBFT)等共识机制。
[0151] S1304:若所有轮验证投票均通过,则交易区块共识成功。
[0152] 当交易区块通过当前验证节点的至少一轮验证投票时,认为该交易区块共识成功。
[0153] 请参阅图14,图14为本申请第十四实施例提供的区块链共识方法的流程图。如图14所示,本实施例提供的区块链共识方法可以包括以下步骤:
[0154] S1401:排序节点接收来自于交易发起方的交易;
[0155] S1402:排序节点对交易进行排序和/或初步验证。
[0156] S1403:排序节点将交易放入交易池中。
[0157] S1404:从多个核心节点中选择一个作为当前提议节点,剩余核心节点中的部分或全部作为当前验证节点。
[0158] 可选地,核心节点被选中成为当前提议节点的概率与其投票权重正相关。
[0159] S1405:当前提议节点收集交易池中的交易打包成交易区块,并向当前验证节点发送交易区块。
[0160] S1406:当前验证节点对交易区块进行至少一轮验证投票。
[0161] S1407:若所有轮验证投票均通过,则交易区块共识成功。
[0162] S1408:排序节点接收来自于当前提议节点或当前验证节点的共识成功的交易区块。
[0163] S1409:排序节点将指定时段内收到的共识成功的交易区块按照时间进行排序,并将排序后的交易区块发送给记账节点。
[0164] S1410:记账节点将交易记录打包为新区块添加到区块链上。
[0165] S1411:排序节点检测到本地存储的区块链的高度小于记账节点存储的区块链的高度时,排序节点从记账节点获取新区块并添加到本地存储的区块链账本中。
[0166] 本实施例所涉及的步骤的详细描述请参见上述实施例,在此不再赘述。
[0167] 请参阅图15,图15为本申请第十五实施例提供的区块链共识系统的结构示意图,如图15所示,本申请实施例提供的区块链共识系统可以包括:当前提议节点151,当前验证节点152。
[0168] 其中,当前提议节点151用于收集交易池中的交易打包成交易区块,并向当前验证节点152发送交易区块,其中当前提议节点151是从多个核心节点(图未示)中选择出来的发起本轮共识的节点,当前验证节点152为剩余核心节点中的部分或全部。
[0169] 可选地,核心节点被选中成为当前提议节点151的概率与其投票权重正相关,即核心节点的投票权重越大,则被选中成为当前提议节点151的概率越大。可以根据非阻塞轮询选择算法从多个核心节点组成的集合中选出当前提议节点151。
[0170] 在其他实施例中,可以采用其他的方式选择当前提议节点151和/或当前验证节点152。或者,当前提议节点151和/或当前验证节点152可以是固定不变的。
[0171] 当前提议节点151可以为所有核心节点中投票权重最高的一个。在多个核心节点中选择一个作为当前提议节点151后,剩余的部分或全部核心节点可以作为当前验证节点152对交易区块进行验证投票。
[0172] 当前验证节点152用于对交易区块进行至少两轮验证投票,每轮验证投票中,每个当前验证节点152用于对交易区块进行验证得到验证结果,向其他当前验证节点152发送与验证结果对应的投票消息并接收来自于其他当前验证节点152的投票消息,投票消息可以包括肯定投票消息或否定投票消息,每轮验证投票通过的条件为所有投票消息中肯定投票消息的占比大于预设阈值。
[0173] 若所有轮验证投票均通过,则交易区块共识成功。
[0174] 请参阅图16,图16为本申请第十六实施例提供的区块链共识系统的结构示意图。如图16所示,本申请第十六实施例提供的区块链共识系统包括多个核心节点(图未示)。多个核心节点中的一个被选作当前提议节点161,剩余核心节点中的部分或全部被选作当前验证节点162,核心节点被选中成为当前提议节点161的概率与其投票权重正相关。
[0175] 其中,当前提议节点162用于收集交易池中的交易打包成交易区块,并向当前验证节点162发送交易区块。
[0176] 当前验证节点162用于对交易区块进行至少一轮验证投票。
[0177] 若所有轮验证投票均通过,则交易区块共识成功。
[0178] 请参阅图17,图17为本申请第十七实施例提供的一种电子设备的结构示意图。如图17所示,该电子设备1700包括处理器1710、与处理器1710耦接的存储器1720,其中,存储器1720存储有用于实现上述任一实施例的方法的程序指令;处理器1710用于执行存储器1720存储的程序指令以实现上述任一实施例的方法。其中,处理器1710还可以称为CPU(Central Processing Unit,中央处理单元)。处理器1710可能是一种集成电路芯片,具有信号的处理能。处理器1710还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0179] 需要说明的是,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机存储介质来指令相关的硬件完成。计算机程序可存储于一计算机可读存储介质中,该计算机程序被执行时能够实现上述任一实施例中的中任一实施例的方法或步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器随机存取存储器、点载波信号、电信信号以及软件分发介质等。
[0180] 以上仅为本申请的实施例,并非限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程的变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈