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

区块链节点、系统和区块链构建方法

文献发布时间:2023-06-19 12:11:54


区块链节点、系统和区块链构建方法

技术领域

本发明涉及计算机技术领域,尤其涉及一种区块链节点、系统和区块链构建方法。

背景技术

区块链是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。按照节点的组网方式,区块链可以分为公有链和联盟链。公有链是成员可以自由加入的区块链网络,节点成员是不受限制的,数量是无限的。联盟链是只有许可的成员才能够加入的联盟链网络,联盟链的成员是固定的,并且成员之间是相互熟知的。

现有的区块链项目定位都很明确,性质也比较单一。不同类型的区块链采用专门的设计软件和源代码工程来实现,相互之间无法进行转换或者改造。

因此,如何构建区块链,使得同一份源代码能够同时支持联盟链和公有链是目前业界亟待解决的课题。

发明内容

本发明提供一种区块链节点、系统和区块链构建方法,用于解决现有技术中如何构建区块链,使得同一份源代码能够同时支持联盟链和公有链的技术问题。

本发明提供一种区块链节点,包括:

网络层,与区块链中其他区块链节点的网络层相连,用于获取所述区块链中的待处理交易数据;

共识层,与所述网络层连接,用于确定所述待处理交易数据的共识结果;

应用层,与所述共识层连接,包括标准模块和扩展模块;所述标准模块用于基于标准业务处理逻辑和所述共识结果,对所述待处理交易数据进行处理;所述扩展模块用于基于额外业务处理逻辑,对所述待处理交易数据进行处理;所述扩展模块与所述区块链的类型相对应;所述额外业务处理逻辑为除所述标准业务处理逻辑之外的业务处理逻辑。

根据本发明提供的区块链节点,所述标准业务处理逻辑包括基于所述共识结果,对所述待处理交易数据进行验证和执行,并更新所述区块链的状态。

根据本发明提供的区块链节点,所述应用层采用有限状态机模型。

根据本发明提供的区块链节点,所述应用层还基于所述区块链节点的当前状态对所述待处理交易数据进行有效性检查,所述待处理交易数据存储在交易队列池中。

根据本发明提供的区块链节点,所述扩展模块包括通证模块、费用模块和节点授权模块中的至少一种。

根据本发明提供的区块链节点,所述节点授权模块用于:

基于授权节点列表,确定所述区块链中每一节点的授权结果;

其中,所述授权节点列表以二叉树映射数据结构存储授权节点以及授权节点之间的连接信息。

根据本发明提供的区块链节点,所述网络层是基于LibP2P实现的,还用于在所述区块链中实现消息广播、事件订阅发布和节点自发现。

根据本发明提供的区块链节点,所述共识层还用于基于所述待处理交易数据,生成所述待处理交易数据对应的区块。

本发明还提供一种区块链系统,包括多个所述的区块链节点;所述区块链系统的类型为公有链或者联盟链。

本发明还提供一种区块链构建方法,应用于所述的区块链节点,包括:

确定待构建区块链的类型;

基于所述待构建区块链的类型,确定区块链节点应用层中的扩展模块;

基于所述扩展模块、标准模块、网络层和共识层,确定所述区块链节点;

基于多个所述区块链节点,确定所述待构建区块链。

本发明提供的区块链节点、系统和区块链构建方法,包括网络层、共识层和应用层,网络层用于获取区块链中的待处理交易数据,共识层用于确定待处理交易数据的共识结果,应用层用于对共识结果进行处理,确定区块链的状态,并处理待处理交易数据,应用层中的扩展模块是由区块链的类型确定的,由于采用了分层和解耦框架设计,可以根据同一份代码库,通过增加和删除第三方扩展模块,解决了同源不同类型区块链的构建问题,实现了联盟链和公有链的同源构建,降低了区块链构建的成本,提高了区块链构建的灵活性。

附图说明

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

图1为本发明提供的区块链节点的结构示意图;

图2为本发明提供的同源两栖区块链节点的示意图;

图3为本发明提供的区块链构建方法的流程示意图。

附图标记:

100:区块链节点; 110:网络层;120:共识层; 130:应用层;

131:标准模块; 132:扩展模块。

具体实施方式

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

在公有链中,节点可以自由地加入和退出区块链网络,节点可以加入共识,读取整个网络中的数据,可以不受限制地发送交易。联盟链是对节点的准入进行验证和授权的区块链网络。联盟链区块链网络是已知节点身份,并对节点身份进行认证和授权的分布式账本节点网络。联盟链的技术有自己专门的软件设计和源代码工程实现。主流的联盟链项目有超级账本Fabric、R3 Corda、Qurom、BCOS等项目,这些项目使用不同的架构设计、系统模型、组件模型,并且在编程语言上也不一样,有Go语言、C++语言和Java体系下的Kotlin语言。主流的公有链项目有Bitcoin、Ethereum等,不仅在账户模型上有差异,Bitcoin是UXTO账户模型,Ethereum是Account账户模型,而且编程语言也不同,Bitcoin是C++语言开发,Ethereum是Go语言开发。如果要将公有链的项目改造成联盟链,需要付出很大的工作量。将现有的主流联盟链改造成公链项目,存在相同的问题。使用同一份代码,来同时满足公链和联盟链项目的需要,是一个亟待解决的技术问题。

针对现有技术的不足,图1为本发明提供的区块链节点的结构示意图,如图1所示,区块链节点100包括:

网络层110,与区块链中其他区块链节点的网络层相连,用于获取区块链中的待处理交易数据;

共识层120,与网络层110连接,用于确定待处理交易数据的共识结果;

应用层130,与共识层120连接,包括标准模块131和扩展模块132;标准模块131用于基于标准业务处理逻辑和共识结果,对待处理交易数据进行处理;扩展模块132用于基于额外业务处理逻辑,对待处理交易数据进行处理;扩展模块132与区块链的类型相对应;额外业务处理逻辑为除标准业务处理逻辑之外的业务处理逻辑。

具体地,可以对公有链和联盟链的节点进行分析,将节点的共性部分用通用的模块来实现,将节点的差异性部分用独立的模块来完成。根据区块链的类型来调用不同的模块。因此,可以将区块链节点100进行功能解耦后,分为三层结构,分别为网络层110、共识层120和应用层130。各层之间采用接口协议进行连接。

区块链中各个节点的网络层110相互连接,用来获取区块链中的待处理交易数据。此处,待处理交易数据为用户通过终端提交的交易数据,待处理交易数据需要被打包成区块,经过共识后,生成区块链。待处理交易数据对应的业务类型可以为商品交易、能源交易和金融交易等。本发明实施例对于待处理交易数据的业务类型不作具体限定。例如,当待处理交易数据对应的业务类型为能源交易时,待处理交易数据可以包括交易ID(IdentityDocument)、卖方个人信息、买方个人信息、能源类型、卖方能源储量、能源交易量、竞价次数、竞价时长、成交价、交易金额和交易时间等。

共识层120与网络层110连接,用于确定待处理交易数据的共识结果。共识,是指区块链中区块链节点100对提交的待处理交易数据进行验证和确认,以允许生成新区块的过程。共识的方式包括代理共识和全员共识。代理共识,为从区块链网络中的所有节点中选取多个节点作为代理节点,从而代理网络中所有的节点对区块进行共识。全员共识,为区块链网络中的所有节点对区块进行共识。共识层所采用的共识算法包括POW(Proof Of Work)、POS( Proof of Stake)、DPOS(Delegated Proof of Stake)和BFT(Byzantine FaultTolerance,拜占庭容错)等。

区块链中的业务处理逻辑可以包括标准业务处理逻辑和额外业务处理逻辑。应用层130与共识层120连接,采用了模块化构架,由标准模块131和扩展模块132构成。应用层130通过标准模块131对共识结果进行处理,确定区块链的状态。若待处理交易数据通过共识,则标准模块131根据共识结果和标准业务处理逻辑,将待处理交易数据生成的区块加入区块链中,并更新区块链的状态。区块链的状态具体是指各个节点的状态。当区块链中的节点执行了交易后,会改变自身的状态。例如,共识算法要求节点每隔一段时间达成一次共识,从状态机的角度上来看就是每隔一段时间达到某种状态。又例如,当区块链中出现一个区块时,各节点对该区块共识后,并处理该区块对应的交易数据,此时节点中新加入了一个区块,实现了状态的更新。又例如,区块链为能源交易市场,每次能源交易结束都会改变一次状态,是一个不断进行的“状态-动作-奖励”的强化学习过程,其中状态即市场环境,动作即交易,而奖励就是交易双方获得的效用。

应用层130通过扩展模块132处理待处理交易数据,例如根据待处理交易数据对交易费用进行结算等。

扩展模块132的数量可以为多个,可以根据区块链的类型进行选择配置。区块链的类型包括公有链和联盟链。例如,若区块链为公有链,扩展模块132可以包括通证模块和费用模块,若区块链为联盟链,扩展模块132可以包括节点授权模块。

其中,网络层110、共识层120和应用层130中的标准模块131为区块链的构建提供了一个标准化的基础模板,是面向区块链开发的基础性标准框架,区块链的具体特性由应用层130中的扩展模块132决定,通过增加和删除第三方扩展模块132,可以使得构建的区块链既可以用于联盟链,也可以用于公有链。

本发明实施例提供的区块链节点,包括网络层、共识层和应用层,网络层用于获取区块链中的待处理交易数据,共识层用于确定待处理交易数据的共识结果,应用层用于对共识结果进行处理,确定区块链的状态,并处理待处理交易数据,应用层中的扩展模块是由区块链的类型确定的,由于采用了分层和解耦框架设计,可以根据同一份源代码,通过增加和删除第三方扩展模块,解决了同源不同类型区块链的构建问题,实现了联盟链和公有链的同源构建,降低了区块链构建的成本,提高了区块链构建的灵活性。

基于上述实施例,标准业务处理逻辑包括基于共识结果,对待处理交易数据进行验证和执行,并更新区块链的状态。

具体地,标准模块131用于基于共识结果,对待处理交易数据进行验证和执行,确定区块链的状态;扩展模块132用于基于额外业务处理逻辑,对待处理交易数据进行处理。

区块链的状态具体是指各个节点的状态。当区块链中的节点执行了交易后,会改变自身的状态。标准模块131主要用于根据共识结果,对待处理交易数据进行验证和执行,确定区块链的状态。

扩展模块132主要用于基于额外业务处理逻辑,对待处理交易数据进行处理。额外业务处理逻辑用来表示对待处理交易数据的处理方法或者处理方式,是对标准业务处理逻辑的补充。由于不同类型的区块链待处理交易数据的业务类型是不同的,因此,扩展模块132的类型也是随着区块链的类型而各不相同。

基于上述任一实施例,应用层采用有限状态机模型。

具体地,有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在其生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在区块链中,可以将各个节点视为状态机,整个网络是在不断动态变化的,通过状态机可以把握整个网络的动态。节点可以用来生成区块,也可以基于区块完成交易、验证、广播等各个动作。每个节点都有不同的状态,通过状态机,能描述清楚区块链的网络节点部分。

状态机中的状态数据描述区块链系统当前的状态。区块链的交易通过网络传播和共识之后触发状态机中状态转移函数的执行,改变区块链的状态。通过共识机制,使得各个区块链节点从相同的初始状态,执行交易相同的交易序列,会达到相同的最终状态。

基于上述任一实施例,应用层130还基于区块链节点100的当前状态对待处理交易数据进行有效性检查,待处理交易数据存储在交易队列池中。

具体地,用户可以通过客户端,根据RPC(Remote Procedure Call , 远程过程调用)服务将待处理交易数据存储在交易队列池中。可以采用队列和缓存的方式来实现。

应用层130根据区块链节点100的当前状态,对待处理交易数据进行有效性检查,标识出有效交易和无效交易,共识层120接收有效交易,打包成块进行采用BFT算法进行共识,随后触发应用层130改变区块链的当前状态。

基于上述任一实施例,扩展模块132包括通证模块、费用模块和节点授权模块中的至少一种。

具体地,通证模块、费用模块和节点授权模块可以根据区块链的类型进行确定。

通证模块用于确认交易是否存在原生通证。通证是以数字形式存在的权益凭证,它代表的是一种固有和内在的价值。通证的真实性、防篡改性、保护隐私等能力,由密码学予以保障。通证必须能够在一个网络中流动,从而随时随地可以验证。

费用模块用于结算交易过程中的费用。例如,当交易处理需要由手续费时,费用模块用于结算交易费用。

对于公有链,由于节点可以自由加入和退出区块链网络,因此,不需要节点授权。而对于联盟链,可以通过节点授权模块对节点的准入进行验证和授权。因此,在构建区块链时,若区块链的类型为联盟链,则需要增加节点授权模块。

基于上述任一实施例,节点授权模块用于:

基于授权节点列表,确定区块链中每一节点的授权结果;

其中,授权节点列表以二叉树映射数据结构存储授权节点以及授权节点之间的连接信息。

具体地,节点授权模块可以根据授权节点列表来确定区块链中每一节点的授权结果。授权节点列表中包括授权节点,以及授权节点之间的连接信息,可以作为配置文件,存储在区块链节点中。存储的形式可以为二叉树映射数据结构。

节点授权模块的使用方法包括:

一、增加能够参与联盟链网络节点的授权节点列表,并把它作为配置文件;

二、节点启动过程中,读取配置的授权节点列表,节点连接信息包括地址和公钥,使用二叉树映射来存储连接节点列表。配置文件中提供的网络节点列表是二叉树映射的初始值;

三、联盟链网络中存在一个管理员账户,通过发送节点加入消息类型,将新节点动态加入到二叉树映射数据结构中,并同步给其他可信节点;

四、根据节点连接列表,添加节点是否允许连接判断函数。如果节点在节点授权列表之中,则允许节点连接并加入区块链网络,构成点对点通信网络。如果节点身份不在联盟链参与节点的授权列表中,拒绝非法节点的连接、加入和同步。

基于上述任一实施例,网络层110基于LibP2P实现,还用于在区块链中实现消息广播、事件订阅发布和节点自发现。

具体地,LibP2P是一个模块化的网络栈,通过将各种传输和P2P协议结合在一起,使得开发人员很容易构建大型、健壮的P2P网络。

通过LibP2P的构建网络层110,可以在区块链中实现消息广播、事件订阅发布和节点自发现。LibP2P的构架包括节点路由模块、连接处理模块、分布式记录存储模块和发现模块。其中,节点路由模块用来决定使用哪些节点来路由指定的消息。这种路由机制可以递归甚至在广播/组播模式下完成。连接处理模块负责管理节点之间连接的创建、维护、销毁,包括协议多路复用、流多路复用和连接中继,同时进行多路传输。分布式记录存储模块用于记录节点相关的各种信息,便于连接管理和内容寻址。发现模块用于发现和识别网络中的其他节点。

Libp2p集成了各种传输协议和点对点协议,其主要作用是发现节点和内容,并且让不同的网络协议能够互相之间顺利的传送数据。

基于上述任一实施例,共识层120还用于基于待处理交易数据,生成待处理交易数据对应的区块。

具体地,用户可以通过终端向区块链网络中的区块链节点100发起交易请求,提交待处理交易数据。区块链节点100中的共识层120根据待处理交易数据进行相应的数据处理,比如,请求其他区块链节点对待处理交易数据进行共识处理,从而生成待处理交易数据对应的区块。

基于上述任一实施例,本发明实施例提供一种区块链系统,包括多个区块链节点,区块链系统的类型为公有链或者联盟链。

具体地,本发明实施例提供一种同时支持公有链和联盟链的区块链系统。该区块链系统依据分层和解耦框架设计思想,基于同一份代码库,通过增加和删除第三方扩展模块,以低成本、高灵活的方式达到同时支持联盟链和公有链的目的。

图2为本发明提供的同源两栖区块链节点的示意图,如图2所示,节点是区块链分布式网络组网的基本单元。同源两栖区块链的节点由基础服务和扩展服务两个部分组成,其中基础服务包括网络服务和共识服务,扩展服务是状态机应用,是模块化构架,由标准模块和扩展模块构成。

基础服务为状态机应用提供统一的标准化服务,状态机应用由扩展模块添加或删除第三方模块来进行功能扩展。

提供基础服务的网络层由LibP2P提供工程实现,提供节点间互连接、消息广播、消息收发、事件订阅发布、节点自发现等功能,负责整个区块链网络中的数据通信,为共识层提供基础网络服务。共识层是一个共识引擎,采用BFT共识算法来实现,负责对消息、交易、投票的共识以及打包出块。共识引擎为交易提供确定性,通过接口协议使得状态机从相同的初始状态,执行交易相同的交易序列,会达到相同的最终状态。共识引擎主要处理两类任务:共识逻辑和网络逻辑,共识逻辑为状态机应用提供支撑,网络逻辑依赖网络层处理共识和外部服务。

提供扩展服务的状态机应用由标准模块提供交易的验证、执行和状态的更新,由扩展模块提供额外业务逻辑处理。

网络层、共识层和状态机应用通过接口协议进行分层解耦和契约约束。接口协议是一个通用的接口,连接共识引擎和状态机,采用客户端与服务端的消息请求和响应模式,维护一个确定性的有限状态机。

外部客户端通过RPC服务将交易提交到交易队列池中,交易队列池,接收客户端发来的消息,消息中包含交易,这些都是未处理、未确认的交易。交易队列池的实现方式包括队列和缓存,从交易性能的角度考虑,采用内存作为主要存储方式。状态机通过状态数据对交易队列池中的交易进行有效性检查,标识出有效交易和无效交易,共识层接收有效交易,打包成块进行BFT共识,随后触发状态机状态改变。

网络层、共识层和状态机应用及其标准模块为区块链的构建提供了一个标准化的基础模板,是面向区块链开发的基础性标准框架,区块链的具体特性由扩展模块决定。

对节点的控制是区分公有链和联盟链的关键点和主要依据。联盟链和公有链的差异包括节点加入控制与权限、交易处理是否有手续费,需要花费交易费用以及是否存在原生通证。

联盟链和公有链共性的部分使用通用网络层、共识层、状态机应用及标准模块来实现,差异的部分使用额外独立的模块来完成。公有链中的交易手续费和原生通证这两个功能使用独立的模块进行源代码开发,属于扩展模块的部分。

在公有链中,不需要节点授权模块,同源代码当做联盟链使用的时候,需要增加节点授权模块增加节点的限制。节点授权模块的实现有两种方法:CA(数字证书)机制和授权节点列表机制。授权节点列表机制在前述实施例中已经阐述。此处,对CA机制进行说明。

CA机制实现方法包括:

构建CA根证书服务;节点加入时需要向CA申请数字证书,数字证书作为其节点身份;网络中现有节点通过根证书验证其数字证书的真实性和有效性,决定是否接受或者拒绝其连接。

基于上述任一实施例,图3为本发明提供的区块链构建方法的流程示意图,如图3所示,该方法应用于区块链节点,包括:

步骤310,确定待构建区块链的类型。

具体地,待构建区块链的类型可以分为公有链和联盟链。

步骤320,基于待构建区块链的类型,确定区块链节点应用层中的扩展模块。

具体地,例如,若待构建区块链的类型为公有链,则可以确定区块链节点应用层中的扩展模块包括通证模块和费用模块;若待构建区块链的类型为联盟链,则可以确定区块链节点应用层中的扩展模块包括通证模块、费用模块和节点授权模块。

步骤330,基于扩展模块、标准模块、网络层和共识层,确定区块链节点。

具体地,根据扩展模块和标准模块,可以确定区块链节点的应用层,再根据网络层和共识层,可以确定区块链节点的结构。

步骤340,基于多个区块链节点,确定待构建区块链。

具体地,将多个区块链节点进行连接,得到待构建的区块链。

网络层、共识层和应用层中的标准模块为区块链的构建提供了一个标准化的基础模板,是面向区块链开发的基础性标准框架,区块链的具体特性由应用层中的扩展模块决定。

本发明实施例提供的区块链构建方法,根据待构建区块链的类型,确定区块链节点应用层中的扩展模块,进而根据扩展模块、标准模块、网络层和共识层,确定区块链节点,从而构建区块链,所得到的构建区块链能够支持不同类型的区块链,由于采用了分层和解耦框架设计,可以根据同一份源代码,通过增加和删除第三方扩展模块,解决了同源不同类型区块链的构建问题,实现了联盟链和公有链的同源构建,降低了区块链构建的成本,提高了区块链构建的灵活性。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干命令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 区块链节点、系统和区块链构建方法
  • 区块链节点数据存储方法、区块链系统及区块链节点
技术分类

06120113207999