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

区块链服务的实现方法、装置、设备及存储介质

文献发布时间:2023-06-19 11:29:13


区块链服务的实现方法、装置、设备及存储介质

技术领域

本申请涉及区块链技术领域,尤其涉及一种区块链服务的实现方法、装置、设备及存储介质。

背景技术

区块链作为一种去中心化的分布式账本技术,因其具有的安全存储数据、分布式、难以篡改等特性,被广泛应用于溯源、存证、互联网金融等领域。区块链服务的可扩展性十分重要,区块链服务的扩展类型包括垂直扩展和水平扩展。

相关技术中,区块链底层引擎Hyperledger Fabric的peer节点(对等节点)被拆分为Endorser(背书)、Analytics(分析)和Fast peer(快速对等)三个服务,其中,peer节点用于存储数据和执行特定的程序,Endorser服务负责交易提案的模拟执行、收集读写集并对其背书,使用内存存储状态数据,Fast peer服务执行区块和交易语法检查、交易背书检查和交易读集冲突检查,使用内存存储交易确认相关数据,Analytics服务负责持久化存储数据。该方案中虽然对peer节点进行了角色划分,然而每个服务仍然需要承担角色相关的所有工作,例如Fast peer服务承担了交易确认过程中的所有工作,难以满足长期运行下随着业务扩张和数据积累带来的越来越高的性能需求,水平可扩展性有待提高。

发明内容

本申请旨在解决所述相关技术中存在的技术问题。

为此,本申请提出了一种区块链服务的实现方法、装置、设备及存储介质,以提高区块链服务的水平可扩展性。

本申请第一方面实施例提出了一种区块链服务的实现方法,包括:

对初始区块链服务进行服务分层,以得到多种类型的区块链服务;

对所述多种类型的区块链服务分别进行微服务化处理,以得到与所述多种类型的区块链服务分别对应类型的微服务;以及

基于智能合约的方式实现各类服务的管理,采用所述对应类型的微服务向外部的电子设备提供区块链服务。

本申请第二方面实施例提出了一种区块链服务的实现装置,包括:

分层模块,用于对初始区块链服务进行服务分层,以得到多种类型的区块链服务;

生成模块,用于对所述多种类型的区块链服务分别进行微服务化处理,以得到与所述多种类型的区块链服务分别对应类型的微服务;以及

服务模块,用于基于智能合约的方式实现各类服务的管理,采用所述对应类型的微服务向外部的电子设备提供区块链服务。

本申请第三方面实施例提出了一种电子设备,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如第一方面实施例所述的区块链服务的实现方法。

本申请第四方面实施例提出了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如第一方面实施例所述的区块链服务的实现方法。

上述申请中的一个实施例具有如下优点或有益效果:通过对初始区块链服务进行服务分层,以得到多种类型的区块链服务,简化每种类型的区块链服务的内部逻辑。进一步,对多种类型的区块链服务分别进行微服务化处理,以得到与多种类型的区块链服务分别对应类型的微服务,以通过微服务向外部的电子设备提供区块链服务,能够提高初始区块链服务的水平可扩展性,从而满足基于初始区块链服务进行扩展的性能需求。

应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1为本申请实施例所提供的一种区块链服务的实现方法的流程示意图;

图2为本申请实施例所提供的另一种区块链服务的实现方法的流程示意图;

图3为本申请实施例所提供的另一种区块链服务的实现方法的流程示意图;

图4为本申请实施例所提供的另一种区块链服务的实现方法的流程示意图;

图5为本申请实施例所提供的另一种区块链服务的实现方法的流程示意图;

图6为本申请实施例所提供的一种微服务架构的示意图;

图7为本申请实施例所提供的一种区块链服务的实现装置的结构示意图;

图8示出了适于用来实现本申请实施例的示例性电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

相关技术中,区块链底层引擎Hyperledger Fabric的peer节点被拆分为Endorser、Analytics和Fast peer三个服务。三个服务主要职责如下:Endorser服务负责交易提案的模拟执行、收集读写集并对其背书,使用内存存储状态数据。Fast peer服务执行区块和交易语法检查、交易背书检查和交易读集冲突检查,使用内存存储交易确认相关数据。Analytics服务负责持久化存储数据。

其中,Endorser服务和Fast peer服务完全基于内存数据运行,实际部署时存在不可行或者使用范围受限的问题,且进程崩溃或机器掉电均会造成数据不可逆丢失,增加维护工作量以及导致数据丢失的损失。

Fast peer服务复杂度较高,承担了持久化存储外交易确认过程中所有工作,进一步优化空间有限。此外,虽然对区块链底层引擎Hyperledger Fabric的peer节点进行了角色划分,然而每个服务仍然需要承担角色相关所有工作,水平扩展性差。

因此,为了满足长期运行下伴随业务扩张和数据积累而来的越来越高的性能需求,本申请要解决Fabric peer单个服务实例内部负载重,以及相关技术中Fabric的peer节点的水平可扩展性能力有待提高的技术问题。

下面结合附图对本申请提出的区块链服务的实现方法、装置、设备及存储介质进行说明。

图1为本申请实施例所提供的一种区块链服务的实现方法的流程示意图,如图1所示,该方法包括:

步骤101,对初始区块链服务进行服务分层,以得到多种类型的区块链服务。

本申请实施例的方法,可以应用于基于区块链向外部电子设备提供区块链服务的场景。本实施例中,对于用于提供区块链服务的初始区块链服务,可以对初始区块链服务进行服务分层。

作为一种示例,初始区块链服务,是区块链底层引擎Hyperledger Fabric的peer节点提供的区块链服务。

需要说明的是,上述初始区块链服务仅为一种示例,本申请的方法可以用于对其他类似的区块链服务进行服务分层。

本实施例中,可以对初始区块链服务进行服务分层,以得到多个服务层,可选地,每一服务层对应一种类型的区块链服务,同种类型的区块链服务的数量可以是一个或多个。多个服务层之间可以是依次排列的,例如可以是自底向上排列的多个服务层,或者,多个服务层之中的部分服务层也可以是跨层排列的。由此,通过服务分层将区块链服务拆分为多种类型的区块链服务,简化每种类型的区块链服务的内部逻辑。

在本申请的一个实施例中,多种类型的区块链服务包括以下类型中的一种或者多种:账本数据服务、背书检查服务、状态数据服务、背书执行服务、交易状态服务、以及状态分片管理合约服务。

其中,背书检查服务的数量可以是一个或者多个,状态数据服务的数量可以是一个或者多个,背书执行服务的数量可以是一个或者多个。

作为一种可能的实现方式,对初始区块链服务进行服务分层,以得到多种类型的服务层,服务层包括对应类型的中间区块链服务。对多种类型的中间区块链服务进行服务分片,得到与多种类型分别对应的一个或多个的区块链服务。

举例而言,基于上述多种类型的区块链服务,通过对初始区块链服务进行服务分层,以得到账本数据服务层、背书检查服务层、状态数据服务层、背书执行服务层、交易状态服务层、以及状态分片管理合约服务层。其中,服务层包括对应类型的中间区块链服务,例如账本数据服务层包括账本数据服务类型的中间区块链服务。进而,对每一中间区块链服务分别进行服务分片:作为一种示例,对于账本数据服务类型的中间区块链服务进行服务分片,得到对应的一个账本数据服务;作为另一种示例,对于背书检查服务类型的中间区块链服务进行服务分片,得到对应的多个背书检查服务。

步骤102,对多种类型的区块链服务分别进行微服务化处理,以得到与多种类型的区块链服务分别对应类型的微服务。

本实施例中,对多种类型中任一类型的区块链服务进行微服务化处理,以得到与任一类型的区块链服务对应类型的微服务。其中,微服务是独立可布署的组件,支持基于消息的交互通信。

例如,对应类型的微服务包括:与账本数据服务的类型对应的微服务、与背书检查服务的类型对应的微服务、与状态数据服务的类型对应的微服务、与背书执行服务的类型对应的微服务、与状态分片管理合约服务的类型对应的微服务、与交易状态服务的类型对应的微服务。

作为一种示例,通过如下方式得到与多种类型的区块链服务分别对应类型的微服务:获取多种类型的区块链服务分别对应的多个服务处理逻辑,本示例中,每种类型的区块链服务对应一个服务处理逻辑。进而,调用预配置的微服务化配置文件,根据微服务化配置文件对多个服务处理逻辑分别进行微服务化转换,以得到与多种类型的区块链服务分别对应类型的微服务。

步骤103,基于智能合约的方式实现各类服务的管理,采用对应类型的微服务向外部的电子设备提供区块链服务。

本实施例中,对于任一类型的区块链服务,根据该区块链服务对应类型的微服务向外部的电子设备提供区块链服务。

其中,用对应类型的微服务向外部的电子设备提供区块链服务的实现方式可以有多种,举例说明如下。

作为一种示例,对应类型的微服务包括:与账本数据服务的类型对应的微服务。本示例中,采用对应类型的微服务向外部的电子设备提供区块链服务,包括:如果采用与账本数据服务类型对应的微服务提供区块链服务,则调用写入存储装置的接口,并采用异步持久化方法将待写入的区块数据和交易数据写入存储装置中。

可选地,其中,异步写入动作可基于以下一项或多项触发:队列长度、驻留队列的最长时间。例如,当队列长度大于预设长度时,触发采用异步持久化方法将待写入的区块数据和交易数据写入存储装置中,再例如,当驻留队列的最长时间达到预设时间时,触发采用异步持久化方法将待写入的区块数据和交易数据写入存储装置中。由此,采用基于缓存的异步持久化数据写入方式,能够避免IO(输入输出)瓶颈。

根据本申请实施例的区块链服务的实现方法,通过对初始区块链服务进行服务分层,以得到多种类型的区块链服务,简化每种类型的区块链服务的内部逻辑。进一步,对多种类型的区块链服务分别进行微服务化处理,以得到与多种类型的区块链服务分别对应类型的微服务,以通过微服务向外部的电子设备提供区块链服务,并且基于智能合约实现多种类型的区块链服务之间的管理和协作,能够提高初始区块链服务的水平可扩展性,从而满足增加交易容量时,基于初始区块链服务进行扩展的性能需求。

基于上述实施例,对应类型的微服务可包括:与账本数据服务的类型对应的微服务、与背书检查服务的类型对应的微服务,下面结合交易请求的背书检查进行解释说明。

图2为本申请实施例所提供的另一种区块链服务的实现方法的流程示意图,如图2所示,该方法中,采用对应类型的微服务向外部的电子设备提供区块链服务包括:

步骤201,基于账本数据服务接收电子设备发送的交易请求。

其中,账本数据服务,用于管理本地账本数据、区块数据以及交易数据,并对本地账本数据、区块数据以及交易数据进行语法检查,并向电子设备提供本地账本数据、区块数据以及交易数据的检索接口,以及将区块数据和交易数据写入存储装置的接口。可选地,根据交易数据后生成本地账本数据,将本地账本数据打包生成区块数据。账本数据服务可基于分布式存储服务实现。

步骤202,基于账本数据服务判断交易请求是否需要执行背书检查。

本实施例中,可以设置是否需要执行背书检查的条件,需要执行背书检查的前置条件包括但不限于数据格式正确、交易ID(identifier,标识符)唯一。背书检查用于验证交易是否满足链码的背书策略。

作为一种示例,账本数据服务接收交易请求后,确定交易ID是否唯一,若交易ID唯一,则进一步判断交易请求对应的数据格式是否正确,若数据格式正确,则确定交易请求需要执行背书检查。否则,确定交易请求不执行背书检查。

步骤203,如果交易请求需要执行背书检查,则将交易请求发送至背书检查服务。

其中,背书检查服务,用于检查交易请求是否满足业务条件,以及管理背书策略和对交易请求进行背书检查。

本实施例中,账本数据服务确定交易请求需要执行背书检查的情况下,将交易请求发送至背书检查服务。背书检查服务的数量可以是一个或者多个,背书检查服务层中的背书检查服务之间是对等的,每个背书检查服务维护所有链码的背书策略,背书策略变更的特殊交易请求分发到所有背书检查服务,不涉及背书策略变更的交易请求随机分发到各个背书检查服务。

步骤204,基于背书检查服务接收交易请求,并判断交易请求携带的链码数据是否满足业务条件,并在满足业务条件时,采用与链码数据对应的预设背书策略对交易请求进行背书检查。

本实施例中,背书检查服务获取交易请求涉及的链码数据,例如,背书策略,业务条件可以是根据具体业务场景设置的。链码数据满足业务条件的情况下,背书检查服务预先订阅与链码数据相关联的链事件,基于链事件从状态数据服务对应的服务层中获取与链码数据对应的预设背书策略,其中,背书检查服务通过订阅链事件可以获得状态数据路由,以通过路由访问状态数据服务并获取链码数据对应的背书策略。进而,背书检查服务根据背书策略对交易请求进行背书检查。

可选地,鉴于交易请求背书检查的计算密集型性质,单个背书检查服务内的交易请求背书检查可以并行化处理,以充分利用多核资源。通过背书检查管理服务管理背书检查服务,并对外部电子设备提供管理背书检查服务的接口,以实现灵活应对业务量增加或降低的场景。可以理解的是,由于背书检查与成员服务身份提供者和背书策略相关,因此当存在与特定的成员服务身份和背书策略变更的交易时可以做同步控制,例如配置变更交易、链码实例化交易,上述交易是低频的,因此,交易的背书检查可以并行执行,本申请对背书检查的执行方式不作具体限制。

本申请实施例中,实现了在对初始区块链服务进行服务分层的场景下,通过账本数据服务和背书检查服务实现交易请求的背书检查,保证区块链服务的可靠性,并基于智能合约实现背书检查服务和状态数据服务之间的管理和协作,提供了背书检查服务和状态数据服务的协作流程。

下面以状态数据服务侧进行说明。

在本申请的一个实施例中,对应类型的微服务还包括:与状态数据服务的类型对应的微服务。其中,状态数据服务,用于管理状态数据,实现交易读集状态检查、将交易请求关联的写集数据写入状态库以及提供状态数据读取功能。

本实施例中,采用对应类型的微服务向外部的电子设备提供区块链服务,还包括:如果根据交易请求执行有效交易,则基于状态数据服务将交易请求关联的写集数据写入状态库,向外部的电子设备提供状态数据的读取功能。

其中,状态数据是与多个交易请求关联的状态数据,交易请求属于多个交易请求。也就是说,当多个交易请求中的任一交易请求执行有效交易的情况下,将所述任一交易请求关联的写集数据写入状态库。

基于上述实施例,本申请实施例中,状态数据服务的数量可以是一个或者多个,每一状态数据服务可管理一个或多个状态数据分片,以减少层内每个服务实例的负载。

图3为本申请实施例所提供的另一种区块链服务的实现方法的流程示意图,如图3所示,该方法中,采用对应类型的微服务向外部的电子设备提供区块链服务还包括:

步骤301,基于状态数据服务管理至少一个状态数据分片。

其中,状态数据分片用于接收状态数据管理操作。

下面以多个状态数据分片为例进行说明。

本示例中,对应类型的微服务还包括:与背书执行服务的类型对应的微服务。其中,在背书执行服务所属的服务层中,采用状态分片规则对状态数据进行分片处理,以得到多个状态数据分片,进而将多个状态数据分片写入至状态数据服务之中,由此实现状态数据分片的写入。需要说明的是,多个状态数据分片可以写入不同的状态数据服务之中,每个状态数据服务可包括多个状态数据分片,此处不作限制。

作为一种可能的实现方式,将多个状态数据分片写入至状态数据服务之中,包括:如果状态数据服务的数量是多个,则将多个状态数据分片写入至第一状态数据服务之中;将写入至第一状态数据服务之中的状态数据分片同步至第二状态数据服务之中。

其中,为了提高状态数据服务的性能和可用性,第一状态数据服务作为主节点,管理状态数据分片的写入。第二状态数据服务的数量可以是一个或多个,第二状态数据服务作为从节点,同步主节点的状态数据分片,并提供状态数据分片的读取功能。

步骤302,基于状态数据服务从背书检查服务所属的服务层接收已通过背书检查的交易请求。

其中,如果已通过背书检查的交易请求的数量为多个,则基于状态数据服务,并根据账本数据服务所管理的账本数据的排列顺序对多个已通过背书检查的交易请求进行排序处理。例如,基于状态数据服务对多个已通过背书检查的交易请求进行排序处理,以使交易请求的排列顺序与交易请求对应的账本数据的排列顺序一致。

本实施例中,可以基于状态数据服务对排序后的交易请求进行管理调度。作为一种示例,对于状态数据分片内交易的情况,即操作单个状态数据分片的交易,由状态数据分片所在的状态数据服务主节点实现对交易状态读集的检查和写集的提交,不同分片内的交易并行处理。

作为另一种示例,跨状态数据分片交易的情况,即单个交易中包含多组链码数据且链码数据的状态数据不在单个状态数据分片中。状态数据服务读取读集并进行读集冲突检查,进而将通过检查的交易请求分发至关联的状态数据分片,其中,每个状态数据分片内部更新写集操作,并确保每个状态数据分片内所有状态操作的有序性。

本申请实施例中,实现了在对初始区块链服务进行服务分层的场景下,通过状态数据服务实现交易请求的管理调度,保证区块链服务的可靠性,并基于智能合约实现背书检查服务和状态数据服务之间的管理和协作,提供了背书检查服务和状态数据服务的协作流程。并且,通过状态数据分片对层内任务进行拆分,减少层内每个服务实例的负载。

基于上述实施例,进一步地,对应类型的微服务包括:与背书执行服务的类型对应的微服务、与状态分片管理合约服务的类型对应的微服务,下面进行解释说明。

在本申请的一个实施例中,对应类型的微服务包括:与背书执行服务的类型对应的微服务。

其中,背书执行服务,用于对交易请求进行语法检查、交易提案模拟执行和对交易执行结果进行签名背书,其中交易执行结果,例如,生成的读写集及元数据,元数据包括交易ID、背书节点身份等。背书执行服务可以基于状态数据服务层和账本数据服务,获取链码模拟执行过程中涉及的状态数据及交易去重检查。

本实施例中,采用对应类型的微服务向外部的电子设备提供区块链服务,还包括:

基于背书执行服务接收各个交易请求对应的链码数据,并解析链码数据得到对应的链码名称和链码版本号、链码数据对应的共同前缀、以及管理与链码名称、链码版本号,以及共同前缀对应的状态分片规则。

下面结合状态分片管理合约服务进行说明。

在本申请的一个实施例中,对应类型的微服务还包括:与状态分片管理合约服务的类型对应的微服务。其中,状态分片管理合约服务,用于管理各个微服务路由信息、服务节点健康状态和状态分片规则,以及提供路由信息查询功能。

可选地,各服务向状态分片管理合约注册服务信息和对外提供的接口,并定时发送服务节点健康状态信息,以使状态分片管理合约进行服务治理。外部应用向状态分片管理合约发送状态分片规则,状态分片管理合约基于状态分片规则切分状态数据,并对外部电子设备提供状态数据服务的路由信息。通过引入状态分片管理合约,实现了状态数据的合理有效切分。

图4为本申请实施例所提供的另一种区块链服务的实现方法的流程示意图,如图4所示,该方法中,采用对应类型的微服务向外部的电子设备提供区块链服务,还包括:

步骤401,在链码数据的模拟执行阶段,调用状态分片管理合约服务中的状态分片管理合约处理链码名称、链码版本号,以及共同前缀,得到目标链事件消息。

本实施例中,背书执行服务调用状态分片管理合约服务中的状态分片管理合约,基于合约处理链码名称、链码版本号以及共同前缀,得到目标链事件消息。对于不同的链码名称、链码版本号以及共同前缀,可以得到不同的目标链事件消息。

步骤402,将目标链事件消息发送至状态数据服务,并生成与状态数据服务对应的路由信息。

其中,路由信息用于访问状态数据服务。

步骤403,将链码名称、链码版本号、共同前缀,以及路由信息写入状态分片管理合约中。

举例而言,对于链码数据是首次运行的情况,若背书执行服务在链码数据执行时未找到对应的状态库,则调用区块链上的状态分片管理合约服务,将链码信息(例如链码名称、链码版本号、共同前缀)以链事件的方式通知状态数据服务,以使状态数据服务实例化并维护数据。进而,实例化成功后,将链码信息(例如链码名称、链码版本号、共同前缀)以及状态数据服务路由信息的对应关系写入到状态分片管理智能合约。

步骤404,根据链码名称、链码版本号、共同前缀,以及路由信息发送至订阅目标链事件消息的目标背书执行服务之中。

本实施例中,背书执行服务通过订阅目标链事件消息,可以基于状态分片管理合约获取链码名称、链码版本号、共同前缀以及路由信息。其中,状态分片管理合约服务通过链事件的方式通知各个背书执行服务,实现背书执行服务的信息更新。

本申请实施例中,实现了在对初始区块链服务进行服务分层的场景下,通过背书执行服务实现链码数据的模拟执行等功能,保证区块链服务的可靠性,并基于智能合约实现背书执行服务和状态数据服务之间的管理和协作,提供了背书执行服务和状态数据服务的协作流程。并且,通过引入状态分片管理合约,负责服务的注册、事件下发、治理等,以链事件推动微服务间的有序协作,支持上层应用自定义状态分片规则,实现了状态数据的合理有效切分。

基于上述实施例,下面结合与交易状态服务的类型对应的微服务进行说明。

图5为本申请实施例所提供的另一种区块链服务的实现方法的流程示意图,如图5所示,该方法中,采用对应类型的微服务向外部的电子设备提供区块链服务,还包括:

步骤501,基于交易状态服务从账本数据服务、背书检查服务,以及状态数据服务分别对应的服务层中采集与多个交易请求分别对应的交易执行结果。

本实施例中,对应类型的微服务包括:与交易状态服务的类型对应的微服务。交易状态服务,用于收集和管理交易执行状态,以及确认事件推送和提供检索服务。

其中,交易执行结果用于指示交易是否成功执行,交易执行结果可以是交易状态码,通过合并交易状态码可以得到区块的交易执行结果。

步骤502,确定与多个交易请求分别对应的区块号和交易索引。

本实施例中,对于每一交易请求,分别获取每一交易请求对应的区块号和交易索引。其中,区块号用于区分区块。

步骤503,根据对应的区块号和交易索引对多个交易执行结果进行合并处理,以得到区块处理结果。

作为一种示例,基于交易索引和将相同区块号的交易执行结果进行合并,以得到区块处理结果。

步骤504,将区块处理结果发送至外部的电子设备。

本实施例中,区块处理结果用于指示该区块的交易执行是否成功,通过事件的方式将区块处理结果发送至外部的电子设备的监听客户端,以实现交易执行结果的监听。

基于上述实施例,举例而言,参照图6,上述对初始区块链服务进行服务分层,以得到多种类型的区块链服务可以实现图6所示的结构。其中,账本数据服务、背书检查服务、状态数据服务和背书执行服务自底向上排列,交易状态服务以及状态分片管理合约服务是跨层的。其中,背书检查服务的数量可以是一个或者多个,状态数据服务的数量可以是一个或者多个,背书执行服务的数量可以是一个或者多个。

本申请实施例中,通过提出基于智能合约的背书执行服务、状态数据服务、背书检查服务的协作流程,并将初始区块链服务分为自底向上依次是账本数据层、背书检查层、状态管理层和背书执行层,以及跨层的交易状态服务层和状态分片管理合约服务层,能够减少层内每个服务实例的负载,提高初始区块链服务的水平可扩展性,从而满足增加交易容量时,基于初始区块链服务进行扩展的性能需求。

为了实现上述实施例,本申请还提出一种区块链服务的实现装置。

图7为本申请实施例所提供的一种区块链服务的实现装置的结构示意图,如图7所示,该装置包括:分层模块10,生成模块20,服务模块30。

其中,分层模块10,用于对初始区块链服务进行服务分层,以得到多种类型的区块链服务。

生成模块20,用于对所述多种类型的区块链服务分别进行微服务化处理,以得到与所述多种类型的区块链服务分别对应类型的微服务。

服务模块30,用于基于智能合约的方式实现各类服务的管理,采用所述对应类型的微服务向外部的电子设备提供区块链服务。

在本申请的一个实施例中,分层模块10具体用于:对所述初始区块链服务进行服务分层,以得到多种类型的服务层,所述服务层包括:对应类型的中间区块链服务;对多种类型的中间区块链服务进行服务分片,得到与所述多种类型分别对应的一个或多个的区块链服务。

在本申请的一个实施例中,所述多种类型的区块链服务包括以下类型中的一种或者多种:账本数据服务、背书检查服务、状态数据服务、背书执行服务、交易状态服务、以及状态分片管理合约服务;

其中,所述背书检查服务的数量是一个或者多个,所述状态数据服务的数量是一个或者多个,所述背书执行服务的数量是一个或者多个。

在本申请的一个实施例中,账本数据服务,用于管理本地账本数据、区块数据,以及交易数据,并对所述本地账本数据、区块数据,以及交易数据进行语法检查,并向所述电子设备提供所述本地账本数据、区块数据,以及交易数据的检索接口,以及将区块数据和交易数据写入存储装置的接口,所述对应类型的微服务包括:与所述账本数据服务的类型对应的微服务,服务模块30具体用于:

如果采用与所述账本数据服务类型对应的微服务提供区块链服务,则调用所述写入存储装置的接口,并采用异步持久化方法将待写入的区块数据和交易数据写入存储装置中。

在本申请的一个实施例中,对应类型的微服务包括:与所述账本数据服务的类型对应的微服务、与所述背书检查服务的类型对应的微服务,服务模块30具体用于:基于所述账本数据服务接收所述电子设备发送的交易请求;基于所述账本数据服务判断所述交易请求是否需要执行背书检查;如果所述交易请求需要执行背书检查,则将所述交易请求发送至所述背书检查服务;基于所述背书检查服务接收所述交易请求,并判断所述交易请求携带的链码数据是否满足业务条件,并在满足所述业务条件时,采用与所述链码数据对应的预设背书策略对所述交易请求进行所述背书检查。

在本申请的一个实施例中,对应类型的微服务还包括:与所述状态数据服务的类型对应的微服务,所述装置还包括:订阅模块,用于预先订阅与所述链码数据相关联的链事件;基于所述链事件,从所述状态数据服务对应的服务层中获取与所述链码数据对应的预设背书策略。

在本申请的一个实施例中,服务模块30具体用于:如果根据所述交易请求执行有效交易,则基于所述状态数据服务将所述交易请求关联的写集数据写入状态库,向所述外部的电子设备提供状态数据的读取功能,所述状态数据,是与多个交易请求关联的状态数据,所述交易请求属于所述多个交易请求。

在本申请的一个实施例中,服务模块30具体用于:基于所述状态数据服务管理至少一个状态数据分片,所述状态数据分片用于接收状态数据管理操作;基于所述状态数据服务从所述背书检查服务所属的服务层接收已通过背书检查的交易请求;

其中,如果所述已通过背书检查的交易请求的数量为多个,则基于所述状态数据服务,并根据所述账本数据服务所管理的账本数据的排列顺序对多个所述已通过背书检查的交易请求进行排序处理。

在本申请的一个实施例中,至少一个状态数据分片包括:多个状态数据分片,所述对应类型的微服务还包括:与所述背书执行服务的类型对应的微服务,其中,所述装置还包括:

分片模块,用于在所述背书执行服务所属的服务层中,采用状态分片规则对所述状态数据进行分片处理,以得到所述多个状态数据分片;

写入模块,用于将所述多个状态数据分片写入至所述状态数据服务之中。

在本申请的一个实施例中,写入模块具体用于:如果所述状态数据服务的数量是多个,则将所述多个状态数据分片写入至第一状态数据服务之中;将写入至所述第一状态数据服务之中的所述状态数据分片同步至第二状态数据服务之中。

在本申请的一个实施例中,对应类型的微服务包括:与所述背书执行服务的类型对应的微服务,服务模块30具体用于:基于所述背书执行服务接收各个交易请求对应的链码数据,并解析所述链码数据得到对应的链码名称和链码版本号、链码数据对应的共同前缀、以及管理与所述链码名称、所述链码版本号,以及所述共同前缀对应的状态分片规则。

在本申请的一个实施例中,对应类型的微服务包括:与所述状态分片管理合约服务的类型对应的微服务,服务模块30具体用于:在链码数据的模拟执行阶段,调用所述状态分片管理合约服务中的状态分片管理合约处理所述链码名称、所述链码版本号,以及所述共同前缀,得到目标链事件消息;将所述目标链事件消息发送至所述状态数据服务,并生成与所述状态数据服务对应的路由信息,将所述链码名称、所述链码版本号、所述共同前缀,以及所述路由信息写入所述状态分片管理合约中;以及根据所述链码名称、所述链码版本号、所述共同前缀,以及所述路由信息发送至订阅所述目标链事件消息的目标背书执行服务之中。

在本申请的一个实施例中,对应类型的微服务包括:与所述交易状态服务的类型对应的微服务,服务模块30具体用于:基于所述交易状态服务从所述账本数据服务、所述背书检查服务,以及所述状态数据服务分别对应的服务层中采集与所述多个交易请求分别对应的交易执行结果;确定与所述多个交易请求分别对应的区块号和交易索引;根据所述对应的区块号和交易索引对所述多个交易执行结果进行合并处理,以得到区块处理结果;以及将所述区块处理结果发送至所述外部的电子设备。

在本申请的一个实施例中,生成模块20具体用于:获取多种类型的区块链服务分别对应的多个服务处理逻辑;调用预配置的微服务化配置文件,对多个服务处理逻辑分别进行微服务化转换,以得到与多种类型的区块链服务分别对应类型的微服务。

前述实施例对区块链服务的实现方法的解释说明同样适用于本实施例的区块链服务的实现装置,此处不再赘述。

本申请实施例的区块链服务的实现装置,通过对初始区块链服务进行服务分层,以得到多种类型的区块链服务,简化每种类型的区块链服务的内部逻辑。进一步,对多种类型的区块链服务分别进行微服务化处理,以得到与多种类型的区块链服务分别对应类型的微服务,以通过微服务向外部的电子设备提供区块链服务,能够提高初始区块链服务的水平可扩展性,从而满足增加交易容量时,基于初始区块链服务进行扩展的性能需求。

为了实现上述实施例,本申请还提出一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现如本申请前述实施例提出的区块链服务的实现方法。

为了实现上述实施例,本申请还提出一种非临时性计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现如本申请前述实施例提出的区块链服务的实现方法。

为了实现上述实施例,本申请还提出一种计算机程序产品,当计算机程序产品中的指令处理器执行时,执行如本申请前述实施例提出的区块链服务的实现方法。

为了实现上述实施例,本申请还提出一种电子设备。

图8为本申请实施例提供的电子设备的结构示意图。

如图8所示,上述电子设备200包括:

存储器210及处理器220,连接不同组件(包括存储器210和处理器220)的总线230,存储器210存储有计算机程序,当处理器220执行所述程序时实现本申请实施例所述的区块链服务的实现方法。

总线230表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

电子设备200典型地包括多种电子设备可读介质。这些介质可以是任何能够被电子设备200访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储器210还可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)240和/或高速缓存存储器250。电子设备200可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统260可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线230相连。存储器210可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。

具有一组(至少一个)程序模块270的程序/实用工具280,可以存储在例如存储器210中,这样的程序模块270包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块270通常执行本申请所描述的实施例中的功能和/或方法。

电子设备200也可以与一个或多个外部设备290(例如键盘、指向设备、显示器291等)通信,还可与一个或者多个使得用户能与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口292进行。并且,电子设备200还可以通过网络适配器293与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器293通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理器220通过运行存储在存储器210中的程序,从而执行各种功能应用以及数据处理。

需要说明的是,本实施例的电子设备的实施过程和技术原理参见前述对本申请实施例的区块链服务的实现方法的解释说明,此处不再赘述。

本申请实施例提供的电子设备,可以执行如前所述的区块链服务的实现方法。

为了实现上述实施例,本申请还提出一种计算机可读存储介质。

其中,该计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,以实现本申请实施例所述的区块链服务的实现方法。

为了实现上述实施例,本申请再一方面实施例提供一种计算机程序,该程序被处理器执行时,以实现本申请实施例所述的区块链服务的实现方法。

一种可选实现形式中,本实施例可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

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

本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

相关技术
  • 区块链服务的实现方法、装置、设备及存储介质
  • 基于区块链实现域名解析的方法、服务器和存储介质
技术分类

06120112941660