掌桥专利:专业的专利平台
掌桥专利
首页

区块链共识机制运行方法、装置、计算机设备及存储介质

文献发布时间:2023-06-19 18:37:28


区块链共识机制运行方法、装置、计算机设备及存储介质

技术领域

本发明涉及一种区块链共识机制运行方法、装置、计算机设备及存储介质,属于区块链技术领域。

背景技术

区块链主流共识机制采用静态指定的专用节点作为排序节点,从而完成共识的技术比较成熟、便捷,但也有如下不足:

1)排序节点没有容错能力。当排序节点宕机时,无法进行共识;

2)排序节点遭受攻击的概率变高。由于排序节点静态指定,并相对固定,使得攻击者很容易锁定到该排序节点,从而进行攻击。

发明内容

有鉴于此,本发明提供了一种区块链共识机制运行方法、装置、计算机设备及存储介质,其采用Raft选举机制对几个排序节点进行选举,从而提供排序服务,为所有区块确定顺序,从而确保整个区块链网络中各节点的账本达到一致性。

本发明的第一个目的在于提供一种区块链共识机制运行方法。

本发明的第二个目的在于提供一种区块链共识机制运行装置。

本发明的第三个目的在于提供一种计算机设备。

本发明的第四个目的在于提供一种存储介质。

本发明的第一个目的可以通过采取如下技术方案达到:

一种区块链共识机制运行方法,所述方法包括:

为区块链系统配置排序节点列表,并通过区块链系统分别启动排序节点服务;

在启动的排序节点中,采用Raft选举机制选举出主排序节点;

将代理节点连接主排序节点,使主排序节点提供排序服务,并使其余排序节点对请求排序的报文统一拒绝或转发给主排序节点,完成共识的模式。

进一步的,所述方法还包括:

通过代理节点将交易转发给主排序节点,使主排序节点将交易进行排序,并生成区块;

通过提交节点定期拉取主排序节点生成的区块列表;

通过提交节点验证区块列表中的每个交易,并将区块写入账本。

进一步的,所述通过代理节点将交易转发给主排序节点之前,还包括:

通过背书节点接收应用程序提交的交易提案;

通过背书节点执行智能合约,并在账本中模拟交易提案,得到读写集合;

通过背书节点返回包含读写集合的提案结果给应用程序;

通过代理节点接收应用程序提交的包含读写集合的交易。

进一步的,所述使主排序节点将交易进行排序,并生成区块,具体包括:

使主排序节点创建交易的批处理,将交易按网络接收的先后进行排序,并生成区块。

进一步的,所述代理节点和提交节点为Node节点。

进一步的,所述采用Raft选举机制选举出主排序节点,具体包括:

在Node节点中配置其中一部分作为候选排序节点;

对候选排序节点进行选举,选举出主排序节点。

本发明的第二个目的可以通过采取如下技术方案达到:

一种区块链共识机制运行装置,所述装置包括:

配置单元,用于为区块链系统配置排序节点列表,并通过区块链系统分别启动排序节点服务;

选举单元,用于在启动的排序节点中,采用Raft选举机制选举出主排序节点;

共识单元,用于将代理节点连接主排序节点,使主排序节点提供排序服务,并使其余排序节点对请求排序的报文统一拒绝或转发给主排序节点,完成共识的模式。

进一步的,所述装置还包括:

转发单元,用于通过代理节点将交易转发给主排序节点,使主排序节点将交易进行排序,并生成区块;

拉取单元,用于通过提交节点定期拉取主排序节点生成的区块列表;

验证单元,用于通过提交节点验证区块列表中的每个交易,并将区块写入账本。

本发明的第三个目的可以通过采取如下技术方案达到:

一种计算机设备,包括处理器以及用于存储处理器可执行程序的存储器,其特征在于,所述处理器执行存储器存储的程序时,实现上述的区块链共识机制运行方法。

本发明的第四个目的可以通过采取如下技术方案达到:

一种存储介质,存储有程序,所述程序被处理器执行时,实现上述的区块链共识机制运行方法。

本发明相对于现有技术具有如下的有益效果:

1、本发明改进了区块链采用单排序节点进行排序,从而完成共识,解决了排序节点没有容错能力,大大提升排序节点宕机时可选举新的排序节点,从而使共识服务可恢复的问题,将Raft动态选举机制选举出的排序节点替换单排序节点的方式,提高了排序节点的容错性,具有显著的隔离效果,避免单排序节点机宕机而造成的系统部可用,提升了共识的稳定性。

2、本发明解决排序节点遭受攻击的概率变高的问题,与现有只用一个指定的排序节点进行排序不同,将采用多个排序节点进行选举,使得排序节点并非固定,这样分散了攻击者的目标,使得遭受攻击的概率变低。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本发明实施例1的区块链共识机制运行方法的流程图。

图2为本发明实施例1的区块链共识机制运行方法中Raft选举机制选举的示意图。

图3为本发明实施例1的区块链共识机制运行方法中区块链共识中的交易流程示意图。

图4为本发明实施例2的区块链共识机制运行装置的结构框图。

图5为本发明实施例3的管理平台的结构框图。

具体实施方式

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

实施例1:

在阐述本实施例的具体内容之前,先对缩略语和关键术语进行定义,如下:

区块链:融合数学、密码学、互联网和计算机编程等领域技术,构造的一种具有去中心化、不可篡改、可追溯、集体维护等特性的分布式账本形式的数据库。

区块链节点:运行区块链的基本单位,根据节点角色的不同,具备提案、背书、达成共识、记账等不同功能。

共识机制:区块链中通过数学算法实现不同节点之间对交易达成一致的方法。

RPC传输:使用RPC(Remote Procedure Call Protocol,远程过程调用协议)的方式进行数据交互,实现RPC客户端和RPC服务器之间的数据传输。各个节点既是RPC客户端又是RPC服务器。

如图1所示,本实施例提供了一种区块链共识机制运行方法,区块链共识机制包括组建排序节点集群、排序节点选举、排序节点排序、提交节点拉取排序节点消息、提交节点账本提交这五大部分,该方法包括以下步骤:

S101、为区块链系统配置排序节点列表,并通过区块链系统分别启动排序节点服务。

该步骤S101为组建排序节点集群过程,管理员为区块链系统配置排序节点列表,并通过区块链系统分别启动排序节点服务。

S102、在启动的排序节点中,采用Raft选举机制选举出主排序节点。

S103、将代理节点连接主排序节点,使主排序节点提供排序服务,并使其余排序节点对请求排序的报文统一拒绝或转发给主排序节点,完成共识的模式。

该步骤S102-S103为排序节点选举过程,其中采用Raft选举机制选举出主排序节点如图2所示,在Node节点中配置其中一部分作为候选排序节点,剩下的Node节点可以作为代理节点和提交节点,对候选排序节点进行选举,选举出主排序节点,当客户端连接代理节点时,将代理节点连接主排序节点,使主排序节点提供排序服务,并使其余候选排序节点对请求排序的报文统一拒绝或转发给主排序节点,完成共识的模式,主排序节点响应回的信息由代理节点或其余候选排序节点转发。

本实施例采用排序节点集群选举的机制参与共识的方式,即区块链系统启动若干个排序节点组建集群,并采用Raft选举机制对几个排序节点进行选举,选举出主排序节点的方式来完成共识的模式,从而提供排序服务,为所有区块确定顺序,从而确保整个区块链网络中各节点的账本达到一致性。

如图1和如图3所示,为了完成区块链共识中的交易,本实施例的区块链共识机制运行方法还可包括:

S104、通过背书节点接收应用程序提交的交易提案。

S105、通过背书节点执行智能合约,并在账本中模拟交易提案,得到读写集合。

S106、通过背书节点返回包含读写集合的提案结果给应用程序。

具体地,客户端应用程序(SDK,英文全称Software Development Kit)提交交易提案给背书节点,背书节点接收到交易提案后,执行智能合约,并在账本中模拟提案,得到读写集合,返回包含读写集合的提案结果给应用程序。

S107、通过代理节点接收应用程序提交的包含读写集合的交易。

应用程序提交包含读写集合的交易给代理节点,此时代理节点接收到的交易请求是经过背书的交易请求。

S108、通过代理节点将交易转发给主排序节点,使主排序节点将交易进行排序,并生成区块。

该步骤S104-S108为排序节点排序过程,使主排序节点将交易进行排序,并生成区块,具体为:使主排序节点在内存中申请一块数组区域作为交易池,当达成一定条件(交易池数量、大小或收集交易的时间等关键参数达到阈值)时,主排序节点将对交易池中的交易进行批量处理:将交易按网络接收的先后进行排序,然后将这一批次的交易合并成一个区块数据,从而生成区块,并持久化到主排序节点的区块列表中。

S109、通过提交节点定期拉取主排序节点生成的区块列表。

该步骤S109为提交节点拉取排序节点消息过程,提交节点定期拉取主排序节点生成的区块列表,主排序节点负责同步区块列表给提交节点。

S110、通过提交节点验证区块列表中的每个交易,并将区块写入账本。

该步骤S109为提交节点账本提交过程,提交节点接收到主排序节点同步的区块列表,验证区块列表中的每个交易,并将区块写入账本。

应当注意,尽管以特定顺序描述了上述实施例的方法操作,但是这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。

实施例2:

如图4所示,本实施例提供了一种区块链共识机制运行装置,该装置包括配置单元401、选举单元402和共识单元403,各个单元具体包括:

配置单元401,用于为区块链系统配置排序节点列表,并通过区块链系统分别启动排序节点服务。

选举单元402,用于在启动的排序节点中,采用Raft选举机制选举出主排序节点。

共识单元403,用于将代理节点连接主排序节点,使主排序节点提供排序服务,并使其余排序节点对请求排序的报文统一拒绝或转发给主排序节点,完成共识的模式。

进一步的,本实施例的区块链共识机制运行装置还可包括:

转发单元404,用于通过代理节点将交易转发给主排序节点,使主排序节点将交易进行排序,并生成区块。

拉取单元405,用于通过提交节点定期拉取主排序节点生成的区块列表。

验证单元406,用于通过提交节点验证区块列表中的每个交易,并将区块写入账本。

需要说明的是,本实施例提供的装置仅以上述各功能模块的划分进行举例说明,在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

实施例3:

本实施例提供了一种计算机设备,如图5所示,其包括通过系统总线501连接的处理器502、存储器和网络接口503,该处理器用于提供计算和控制能力,该存储器包括非易失性存储介质504和内存储器505,该非易失性存储介质504存储有操作系统、计算机程序和数据库,该内存储器505为非易失性存储介质中的操作系统和计算机程序的运行提供环境,处理器502执行存储器存储的计算机程序时,实现上述实施例1的区块链共识机制运行方法:

为区块链系统配置排序节点列表,并通过区块链系统分别启动排序节点服务;

在启动的排序节点中,采用Raft选举机制选举出主排序节点;

将代理节点连接主排序节点,使主排序节点提供排序服务,并使其余排序节点对请求排序的报文统一拒绝或转发给主排序节点,完成共识的模式。

进一步地,还可包括:

通过代理节点将交易转发给主排序节点,使主排序节点将交易进行排序,并生成区块;

通过提交节点定期拉取主排序节点生成的区块列表;

通过提交节点验证区块列表中的每个交易,并将区块写入账本。

实施例4:

本实施例提供了一种存储介质,该存储介质为计算机可读存储介质,其存储有计算机程序,计算机程序被处理器执行时,实现上述实施例1的区块链共识机制运行方法:

为区块链系统配置排序节点列表,并通过区块链系统分别启动排序节点服务;

在启动的排序节点中,采用Raft选举机制选举出主排序节点;

将代理节点连接主排序节点,使主排序节点提供排序服务,并使其余排序节点对请求排序的报文统一拒绝或转发给主排序节点,完成共识的模式。

进一步地,还可包括:

通过代理节点将交易转发给主排序节点,使主排序节点将交易进行排序,并生成区块;

通过提交节点定期拉取主排序节点生成的区块列表;

通过提交节点验证区块列表中的每个交易,并将区块写入账本。

需要说明的是,本实施例的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。而在本实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、系统或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。

上述计算机可读存储介质可以以一种或多种程序设计语言或其组合来编写用于执行本实施例的计算机程序,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Python、C++,还包括常规的过程式程序设计语言—诸如C语言或类似的程序设计语言。程序可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

综上所述,本发明采用启动几个排序节点来进行选举,指定排序节点集群作为候选排序节点,候选排序节点共同选出主排序节点,由主排序节点提供排序服务,当主排序节点崩溃时,候选排序节点将再次选举,选举新的主排序节点取代已崩溃的排序节点从而提供排序服务,保障系统共识的正常进行。

以上所述,仅为本发明专利较佳的实施例,但本发明专利的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明专利所公开的范围内,根据本发明专利的技术方案及其发明专利构思加以等同替换或改变,都属于本发明专利的保护范围。

技术分类

06120115631383