CN113110899B - 区块链系统的运行方法、装置、设备和存储介质 - Google Patents
区块链系统的运行方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN113110899B CN113110899B CN202110652671.6A CN202110652671A CN113110899B CN 113110899 B CN113110899 B CN 113110899B CN 202110652671 A CN202110652671 A CN 202110652671A CN 113110899 B CN113110899 B CN 113110899B
- Authority
- CN
- China
- Prior art keywords
- kernel
- component
- engine
- block
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请公开了一种区块链系统的运行方法、装置、设备和存储介质,涉及计算机技术领域,尤其涉及区块链技术,可用于云计算和云领域。具体实现方案为:运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎或设定联盟链内核引擎,用于执行适用于公有区块链业务或联盟区块链业务的内核流程;获取区块链系统的公链运行配置信息或联盟链运行配置信息,以实例化所述内核引擎和内核组件;启动运行所述区块链系统主程序和内核引擎;启动端口监听服务,以运行区块链系统。执行本申请提供的技术方案可以降低面向公链网络场景或面向联盟链网络场景的区块链系统的研发成本。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及区块链技术。
背景技术
区块链行业在持续的快速发展,区块链技术发展初期主要的应用场景还是以数字货币和游戏为主。目前,区块链技术开始从支撑数字货币的底层技术,进入了全面探索赋能产业的新阶段。
目前主流的区块链实现方案,基本上都有明确的适用场景定位,由于传统方案大多都是面向数字货币类的应用场景,更加适合数字货币类的应用,在实际业务场景落地中会遇到适用性的问题,需要深入框架做改造,改造成本和技术门槛都非常高。
然而,深入框架进行改造的模式,使得改造难度大、成本高,改造后还无法自动跟进对应框架最新的更新。
发明内容
本申请提供了一种区块链系统的运行方法、装置、设备和存储介质,以提高区块链针对于不同场景的适用性,降低开发难度和成本。
根据本申请的一方面,提供了一种区块链系统的运行方法,所述方法包括:
运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎或设定联盟链内核引擎,用于执行适用于公有区块链业务或联盟区块链业务的内核流程;
获取区块链系统的公链运行配置信息或联盟链运行配置信息,以实例化所述内核引擎和内核组件;
启动运行所述区块链系统主程序和内核引擎;
启动端口监听服务,以运行区块链系统。
根据本申请的另一方面,提供了一种区块链系统的运行装置,所述装置包括:
内核引擎和内核组件初始化模块,用于运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎或设定联盟链内核引擎,用于执行适用于公有区块链业务或联盟区块链业务的内核流程;
运行配置信息获取模块,用于获取区块链系统的公链运行配置信息或联盟链运行配置信息,以实例化所述内核引擎和内核组件;
区块链系统主程序和内核引擎启动模块,用于启动运行所述区块链系统主程序和内核引擎;
端口监听服务启动模块,用于启动端口监听服务,以运行区块链系统。
根据本申请的另一方面,提供一种电子设备,该电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本申请实施例任一项所述的区块链系统的运行方法。
根据本申请的一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如本申请实施例任一项所述的区块链系统的运行方法。
根据本申请的一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如本申请实施例任一项所述的区块链系统的运行方法。
本申请实施例的技术方案,能够提高区块链实现方案的可扩展性和在公链网络场景下或联盟链网络场景下的适用性,从而降低区块链技术的研发成本。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请实施例的一种区块链系统的运行方法的示意图;
图2是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图3是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图4是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图5是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图6是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图7是根据本申请实施例的一种区块链系统的运行装置的示意图;
图8是根据本申请实施例的一种区块链系统的运行方法的示意图;
图9是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图10是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图11是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图12是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图13是根据本申请实施例的又一种区块链系统的运行方法的示意图;
图14是根据本申请实施例的一种区块链系统的运行装置的示意图;
图15是用来实现本申请实施例的区块链系统的运行方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请实施例所提供的区块链系统的运行方法,是在发明人构造的区块链内核架构的基础上提出的。
区块链系统整体上可以分为两个部分,分别为区块链内核架构和区块链应用层。其中,区块链应用层是供用户基于区块链系统实现具体业务需求的,区块链应用层向用户屏蔽了复杂的区块链底层技术,在用户了解区块链基本原理的情况下即可搭建区块链完成业务需求。可以由区块链系统主程序来实现区块链应用层的服务端功能。区块链应用层还可以包括客户端(client)和应用程序接口(API),从而提供用户交互界面或交互机制,实现与用户的交互。在一个区块链系统中可以支撑一个或多个区块链应用层的业务功能。应用层的客户端或API可通过专有组件与区块链内核架构进行交互,专有组件例如是对设定交互端口的监听服务。
本申请更为关注区块链的内核架构,内核架构至少包括:内核引擎层和内核组件层,还可以进一步包括基础组件层。其中,内核引擎层,定义了区块链内核核心流程,即区块链运行过程中的各种业务逻辑的核心流程,例如,交易处理流程、矿工出块流程、和同步区块流程等。本申请实施例中,所谓交易,是由区块链用户发起,需要由区块链节点基于区块链系统进行处理,并将处理过程上链存储的事务请求,并不限于交易业务,可以是任何区块链所需承载的应用业务或区块链管理事务请求。所谓矿工,即当前出块周期内有权限进行出块的区块链节点,并不限于基于工作量证明共识机制(POW)来确定的出块节点,基于其他共识机制确定的出块节点,也可称为矿工。并且,内核引擎采用了读写分离的设计来降低复杂度,可以采用独立读组件的方式来实现读操作,实现了读操作可单独扩展。内核引擎层中的内核引擎是可以由用户根据场景需要,进行无框架代码侵入的扩展定制,或者轻量级的代码调整定制。即,开发人员可以基于内核组件的功能来开发内核引擎,无需再单独开发内核组件。基于内核架构为用户提供了配置多种类内核引擎层的可能性,具体的可配置开发:超级公链引擎(xuperos engine)、超级联盟链引擎(xchain engine)和用户自主实现的内核引擎(other engine)等。
内核组件层,是对内核组件编程规范的具体实现,内置非常完备的标准内核组件的实现,包括账本组件、共识组件、合约组件、网络组件、加密组件和权限组件等可供内核引擎的开发者选用,同时开发者也可以低成本的按照内核组件编程规范开发适合自己场景的内核组件,并将自主实现的内核组件无缝接入到各种内核引擎中。其中,内核组件编程规范是用以抽象内核组件的规范。根据内核组件编程规范实现内核组件,可以为内核引擎调用内核组件提供标准内核组件功能接口,使得内核引擎可以通过内核引擎层内的组件适配器(如consensus、contract、ledge、network或者permission)确定的内核组件接口,基于内核组件接口实现对内核组件的调用,再通过内核组件完成对待处理区块链数据的处理工作。内核组件接口也可称为内核功能接口,是内核组件提供给内核引擎调用的、功能层级的接口。无论哪种内核组件,无论内部如何实现组件功能,都可以提供规范化、统一的内核组件接口,以方便内核引擎调用。
基础组件层内设置有与区块链业务无关的基础公共组件,例如包括:基础存储、p2p网络库、密码学库、编解码库和日志库等。
本申请提供的区块链内核架构是一种全新的高可扩展、广域场景适用的区块链通用内核框架,本架构的高度模块化的设计,保证了模块间松耦合,使得各模块都可以自由的扩展替换。基于本架构,用户可以根据具体场景的需要和喜好,非常轻量级的开发具体的区块链系统,本架构将区块链系统开发的难度降维到只是根据场景需要扩展部分子领域功能,极大的降低区块链技术的研发成本。
为了进一步节省开发成本,本申请实施例可提供适用于具体应用场景需求的区块链系统发行版,即针对应用场景进行特定选型的区块链系统代码,包括对区块链系统主程序、内核引擎和内核组件的特定选型开发,使得开发者能够更快速、便捷的获得可供部署运行的区块链系统。本申请实施例具体提供一种适用于公有区块链网络的区块链系统。
公链,其节点都是向任何人开放的,每个人都可以参与到公链中进行业务处理,而且任何人都可以下载获得完整区块链数据(全部账本)。比特币就是最典型的公链。公链的优点是去中心化和安全性。但由于公链参与的节点众多,随意度高,所以单个节点的可靠性低,受到攻击的可能性高,也往往很难达成共识。公链的特点,决定了在采用公链的应用场景下,需要设置特定的内核流程和内核组件,兼顾共识配合问题和安全性。
图1是根据本申请实施例的一种区块链系统的运行方法的示意图。本实施例可适用于在面向公共网络场景业务的区块链系统程序开发完成以后,通过启动运行区块链系统程序来进行初始化和运行的情况。本实施例公开的区块链系统的运行方法可以由区块链系统的运行装置来执行,该装置可以由软件和/或硬件的方式实现,配置于具备计算和存储功能的电子设备中。例如可以由区块链节点来执行。
参见图1,本实施例提供的一种区块链系统的运行方法,包括:
S110、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎,用于执行适用于公有区块链业务的内核流程。
运行区块链系统主程序对内核引擎和内核组件进行初始化,具体是将内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器。
其中,区块链系统主程序用于调用所述内核引擎处理区块链数据,以支持公有区块链业务。区块链系统主程序是用于执行区块链系统中的应用层业务功能的代码,主程序与具体业务需求相关联。区块链系统主程序通过调用内核引擎处理区块链数据,完成公有区块链业务。示例性的,公有区块链业务可以是交易提交业务或者电子存证业务等各种业务需求。
区块链系统主程序中包括内核引擎的初始化方法、启动接口和退出接口,所述区块链系统主程序中还包括至少一个内核组件的初始化方法。
其中,内核引擎的初始化方法是指用于初始化内核引擎的方法程序入口,内核组件的初始化方法是用于初始化内核组件的方法程序入口。内核引擎的启动接口和内核引擎的退出接口,是区块链系统主程序向应用层提供的用于控制内核引擎的接口,具体的应用层可以在启动区块链系统时,通过内核引擎启动接口执行内核引擎启动方法以启动内核引擎,在区块链系统异常的情况下通过内核引擎的退出接口执行内核引擎退出方法以退出内核引擎。当然,内核框架提供给主程序的、能够控制内核引擎的接口不限于此,还可以包括其他控制功能接口。
运行区块链系统主程序中的内核引擎初始化方法和内核组件初始方法对内核引擎和内核组件进行初始化。其中,对内核引擎和对内核组件进行初始化包括对内核引擎和对内核组件的注册过程,和对内核引擎和对内核组件的实例化过程。
首先,分别注册内核引擎和内核组件。具体的,本申请实施例采用了工厂模式对内核引擎和内核组件进行管理,这是因为在不同的业务应用场景下对内核引擎和内核组件有不同的要求,在运行区块链系统主程序时,将用户所需内核引擎的创建程序注册到内核引擎工厂和对应的组件适配器中,可以使得用户可以按需对内核引擎和内核组件进行技术选型。
在内核引擎工厂中注册的内核引擎的数量可以是一个也可是多个,可以向内核引擎工厂中注册多个内核引擎,以便于用户按需选择对应的内核引擎。
本申请实施例中,内核引擎为设定公链内核引擎,其中,设定公链引擎是执行适用于公有区块链业务的内核流程。公有区块链是面向公开网络场景的区块链,设定公链内核引擎更加契合公有区块链侧重去中心化和安全性的特点,将设定公链内核引擎注册到引擎工厂。
内核组件是具备特定数据处理功能的方法的封装,按照内核组件可实现功能进行划分,内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件、权限组件和加密组件。其中,共识组件负责区块链网络中多节点去中心化的共识达成,用于在区块链节点之间执行共识机制;网络组件用于执行区块链网络中的数据传输功能;账本组件用于基于区块链账本规则对账本数据进行处理;合约组件用于执行智能合约对事务请求进行处理;权限组件用于对智能合约的调用权限进行控制;加密组件是用于对区块链数据进行加解密处理,如对新区块进行签名处理。
可选的,在本申请实施例的区块链系统中的内核组件可存在对应的组件适配器,示例性的,组件适配器可以包括:与共识组件对应的共识组件适配器(consensus)、与合约组件对应的合约组件适配器(contract)、与网络组件对应的网络组件适配器(network)和权限组件对应的权限组件适配器(permission)等组件适配器。部分组件也可以根据情况不设置组件适配器。例如,账本组件可选的是与内核引擎采用相同存储格式的区块链账本数据,则账本组件提供给内核引擎的组件接口是对区块链账本数据的抽象接口。将内核组件注册到对应组件适配器。
具体的,结合内核组件适用场景和内核组件自身特点每个功能的内核组件还可以进一步包括一个或多个类型的内核组件,示例性的,合约组件可以包括原生代码合约虚拟机、web字节码合约虚拟机、或以太坊合约虚拟机;共识组件可以包括单一共识组件、POW共识组件、XPOS共识组件和XPOA共识组件。
在一个可选的实施例中,每个功能的内核组件包括一个或多个类型的内核组件,注册在对应的组件适配器中,供实例化或运行过程中进行配置。
在将内核组件注册到对应组件适配器时,将每个功能的内核组件包括的部分或者全部的内核组件注册在所属功能内核组件对应的组件适配器中。可选的,将全部的内核组件注册在所属功能内核组件对应的组件适配器中,继续上例说明,将单一共识组件、POW共识组件、XPOS共识组件和XPOA共识组件均注册到共识组件适配器中,供实例化或运行过程中进行配置。这使得用户可以根据实际业务场景的需求,通过实例化或者运行过程中对内核组件进行配置,实现内核组件的按需选择。
S120、获取区块链系统的公链运行配置信息,以实例化所述内核引擎和内核组件。
具体的,通过程序配置文件,获取区块链系统的公链运行配置信息,以实例化所述内核引擎和内核组件。
其中,程序配置文件中包括区块链系统的公链运行配置信息,公链运行配置信息是用于实例化内核引擎和内核组件的信息。程序配置文件可以由开发人员根据业务场景需求确定,并通过区块链开发软件输入的,
根据公链运行配置信息对内核引擎和内核组件进行实例化,使得区块链具备在面向公开网络场景的情况下对区块链数据进行处理的能力。
示例性的,区块链系统的公链运行配置信息可以包括:区块广播方式、缓存有效期、同步区块队列大小和内核组件的选型信息。其中,区块的广播方式限定的是区块链系统的节点,向区块链系统中除本机节点以外的其他区块节点传输区块链数据的方式;缓存有效期限定了区块链节点的本地缓存数据的保留期限;同步区块队列大小限定了一次性可以进行区块同步的区块数量。
利用区块链系统的公链运行配置信息实例化内核引擎和内核组件,具体的,根据区块链系统的公链运行配置信息向内核引擎和内核组件对应的基本参数进行赋值。
S130、启动运行所述区块链系统主程序和内核引擎。
启动运行区块链系统主程序,通过区块链系统对待处理区块链数据进行处理,执行区块链系统中的应用层业务功能,完成应用层业务需求。具体的,启动运行区块链系统主程序和内核引擎,通过区块链系统主程序调用内核引擎,通过内核引擎对待处理区块链数据进行处理。
内核引擎为区块链内核核心流程,用于执行区块链核心操作,内核引擎具备对各个内核组件的调用能力。内核引擎对待处理区块链数据进行处理的过程,实际为内核引擎根据待处理区块链数据的处理流程调用内核组件,由内核引擎和内核组件相互配合对待处理区块链数据进行的处理的过程。其中,待处理区块链数据包括待处理区块链事务请求、待验证区块、待同步区块和区块链系统维护数据中的至少一种。
可选的,启动内核引擎的同时启动内核组件,预先为内核组件分配组件所需资源,供内核组件被调用时使用,从而缩短区块链系统响应时延。
S140、启动端口监听服务,以运行区块链系统。
其中,端口监听服务是指对内核引擎和应用层进行交互的应用层交互端口进行监听的服务。应用层交互端口是指应用层与内核引擎进行交互的端口,应用层交互端口的数量为至少一个,一般为多个。应用层客户端通过应用层交互端口向内核引擎传输待处理请求,例如请求处理区块链数据,示例性的,端口监听服务为RPC服务(Remote ProcedureCall ,远程过程调用)。在端口监听服务监听到应用层交互端口存在待处理区块链数据的情况下,对触发内核引擎对待处理区块链数据的处理器流程。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统初始化过程中,通过将内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器,并根据区块链系统的运行配置信息实例化内核引擎和内核组件,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,内核引擎和内核组件采用模块化设计,扩展了区块链系统在公开网络场景下的适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图2是根据本申请实施例的另一种区块链系统的运行方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。具体的,是对“获取区块链系统的公链运行配置信息,以实例化所述内核引擎和内核组件”的细化。
参见图2,本实施例提供的区块链系统的运行方法包括:
S210、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎,用于执行适用于公有区块链业务的内核流程。
S220、获取区块链系统的公链部署时的运行配置信息,以实例化所述内核引擎和内核组件,并将部署时的运行配置信息添加在区块链的创世区块中。
其中,创世区块是指在首次部署区块链系统的情况下,区块链系统初始化完成的启动运行的过程中创建的第一个区块。创世区块中存储有区块链相关的运行配置信息。区块链运行相关的信息,大部分在部署节点进行规定,并存储于创世区块中。也可以有部分配置信息,在运行后被调整更改,记录在调整时产生的区块中。
可选的,针对内核组件适配器中注册有多个属于同一种功能内核组件的情况,在启动区块链系统时,在创世区块中指定初始内核组件的选型。
其中,所述部署时的运行配置信息包括下述至少一个:内核组件选型配置信息、组件运行配置信息和激励配置信息。或者,还可以包括内核引擎选型配置信息。
内核组件选型配置信息是指用户根据业务场景需求,用于在内核组件适配器中对在已注册的各功能内核组件进行选型的信息。组件运行配置信息是指用于控制内核组件运行过程的参数。激励配置信息是针对于公链所适用场景的特点确定,公链是面向公开网络场景的区块链,区块链网络的稳定运转是需要激励来维持的,激励配置信息是用于配置公链所必需的激励的信息。可选的,激励配置信息包括:燃料支付和奖励机制。其中,燃料支付是指每笔交易必要支付燃料。区块链系统为了防止攻击,区块链节点在发起交易时,必须指定足够的燃料供矿工收取,无论交易是否成功,矿工均会向区块链节点收取燃料。奖励机制是对矿工的奖励机制,用于来激励矿工维护网络,示例性的,奖励机制可以为UTXO的原生代币或者用户公链公共奖励。
通常情况下,内核组件选型配置信息是用户根据公链适用的业务场景特点确定的。
对于侧重去中心化和安全性的区块链系统,一般需要拜占庭容错的共识机制,需要具备大规模节点组网能力,需要激励机制来维持网络运转,需要智能合约来提供链上操作的扩展能力。根据内核组件选型配置信息,实例化对应内核组件即完成了对内核组件的选型。在一个可选的实施例中,所述内核引擎为设定公链内核引擎,根据内核组件选型信息对各功能内核组件的选型结果为:
共识组件,包括工作量证明(Proof of Work,简称POW)类共识组件和Xuper股权证明机制(Xuper Proof of Stake,简称XPOS)类共识组件;其中,POW是经典的工作量证明共识,适合超大规模节点参与共识;XPOS共识是一种结合BFT和DPOS的拜占庭容错共识,相比POW共识不需要工作量证明浪费算力,但是支撑的节点规模不如POW多。
合约组件,包括基于WebAssembly实现的XVM虚拟机组件和兼容以太坊生态的EVM虚拟机组件;其中,EVM虚拟机兼容以太坊生态,对社区开发者更加友好;XVM虚拟机是基于WASM研发的,可以在确保安全支持通用语言开发智能合约的同时提高合约执行性能。
网络组件,包括基于libp2p类网络组件,基于libp2p类网络组件能够支持更大规模的节点组网;
账本组件,包括基于UTXO和XuperModel实现的账本组件,基于UTXO和XuperModel实现的账本组件通过扁平化的数据存储结构,可以提高并发性能。其中,XuperModel为超级链系统的账本数据模型,能够兼容UTXO账本数据。超级链系统能够支持多条平行链架构。
权限组件,包括基于ACL(访问控制列表)合约账户模型的权限组件,基于ACL合约账户模型,可以实现完全去中心化的合约权限管理。合约账户模型为基于用户账户、合约账户和链账户实现的权限控制模型,能够多维度对区块链系统进行权限控制。
S230、启动运行所述区块链系统主程序和内核引擎。
S240、启动端口监听服务,以运行区块链系统。
为了提高区块链系统的灵活性,本申请实施例提供的区块链运行方法支持在区块链系统运行的过程中对内核组件的再配置,在一个可选的实施例中,启动运行所述区块链系统主程序和内核引擎之后,还包括:获取公链运行过程中的运行配置信息,根据所述运行配置信息变更组件适配器中的内核组件选型逻辑,并实例化变更后的内核组件。
其中,组件适配器中的内核组件选型逻辑是指组件适配器中记录的内核组件的选型信息。
根据运行配置信息变更组件适配器中的内核组件选型逻辑,是指,根据运行配置信息从已注册在组件适配器中的内核组件中选择所需内核组件,并将组件适配器中的内核组件选型逻辑由当前正在使用的内核组件替换为所需内核组件,然后再次对区块链系统进行初始化,从而实例化变更后的内核组件。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统初始化过程中,根据公链部署时的运行配置信息,对内核引擎和内核组件进行实例化,并将部署时的运行配置信息添加在区块链的创世区块中,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,内核引擎和内核组件采用模块化设计,扩展了区块链系统在公开网络场景下的适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图3是根据本申请实施例的另一种区块链系统的运行方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。具体的,是对启动端口监听服务,以运行区块链系统的细化。
参见图3,本实施例提供的区块链系统的运行方法包括:
S310、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎,用于执行适用于公有区块链业务的内核流程。
S320、获取区块链系统的公链运行配置信息,以实例化所述内核引擎和内核组件。
S330、启动运行所述区块链系统主程序和内核引擎。
S340、通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件,以执行设定组件功能的处理,完成对所述待处理区块链数据的处理需求。
其中,内核引擎为区块链内核核心流程,在一个可选的实施例中,所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能。
其中,交易提交流程是指一次交易提交的流程,示例性的,交易提交流程包括:交易校验、交易执行、交易打包、区块签名、区块更新和区块广播等步骤;区块验证流程是指本机节点对区块进行验证的流程,示例性的,在确定其他节点为出块节点的情况下,为了保证数据安全有效,本机节点需要对出块节点进行验证,具体的本机节点需要对区块节点的区块高度进行验证,以确保当前出块节点与本机节点根据共识机制确定的出块节点一致;区块同步流程是指同步区块链中其他区块节点中事务处理数据的流程;区块链系统管理功能是指用于维护区块链系统的功能,如变更出块节点,管理节点,监控网络状态等功能。
内核引擎获取的待处理区块链数据可以是内核引擎通过网络组件接收到用户客户端发送的待处理区块链数据,以及内核引擎通过网络组件接收到区块链系统运行过程中如生成的新区块验证过程和区块同步过程产生的待处理区块链数据。或是由内核引擎的上一层,即应用层,从用户客户端获取待处理区块链数据以后,发送给内核引擎的。具体的,应用层基于命令行工具通过应用层接口向内核引擎发送调用命令,内核引擎根据从应用层接口获取的调用命令执行相应的功能。其中,应用层接口是由远程过程调用(RPC)服务提供给应用层的。
在公链场景下,RPC服务是可以自由访问的,任意参与者都可以通过客户客户端访问区块链节点,向区块链来发起交易或者查询链上数据。因此,为了满足参与方与区块链系统的交互需求,RPC服务需要提供完备的应用层接口。
在一个可选的实施例中,所述内核引擎为设定公链内核引擎,内核引擎基于远程过程调用服务提供应用层调用的应用层接口,包括下述至少一个:提交交易接口、查询交易接口、查询区块接口、查询区块链状态接口和选择UTXO接口;所述应用层接口用于接收基于命令行工具发起的调用命令。
其中,提交交易接口是用于接收调用内核引擎完成提交交易的接口;查询交易接口是用于接收调用内核引擎完成交易查询的接口;查询区块接口是用于接收调用内核引擎完成区块查询的接口;查询区块链状态接口用于接收调用内核引擎完成区块链状态查询的接口;选择UTXO接口是用于接收调用内核引擎完成UTXO选择的接口。可以知道的是,远程过程调用服务提供给应用层的、能够与内核引擎进行交互的接口不限于此,还可以包括其他交互功能接口。
内核引擎对待处理区块链数据进行处理的过程,实际为内核引擎根据待处理区块链数据的处理流程调用内核组件,由内核引擎和内核组件相互配合对待处理区块链数据进行的处理的过程。内核引擎在获取到待处理区块链数据以后,会对待处理区块链数据进行处理。并会在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件,通过被调用组件执行设定组件功能的处理,完成对待处理区块链数据的处理需求。其中,设定组件功能与待处理区块链数据的处理需求相关。
在一个可选的实施例中,所述内核引擎具体用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件。
其中,内核组件接口是对内核组件可实现功能的抽象,区块链系统中的每个内核组件均存在对应的内核组件接口,一个内核组件接口可以对应多个内核组件。内核组件接口由组件适配器提供给内核引擎,内核引擎只需要根据待处理区块链数据对需要的内核组件功能进行选择,无需关心内核组件功能的具体实现。内核引擎通过调用内核组件接口即可实现对内核组件的调用。
其中,组件适配器是配置于内核引擎层的,组件适配器充当翻译器的角色,用于将各内核组件的功能抽象为可供内核引擎直接调用的内核组件接口,组件适配器向内核引擎屏蔽内核组件的功能实现细节。无论哪种内核组件,无论内部如何实现组件功能,但组件适配器抽象出来的为内核引擎提供的内核组件接口是规范化的接口。这样做可以保持内核引擎和内核组件之间的松耦合关联关系,使得内核引擎和内核组件都可以自由的扩展替换。
内核引擎根据待处理区块链数据,在组件适配器提供的内核组件接口中确定所需内核组件接口,并通过组件适配器,在内核组件接口被调用时,根据内核组件的内核指令接口产生内核组件调用请求。
考虑到内核引擎和内核组件使用指令系统差异,可能导致内核引擎的内核调用指令形式不能被内核组件直接识别处理的情况,在组件适配器中引入内核指令接口。在内核引擎调用内核组件接口时,组件适配器根据被调用的内核组件接口,确定与内核组件接口对应的内核指令接口。 通过内核指令接口对内核引擎发送的内核组件调用指令进行处理,将内核组件调用指令转换为内核组件可以直接执行的指令形式。
内核组件接口主要是面向内核引擎,为内核引擎提供规范化的调用接口,内核指令接口与内核组件接口不同,内核指令接口是面向于内核组件,在内核引擎调用内核组件的情况下,将内核组件调用指令转化为对应内核组件可识别的指令形式。
内核引擎根据内核组件接口和待处理区块链数据产生内核组件调用请求,再通过组件适配器中的内核指令接口将内核组件调用请求转化为对应内核组件可以直接识别的指令级别调用请求。可选的,内核组件调用请求中包括内核组件名称、输入参数、要求返回参数和回调函数等。
组件适配器根据内核指令接口转化得到的内核组件调用请求,调用对应的内核组件,使得内核组件在接收到内核组件调用请求执行设定组件功能的处理。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统运行过程中,通过内核引擎基于内核组件接口与内核组件相互配合,完成了对待处理区块链数据的处理需求。本申请实施例中内核引擎和内核组件均采用模块化设计,二者通过内核组件接口实现配合工作,从而实现了模块间的松耦合,使得内核引擎和内核组件均可以自由扩展,进而扩展了区块链系统在公开网络场景下的适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图4是根据本申请实施例的另一种区块链系统的运行方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。本申请实施例描述的是进行待处理交易为待提交交易的情况下,区块链系统的运行流程。具体的,针对于交易提交的情况对“通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件”进行了细化,
参见图4,本实施例提供的区块链系统的运行方法包括:
S410、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎,用于执行适用于公有区块链业务的内核流程。
S420、获取区块链系统的公链运行配置信息,以实例化所述内核引擎和内核组件。
S430、启动运行所述区块链系统主程序和内核引擎。
S440、通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据。
本机节点应用层可以直接体现业务场景,客户端可以通过应用层向区块链系统发起待处理交易,待处理交易是指需要区块链系统进行处理的交易,待处理交易可以是待提交交易。
其中,应用层接口是远程过程调用服务向应用层提供,供应用层与内核引擎进行信息交互的端口,应用层通过应用层接口可以调用内核引擎对待处理区块链数据进行处理的接口。
内核引擎从应用层接口获取客户端通过应用层发起的待处理交易,并由内核引擎对待处理交易进行处理。
S450、在所述内核引擎处理所述待处理交易的过程中,调用账本组件,对所述待处理交易中的账本数据进行处理,以形成待确认交易,并写入待确认交易池。
具体的,在本机节点为出块节点,本机节点的内核引擎处理所述待处理交易的过程中,基于账本组件接口调用账本组件,利用账本组件对待处理交易中的账本数据进行处理,在账本数据的处理过程中产生交易数据,根据交易数据形成待确认交易,并将待确认交易写入待确认交易池,等待区块网络中的其他区块节点的确认。
其中,待确认交易是指需要本机区块链节点和区块链网络中其他节点进行确认的交易数据。交易数据是在账本组件对待处理交易的处理过程中产生的数据。示例性的,在待处理交易为节点A账户中设定金额转入到节点B 的账户,内核引擎调用账本组件,通过账本组件完成从节点A账户向到节点B 的账户转入设定金额的过程,此过程中产生的节点A和节点B账户中资金金额变动情况、资金流向和交易时间即为交易数据。
面向公开网络场景的公链中区块节点众多,更加侧重维护区块链系统的稳定性,将账本组件形成的未经确认的交易数据放入未确认交易池等待其他区块节点确认,在交易确认以后再将交易数据上链,可以有效减少区块回滚次数和区块分叉的产生,可以提高区块链系统的稳定性。
S460、在所述内核引擎处理所述待处理交易的过程中,调用共识组件确认待确认交易所属区块被确认时,调用账本组件,将所述待确认交易池中的待确认交易更新到本地账本数据中。
为保证待处理交易的有效性,区块链网络中的不是出块节点的其他区块链节点需要对区块进行确认。具体的,在区块链节点对区块进行校验的过程中,区块节点的内核引擎基于共识组件接口,调用共识组件,通过共识组件确定该区块的出块节点身份是否有效。以及,还可以调用合约组件或账本组件确认交易数据是否有效。在确定区块有效的情况下,相当于该区块中的待确认交易已经验证有效,此时,再调用账本组件将待确认交易更新到本地账本数据中,从而实现待处理交易的上链存储。具体的,交易提交后就需要等待全网确认,等到不可逆高度后才认为该交易被确认。在更新至本地账本数据之前,交易数据无法被后续交易所依赖使用。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统运行过程中,内核引擎基于内核组件接口与内核组件相互配合,完成了对待处理区块链数据的处理需求。本申请实施例中内核引擎和内核组件均采用模块化设计,二者通过内核组件接口实现配合工作,从而实现了模块间的松耦合,使得内核引擎和内核组件均可以自由扩展,进而扩展了区块链系统在公开网络场景下的适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。此外,本申请实施例通过内核引擎调用账本组件,对待处理交易中的账本数据进行处理,将形成待确认交易,并写入待确认交易池。在待确认交易所属区块被确认时,再将待处理交易更新到本地账本数据中,有效减少区块回滚次数和区块分叉的产生,提高了区块链系统的稳定性。
图5是根据本申请实施例的另一种区块链系统的运行方法的示意图,本实施例是在上述实施例的基础上提出的一种可选方案。本申请实施例描述的是进行区块链系统对待处理交易进行处理的情况下,区块链系统的运行过程中合约流程调用流程。具体的,针对于区块验证的情况对“通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件”进行了细化。
参见图5,本实施例提供的区块链系统的运行方法包括:
S510、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎,用于执行适用于公有区块链业务的内核流程。
S520、获取区块链系统的公链运行配置信息,以实例化所述内核引擎和内核组件。
S530、启动运行所述区块链系统主程序和内核引擎。
S540、通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据。
可选的,待处理区块链数据可以是内核引擎基于应用层接口获取的客户端通过应用层发送待处理交易。示例性的,待处理交易为在基于区块链的有奖竞猜场景下,由应用层客户端发送的获奖节点确定请求。智能合约规定了获奖节点的确定方法,通过运行智能合约确定获奖节点。
S550、在所述内核引擎处理所述待处理交易的过程中,调用合约组件,对所述待处理交易进行处理,以形成待确认交易,并写入待确认交易池。
内核引擎处理待处理交易的过程中,基于合约组件调用接口调用合约组件,利用合约组件执行智能合约来处理待处理交易,并由合约组件将智能合约执行结果反馈给内核引擎。根据智能合约执行结果形成的待确认交易。并将待确认交易写入待确认交易池,等待区块网络中的其他区块节点的确认。
S560、在所述内核引擎处理所述待处理交易的过程中,调用共识组件确认本机节点为矿工时,调用合约组件,将所述待确认交易池中的待确认交易进行校验,校验通过后打包至当前区块中。
在待确认交易为智能合约执行结果的情况下,对待确认交易池中待确认交易进行校验,需要在本机节点为出块节点,本机节点调用合约组件,通过本机节点的合约组件运行智能合约虚拟机执行智能合约,根据本机节点的智能合约执行结果确定待执行交易的有效性。在本机节点的智能合约执行结果与待处理交易一致,则可以确认待确认交易。将确认的待确认交易进行校验,校验通过后打包至当前区块中,能够确保交易合法性,防止脏交易打包入区块并被广播。可以有效减少区块回滚次数和区块分叉的产生,可以提高区块链系统的稳定性。
具体的,区块链节点是通过内核引擎调用共识组件确定自身是否为出块节点。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统运行过程中,内核引擎基于内核组件接口与内核组件相互配合,完成了对待处理区块链数据的处理需求。本申请实施例中内核引擎和内核组件均采用模块化设计,二者通过内核组件接口实现配合工作,从而实现了模块间的松耦合,使得内核引擎和内核组件均可以自由扩展,进而扩展了区块链系统在公开网络场景下的适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。此外,本申请实施例通过内核引擎调用合约组件,对待处理交易进行处理,将形成待确认交易,并写入待确认交易池。在确认本机节点为矿工时,调用合约组件,将待确认交易池中的待确认交易进行校验,校验通过后打包至当前区块中,有效减少区块回滚次数和区块分叉的产生,提高了区块链系统的稳定性。
图6是根据本申请实施例的另一种区块链系统的运行方法的示意图,本实施例是在上述实施例的基础上提出的一种可选方案。本申请实施例描述的是进行交易提交的情况下区块链系统的运行流程。具体的,针对于区块验证的情况对“通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件”进行了细化。
参见图6,本实施例提供的区块链系统的运行方法包括:
S610、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎,用于执行适用于公有区块链业务的内核流程。
S620、获取区块链系统的公链运行配置信息,以实例化所述内核引擎和内核组件。
S630、启动运行所述区块链系统主程序和内核引擎。
S640、通过所述内核组件中的网络组件,接收区块链网络中传输的待验证区块或待同步区块,作为所述待处理区块链数据,反馈给所述内核引擎。
具体的,待处理区块链数据可以是网络组件接收到并传输给内核引擎的区块链网络中传输的待验证区块或待同步区块。可选的,待验证区块为在区块链网络中除本机节点外的其他区块节点为矿工的情况下,需要本机节点验证的矿工生成的新区块。待同步区块是指在发生回滚、新加入节点等各种情况下,需要从其他节点同步获取的区块。
S650、通过所述内核引擎,调用合约组件和/或账本组件对待验证区块或待同步区块进行验证,并将验证结果反馈给内核引擎。
内核引擎在接收到待验证区块或待同步区块后需要先对区块中的交易做验证,具体的,若区块中的交易为转账交易,则需要内核引擎调用账本组件校验输入UTXO的有效性,若为合约交易则需要内核引擎调用合约组件,运行智能合约虚拟机执行智能合约执行交易以实现对合约交易的校验。再由合约组件和/或账本组件将区块校验结果反馈给内核引擎。
S660、通过所述内核引擎,在待验证区块或待同步区块验证通过时,调用账本组件,将待验证区块或待同步区块,写入本地账本数据。
在待验证区块或待同步区块验证通过时,内核引擎基于账本组件接口调用账本组件,将待验证区块或待同步区块,写入本地账本数据,更新状态机,将验证通过的待验证区块或待同步区块上链存储。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统运行过程中,通过内核引擎调用合约组件和/或账本组件,对待验证区块或待同步区块进行验证,在待验证区块或待同步区块验证通过时,调用账本组件,将待验证区块或待同步区块,写入本地账本数据,实现了内核引擎与内核组件相互配合,共同完成了对待处理区块链数据的处理需求。本申请实施例中内核引擎和内核组件均采用模块化设计,二者通过内核组件接口实现配合工作,从而实现了模块间的松耦合,使得内核引擎和内核组件均可以自由扩展,进而扩展了区块链系统在公开网络场景下的适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
本申请实施例提供了一种区块链系统的运行装置,该装置包括:
内核引擎和内核组件初始化模块,用于运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎或设定联盟链内核引擎,用于执行适用于公有区块链业务或联盟区块链业务的内核流程;
运行配置信息获取模块,获取区块链系统的公链运行配置信息或联盟链运行配置信息,以实例化所述内核引擎和内核组件;
区块链系统主程序和内核引擎启动模块,启动运行所述区块链系统主程序和内核引擎;
端口监听服务启动模块,启动端口监听服务,以运行区块链系统。
上述装置可用于执行本申请实施例所提供的区块链系统的运行方法,且可分别针对公链内核引擎或联盟链内核引擎的运行方法具备相应的功能和有益效果,下面分别进行描述。
图7是根据本申请实施例的区块链系统的运行装置的示意图;参见图7,本申请实施例公开了一种公有区块链系统的运行装置700,该装置700可以包括:公链内核引擎和内核组件初始化模块710、公链运行配置信息获取模块720、公链区块链系统主程序和内核引擎启动模块730和公链端口监听服务启动模块740。
公链内核引擎和内核组件初始化模块710,用于运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎,用于执行适用于公有区块链业务的内核流程;
公链运行配置信息获取模块720,用于获取区块链系统的公链运行配置信息,以实例化所述内核引擎和内核组件;
公链区块链系统主程序和内核引擎启动模块730,用于启动运行所述区块链系统主程序和内核引擎;
公链端口监听服务启动模块740,用于启动端口监听服务,以运行区块链系统;
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统初始化过程中,通过将内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器,并根据区块链系统的运行配置信息实例化内核引擎和内核组件,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,内核引擎和内核组件采用模块化设计,扩展了区块链系统在公开网络场景下的适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
可选的,所述区块链系统主程序用于调用所述内核引擎处理区块链数据,以支持公有区块链业务,所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件。
可选的,所述内核引擎具体用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件。
可选的,每个功能的内核组件包括一个或多个类型的内核组件,注册在对应的组件适配器中,供实例化或运行过程中进行配置。
可选的,公链运行配置信息获取模块720,具体用于获取区块链系统的公链部署时的运行配置信息,以实例化所述内核引擎和内核组件,并将部署时的运行配置信息添加在区块链的创世区块中;
其中,所述部署时的运行配置信息包括下述至少一个:内核组件选型配置信息、组件运行配置信息和激励配置信息。
可选的,所述装置还包括:公链内核组件选型逻辑变更模块,具体用于在启动运行所述区块链系统主程序和内核引擎之后,获取公链运行过程中的运行配置信息,根据所述运行配置信息变更组件适配器中的内核组件选型逻辑,并实例化变更后的内核组件。
可选的,所述内核引擎为设定公链内核引擎:所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能;所述内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件、权限组件和加密组件;所述内核引擎基于远程过程调用服务提供应用层调用的应用层接口,包括下述至少一个:提交交易接口、查询交易接口、查询区块接口、查询区块链状态接口和选择UTXO接口;所述应用层接口用于接收基于命令行工具发起的调用命令。
可选的,其中,所述内核引擎为设定公链内核引擎,且:共识组件,包括POW类共识组件和XPOS类共识组件;合约组件,包括Xml类虚拟机(XVM)类共识组件和以太坊虚拟机(EVM)类合约组件;网络组件,包括基于libp2p类网络组件;账本组件,包括基于UTXO和XuperModel实现的账本组件;权限组件,包括基于ACL合约账户模型的权限组件。
可选的,公链端口监听服务启动模块740,包括:待处理公有区块链数据处理子模块。
待处理公有区块链数据处理子模块,具体用于通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件,以执行设定组件功能的处理,完成对所述待处理区块链数据的处理需求。
可选的,待处理公有区块链数据处理子模块,包括:第一待处理公链交易获取单元,用于通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据;公链账本组件调用单元,用于在所述内核引擎处理所述待处理交易的过程中,调用账本组件,对所述待处理交易中的账本数据进行处理,以形成待确认交易,并写入待确认交易池;待确认公链交易更新单元,用于在所述内核引擎处理所述待处理交易的过程中,调用共识组件确认待确认交易所属区块被确认时,调用账本组件,将所述待确认交易池中的待确认交易更新到本地账本数据中。
可选的,待处理公有区块链数据处理子模块,包括:第二待处理公链交易获取单元,用于通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据;公链合约组件调用单元,在所述内核引擎处理所述待处理交易的过程中,调用合约组件,对所述待处理交易进行处理,以形成待确认交易,并写入待确认交易池;待确认公链交易打包单元,用于在所述内核引擎处理所述待处理交易的过程中,调用共识组件确认本机节点为矿工时,调用合约组件,将所述待确认交易池中的待确认交易进行校验,校验通过后打包至当前区块中。
可选的,待处理公有区块链数据处理子模块,包括:区块获取单元,用于通过所述内核组件中的网络组件,接收区块链网络中传输的待验证区块或待同步区块,作为所述待处理区块链数据,反馈给所述内核引擎;公链区块验证单元,用于通过所述内核引擎,调用合约组件和/或账本组件对待验证区块或待同步区块进行验证,并将验证结果反馈给内核引擎;公链区块写入单元,用于通过所述内核引擎,在待验证区块或待同步区块验证通过时,调用账本组件,将待验证区块或待同步区块,写入本地账本数据。
本申请实施例所提供的区块链系统的运行装置可执行本申请任意实施例所提供的区块链系统的运行方法,具备执行区块链系统的运行方法相应的功能模块和有益效果。
联盟链作为除公链以外的另外一种重要的区块链,联盟链的节点都是仅向某个特定群体的成员和有限的第三方开放的,不是每个人都可以参与到联盟链中进行业务处理,需要授权参与。由于联盟链参与的节点有限,单个节点的可信度高,不易受到攻击,联盟链更加注重区块链的业务处理效率,决定了在采用联盟链的应用场景下,需要设置特定的内核流程和内核组件,兼顾性能和安全性。
图8是根据本申请实施例的一种区块链系统的运行方法的示意图。本实施例可适用于在面向联盟场景业务的区块链系统程序开发完成以后,通过启动运行区块链系统程序来进行初始化和运行的情况。本实施例公开的区块链系统的运行方法可以由区块链系统的运行装置来执行,该装置可以由软件和/或硬件的方式实现,配置于具备计算和存储功能的电子设备中。例如可以由区块链节点来执行。参见图8,本实施例提供的一种区块链系统的运行方法,包括:
S810、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定联盟链内核引擎,用于执行适用于联盟区块链业务的内核流程。
运行区块链系统主程序对内核引擎和内核组件进行初始化,具体是将内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器。
其中,区块链系统主程序用于调用所述内核引擎处理区块链数据,以支持联盟区块链业务。区块链系统主程序是用于执行区块链系统中的应用层业务功能的代码,主程序与具体业务需求相关联。区块链系统主程序通过调用内核引擎处理区块链数据,完成联盟区块链业务。示例性的,联盟区块链业务可以是交易提交业务或者电子存证业务等各种业务需求。
区块链系统主程序中包括内核引擎的初始化方法、启动接口和退出接口,所述区块链系统主程序中还包括至少一个内核组件的初始化方法。
其中,内核引擎的初始化方法是指用于初始化内核引擎的方法程序入口,内核组件的初始化方法是用于初始化内核组件的方法程序入口。内核引擎的启动接口和内核引擎的退出接口,是区块链系统主程序向应用层提供的用于控制内核引擎的接口,具体的应用层可以在启动区块链系统时,通过内核引擎启动接口执行内核引擎启动方法以启动内核引擎,在区块链系统异常的情况下通过内核引擎的退出接口执行内核引擎退出方法以退出内核引擎。当然,内核框架提供给主程序的、能够控制内核引擎的接口不限于此,还可以包括其他控制功能接口。
运行区块链系统主程序中的内核引擎初始化方法和内核组件初始方法对内核引擎和内核组件进行初始化。其中,对内核引擎和对内核组件进行初始化包括对内核引擎和对内核组件的注册过程,和对内核引擎和对内核组件的实例化过程。
首先,分别注册内核引擎和内核组件。具体的,本申请实施例采用了工厂模式对内核引擎和内核组件进行管理,这是因为在不同的业务应用场景下对内核引擎和内核组件有不同的要求,在运行区块链系统主程序时,将用户所需内核引擎的创建程序注册到内核引擎工厂和对应的组件适配器中,可以使得用户可以按需对内核引擎和内核组件进行技术选型。
在内核引擎工厂中注册的内核引擎的数量可以是一个也可是多个,可以向内核引擎工厂中注册多个内核引擎,以便于用户按需选择对应的内核引擎。
本申请实施例中,内核引擎为设定联盟链内核引擎,其中,设定联盟链引擎是执行适用于联盟区块链业务的内核流程。联盟区块链是面向联盟场景的区块链,联盟区块链只针对某个特定群体的成员和有限的第三方,设定联盟链内核引擎更加契合联盟区块链侧重安全性和高性能的特点,将设定联盟链内核引擎注册到引擎工厂。
内核组件是具备特定数据处理功能的方法的封装,按照内核组件可实现功能进行划分,所述内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件、权限组件和加密组件。其中,共识组件负责区块链网络中多节点去中心化的共识达成,用于在区块链节点之间执行共识机制;网络组件用于执行区块链网络中的数据传输功能;账本组件用于基于区块链账本规则对账本数据进行处理;合约组件用于执行智能合约对事务请求进行处理;权限组件用于对智能合约的调用权限进行控制;加密组件是用于对区块链数据进行加解密处理,如对新区块进行签名处理。
可选的,在本申请实施例的区块链系统中的内核组件可存在对应的组件适配器,示例性的,组件适配器可以包括:与共识组件对应的共识组件适配器(consensus)、与合约组件对应的合约组件适配器(contract)、与网络组件对应的网络组件适配器(network)和权限组件对应的权限组件适配器(permission)等组件适配器。部分组件也可以根据情况不设置组件适配器。例如,账本组件可选的是与内核引擎采用相同存储格式的区块链账本数据,则账本组件提供给内核引擎的组件接口是对区块链账本数据的抽象接口。将内核组件注册到对应组件适配器。
具体的,结合内核组件适用场景和内核组件自身特点每个功能的内核组件还可以进一步包括一个或多个类型的内核组件,示例性的,合约组件可以包括原生代码合约虚拟机、web字节码合约虚拟机、或以太坊合约虚拟机;共识组件可以包括单一共识组件、POW共识组件、XPOS共识组件和XPOA共识组件。
在一个可选的实施例中,每个功能的内核组件包括一个或多个类型的内核组件,注册在对应的组件适配器中,供实例化或运行过程中进行配置。
在将内核组件注册到对应组件适配器时,将每个功能的内核组件包括的部分或者全部的内核组件注册在所属功能内核组件对应的组件适配器中。可选的,将全部的内核组件注册在所属功能内核组件对应的组件适配器中,继续上例说明,将单一共识组件、POW共识组件、XPOS共识组件和XPOA共识组件均注册到共识组件适配器中,供实例化或运行过程中进行配置。这使得用户可以根据实际业务场景的需求,通过实例化或者运行过程中对内核组件进行配置,实现内核组件的按需选择。
S820、获取区块链系统的联盟链运行配置信息,以实例化所述内核引擎和内核组件。
具体的,通过程序配置文件,获取区块链系统的联盟链运行配置信息,以实例化所述内核引擎和内核组件。
其中,程序配置文件中包括区块链系统的联盟链运行配置信息,联盟链运行配置信息是用于实例化内核引擎和内核组件的信息。程序配置文件可以由开发人员根据业务场景需求确定,并通过区块链开发软件输入的,
根据联盟链运行配置信息对内核引擎和内核组件进行实例化,使得区块链具备在面向联盟场景的情况下对区块链数据进行处理的能力。
示例性的,区块链系统的联盟链运行配置信息可以包括:区块广播方式、缓存有效期、同步区块队列大小和内核组件的选型信息。其中,区块的广播方式限定的是区块链系统的节点,向区块链系统中除本机节点以外的其他区块节点传输区块链数据的方式;缓存有效期限定了区块链节点的本地缓存数据的保留期限;同步区块队列大小限定了一次性可以进行区块同步的区块数量。
利用区块链系统的联盟链运行配置信息实例化内核引擎和内核组件,具体的,根据区块链系统的联盟链运行配置信息向内核引擎和内核组件对应的基本参数进行赋值。
S830、启动运行所述区块链系统主程序和内核引擎。
启动运行区块链系统主程序,通过区块链系统对待处理区块链数据进行处理,执行区块链系统中的应用层业务功能,完成应用层业务需求。具体的,启动运行区块链系统主程序和内核引擎,通过区块链系统主程序调用内核引擎,通过内核引擎对待处理区块链数据进行处理。
内核引擎为区块链内核核心流程,用于执行区块链核心操作,内核引擎具备对各个内核组件的调用能力。内核引擎对待处理区块链数据进行处理的过程,实际为内核引擎根据待处理区块链数据的处理流程调用内核组件,由内核引擎和内核组件相互配合对待处理区块链数据进行的处理的过程。其中,待处理区块链数据包括待处理区块链事务请求、待验证区块、待同步区块和区块链系统维护数据中的至少一种。
可选的,启动内核引擎的同时启动内核组件,预先为内核组件分配组件所需资源,供内核组件被调用时使用,从而缩短区块链系统响应时延。
S840、启动端口监听服务,以运行区块链系统。
其中,端口监听服务是指对内核引擎和应用层进行交互的应用层交互端口进行监听的服务。应用层交互端口是指应用层与内核引擎进行交互的端口,应用层交互端口的数量为至少一个,一般为多个。应用层客户端通过应用层交互端口向内核引擎传输待处理请求,例如请求处理区块链数据,示例性的,端口监听服务为RPC服务(Remote ProcedureCall ,远程过程调用)。在端口监听服务监听到应用层交互端口存在待处理区块链数据的情况下,对触发内核引擎对待处理区块链数据的处理器流程。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统初始化过程中,通过将设定联盟链内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器,并根据区块链系统的运行配置信息实例化内核引擎和内核组件,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,内核引擎和内核组件采用模块化设计,扩展了区块链系统的场景适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图9是根据本申请实施例的另一种区块链系统的运行方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。具体的,是对“获取区块链系统的联盟链运行配置信息,以实例化所述内核引擎和内核组件”的细化。
参见图9,本实施例提供的区块链系统的运行方法包括:
S910、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定联盟链内核引擎,用于执行适用于联盟区块链业务的内核流程。
S920、获取区块链系统的联盟链部署时的运行配置信息,以实例化所述内核引擎和内核组件,并将部署时的运行配置信息添加在区块链的创世区块中。
其中,创世区块是指在首次部署区块链系统的情况下,区块链系统初始化完成的启动运行的过程中创建的第一个区块。创世区块中存储有区块链相关的运行配置信息。区块链运行相关的信息,大部分在部署节点进行规定,并存储于创世区块中。也可以有部分配置信息,在运行后被调整更改,记录在调整时产生的区块中。
可选的,针对内核组件适配器中注册有多个属于同一种功能内核组件的情况,在启动区块链系统时,在创世区块中指定初始内核组件的选型。
可选的,针对内核组件适配器中注册有多个属于同一种功能内核组件的情况,在启动区块链系统时,在创世区块中指定初始内核组件具体要使用哪个内核组件。
其中,所述部署时的运行配置信息包括下述至少一个:内核组件选型配置信息和组件运行配置信息。或者,还可以包括内核引擎选型配置信息。
内核组件选型配置信息是指用户根据业务场景需求,用于在内核组件适配器中对在已注册的各功能内核组件进行选型的信息。组件运行配置信息是指用于控制内核组件运行过程的参数;由于联盟区块链只针对某个特定群体的成员和有限的第三方,联盟区块链中的参与区块链节点之间存在利益关联,区块链网络一般不需要像公有区块链一样需要依赖激励来维持运转,因此,无需向在运行配置信息中设置激励配置信息。
通常情况下,内核组件选型配置信息是用户根据联盟链适用的业务场景特点确定的。
对于侧重高性能和安全性的联盟区块链,内核组件的选型也是综合了考虑了联盟场景需要同时兼顾安全性和高性能的需求确定的。根据内核组件选型配置信息,实例化对应内核组件即完成了对内核组件的选型。在一个可选的实施例中,所述内核引擎为设定联盟链内核引擎,根据内核组件选型信息对各功能内核组件的选型结果为:
共识组件,包括XPOA类共识组件,XPOA类共识组件是结合BFT和POA的拜占庭容错共识,由授权节点参与共识出块的共识组件;
合约组件,包括基于WebAssembly实现的XVM虚拟机组件和原生代码类(Native)合约组件;XVM虚拟机基于WASM研发,确保安全支持通用语言开发智能合约,同时提高合约执行性能;NATIVE虚拟机便于支持更多种类的开发语言,降低合约开发成本,比如支持java、python等语言开发智能合约。
网络组件,包括基于GRPC类对等网络组件,基于GRPC类对等网络组件可以支持路由的自定义、节点的动态加入退出、和CA认证等功能;
账本组件,包括基于UTXO和XuperModel实现的账本组件,基于UTXO和XuperModel实现的账本组件通过扁平化的数据存储结构,提高并发性能;其中,XuperModel为超级链系统的账本数据模型,能够兼容UTXO账本数据。超级链系统能够支持多条平行链架构。
权限组件,包括基于ACL(访问控制列表)合约账户模型的权限组件,基于ACL合约账户模型的权限组件,能够实现完全去中心化的合约权限管理。合约账户模型为基于用户账户、合约账户和链账户实现的权限控制模型,能够多维度对区块链系统进行权限控制。
S930、启动运行所述区块链系统主程序和内核引擎。
S940、启动端口监听服务,以运行区块链系统。
为了提高区块链系统的灵活性,本申请实施例提供的区块链运行方法支持在区块链系统运行的过程中对内核组件的再配置,在一个可选的实施例中,启动运行所述区块链系统主程序和内核引擎之后,还包括:获取联盟链运行过程中的运行配置信息,根据所述运行配置信息变更组件适配器中的内核组件选型逻辑,并实例化变更后的内核组件。
其中,组件适配器中的内核组件选型逻辑是指组件适配器中记录的内核组件的选型信息。
根据运行配置信息变更组件适配器中的内核组件选型逻辑,是指根据运行配置信息从已注册在组件适配器中的内核组件中选择所需内核组件,并将组件适配器中的内核组件选型逻辑由当前正在使用的内核组件替换为所需内核组件,然后再次对区块链系统进行初始化,从而实例化变更后的内核组件。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统初始化过程中,根据联盟链部署时的运行配置信息,对内核引擎和内核组件进行实例化,并将部署时的运行配置信息添加在区块链的创世区块中,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,内核引擎和内核组件采用模块化设计,扩展了区块链系统的场景适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图10是根据本申请实施例的另一种区块链系统的运行方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。具体的,是对启动端口监听服务,以运行区块链系统的细化。
参见图10,本实施例提供的区块链系统的运行方法包括:
S1010、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定联盟链内核引擎,用于执行适用于联盟区块链业务的内核流程。
S1020、获取区块链系统的联盟链运行配置信息,以实例化所述内核引擎和内核组件。
S1030、启动运行所述区块链系统主程序和内核引擎。
S1040、通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件,以执行设定组件功能的处理,完成对所述待处理区块链数据的处理需求。
其中,内核引擎为区块链内核核心流程,在一个可选的实施例中,所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能。
其中,交易提交流程是指一次交易提交的流程,示例性的,交易提交流程包括:交易校验、交易执行、交易打包、区块签名、区块更新和区块广播等步骤;区块验证流程是指本机节点对区块进行验证的流程,示例性的,在确定其他节点为出块节点的情况下,为了保证数据安全有效,本机节点需要对出块节点进行验证,具体的本机节点需要对区块节点的区块高度进行验证,以确保当前出块节点与本机节点根据共识机制确定的出块节点一致;区块同步流程是指同步区块链中其他区块节点中事务处理数据的流程;区块链系统管理功能是指用于维护区块链系统的功能,如变更出块节点,管理节点,监控网络状态等功能。
内核引擎获取的待处理区块链数据可以是内核引擎通过网络组件接收到用户客户端发送的待处理区块链数据,以及内核引擎通过网络组件接收到区块链系统运行过程中如生成的新区块验证过程和区块同步过程产生的待处理区块链数据。或是由内核引擎的上一层,即应用层,从用户客户端获取待处理区块链数据以后,发送给内核引擎的。具体的,应用层基于命令行工具通过应用层接口向内核引擎发送调用命令,内核引擎根据从应用层接口获取的调用命令执行相应的功能。其中,应用层接口是由远程过程调用(RPC)服务提供给应用层的。
在联盟场景下,联盟链中的参与节点是基于RPC服务提供的应用层接口访问区块链节点,向区块链来发起交易或者查询链上数据。因此,为了满足参与方与区块链系统的交互需求,RPC服务需要提供完备的应用层接口。
在一个可选的实施例中,所述内核引擎为设定联盟链内核引擎,内核引擎基于远程过程调用服务提供应用层调用的应用层接口,包括下述至少一个:合约预执行接口、提交交易接口、查询交易接口、查询区块接口和查询区块链状态接口;所述应用层接口用于接收基于命令行工具发起的调用命令。
其中,合约预执行接口是指用于接收调用内核引擎进行预先执行合约的接口,提交交易接口是用于接收调用内核引擎完成提交交易的接口;查询交易接口是用于接收调用内核引擎完成交易查询的接口;查询区块接口是用于接收调用内核引擎完成区块查询的接口;查询区块链状态接口用于接收调用内核引擎完成区块链状态查询的接口。可以知道的是,远程过程调用服务提供给应用层的、能够与内核引擎进行交互的接口不限于此,还可以包括其他交互功能接口。
在联盟链场景下,为了确保区块链系统的数据安全性,联盟链中的区块链节点需要得到授权才能使用命令行工具和RPC参与到联盟链中进行业务处理。在一个可选的实施例中,启动端口监听服务,以运行区块链系统包括:通过内核引擎从端口监听服务获取到应用层接口调用请求时,对调用方和/或调用操作进行鉴权,并在鉴权通过之后,执行所述应用层接口调用请求。
其中,调用方是指发起应用层接口调用请求的客户端,调用操作是指客户端基于应用层接口调用内核引擎,需要由内核引擎执行的操作。示例性的,调用操作可以包括:合约预执行操作、提交交易操作、查询交易操作、查询区块操作和查询区块链状态操作等。
内核引擎在端口监听服务获取到应用层接口调用请求时,内核引擎会根据应用层接口请求,对调用方和/或调用操作进行鉴权,具体的,内核引擎会对调用方是否有权调用应用层接口和/或调用方是否有权调用内核引擎执行应用层接口调用请求中的调用操作。示例性的,调用方可能仅具备部分调用操作的权限,如调用方仅具有查询交易操作、查询区块操作和查询区块链状态的权限,在调用方调用应用层接口中的合约预执行接口的情况下,鉴权结果将为不通过。只有调用方调用应用层接口中的查询交易接口、查询区块接口或者查询区块链接口时,鉴权结果才为通过,此时内核引擎才会执行应用层接口调用请求,执行相应的调用操作。
可选的,内核引擎通过对调用方的CA证书的有效性进行校验实现对调用方和/或调用操作进行鉴权。
内核引擎对待处理区块链数据进行处理的过程,实际为内核引擎根据待处理区块链数据的处理流程调用内核组件,由内核引擎和内核组件相互配合对待处理区块链数据进行的处理的过程。内核引擎在获取到待处理区块链数据以后,会对待处理区块链数据进行处理。并在处理过程中会调用至少一个内核组件,通过被调用组件执行设定组件功能的处理,完成对待处理区块链数据的处理需求。其中,设定组件功能与待处理区块链数据的处理需求相关。
在一个可选的实施例中,所述内核引擎具体用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件。
其中,内核组件接口是对内核组件可实现功能的抽象,区块链系统中的每个内核组件均存在对应的内核组件接口,一个内核组件接口可以对应多个内核组件。内核组件接口由组件适配器提供给内核引擎,内核引擎只需要根据待处理区块链数据对需要的内核组件功能进行选择,无需关心内核组件功能的具体实现。内核引擎通过调用内核组件接口即可实现对内核组件的调用。
其中,组件适配器是配置于内核引擎层的,组件适配器充当翻译器的角色,用于将各内核组件的功能抽象为可供内核引擎直接调用的内核组件接口,组件适配器向内核引擎屏蔽内核组件的功能实现细节。无论哪种内核组件,无论内部如何实现组件功能,但组件适配器抽象出来的为内核引擎提供的内核组件接口是规范化的接口。这样做可以保持内核引擎和内核组件之间的松耦合关联关系,使得内核引擎和内核组件都可以自由的扩展替换。
内核引擎根据待处理区块链数据,在组件适配器提供的内核组件接口中确定所需内核组件接口,并通过组件适配器,在内核组件接口被调用时,根据内核组件的内核指令接口产生内核组件调用请求。
考虑到内核引擎和内核组件使用指令系统差异,可能导致内核引擎的内核调用指令形式不能被内核组件直接识别处理的情况,在组件适配器中引入内核指令接口。在内核引擎调用内核组件接口时,组件适配器根据被调用的内核组件接口,确定与内核组件接口对应的内核指令接口。 通过内核指令接口对内核引擎发送的内核组件调用指令进行处理,将内核组件调用指令转换为内核组件可以直接执行的指令形式。
内核组件接口主要是面向内核引擎,为内核引擎提供规范化的调用接口,内核指令接口与内核组件接口不同,内核指令接口是面向于内核组件,在内核引擎调用内核组件的情况下,将内核组件调用指令转化为对应内核组件可识别的指令形式。
内核引擎根据内核组件接口和待处理区块链数据产生内核组件调用请求,再通过组件适配器中的内核指令接口将内核组件调用请求转化为对应内核组件可以直接识别的指令级别调用请求。可选的,内核组件调用请求中包括内核组件名称、输入参数、要求返回参数和回调函数等。
组件适配器根据内核指令接口转化得到的内核组件调用请求,调用对应的内核组件,使得内核组件在接收到内核组件调用请求执行设定组件功能的处理。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统运行过程中,通过内核引擎基于内核组件接口与内核组件相互配合,完成了对待处理区块链数据的处理需求。本申请实施例中内核引擎和内核组件均采用模块化设计,二者通过内核组件接口实现配合工作,从而实现了模块间的松耦合,使得内核引擎和内核组件均可以自由扩展,进而扩展了区块链系统的场景适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低联盟区块链技术的研发成本。
图11是根据本申请实施例的另一种区块链系统的运行方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。本申请实施例描述的是进行待处理交易为待提交交易的情况下,区块链系统的运行流程。具体的,针对于交易提交的情况对“通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件”进行了细化,
参见图11,本实施例提供的区块链系统的运行方法包括:
S1110、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定联盟链内核引擎,用于执行适用于联盟区块链业务的内核流程。
S1120、获取区块链系统的联盟链运行配置信息,以实例化所述内核引擎和内核组件。
S1130、启动运行所述区块链系统主程序和内核引擎。
S1140、通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据。
本机节点应用层可以直接体现业务场景,客户端可以通过应用层向区块链系统发起待处理交易,待处理交易是指需要区块链系统进行处理的交易,待处理交易可以是待提交交易。
其中,应用层接口是远程过程调用服务向应用层提供,供应用层与内核引擎进行信息交互的端口,应用层通过应用层接口可以调用内核引擎对待处理区块链数据进行处理的接口。
内核引擎从应用层接口获取客户端通过应用层发起的待处理交易,并由内核引擎对待处理交易进行处理。
S1150、在所述内核引擎处理所述待处理交易的过程中,调用账本组件,对所述待处理交易中的账本数据进行处理,以形成待确认交易,并写入待确认交易池和本地账本数据中。
其中,待确认交易是指需要本机区块链节点和区块链网络中其他节点进行确认的交易数据。交易数据是在账本组件对待处理交易的处理过程中产生的数据。示例性的,在待处理交易为节点A账户中设定金额转入到节点B 的账户,内核引擎调用账本组件,通过账本组件完成从节点A账户向到节点B 的账户转入设定金额的过程,此过程中产生的节点A和节点B账户中资金金额变动情况、资金流向和交易时间即为交易数据。
具体的,在本机节点为出块节点,本机节点的内核引擎处理所述待处理交易的过程中,基于账本组件接口调用账本组件,利用账本组件对待处理交易中的账本数据进行处理,在账本数据的处理过程中产生交易数据,根据交易数据形成待确认交易,并将待确认交易写入待确认交易池,等待区块网络中的其他区块链节点的确认,再将待确认交易写入待确认交易池的同时,还会将待确认交易写入本地账本数据,更新状态机。在等待其他区块链节点确认的同时,将待确认交易写入本地账本数据中。而不是等到待确认交易所属区块得到确认以后才将待确认交易写入本地账本数据。这是根据联盟链的特点特别设置的,联盟链节点都是仅向某个特定群体的成员和有限的第三方开放的,单个节点的可信度高,不易受到攻击,在形成待确认交易以后直接将待确认交易存储到本地账本数据中,让后续依赖交易可以同节点连续提交,后续依赖交易,是指需要依赖于账本数据中已写入数据来提交的交易。当待确认交易未写入账本数据时,无法被其他交易所依赖。由此,可以提高业务处理效率,进而满足联盟链对性能的要求。
在保证联盟链性能的同时还需要兼顾联盟链的安全性,本申请实施例采用通过发现交易冲突回滚冲突交易的方式,防止作恶交易被打包到本地账本,进而保证区块链数据安全性的。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统运行过程中,内核引擎基于内核组件接口与内核组件相互配合,完成了对待处理区块链数据的处理需求。本申请实施例中内核引擎和内核组件均采用模块化设计,二者通过内核组件接口实现配合工作,从而实现了模块间的松耦合,使得内核引擎和内核组件均可以自由扩展,进而扩展了区块链系统的场景适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。此外,本申请实施例通过内核引擎调用账本组件,对待处理交易中的账本数据进行处理,将形成待确认交易,并写入待确认交易池和本地账本数据中,让依赖交易可以同节点连续提交,提高了业务处理效率,保证了联盟链的性能。
图12是根据本申请实施例的另一种区块链系统的运行方法的示意图,本实施例是在上述实施例的基础上提出的一种可选方案。本申请实施例描述的是进行区块链系统对待处理交易进行处理的情况下,区块链系统的运行过程中合约流程调用流程。具体的,针对于区块验证的情况对“通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件”进行了细化。
参见图12,本实施例提供的区块链系统的运行方法包括:
S1210、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定联盟链内核引擎,用于执行适用于联盟区块链业务的内核流程。
S1220、获取区块链系统的联盟链运行配置信息,以实例化所述内核引擎和内核组件。
S1230、启动运行所述区块链系统主程序和内核引擎。
S1240、通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据。
可选的,待处理区块链数据可以是内核引擎基于应用层接口获取的客户端通过应用层发送待处理交易。示例性的,待处理交易为在基于区块链的有奖竞猜场景下,由应用层客户端发送的获奖节点确定请求。智能合约规定了获奖节点的确定方法,通过运行智能合约确定获奖节点。
S1250、在所述内核引擎处理所述待处理交易的过程中,调用合约组件,以请求至少一个背书节点对所述待处理交易进行预执行,并对预执行结果进行背书签名,并反馈给所述内核引擎。
其中,背书节点是为联盟链中的权威节点或可信节点。背书节点可以是由区块链网络中的基于共识机制通过票选出来的节点,或者也可以是指定节点。为了提高联盟链的业务处理效率,内核引擎处理待处理交易的过程中,基于合约组件调用接口调用合约组件,利用合约组件请求背书节点在本地预先执行待处理交易,得到执行结果,并由背书节点对执行结果进行背书签名,表示背书节点已经确认待确认交易的有效性,并为此负责。由背书节点将携带有背书签名的待处理交易反馈给内核引擎。
可以知道的是,待处理交易携带的背书签名的数量越多,表明待处理交易被越多的背书节点确认,待处理交易为有效交易的可信度越高。但是,更多的背书签名意味着更多的时间和资源消耗,以及区块链系统效率的降低。具体的背书节点的数量在这里不作限定,具体依据实际情况确定。
S1260、通过所述内核引擎,调用网络组件,将背书签名满足设定背书条件验证的预执行结果,组装在事务请求中,向区块链网络传输。
其中,设定背书条件是用于验证预执行结果有效性的标准,设定背书条件是由相关技术人员根据实际业务需求确定,在这里不作限定,示例性的,设定背书条件可以是对于背书签名数量的要求,在预执行结果的背书签名的数量大于设定数量时,则可以确认预执行结果有效,可以将预执行结果进行上链存储。
内核引擎在接收到携带有背书签名的待处理交易以后,直接根据设定背书条件验证预执行结果,在预执行结果满足设定背书条件的情况下,将预执行结果组装在事务请求中,由内核引擎基于网络组件接口调用网络组件,通过网络组件将事务请求向区块链网络传输,以供区块链网络中的区块链节点对事务请求进行处理。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统运行过程中,内核引擎基于内核组件接口与内核组件相互配合,完成了对待处理区块链数据的处理需求。本申请实施例中内核引擎和内核组件均采用模块化设计,二者通过内核组件接口实现配合工作,从而实现了模块间的松耦合,使得内核引擎和内核组件均可以自由扩展,进而扩展了区块链系统的场景适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。此外,本申请实施例通过内核引擎调用合约组件,请求至少一个背书节点对待处理交易进行预执行,并由背书节点对执行结果进行背书签名,将背书签名满足设定背书条件验证的预执行结,区块链网络传输,提高了业务处理效率,保证了联盟链的性能。
图13是根据本申请实施例的另一种区块链系统的运行方法的示意图,本实施例是在上述实施例的基础上提出的一种可选方案。本申请实施例描述的是进行交易提交的情况下区块链系统的运行流程。具体的,针对于区块验证的情况对“通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件”进行了细化。
参见图13,本实施例提供的区块链系统的运行方法包括:
S1310、运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定联盟链内核引擎,用于执行适用于联盟区块链业务的内核流程。
S1320、获取区块链系统的联盟链运行配置信息,以实例化所述内核引擎和内核组件。
S1330、启动运行所述区块链系统主程序和内核引擎。
S1340、通过所述内核组件中的网络组件,接收区块链网络中传输的待验证区块或待同步区块,作为所述待处理区块链数据,反馈给所述内核引擎。
具体的,待处理区块链数据可以是网络组件接收到并传输给内核引擎的区块链网络中传输的待验证区块或待同步区块。可选的,待验证区块为在区块链网络中除本机节点外的其他区块节点为矿工的情况下,需要本机节点验证的矿工生成的新区块。待同步区块是指在发生回滚、新加入节点等各种情况下,需要从其他节点同步获取的区块。
S1350、通过所述内核引擎,调用加密组件,对待验证区块或待同步区块中预执行结果的背书签名进行验证,并将验证结果反馈给内核引擎。
其中,预执行结果是指在本地预先执行对待验证区块或待同步区块的验证过程,得到的执行结果。背书节点对执行结果的签名即为背书签名。背书节点对执行结果进行签名,表明背书节点已经确认待确认交易的有效性,并为此负责。
内核引擎在接收到待验证区块或待同步区块后需要先对区块中的交易做验证,具体的,内核引擎会基于加密组件接口调用加密组件,通过加密组件对待验证区块或待同步区块中预执行结果的背书签名进行验证,并由加密组件将验证结果反馈给内核引擎。
S1360、通过所述内核引擎,调用账本组件,对待验证区块或待同步区块中的账本数据进行验证,并将验证结果反馈给内核引擎。
内核引擎还需要对待验证区块或待同步区块的账本数据的有效性进行验证,具体的,内核引擎基于账本组件接口调用账本组件,由账本组件对账本数据的有效性进行验证,由账本组件将验证结果反馈给内核引擎。
S1370、通过所述内核引擎,在待验证区块或待同步区块验证通过时,调用账本组件,将待验证区块或待同步区块,写入本地账本数据。
在待验证区块或待同步区块验证通过时,内核引擎基于账本组件接口调用账本组件,将待验证区块或待同步区块,写入本地账本数据,将验证通过的待验证区块或待同步区块上链存储。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统运行过程中,通过内核引擎调用加密组件和/或账本组件,对待验证区块或待同步区块进行验证,在待验证区块或待同步区块验证通过时,调用账本组件,将待验证区块或待同步区块,写入本地账本数据,实现了内核引擎与内核组件相互配合,共同完成了对待处理区块链数据的处理需求。本申请实施例中内核引擎和内核组件均采用模块化设计,二者通过内核组件接口实现配合工作,从而实现了模块间的松耦合,使得内核引擎和内核组件均可以自由扩展,进而扩展了区块链系统的场景适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图14是根据本申请实施例的区块链系统的运行装置的示意图;参见图14,本申请实施例公开了一种联盟区块链系统的运行装置1400,该装置1400可以包括:联盟链内核引擎和内核组件初始化模块1410、联盟链内核引擎和内核组件实例化模块1420、联盟链区块链系统主程序和内核引擎启动模块1430和联盟链端口监听服务启动模块1440。
联盟链内核引擎和内核组件初始化模块1410,用于运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定联盟链内核引擎,用于执行适用于联盟区块链业务的内核流程;
联盟链内核引擎和内核组件实例化模块1420,用于获取区块链系统的联盟链运行配置信息,以实例化所述内核引擎和内核组件;
联盟链区块链系统主程序和内核引擎启动模块1430,用于启动运行所述区块链系统主程序和内核引擎;
联盟链端口监听服务启动模块1440,用于启动端口监听服务,以运行区块链系统。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的初始化和运行过程,本申请实施例在区块链系统初始化过程中,通过将内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器,并根据区块链系统的运行配置信息实例化内核引擎和内核组件,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,内核引擎和内核组件采用模块化设计,提高了区块链系统在联盟场景下的适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
可选的,所述区块链系统主程序用于调用所述内核引擎处理区块链数据,以支持联盟区块链业务,所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件。
可选的,所述内核引擎具体用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件。
可选的,每个功能的内核组件包括一个或多个类型的内核组件,注册在对应的组件适配器中,供实例化或运行过程中进行配置。
可选的,联盟链内核引擎和内核组件实例化模块1420,具体用于获取区块链系统的联盟链部署时的运行配置信息,以实例化所述内核引擎和内核组件,并将部署时的运行配置信息添加在区块链的创世区块中;其中,所述部署时的运行配置信息包括下述至少一个:内核组件选型配置信息和组件运行配置信息。
可选的,所述装置还包括:联盟链内核组件变更模块,具体用于启动运行所述区块链系统主程序和内核引擎之后,获取联盟链运行过程中的运行配置信息,根据所述运行配置信息变更组件适配器中的内核组件选型逻辑,并实例化变更后的内核组件。
可选的,所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能;所述内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件、权限组件和加密组件;所述内核引擎基于远程过程调用服务提供应用层调用的应用层接口,包括下述至少一个:合约预执行接口、提交交易接口、查询交易接口、查询区块接口和查询区块链状态接口;所述应用层接口用于接收基于命令行工具发起的调用命令。
可选的,联盟链端口监听服务启动模块1440,具体用于通过内核引擎从端口监听服务获取到应用层接口调用请求时,对调用方和/或调用操作进行鉴权,并在鉴权通过之后,执行所述应用层接口调用请求。
可选的,内核引擎为设定联盟链内核引擎,且:共识组件,包括XPOA类共识组件;合约组件,包括基于WebAssembly实现的XVM虚拟机组件和原生代码类合约组件;网络组件,包括基于GRPC类对等网络组件;账本组件,包括基于UTXO和XuperModel实现的账本组件;权限组件,包括基于ACL合约账户模型的权限组件。
可选的,联盟链端口监听服务启动模块1440,包括:待处理联盟区块链数据处理子模块,具体用于通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件,以执行设定组件功能的处理,完成对所述待处理区块链数据的处理需求。
可选的,待处理联盟区块链数据处理子模块,包括:第一联盟待处理交易获取单元,用于通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据;联盟链账本数据处理单元,用于在所述内核引擎处理所述待处理交易的过程中,调用账本组件,对所述待处理交易中的账本数据进行处理,以形成待确认交易,并写入待确认交易池和本地账本数据中。
可选的,待处理联盟区块链数据处理子模块,包括:第二联盟待处理交易获取单元,用于通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据;待处理交易预执行单元,用于在所述内核引擎处理所述待处理交易的过程中,调用合约组件,以请求至少一个背书节点对所述待处理交易进行预执行,并对预执行结果进行背书签名,并反馈给所述内核引擎;联盟事务请求传输单元,用于通过所述内核引擎,调用网络组件,将背书签名满足设定背书条件验证的预执行结果,组装在事务请求中,向区块链网络传输。
可选的,待处理联盟区块链数据处理子模块,包括:联盟区块接收单元,用于通过所述内核组件中的网络组件,接收区块链网络中传输的待验证区块或待同步区块,作为所述待处理区块链数据,反馈给所述内核引擎;背书签名验证单元,用于通过所述内核引擎,调用加密组件,对待验证区块或待同步区块中预执行结果的背书签名进行验证,并将验证结果反馈给内核引擎;联盟账本数据验证单元,用于通过所述内核引擎,调用账本组件,对待验证区块或待同步区块中的账本数据进行验证,并将验证结果反馈给内核引擎;待验证区块或待同步区块写入单元,用于通过所述内核引擎,在待验证区块或待同步区块验证通过时,调用账本组件,将待验证区块或待同步区块,写入本地账本数据。
本申请实施例所提供的区块链系统的运行装置可执行本申请任意实施例所提供的区块链系统的运行方法,具备执行区块链系统的运行方法相应的功能模块和有益效果。
根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图15示出了可以用来实施本申请的实施例的示例电子设备1500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图15所示,设备1500包括计算单元1501,其可以根据存储在只读存储器(ROM)1502中的计算机程序或者从存储单元1508加载到随机访问存储器(RAM)1503中的计算机程序,来执行各种适当的动作和处理。在RAM 1503中,还可存储设备1500操作所需的各种程序和数据。计算单元1501、ROM 1502以及RAM 1503通过总线1504彼此相连。输入/输出(I/O)接口1505也连接至总线1504。
设备1500中的多个部件连接至I/O接口1505,包括:输入单元1506,例如键盘、鼠标等;输出单元1507,例如各种类型的显示器、扬声器等;存储单元1508,例如磁盘、光盘等;以及通信单元1509,例如网卡、调制解调器、无线通信收发机等。通信单元1509允许设备1500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元1501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元1501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元1501执行上文所描述的各个方法和处理,例如区块链系统的运行方法。例如,在一些实施例中,区块链系统的运行方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1502和/或通信单元1509而被载入和/或安装到设备1500上。当计算机程序加载到RAM1503并由计算单元1501执行时,可以执行上文描述的区块链系统的运行方法的一个或多个步骤。备选地,在其他实施例中,计算单元1501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行区块链系统的运行方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。
Claims (25)
1.一种区块链系统的运行方法,包括:
运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎或设定联盟链内核引擎,用于执行适用于公有区块链业务或联盟区块链业务的内核流程;所述内核引擎具体用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件;
获取区块链系统的公链运行配置信息或联盟链运行配置信息,以实例化所述内核引擎和内核组件;其中,所述公链运行配置信息包括内核组件选型配置信息、组件运行配置信息和激励配置信息中至少一个;所述联盟链运行配置信息包括:内核组件选型配置信息和组件运行配置信息中的至少一个;
启动运行所述区块链系统主程序和内核引擎;
启动端口监听服务,以运行区块链系统。
2.根据权利要求1所述的方法,其中,所述区块链系统主程序用于调用所述内核引擎处理区块链数据,以支持公有区块链业务。
3.根据权利要求1所述的方法,其中,所述区块链系统主程序用于调用所述内核引擎处理区块链数据,以支持联盟区块链业务。
4.根据权利要求1所述的方法,其中,所述端口监听服务是指对所述内核引擎和应用层进行交互的应用层交互端口进行监听的服务。
5.根据权利要求1所述的方法,其中,每个功能的内核组件包括一个或多个类型的内核组件,注册在对应的组件适配器中,供实例化或运行过程中进行配置。
6.根据权利要求5所述的方法,其中,获取区块链系统的公链运行配置信息,以实例化所述内核引擎和内核组件包括:
获取区块链系统的公链部署时的运行配置信息,以实例化所述内核引擎和内核组件,并将部署时的运行配置信息添加在区块链的创世区块中。
7.根据权利要求5所述的方法,其中,获取区块链系统的联盟链运行配置信息,以实例化所述内核引擎和内核组件包括:
获取区块链系统的联盟链部署时的运行配置信息,以实例化所述内核引擎和内核组件,并将部署时的运行配置信息添加在区块链的创世区块中。
8.根据权利要求5所述的方法,其中,启动运行所述区块链系统主程序和内核引擎之后,还包括:
获取公链运行过程中的运行配置信息,根据所述运行配置信息变更组件适配器中的内核组件选型逻辑,并实例化变更后的内核组件。
9.根据权利要求5所述的方法,其中,启动运行所述区块链系统主程序和内核引擎之后,还包括:
获取联盟链运行过程中的运行配置信息,根据所述运行配置信息变更组件适配器中的内核组件选型逻辑,并实例化变更后的内核组件。
10.根据权利要求1所述的方法,其中,所述内核引擎为设定公链内核引擎:
所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能;
所述内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件、权限组件和加密组件;
所述内核引擎基于远程过程调用服务提供应用层调用的应用层接口,包括下述至少一个:提交交易接口、查询交易接口、查询区块接口、查询区块链状态接口和选择UTXO接口;所述应用层接口用于接收基于命令行工具发起的调用命令。
11.根据权利要求1所述的方法,其中,所述内核引擎为设定联盟链内核引擎:
所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能;
所述内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件、权限组件和加密组件;
所述内核引擎基于远程过程调用服务提供应用层调用的应用层接口,包括下述至少一个:合约预执行接口、提交交易接口、查询交易接口、查询区块接口和查询区块链状态接口;所述应用层接口用于接收基于命令行工具发起的调用命令。
12.根据权利要求11所述的方法,其中,启动端口监听服务,以运行区块链系统包括:
通过内核引擎从端口监听服务获取到应用层接口调用请求时,对调用方和/或调用操作进行鉴权,并在鉴权通过之后,执行所述应用层接口调用请求。
13.根据权利要求10所述的方法,其中:
共识组件,包括POW类共识组件和XPOS类共识组件;
合约组件,包括基于WebAssembly实现的XVM虚拟机组件和兼容以太坊生态的EVM虚拟机组件;
网络组件,包括基于libp2p类网络组件;
账本组件,包括基于UTXO和XuperModel实现的账本组件;
权限组件,包括基于ACL合约账户模型的权限组件。
14.根据权利要求11所述的方法,其中:
共识组件,包括XPOA类共识组件;
合约组件,包括基于WebAssembly实现的XVM虚拟机组件和原生代码类合约组件;
网络组件,包括基于GRPC类对等网络组件;
账本组件,包括基于UTXO和XuperModel实现的账本组件;
权限组件,包括基于ACL合约账户模型的权限组件。
15.根据权利要求10所述的方法,其中,启动端口监听服务,以运行区块链系统包括:
通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件,以执行设定组件功能的处理,完成对所述待处理区块链数据的处理需求。
16.根据权利要求15所述的方法,其中,通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件包括:
通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据;
在所述内核引擎处理所述待处理交易的过程中,调用账本组件,对所述待处理交易中的账本数据进行处理,以形成待确认交易,并写入待确认交易池;
在所述内核引擎处理所述待处理交易的过程中,调用共识组件确认待确认交易所属区块被确认时,调用账本组件,将所述待确认交易池中的待确认交易更新到本地账本数据中。
17.根据权利要求15所述的方法,其中,通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件包括:
通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据;
在所述内核引擎处理所述待处理交易的过程中,调用合约组件,对所述待处理交易进行处理,以形成待确认交易,并写入待确认交易池;
在所述内核引擎处理所述待处理交易的过程中,调用共识组件确认本机节点为矿工时,调用合约组件,将所述待确认交易池中的待确认交易进行校验,校验通过后打包至当前区块中。
18.根据权利要求15所述的方法,其中,通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件包括:
通过所述内核组件中的网络组件,接收区块链网络中传输的待验证区块或待同步区块,作为所述待处理区块链数据,反馈给所述内核引擎;
通过所述内核引擎,调用合约组件和/或账本组件对待验证区块或待同步区块进行验证,并将验证结果反馈给内核引擎;
通过所述内核引擎,在待验证区块或待同步区块验证通过时,调用账本组件,将待验证区块或待同步区块,写入本地账本数据。
19.根据权利要求11所述的方法,其中,启动端口监听服务,以运行区块链系统包括:
通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件,以执行设定组件功能的处理,完成对所述待处理区块链数据的处理需求。
20.根据权利要求19所述的方法,其中,通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件包括:
通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据;
在所述内核引擎处理所述待处理交易的过程中,调用账本组件,对所述待处理交易中的账本数据进行处理,以形成待确认交易,并写入待确认交易池和本地账本数据中。
21.根据权利要求19所述的方法,其中,通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件包括:
通过区块链系统的内核引擎,从应用层接口获取发起的待处理交易,作为所述待处理区块链数据;
在所述内核引擎处理所述待处理交易的过程中,调用合约组件,以请求至少一个背书节点对所述待处理交易进行预执行,并对预执行结果进行背书签名,并反馈给所述内核引擎;
通过所述内核引擎,调用网络组件,将背书签名满足设定背书条件验证的预执行结果,组装在事务请求中,向区块链网络传输。
22.根据权利要求19所述的方法,其中,通过区块链系统的内核引擎,获取待处理区块链数据,并对所述待处理区块链数据进行处理,并在处理过程中调用至少一个内核组件包括:
通过所述内核组件中的网络组件,接收区块链网络中传输的待验证区块或待同步区块,作为所述待处理区块链数据,反馈给所述内核引擎;
通过所述内核引擎,调用加密组件,对待验证区块或待同步区块中预执行结果的背书签名进行验证,并将验证结果反馈给内核引擎;
通过所述内核引擎,调用账本组件,对待验证区块或待同步区块中的账本数据进行验证,并将验证结果反馈给内核引擎;
通过所述内核引擎,在待验证区块或待同步区块验证通过时,调用账本组件,将待验证区块或待同步区块,写入本地账本数据。
23.一种区块链系统的运行装置,包括:
内核引擎和内核组件初始化模块,用于运行区块链系统主程序,以初始化内核引擎和内核组件,其中,所述内核引擎为设定公链内核引擎或设定联盟链内核引擎,用于执行适用于公有区块链业务或联盟区块链业务的内核流程;所述内核引擎具体用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件;
运行配置信息获取模块,获取区块链系统的公链运行配置信息或联盟链运行配置信息,以实例化所述内核引擎和内核组件;其中,所述公链运行配置信息包括内核组件选型配置信息、组件运行配置信息和激励配置信息中至少一个;所述联盟链运行配置信息包括:内核组件选型配置信息和组件运行配置信息中的至少一个;
区块链系统主程序和内核引擎启动模块,启动运行所述区块链系统主程序和内核引擎;
端口监听服务启动模块,启动端口监听服务,以运行区块链系统。
24.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-22中任一项所述的方法。
25.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-22中任一项所述的区块链系统的运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110652671.6A CN113110899B (zh) | 2021-06-11 | 2021-06-11 | 区块链系统的运行方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110652671.6A CN113110899B (zh) | 2021-06-11 | 2021-06-11 | 区块链系统的运行方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113110899A CN113110899A (zh) | 2021-07-13 |
CN113110899B true CN113110899B (zh) | 2021-10-12 |
Family
ID=76723440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110652671.6A Active CN113110899B (zh) | 2021-06-11 | 2021-06-11 | 区块链系统的运行方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113110899B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115190162B (zh) * | 2022-06-27 | 2023-11-28 | 杭州溪塔科技有限公司 | 区块链中的代理服务配置方法及代理服务系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109472605A (zh) * | 2018-12-12 | 2019-03-15 | 成都航天科工大数据研究院有限公司 | 一种基于区块链的企业数字资产化管理方法及系统 |
CN109492351A (zh) * | 2018-11-23 | 2019-03-19 | 北京奇眸科技有限公司 | 基于区块链的版权保护方法、装置及可读存储介质 |
CN110516007A (zh) * | 2019-08-30 | 2019-11-29 | 北京百度网讯科技有限公司 | 一种区块链网络的部署控制方法、装置、设备和介质 |
CN112104685A (zh) * | 2020-03-18 | 2020-12-18 | 上海魔橙网络科技有限公司 | 一种基于区块链的联盟链底层系统 |
CN112256388A (zh) * | 2020-10-15 | 2021-01-22 | 深圳壹账通智能科技有限公司 | 基于容器的区块链网络部署方法、装置、设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052530B (zh) * | 2017-11-10 | 2020-12-11 | 杭州云象网络技术有限公司 | 一种基于联盟链的去中心化ca构建方法及其系统 |
CA3088416C (en) * | 2018-01-31 | 2024-03-19 | Cable Television Laboratories, Inc. | Systems and methods for privacy management using a digital ledger |
US10542046B2 (en) * | 2018-06-07 | 2020-01-21 | Unifyvault LLC | Systems and methods for blockchain security data intelligence |
US11194919B2 (en) * | 2019-05-17 | 2021-12-07 | International Business Machines Corporation | Cognitive system for managing consent to user data |
-
2021
- 2021-06-11 CN CN202110652671.6A patent/CN113110899B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109492351A (zh) * | 2018-11-23 | 2019-03-19 | 北京奇眸科技有限公司 | 基于区块链的版权保护方法、装置及可读存储介质 |
CN109472605A (zh) * | 2018-12-12 | 2019-03-15 | 成都航天科工大数据研究院有限公司 | 一种基于区块链的企业数字资产化管理方法及系统 |
CN110516007A (zh) * | 2019-08-30 | 2019-11-29 | 北京百度网讯科技有限公司 | 一种区块链网络的部署控制方法、装置、设备和介质 |
CN112104685A (zh) * | 2020-03-18 | 2020-12-18 | 上海魔橙网络科技有限公司 | 一种基于区块链的联盟链底层系统 |
CN112256388A (zh) * | 2020-10-15 | 2021-01-22 | 深圳壹账通智能科技有限公司 | 基于容器的区块链网络部署方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113110899A (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110519281B (zh) | 一种区块链网络的运行实现方法、装置、设备和介质 | |
JP2024505692A (ja) | ブロックチェーンネットワークに基づくデータ処理方法、装置及びコンピュータ機器 | |
CN113098982B (zh) | 区块链消息的传输方法及装置 | |
US20220045849A1 (en) | Group service implementation method and device, equipment and storage medium | |
CN113110899B (zh) | 区块链系统的运行方法、装置、设备和存储介质 | |
CN113254169B (zh) | 区块链系统的运行方法、装置、设备和存储介质 | |
US11947640B2 (en) | Adaptive, multi-channel, embedded application programming interface (API) | |
CN112231414B (zh) | 区块链系统的数据同步方法、装置、可读介质及电子设备 | |
CN113110883B (zh) | 区块链系统的启动方法、装置、设备和存储介质 | |
CN107480302A (zh) | 一种基于企业级应用场景的松耦合数据集成同步实现方法 | |
WO2023185042A1 (zh) | 直连通道的建立方法及装置 | |
WO2022252993A1 (zh) | 基于链外计算服务的业务执行方法 | |
CN113110920B (zh) | 区块链系统的运行方法、装置、设备和存储介质 | |
CN113420275B (zh) | 数据连接处理方法、相关装置及计算机程序产品 | |
CN112804087B (zh) | 联盟网络的运行实现方法、装置、设备及存储介质 | |
CN112231415B (zh) | 区块链网络的数据同步方法、系统、电子设备及可读介质 | |
CN115222392A (zh) | 基于区块链的业务访问方法、装置、介质及电子设备 | |
CN113254168B (zh) | 区块链系统的运行方法、装置、设备和存储介质 | |
CN114238262A (zh) | 镜像分发方法、镜像分发装置、电子设备以及存储介质 | |
CN112926981A (zh) | 用于区块链的交易信息处理方法、装置、介质及电子设备 | |
CN113253995B (zh) | 区块链系统的开发方法、装置、设备和存储介质 | |
CN113110921B (zh) | 区块链系统的运行方法、装置、设备和存储介质 | |
CN111249745B (zh) | 游戏部署方法、游戏运营方法、设备和存储介质 | |
CN113259378A (zh) | 区块链系统的运行方法、装置、设备和存储介质 | |
US20230421558A1 (en) | Method and system for proxy-driven authentication and authorization for software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |