CN113110883B - 区块链系统的启动方法、装置、设备和存储介质 - Google Patents

区块链系统的启动方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN113110883B
CN113110883B CN202110652665.0A CN202110652665A CN113110883B CN 113110883 B CN113110883 B CN 113110883B CN 202110652665 A CN202110652665 A CN 202110652665A CN 113110883 B CN113110883 B CN 113110883B
Authority
CN
China
Prior art keywords
kernel
component
engine
blockchain
block chain
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
Application number
CN202110652665.0A
Other languages
English (en)
Other versions
CN113110883A (zh
Inventor
万春辉
魏志民
金彤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202110652665.0A priority Critical patent/CN113110883B/zh
Publication of CN113110883A publication Critical patent/CN113110883A/zh
Application granted granted Critical
Publication of CN113110883B publication Critical patent/CN113110883B/zh
Priority to EP22174315.6A priority patent/EP4102360A1/en
Priority to US17/750,699 priority patent/US11558207B2/en
Priority to JP2022083552A priority patent/JP7217376B2/ja
Priority to KR1020220063958A priority patent/KR102501542B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了区块链系统的启动方法、装置、设备和存储介质,涉及计算机技术领域,尤其涉及区块链技术,可用于云计算和云领域。该方案为:运行区块链系统主程序,以初始化内核引擎和内核组件;通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件;启动运行区块链系统主程序和内核引擎;启动端口监听服务,以运行区块链系统。执行本方案可以降低区块链技术的研发成本。

Description

区块链系统的启动方法、装置、设备和存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及区块链技术。
背景技术
区块链行业在持续的快速发展,区块链技术发展初期主要的应用场景还是以数字货币和游戏为主。目前,区块链技术开始从支撑数字货币的底层技术,进入了全面探索赋能产业的新阶段。
目前主流的区块链实现方案,基本上都有明确的适用场景定位,由于传统方案大多都是面向数字货币类的应用场景,更加适合数字货币类的应用,在实际业务场景落地中会遇到适用性的问题,需要深入框架做改造,改造成本和技术门槛都非常高。
然而,深入框架进行改造的模式,使得改造难度大、成本高,改造后还无法自动跟进对应框架最新的更新。
发明内容
本公开提供了一种区块链系统的启动方法、装置、设备和存储介质,以提高区块链针对于不同场景的适用性,降低开发难度和成本。
根据本申请的一方面,提供了一种区块链系统的启动方法,所述方法包括:
运行区块链系统主程序,以初始化内核引擎和内核组件;
通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件;
启动运行所述区块链系统主程序和内核引擎;
启动端口监听服务,以运行区块链系统。
根据本申请的另一方面,提供了一种区块链系统的启动装置,所述装置包括:
内核引擎和内核组件初始化模块,用于运行区块链系统主程序,以初始化内核引擎和内核组件;
内核引擎和内核组件实例化模块,用于通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件;
区块链系统主程序和内核引擎启动模块,用于启动运行所述区块链系统主程序和内核引擎;
端口监听服务启动模块,用于启动端口监听服务,以运行区块链系统。
根据本申请的另一方面,提供一种电子设备,该电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本申请实施例任一项所述的区块链系统的启动方法。
根据本申请的一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行如本申请实施例任一项所述的区块链系统的启动方法。
根据本申请的一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如本申请实施例任一项所述的区块链系统的启动方法。
本申请实施例的技术方案,能够提高区块链实现方案的可扩展性和适用性,能够通过对区块链系统进行无代码侵入的改造,切换区块链系统应用的业务场景,从而降低区块链技术的研发成本。
应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是根据本申请实施例的一种区块链系统的启动方法的示意图;
图2是根据本申请实施例的又一种区块链系统的启动方法的示意图;
图3是根据本申请实施例的又一种区块链系统的启动方法的示意图;
图4是根据本申请实施例的又一种区块链系统的启动方法的示意图;
图5是根据本申请实施例的又一种区块链系统的启动方法的示意图;
图6A是根据本申请实施例的又一种区块链系统的启动方法的示意图;
图6B为本申请实施例提供的又一种区块链系统的启动方法的示意图
图7是根据本申请实施例的一种区块链系统的启动装置的示意图;
图8是用来实现本申请实施例的区块链系统的启动方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本申请实施例所提供的区块链系统的运行方法,是在发明人构造的区块链内核架构的基础上提出的。
区块链系统整体上可以分为两个部分,分别为区块链内核架构和区块链应用层。其中,区块链应用层是供用户基于区块链系统实现具体业务需求的,区块链应用层向用户屏蔽了复杂的区块链底层技术,在用户了解区块链基本原理的情况下即可搭建区块链完成业务需求。可以由区块链系统主程序来实现区块链应用层的服务端功能。区块链应用层还可以包括客户端(client)和应用程序接口(API),从而提供用户交互界面或交互机制,实现与用户的交互。在一个区块链系统中可以支撑一个或多个区块链应用层的业务功能。应用层的客户端或API可通过专有组件与区块链内核架构进行交互,专有组件例如是对设定交互端口的监听服务。
本申请更为关注区块链的内核架构,内核架构至少包括:内核引擎层和内核组件层,还可以进一步包括基础组件层。其中,内核引擎层,定义了区块链内核核心流程,即区块链运行过程中的各种业务逻辑的核心流程,例如,交易处理流程、矿工出块流程、和同步区块流程等。本申请实施例中,所谓交易,是由区块链用户发起,需要由区块链节点基于区块链系统进行处理,并将处理过程上链存储的事务请求,并不限于交易业务,可以是任何区块链所需承载的应用业务或区块链管理事务请求。所谓矿工,即当前出块周期内有权限进行出块的区块链节点,并不限于基于工作量证明共识机制(POW)来确定的出块节点,基于其他共识机制确定的出块节点,也可称为矿工。并且,内核引擎采用了读写分离的设计来降低复杂度,可以采用独立读组件的方式来实现读操作,实现了读操作可单独扩展。内核引擎层中的内核引擎是可以由用户根据场景需要,进行无框架代码侵入的扩展定制,或者轻量级的代码调整定制。即,开发人员可以基于内核组件的功能来开发内核引擎,无需再单独开发内核组件。基于内核架构为用户提供了配置多种类内核引擎层的可能性,具体的可配置开发:超级公链引擎(xuperos engine)、超级联盟链引擎(xchain engine)和用户自主实现的内核引擎(other engine)等。
内核组件层,是对内核组件编程规范的具体实现,内置非常完备的标准内核组件的实现,包括账本组件、共识组件、合约组件、网络组件、加密组件和权限组件等可供内核引擎的开发者选用,同时开发者也可以低成本的按照内核组件编程规范开发适合自己场景的内核组件,并将自主实现的内核组件无缝接入到各种内核引擎中。其中,内核组件编程规范是用以抽象内核组件的规范。根据内核组件编程规范实现内核组件,可以为内核引擎调用内核组件提供标准内核组件功能接口,使得内核引擎可以通过内核引擎层内的组件适配器(如consensus、contract、ledge、network或者permission)确定的内核组件接口,基于内核组件接口实现对内核组件的调用,再通过内核组件完成对待处理区块链数据的处理工作。内核组件接口也可称为内核功能接口,是内核组件提供给内核引擎调用的、功能层级的接口。无论哪种内核组件,无论内部如何实现组件功能,都可以提供规范化、统一的内核组件接口,以方便内核引擎调用。
基础组件层内设置有与区块链业务无关的基础公共组件,例如包括:基础存储、p2p网络库、密码学库、编解码库和日志库等。
本申请提供的区块链内核架构是一种全新的高可扩展、广域场景适用的区块链通用内核框架,本架构的高度模块化的设计,保证了模块间松耦合,使得各模块都可以自由的扩展替换。基于本架构,用户可以根据具体场景的需要和喜好,非常轻量级的开发具体的区块链系统,本架构将区块链系统开发的难度降维到只是根据场景需要扩展部分子领域功能,极大的降低区块链技术的研发成本。
图1是根据本申请实施例的一种区块链系统的启动方法的示意图。本实施例可适用于区块链系统的程序开发完成以后,通过启动运行区块链系统程序来进行初始化和运行的情况,可以是在测试过程中启动,也可以将区块链系统程序部署到实际区块链节点时的启动过程。本实施例公开的区块链系统的启动方法可以由区块链系统的启动装置来执行,该装置可以由软件和/或硬件的方式实现,配置于具备计算和存储功能的电子设备中,例如配置于区块链节点中。
参见图1,本实施例提供的区块链系统的启动方法包括:
S110、运行区块链系统主程序,以初始化内核引擎和内核组件。
其中,所述区块链系统主程序中包括内核引擎的初始化方法、启动接口和退出接口,所述区块链系统主程序中还包括至少一个内核组件的初始化方法,所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件。
其中,区块链系统主程序是用于执行区块链系统中的应用层业务功能的代码,主程序与具体业务需求相关联。示例性的,业务需求可以是交易提交需求或者电子存证需求等各种业务需求。可选的,区块链系统主程序可以是基于预先配置在区块链开发软件中的主程序代码模板产生的,或者由开发人员基于内核框架自主完成定制开发的。主程序代码模板是指用于生成主程序的代码模板,主程序代码模板是由相关技术人员预先配置在内核框架代码包中的常用代码模板。主程序代码模板的数量为至少一个,通常情况下,主程序模板的数量为多个,为了满足用户多种业务需求,主程序模板可涵盖多种常见业务场景。
具体的,在程序开发阶段,区块链开发人员通过区块链开发软件的交互界面,输入的区块链开发参数,区块链开发软件根据所述区块链开发参数以及主程序代码模板,自动产生区块链系统主程序。当然,可以知道的是,区块链系统主程序的生成方式,并不限于此,在这里不对区块链系统主程序的生成方式进行限定,具体依据实际情况确定。
区块链系统主程序中包括内核引擎的初始化方法、启动接口和退出接口,所述区块链系统主程序中还包括至少一个内核组件的初始化方法。
其中,内核引擎的初始化方法是指用于初始化内核引擎的方法程序入口,内核组件的初始化方法是用于初始化内核组件的方法程序入口。内核引擎的启动接口和内核引擎的退出接口,是区块链系统主程序向应用层提供的用于控制内核引擎的接口,具体的应用层可以在启动区块链系统时,通过内核引擎启动接口执行内核引擎启动方法以启动内核引擎,在区块链系统异常的情况下通过内核引擎的退出接口执行内核引擎退出方法以退出内核引擎。当然,内核框架提供给主程序的、能够控制内核引擎的接口不限于此,还可以包括其他控制功能接口。
运行区块链系统主程序中的内核引擎初始化方法和内核组件初始方法对内核引擎和内核组件进行初始化。其中,对内核引擎和对内核组件进行初始化包括对内核引擎和对内核组件的注册过程,和对内核引擎和对内核组件的实例化过程。
首先,分别注册内核引擎和内核组件。具体的,将内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器。本申请实施例采用了工厂模式对内核引擎和内核组件进行管理,这是因为在不同的业务应用场景下对内核引擎和内核组件有不同的要求,在运行区块链系统主程序时,将用户所需内核引擎的创建程序注册到内核引擎工厂和对应的组件适配器中,可以使得用户可以按需对内核引擎和内核组件进行技术选型。
在内核引擎工厂中注册的内核引擎的数量可以是一个也可是多个,可以向内核引擎工厂中注册多个内核引擎,以便于用户按需选择对应的内核引擎。
内核组件是具备特定数据处理功能的方法的封装,按照内核组件可实现功能进行划分,内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件和权限组件。其中,共识组件负责区块链网络中多节点去中心化的共识达成,用于在区块链节点之间执行共识机制;网络组件用于执行区块链网络中的数据传输功能;账本组件用于基于区块链账本规则对账本数据进行处理;合约组件用于执行智能合约对事务请求进行处理;权限组件用于对智能合约的调用权限进行控制。
可选的,在本申请实施例的区块链系统中的内核组件可存在对应的组件适配器,示例性的,组件适配器可以包括:与共识组件对应的共识组件适配器(consensus)、与合约组件对应的合约组件适配器(contract)、与网络组件对应的网络组件适配器(network)和权限组件对应的权限组件适配器(permission)等组件适配器。部分组件也可以根据情况不设置组件适配器。例如,账本组件可选的是与内核引擎采用相同存储格式的区块链账本数据,则账本组件提供给内核引擎的组件接口是对区块链账本数据的抽象接口。
将内核组件注册到对应组件适配器,具体的,将至少一个共识组件注册到共识组件适配器,将至少一个合约组件注册到合约组件适配器,将至少一个网络组件注册到网络组件适配器,将至少一个权限组件对应的权限组件适配器。
S120、通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件。
其中,程序配置文件可以由开发人员通过区块链开发软件来输入,其中包括区块链系统的运行配置信息,区块链系统的运行配置信息用于实例化内核引擎和内核组件的信息。可选的,区块链系统的运行配置信息可以包括内核引擎的配置信息和内核组件的配置信息。
示例性的,内核引擎的配置信息可以包括:内核引擎的选型信息、区块广播方式、缓存有效期和同步区块队列大小。其中,区块的广播方式限定的是区块链系统的节点,向区块链系统中除本机节点以外的其他区块节点传输区块链数据的方式;缓存有效期限定了区块链节点的本地缓存数据的保留期限;同步区块队列大小限定了一次性可以进行区块同步的区块数量。内核组件的配置信息可以包括内核组件的选型信息。
利用区块链系统的运行配置信息实例化内核引擎和内核组件,具体的,根据区块链系统的运行配置信息向内核引擎和内核组件对应的基本参数进行赋值。
S130、启动运行所述区块链系统主程序和内核引擎。
启动运行区块链系统主程序,通过区块链系统对待处理区块链数据进行处理,执行区块链系统中的应用层业务功能,完成应用层业务需求。具体的,启动运行区块链系统主程序和内核引擎,通过区块链系统主程序调用内核引擎,通过内核引擎对待处理区块链数据进行处理。
内核引擎为区块链内核核心流程,用于执行区块链核心操作,内核引擎具备对各个内核组件的调用能力。内核引擎对待处理区块链数据进行处理的过程,实际为内核引擎根据待处理区块链数据的处理流程调用内核组件,由内核引擎和内核组件相互配合对待处理区块链数据进行的处理的过程。其中,待处理区块链数据包括待处理区块链事务请求、待验证区块、待同步区块和区块链系统维护数据中的至少一种。
可选的,启动内核引擎的同时启动内核组件,预先为内核组件分配组件所需资源,供内核组件被调用时使用,从而缩短区块链系统响应时延。
S140、启动端口监听服务,以运行区块链系统。
其中,端口监听服务是指对内核引擎和应用层进行交互的应用层交互端口进行监听的服务。应用层交互端口是指应用层与内核引擎进行交互的端口,应用层交互端口的数量为至少一个,一般为多个。应用层客户端通过应用层交互端口向内核引擎传输待处理请求,例如请求处理区块链数据,示例性的,端口监听服务为RPC服务(Remote ProcedureCall ,远程过程调用)。在端口监听服务监听到应用层交互端口存在待处理区块链数据的情况下,对触发内核引擎对待处理区块链数据的处理器流程。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的启动过程,本申请实施例在区块链系统启动过程中,通过将内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器,并根据区块链系统的运行配置信息实例化内核引擎和内核组件,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,实现了内核引擎和内核组件的模块化设计,扩展了区块链系统的场景适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图2是根据本申请实施例的另一种区块链系统的启动方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。具体的,是对内核引擎的初始化过程进行了细化。
参见图2,本实施例提供的区块链系统的启动方法包括:
S210、运行区块链系统主程序中的内核引擎初始化方法。
在产生区块链系统主程序以后,运行内核引擎初始化方法对内核引擎进行初始化。具体的,通过运行内核引擎初始化方法完成将内核引擎注册到引擎工厂的过程。
内核引擎初始化方法是指用于初始化内核引擎的方法,具体的,运行内核引擎初始化方法会执行将内核引擎代码包导入主程序文件的操作。
运行内核引擎初始化方法对内核引擎进行初始化,具体的,通过内核引擎代码包中的包初始化方法调用引擎工厂的注册函数,在向主程序文件中导入内核引擎代码包时自动执行内核引擎包的包初始化方法,将内核引擎注册到引擎工厂中。
S220、在所述内核引擎初始化方法的运行过程中,调用内核框架中引擎工厂的引擎注册接口,输入区块链引擎标识和内核引擎的实例化函数指针,通过所述引擎工厂,对应记录所述区块链引擎标识和所述内核引擎的实例化函数指针。
其中,引擎注册接口是用于向引擎工厂注册内核引擎的接口,内核引擎初始化方法运行的过程中,也就是对内核引擎进行初始化的过程。具体的。通过主程序调用引擎注册接口,基于引擎注册接口向引擎工厂输入区块链引擎标识和内核引擎的实例化函数指针。其中,区块链引擎标识是指需要注册到引擎工厂的内核引擎的标识信息,示例性的,区块链引擎标识可以是内核引擎的名字或者唯一性编号。内核引擎的实例化函数指针指向的是内核引擎代码的存储地址,根据内核引擎的实例化函数指针可以寻址到对应内核引擎代码的存储位置。
引擎工厂在通过引擎注册接口获取到区块链引擎标识和内核引擎的实例化函数指针以后,会将区块链引擎标识和内核引擎的实例化函数指针记录下来以完成内核引擎的注册流程。可选的,引擎工厂会根据记录的区块链引擎标识和内核引擎的实例化函数指针,形成内核引擎注册清单,以便后续进行内核引擎的实例化和控制。
S230、通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件。
在内核引擎在引擎工厂中注册完成以后,还需要将内核组件注册到对应的组件适配器中,在内核引擎和内核组件均注册完成以后,通过程序配置文件,获取区块链系统的运行配置信息,并根据获取到的区块链系统的运行配置信息实例化内核引擎和内核组件。
S240、启动运行所述区块链系统主程序和内核引擎。
S250、启动端口监听服务,以运行区块链系统。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的启动过程,本申请实施例在区块链系统启动过程中,通过调用内核框架中引擎工厂的引擎注册接口,输入区块链引擎标识和内核引擎的实例化函数指针,通过所述引擎工厂,对应记录所述区块链引擎标识和所述内核引擎的实例化函数指针,实现了将内核引擎注册到引擎工厂。再根据区块链系统的运行配置信息,实例化内核引擎和内核组件,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,实现了内核引擎和内核组件的模块化设计,扩展了区块链系统的场景适用性,将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图3是根据本申请实施例的另一种区块链系统的启动方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。具体的,是对内核组件的初始化过程进行了细化。
参见图3,本实施例提供的区块链系统的启动方法包括:
S310、运行区块链系统主程序中的内核组件初始化方法。
内核组件初始化方法是指用于初始化内核组件的方法,具体的,运行内核组件初始化方法会执行将内核组件代码包导入主程序文件的操作。
运行内核组件初始化方法对内核组件进行初始化,具体的,通过内核组件代码包中的包初始化方法调用对应适配器的注册函数,在向主程序文件中导入内核组件代码包时自动执行内核组件包的包初始化方法,将内核组件注册到对应的组件适配器中。
S320、在所述内核组件初始化方法的运行过程中,调用内核框架中适配器注册接口,以将所述内核组件的组件驱动注册到组件适配器中。
其中,适配器注册接口是用于向组件适配器中注册内核组件的接口,内核组件初始化方法运行的过程中,主程序调用适配器注册接口,基于适配器注册接口向对应的组件适配器中注册全部的内核指令接口。可选的,组件指令接口是适配器约定的,由组件驱动去实现。在内核组件的注册过程中,是将组件驱动注册到组件适配器,相当于注册了内核组件的具体实现逻辑。注册后,适配器通过组件指令接口可调用这些处理逻辑完成组件功能处理。
可选的,组件适配器会根据记录的内核指令接口,形成内核指令接口注册清单,以便组件适配器根据处理逻辑,在内核组件接口被调用时,确定对应的内核指令接口。
S330、通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件。
可以知道的是,内核组件注册到对应的组件适配器的过程,是在内核引擎在引擎工厂中注册完成以后进行的。在内核引擎和内核组件均注册完成以后,通过程序配置文件,获取区块链系统的运行配置信息,并根据获取到的区块链系统的运行配置信息实例化内核引擎和内核组件。
S340、启动运行所述区块链系统主程序和内核引擎。
S350、启动端口监听服务,以运行区块链系统。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的启动过程,本申请实施例在区块链系统启动过程中,通过调用内核框架中适配器注册接口,将内核组件的组件驱动注册到组件适配器中,实现了将内核指令接口注册到组件适配器。再根据区块链系统的运行配置信息,实例化内核引擎和内核组件,使得在内核组件接口被调用的时,组件适配器能够在根据在其中注册的处理逻辑,在已注册的内核指令接口中确定与内核组件接口对应的内核指令接口,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,实现了内核引擎和内核组件的模块化设计,扩展了区块链系统的场景适用性,将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图4是根据本申请实施例的另一种区块链系统的启动方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。具体的,是对通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件的细化。
参见图4,本实施例提供的区块链系统的启动方法包括:
S410、运行区块链系统主程序,以初始化内核引擎和内核组件。
S420、通过所述区块链系统主程序,调用引擎工厂的引擎创建接口,并输入所述区块链引擎标识和区块链系统的运行配置信息。
其中,引擎创建接口是由引擎工厂提供给区块链系统主程序的,用于创建内核引擎的接口。通过引擎创建接口可以将区块链引擎标识和区块链系统的运行配置信息可以输入到引擎工厂。其中,区块链引擎标识用于在已注册到引擎工厂中的内核引擎中索引需要实例化的内核引擎。根据区块链系统的运行配置信息对区块链引擎标识对应的内核引擎进行实例化处理。
S430、通过所述引擎工厂,根据所述区块链引擎标识确定对应的实例化函数指针。
引擎工厂中记录有区块链引擎标识和内核引擎的实例化函数指针,在已知区块链引擎标识的情况下,可以在引擎工厂中确定与区块链引擎标识对应的内核引擎的实例化函数指针,进而根据内核引擎的实例化函数指针确定到需要实例化的内核引擎。
S440、通过所述引擎工厂,根据所述实例化函数指针获取内核引擎代码,并根据所述运行配置信息中的环境配置信息,对内核引擎代码进行内核引擎的实例化。
实例化函数指针指向的是对应内核引擎代码存放的地址,根据实例化函数指针可以获取内核引擎的代码。在获取到内核引擎代码以后,根据运行配置信息中的环境配置信息,对内核引擎代码进行内核引擎的实例化,具体的,根据环境配置信息对内核引擎代码中的参数进行赋值。
其中,环境配置信息用于实例化内核引擎的信息,在一个可选的实施例中,所述环境配置信息包括下述至少一项:根链的链名、配置文件目录、数据存储目录、日志文件目录、证书文件目录、节点地址文件目录、引擎配置文件名、日志配置文件名、服务配置文件名、区块链账本存储目录、网络配置文件名和账本配置文件名。可以知道的是,环境配置信息并不限于上面提及的信息,还包括其他可能的环境信息,在这不作限定,具体依据实际情况确定。
内核组件的实例化是在内核引擎的实例化过程中完成的,也就是在实例化内核引擎的过程中,会同时实例化内核组件。在上述环境配置信息中区块链账本存储目录、网络配置文件名和账本配置文件名,是用于实例化内核组件的信息。内核引擎会将环境配置信息中用于实例化内核组件的环境配置信息传递给对应内核组件,如账本配置能文件名是用于配置账本组件的,用于确定账本组件需要处理的区块链节点的账本数据;根据网络配置文件名确定网络配置文件,根据网络配置文件中监听应用层服务配置信息启动并实例化监听服务,确定需要监听的对内核引擎和应用层交互的应用层交互端口,对该应用层交互端口进行监听。
S450、根据所述运行配置信息中的组件配置信息,对所述内核组件进行实例化。
组件配置信息是用于实例化组件配置信息。在本申请实施例中。在功能上可将内核组件分为合约组件、网络组件和共识组件基础上。结合内核组件适用场景和内核组件自身特点,每种内核组件的集合中还可以进一步包括多个不同子类型的内核组件。可选的,组件配置信息包括内核组件的选型信息,根据内核组件的选型信息在内核组件中确定对应内核组件,并实例化对应组件。其中,选型信息是用户根据实际业务需求确定的。
可选的,不同内核组件功能不同,对应的组件配置信息存在差异,在一个可选的实施例中,共识组件的组件配置信息包括:共识组件类型、和共识算法配置信息;其中,共识组件类型是指共识算法的选型信息,示例性的,共识组件包括:single组件、xpos组件、xpoa组件和pow组件。共识算法配置信息是指针对于特定共识算法的组件配置信息,示例性的,针对于pow共识,共识算法配置信息包括挖矿难度配置;针对于pos共识,共识算法配置信息包括:出块周期和初始候选人。
账本组件的组件配置信息包括:存储引擎和数据存储方式;其中,存储引擎是指用于存储账本数据的内核引擎,数据存储方式是指账本数据的存储方式,示例性的,数据存储方式包括单盘存储和多盘存储。
合约组件的组件配置信息包括:合约虚拟机配置信息、和合约升级开关;其中,合约虚拟机配置信息是指用于配置合约虚拟机的信息。智能合约通常需要创建虚拟机,并在虚拟机中运行智能合约来对事务请求进行处理;合约升级开关是指用于控制是否允许智能合约升级的信息。
网络组件的组件配置信息包括:网络组件名称、节点地址、节点密钥地址、和种子节点地址。其中,网络组件名称是指网络组件的选型信息
在一个可选的实施例中,根据所述运行配置信息中的组件配置信息,对所述内核组件进行实例化之前,还包括:根据所述运行配置信息中的区块链数据存储地址,加载所述区块链系统所基于的区块链数据。
其中,区块链数据存储地址是指存储有区块链数据的地址,区块链数据是指区块链系统在完成待处理区块链数据的处理需求的过程中涉及到的数据。示例性的,在待处理区块链数据为提交交易请求,区块链系统对提交交易的处理过程包括对对待提交交易进行验证。如在节点A的账户向节点B的账户汇款设定金额,对待校验账本数据进行账本校验的情况下,区块链数据存储地址则为节点A和节点B的账本数据的存储地址。
根据运行配置信息中的区块链数据存储地址,从区块链数据存储地址中将区块链系统在待处理区块链数据进行处理过程中所需的区块链数据,加载到区块链系统中,以支持区块链系统对待处理区块链数据的处理操作。
S460、启动运行所述区块链系统主程序和内核引擎。
S470、启动端口监听服务,以运行区块链系统。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的启动过程,本申请实施例在区块链系统启动过程中,通过将内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器,并根据区块链系统的运行配置信息实例化内核引擎和内核组件,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,实现了内核引擎和内核组件的模块化设计,扩展了区块链系统的场景适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图5是根据本申请实施例的另一种区块链系统的启动方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。具体的,是对启动运行所述区块链系统主程序和内核引擎的细化。
参见图5,本实施例提供的区块链系统的启动方法包括:
S510、运行区块链系统主程序,以初始化内核引擎和内核组件。
S520、通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件。
S530、启动运行所述区块链系统主程序,并在所述区块链系统主程序的运行过程中,通过所述内核引擎的启动接口启动所述内核引擎的运行。
启动运行区块链系统主程序,通过区块链系统主程序控制内核引擎的启动运行,进而实现应用层业务功能。
由于区块链系统主程序中包括内核引擎的启动接口,在区块链系统主程序的运行过程中,区块链系统主程序通过内核引擎的启动接口启动内核引擎的运行,从而完成区块链系统主程序和内核引擎的启动运行。
S540、在所述内核引擎的运行过程中,通过调用作为内核组件的网络组件,对通信网络进行实例化,并启动对通信网络端口的监听,用于接收通过通信网络传输的处理请求。
应用层业务功能是在内核引擎能够与内核组件以及应用层进行信息交互的前提下实现的。作为区块链系统非常重要的内核组件之一,网络组件负责着区块链系统中的区块链节点间的网络交互。
在内核引擎的运行过程中,内核引擎通过调用网络组件,对通信网络进行实例化,并启动对通信网络端口的监听,通过网络组件接收通过通信网络传输的处理请求。
其中,通信网络端口是内核引擎与应用层或者内核组件进行通信交互的接口。处理请求也通过通信网络端口在内核引擎和内核组件、内核引擎和应用层之间传输。处理请求可以是应用层向区块链系统发起待处理事务请求,如业务事务请求或者管理事务请求,也可以是区块链系统启动过程中由区块链内区块节点产生的数据如待验证区块、待同步区块或区块链系统维护数据等。
S550、在所述内核引擎的运行过程中,通过调用作为内核组件的共识组件,确定当前的矿工节点。
其中,共识组件负责实现区块链网络中多节点去中心化的共识达成,是区块链非常核心的组件,是实现区块链的自信任的前提。区块链的自信任主要体现在分布于区块链中的用户无须信任交易的另一方,也无须信任一个中心化的机构,只需要信任区块链协议下的软件系统即可实现交易。
内核引擎在运行过程中,会调用共识组件确定当前的矿工节点,其中矿工节点是指用于生成新区块的出块节点。
S560、启动端口监听服务,以运行区块链系统。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的启动过程,本申请实施例在区块链系统启动过程中,区块链系统主程序通过内核引擎的启动接口启动内核引擎,在内核引擎运行过程中调用网络组件和共识组件,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,实现了内核引擎和内核组件的模块化设计,扩展了区块链系统的场景适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图6A是根据本申请实施例的另一种区块链系统的启动方法的示意图;本实施例是在上述实施例的基础上提出的一种可选方案。具体的,是对启动端口监听服务的细化。
参见图6A,本实施例提供的区块链系统的启动方法包括:
S610、运行区块链系统主程序,以初始化内核引擎和内核组件。
S620、通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件。
S630、启动运行所述区块链系统主程序和内核引擎。
S640、加载端口配置信息。
其中,端口配置信息是用于确定需要进行监听的远程过程调用端口的信息。远程过程调用端口的数量为至少一个,通常为多个,端口配置信息中包括的远程过程调用端口是指应用层与内核引擎进行通信交互的端口。
S650、根据所述端口配置信息,实例化远程过程调用服务,并启动所述远程过程调用服务监听远程过程调用端口,以运行区块链系统。其中,所述远程过程调用接口用于获取客户端发起的处理请求。
其中,端口配置信息包括远程过程调用端口标识信息,根据端口配置信息中的远程过程调用端口标识在远程过程调用端口中确定需要进行监听的端口。远程过程调用端口是内核引擎与客户端进行信息交互的端口。
具体的,根据端口配置信息对远程过程调用服务进行赋值,通过远程过程调用服务需要监听的远程过程调用端口中是否存在处理请求。在远程过程调用服务监听到客户端发送的处理请求的情况下,触发区块链系统对处理请求的处理流程。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的启动过程,本申请实施例在区块链系统启动过程中,根据端口配置信息,实例化远程过程调用服务,并启动远程过程调用服务监听远程过程调用端口,从而在远程过程调用服务监听到客户端发送的处理请求,触发去区块链系统对处理请求的处理流程,实现了内核引擎和内核组件的模块化设计,扩展了区块链系统的场景适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图6B为本申请实施例提供的又一种区块链系统的启动方法的示意图,在一个具体的实施例中,区块链系统完整的启动过程如图6B所示。具体的包括以下步骤:1、启动运行区块链系统主程序,并在区块链系统主程序启动运行的过程中,注册内核引擎和内核组件。注册内核引擎和内核组件具体过程为:先将内核引擎注册到引擎工厂,之后将账本组件、共识组件、合约组件、网络组件和加密组件注册到对应的组件适配器中。2、实例化内核引擎和内核组件。在内核引擎和内核组件实例化的过程中,首先加载引擎配置信息,根据引擎配置信息对内核引擎进行实例化,在内核引擎实例化的过程中加载区块链系统所基于的区块链数据,并加载各内核组件配置信息,根据各内核组件配置信息分别实例化各内核组件,在内核引擎运行过程中实例化并启动对等网络,然后启动矿工节点。3、启动远程过程调用服务(RPC服务)。启动RPC服务的具体过程为,先加载服务配置信息,然后根据服务配置信息实例化RPC服务,并在实例化完成后启动RPC服务。至此,区块链系统启动完成。
在通过运行主程序完成内核引擎和内核组件的初始化以后,启动运行区块链系统,利用区块链系统对区块链数据进行处理。在对区块链数据进行处理的过程中,内核引擎和内核组件功能不同,通过内核引擎与内核组件相互配合,才能够完成对区块链数据的处理需求。
在一个可选的实施例中,内核引擎用于执行区块链内核流程,所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能。
其中,交易提交流程是指一次交易提交的流程,示例性的,交易提交流程包括:交易校验、交易执行、交易打包、区块签名、区块更新和区块广播等步骤;区块验证流程是指本机节点对区块进行验证的流程,示例性的,在确定其他节点为出块节点的情况下,为了保证数据安全有效,本机节点需要对出块节点进行验证,具体的本机节点需要对区块节点的区块高度进行验证,以确保当前出块节点与本机节点根据共识机制确定的出块节点一致;区块同步流程是指同步区块链中其他区块节点中事务处理数据的流程;区块链系统管理功能是指用于维护区块链系统的功能,如变更出块节点,管理节点,监控网络状态等功能。
在一个可选的实施例中,所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件。内核组件用于执行区块链运行过程中的设定组件功能。
其中,内核组件接口是对内核组件可实现功能的抽象,区块链系统中的每个内核组件均存在对应的内核组件接口,一个内核组件接口可以对应多个内核组件。内核引擎只需要根据待处理区块链数据对需要的内核组件功能进行选择,无需关心内核组件功能的具体实现。内核引擎通过调用内核组件接口即可实现对内核组件的调用,通过内核组件执行设定组件功能的处理,完成对区块链数据的处理需求。
在一个可选的实施例中,所述内核引擎具体用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件。
其中,组件适配器是配置于内核引擎层的,组件适配器充当翻译器的角色,用于将各内核组件的功能抽象为可供内核引擎直接调用的内核组件接口,组件适配器向内核引擎屏蔽内核组件的功能实现细节。无论哪种内核组件,无论内部如何实现组件功能,但组件适配器抽象出来的为内核引擎提供的内核组件接口是规范化的接口。这样做可以保持内核引擎和内核组件之间的松耦合关联关系,使得内核引擎和内核组件都可以自由的扩展替换。
内核组件接口主要是面向内核引擎,为内核引擎提供规范化的调用接口,内核指令接口与内核组件接口不同,内核指令接口是面向于内核组件,在内核引擎调用内核组件的情况下,将内核组件调用指令转化为对应内核组件可识别的指令形式。内核指令接口是在内核组件初始化过程中注册到组件适配器中的,在内核组件接口被调用的时,组件适配器可以在根据内核组件接口在已注册的内核指令接口中确定对应的内核指令接口。
内核引擎根据区块链数据,在组件适配器提供的内核组件接口中确定所需内核组件接口,并基于内核组件接口产生内核组件调用请求。并通过组件适配器中注册的内核指令接口将内核组件调用请求转换为内核组件可以直接识别的指令级别的形式,通过内核指令接口调用对应内核组件,通过内核组件执行设定组件功能的处理,完成对区块链数据的处理需求。
本申请实施例的技术方案通过内核引擎与内核组件相互配合,完成了对区块链数据的处理需求。本申请中内核引擎和内核组件均采用模块化设计,二者通过组件适配器实现配合工作,从而实现了模块间的松耦合,组件适配器向内核引擎提供内核组件接口,供内核引擎按需选择内核组件;另一方面,组件适配器通过内核指令接口,将内核引擎的内核组件调用指令和待处理区块链转换为内核组件能够识别的形式。组件适配器的引入使得内核引擎和内核组件均可以自由扩展,进而扩展了区块链系统的场景适用性,本申请实施例提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
图7是根据本申请实施例的区块链系统的启动装置的示意图;参见图7,本申请实施例公开了一种区块链系统的启动装置700,配置于区块链节点,所述装置700可以包括:内核引擎和内核组件初始化模块710、内核引擎和内核组件实例化模块720、区块链系统主程序和内核引擎启动模块730和端口监听服务启动模块740。
内核引擎和内核组件初始化模块710,用于运行区块链系统主程序,以初始化内核引擎和内核组件;
内核引擎和内核组件实例化模块720,用于通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件;
区块链系统主程序和内核引擎启动模块730,用于启动运行所述区块链系统主程序和内核引擎;
端口监听服务启动模块740,用于启动端口监听服务,以运行区块链系统。
本申请实施例的技术方案通过运行区块链系统主程序实现了区块链系统的启动过程,本申请实施例在区块链系统启动过程中,通过将内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器,并根据区块链系统的运行配置信息实例化内核引擎和内核组件,实现了在内核组件无代码侵入的情况下对内核组件和内核引擎进行技术选型,实现了内核引擎和内核组件的模块化设计,扩展了区块链系统的场景适用性,本申请的提出的区块链系统启动方法将区块链系统开发的难度降维到用户只需要根据场景需求扩展内核组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
可选的,其中,所述区块链系统主程序中包括内核引擎的初始化方法、启动接口和退出接口,所述区块链系统主程序中还包括至少一个内核组件的初始化方法,所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件。
可选的,所述内核引擎具体用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件。
可选的,所述区块链系统主程序用于执行区块链系统中的应用层业务功能;所述内核引擎用于执行区块链内核流程;所述内核组件用于执行区块链运行过程中的设定组件功能。
可选的,所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能;所述内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件、权限组件和加密组件。
可选的,内核引擎和内核组件初始化模块包括内核引擎初始化子模块和内核组件初始化子模块。其中,内核引擎初始化子模块具体用于运行区块链系统主程序,以初始化内核引擎。内核引擎初始化子模块包括:内核引擎初始化方法运行单元,用于运行区块链系统主程序中的内核引擎初始化方法;引擎注册接口调用单元,用于在所述内核引擎初始化方法的运行过程中,调用内核框架中引擎工厂的引擎注册接口,输入区块链引擎标识和内核引擎的实例化函数指针,通过所述引擎工厂,对应记录所述区块链引擎标识和所述内核引擎的实例化函数指针。
可选的,内核组件初始化子模块,具体用于运行区块链系统主程序,以初始化内核组件。内核组件初始化子模块,包括:内核组件初始化运行单元,用于运行区块链系统主程序中的内核组件初始化方法;适配器注册接口调用单元,用于在所述内核组件初始化方法的运行过程中,调用内核框架中适配器注册接口,以将所述内核组件的组件驱动注册到组件适配器中。
可选的,内核引擎和内核组件实例化模块,包括:引擎创建接口调用子模块,用于通过所述区块链系统主程序,调用引擎工厂的引擎创建接口,并输入所述区块链引擎标识和区块链系统的运行配置信息;实例化函数指针确定子模块,用于通过所述引擎工厂,根据所述区块链引擎标识确定对应的实例化函数指针;内核引擎实例化子模块,用于通过所述引擎工厂,根据所述实例化函数指针获取内核引擎代码,并根据所述运行配置信息中的环境配置信息,对内核引擎代码进行内核引擎的实例化;内核组件实例化子模块,用于根据所述运行配置信息中的组件配置信息,对所述内核组件进行实例化。
可选的,所述环境配置信息包括下述至少一项:根链的链名、配置文件目录、数据存储目录、日志文件目录、证书文件目录、节点地址文件目录、引擎配置文件名、日志配置文件名、服务配置文件名、区块链账本存储目录、网络配置文件名和账本配置文件名。
可选的,共识组件的组件配置信息包括:共识组件类型和共识算法配置信息;账本组件的组件配置信息包括:存储引擎和数据存储方式;合约组件的组件配置信息包括:合约虚拟机配置信息和合约升级开关;网络组件的组件配置信息包括:网络组件名称、节点地址、节点密钥地址和种子节点地址。
可选的,所述装置还包括:区块链数据加载模块,具体用于在根据所述运行配置信息中的组件配置信息,对所述内核组件进行实例化之前,根据所述运行配置信息中的区块链数据存储地址,加载所述区块链系统所基于的区块链数据。
可选的,区块链系统主程序和内核引擎启动模块,包括:内核引擎启动子模块,用于启动运行所述区块链系统主程序,并在所述区块链系统主程序的运行过程中,通过所述内核引擎的启动接口启动所述内核引擎的运行;通信网络端口监听启动子模块,用于在所述内核引擎的运行过程中,通过调用作为内核组件的网络组件,对通信网络进行实例化,并启动对通信网络端口的监听,用于接收通过通信网络传输的处理请求; 当前矿工节点确定子模块,用于在所述内核引擎的运行过程中,通过调用作为内核组件的共识组件,确定当前的矿工节点。
可选的,端口监听服务启动模块,包括:端口配置信息加载子模块,用于加载端口配置信息;远程过程调用服务启动子模块,用于根据所述端口配置信息,实例化远程过程调用服务,并启动所述远程过程调用服务监听远程过程调用端口,其中,所述远程过程调用接口用于获取客户端发起的处理请求。
本申请实施例所提供的区块链系统的启动装置可执行本申请任意实施例所提供的区块链系统的启动方法,具备执行区块链系统的启动方法相应的功能模块和有益效果。
根据本申请的实施例,本申请还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图8示出了可以用来实施本申请的实施例的示例电子设备800的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图8所示,设备800包括计算单元801,其可以根据存储在只读存储器(ROM)802中的计算机程序或者从存储单元808加载到随机访问存储器(RAM)803中的计算机程序,来执行各种适当的动作和处理。在RAM 803中,还可存储设备800操作所需的各种程序和数据。计算单元801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如区块链系统的启动方法。例如,在一些实施例中,区块链系统的启动方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由ROM 802和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM 803并由计算单元801执行时,可以执行上文描述的区块链系统的启动方法的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行区块链系统的启动方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (14)

1.一种区块链系统的启动方法,包括:
运行区块链系统主程序,以初始化内核引擎和内核组件;所述区块链系统主程序中包括内核引擎的初始化方法和至少一个内核组件的初始化方法;
通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件;其中,所述运行配置信息包括内核引擎的选型信息和内核组件的选型信息;
启动运行所述区块链系统主程序和内核引擎;
启动端口监听服务,以运行区块链系统;其中,端口监听服务是指对所述内核引擎和应用层进行交互的应用层交互端口进行监听的服务;所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件;
其中,运行区块链系统主程序,以初始化内核引擎包括:
运行区块链系统主程序中的内核引擎初始化方法;
在所述内核引擎初始化方法的运行过程中,调用内核框架中引擎工厂的引擎注册接口,输入区块链引擎标识和内核引擎的实例化函数指针,通过所述引擎工厂,对应记录所述区块链引擎标识和所述内核引擎的实例化函数指针;
其中,运行区块链系统主程序,以初始化内核组件包括:
运行区块链系统主程序中的内核组件初始化方法;
在所述内核组件初始化方法的运行过程中,调用内核框架中适配器注册接口,以将所述内核组件的组件驱动注册到组件适配器中。
2.根据权利要求1所述的方法,其中,所述区块链系统主程序中还包括内核引擎的启动接口和退出接口。
3.根据权利要求2所述的方法,其中,所述内核引擎具体用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件。
4.根据权利要求2所述的方法,其中,所述区块链系统主程序用于执行区块链系统中的应用层业务功能;所述内核引擎用于执行区块链内核流程;所述内核组件用于执行区块链运行过程中的设定组件功能。
5.根据权利要求4所述的方法,其中:
所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能;
所述内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件、权限组件和加密组件。
6.根据权利要求1所述的方法,其中,通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件包括:
通过所述区块链系统主程序,调用引擎工厂的引擎创建接口,并输入所述区块链引擎标识和区块链系统的运行配置信息;
通过所述引擎工厂,根据所述区块链引擎标识确定对应的实例化函数指针;
通过所述引擎工厂,根据所述实例化函数指针获取内核引擎代码,并根据所述运行配置信息中的环境配置信息,对内核引擎代码进行内核引擎的实例化;
根据所述运行配置信息中的组件配置信息,对所述内核组件进行实例化。
7.根据权利要求6所述的方法,其中,所述环境配置信息包括下述至少一项:根链的链名、配置文件目录、数据存储目录、日志文件目录、证书文件目录、节点地址文件目录、引擎配置文件名、日志配置文件名、服务配置文件名、区块链账本存储目录、网络配置文件名和账本配置文件名。
8.根据权利要求6所述的方法,其中
共识组件的组件配置信息包括:共识组件类型和共识算法配置信息;
账本组件的组件配置信息包括:存储引擎和数据存储方式;
合约组件的组件配置信息包括:合约虚拟机配置信息和合约升级开关;
网络组件的组件配置信息包括:网络组件名称、节点地址、节点密钥地址和种子节点地址。
9.根据权利要求6所述的方法,其中,根据所述运行配置信息中的组件配置信息,对所述内核组件进行实例化之前,还包括:
根据所述运行配置信息中的区块链数据存储地址,加载所述区块链系统所基于的区块链数据。
10.根据权利要求2所述的方法,其中,启动运行所述区块链系统主程序和内核引擎包括:
启动运行所述区块链系统主程序,并在所述区块链系统主程序的运行过程中,通过所述内核引擎的启动接口启动所述内核引擎的运行;
在所述内核引擎的运行过程中,通过调用作为内核组件的网络组件,对通信网络进行实例化,并启动对通信网络端口的监听,用于接收通过通信网络传输的处理请求;
在所述内核引擎的运行过程中,通过调用作为内核组件的共识组件,确定当前的矿工节点。
11.根据权利要求2所述的方法,其中,启动端口监听服务包括:
加载端口配置信息;
根据所述端口配置信息,实例化远程过程调用服务,并启动所述远程过程调用服务监听远程过程调用端口,其中,所述远程过程调用接口用于获取客户端发起的处理请求。
12.一种区块链系统的启动装置,所述装置包括:
内核引擎和内核组件初始化模块,用于运行区块链系统主程序,以初始化内核引擎和内核组件;
内核引擎和内核组件实例化模块,用于通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件;其中,所述运行配置信息包括内核引擎的选型信息和内核组件的选型信息;
区块链系统主程序和内核引擎启动模块,用于启动运行所述区块链系统主程序和内核引擎;
端口监听服务启动模块,用于启动端口监听服务,以运行区块链系统;其中,端口监听服务是指对所述内核引擎和应用层进行交互的应用层交互端口进行监听的服务;所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件;
其中,所述区块链系统主程序中包括内核引擎的初始化方法和至少一个内核组件的初始化方法;
内核引擎和内核组件初始化模块具体用于:
运行区块链系统主程序中的内核引擎初始化方法;
在所述内核引擎初始化方法的运行过程中,调用内核框架中引擎工厂的引擎注册接口,输入区块链引擎标识和内核引擎的实例化函数指针,通过所述引擎工厂,对应记录所述区块链引擎标识和所述内核引擎的实例化函数指针;
内核引擎和内核组件初始化模块还具体用于:
运行区块链系统主程序中的内核组件初始化方法;
在所述内核组件初始化方法的运行过程中,调用内核框架中适配器注册接口,以将所述内核组件的组件驱动注册到组件适配器中。
13.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-11中任一项所述的方法。
14.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-11中任一项所述的区块链系统的启动方法。
CN202110652665.0A 2021-06-11 2021-06-11 区块链系统的启动方法、装置、设备和存储介质 Active CN113110883B (zh)

Priority Applications (5)

Application Number Priority Date Filing Date Title
CN202110652665.0A CN113110883B (zh) 2021-06-11 2021-06-11 区块链系统的启动方法、装置、设备和存储介质
EP22174315.6A EP4102360A1 (en) 2021-06-11 2022-05-19 Method and apparatus for starting up blockchain system, electronic device, and non-transitory computer-readable storage medium
US17/750,699 US11558207B2 (en) 2021-06-11 2022-05-23 Method and apparatus for starting up blockchain system, and non-transitory computer-readable storage medium
JP2022083552A JP7217376B2 (ja) 2021-06-11 2022-05-23 ブロックチェーンシステム起動方法、装置、機器および記憶媒体
KR1020220063958A KR102501542B1 (ko) 2021-06-11 2022-05-25 블록체인 시스템의 가동 방법, 장치, 설비 및 저장 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110652665.0A CN113110883B (zh) 2021-06-11 2021-06-11 区块链系统的启动方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN113110883A CN113110883A (zh) 2021-07-13
CN113110883B true CN113110883B (zh) 2021-10-15

Family

ID=76723439

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110652665.0A Active CN113110883B (zh) 2021-06-11 2021-06-11 区块链系统的启动方法、装置、设备和存储介质

Country Status (5)

Country Link
US (1) US11558207B2 (zh)
EP (1) EP4102360A1 (zh)
JP (1) JP7217376B2 (zh)
KR (1) KR102501542B1 (zh)
CN (1) CN113110883B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102648589B1 (ko) * 2022-02-16 2024-03-18 한국조폐공사 분산원장 기반의 CBDC(Central Bank Digital Currency)를 관리하는 방법 및 이를 이용한 블록체인 노드

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017136527A1 (en) * 2016-02-05 2017-08-10 Manifold Technology, Inc. Blockchain-enhanced database
US10581696B2 (en) * 2017-03-29 2020-03-03 International Business Machines Corporation Intelligent information adapter generation for service management
CN108305170A (zh) * 2018-03-07 2018-07-20 物数(上海)信息科技有限公司 基于区块链的外部服务访问方法、系统、设备及存储介质
US11669914B2 (en) * 2018-05-06 2023-06-06 Strong Force TX Portfolio 2018, LLC Adaptive intelligence and shared infrastructure lending transaction enablement platform responsive to crowd sourced information
US20200028691A1 (en) * 2018-07-20 2020-01-23 Honeywell International Inc. System and method for a blockchain based automated certifiable workflow process
CN109800056A (zh) * 2019-01-16 2019-05-24 杭州趣链科技有限公司 一种基于容器的区块链部署方法
US10963786B1 (en) * 2019-05-07 2021-03-30 Ledgerdomain Inc. Establishing a trained machine learning classifier in a blockchain network
CN110222109A (zh) * 2019-05-29 2019-09-10 邓子航 基于分布式账本技术的节点拼接系统、方法及区块链节点
US11081219B1 (en) * 2020-01-15 2021-08-03 Ledgerdomain Inc. Secure messaging in a machine learning blockchain network
US20210314172A1 (en) * 2020-04-06 2021-10-07 Wivity Inc. Validating integrity of private keys for on a data communications network using blockchain key registry
US11893002B2 (en) * 2020-05-04 2024-02-06 Salesforce, Inc. System or method to run distributed validation of workflows across a network in a shared distributed ledger in multi-tenant cloud environment
CN111736909B (zh) * 2020-06-24 2023-07-14 平安科技(深圳)有限公司 操作系统的启动方法、装置、计算机设备及存储介质
CN112039987B (zh) * 2020-08-28 2022-05-20 平安科技(深圳)有限公司 区块链中区块的处理方法、装置、节点设备及存储介质
CN112256388A (zh) * 2020-10-15 2021-01-22 深圳壹账通智能科技有限公司 基于容器的区块链网络部署方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN113110883A (zh) 2021-07-13
JP7217376B2 (ja) 2023-02-02
KR102501542B1 (ko) 2023-02-21
JP2022189744A (ja) 2022-12-22
US11558207B2 (en) 2023-01-17
US20220400018A1 (en) 2022-12-15
KR20220167217A (ko) 2022-12-20
EP4102360A1 (en) 2022-12-14

Similar Documents

Publication Publication Date Title
EP3471342A1 (en) Method and device for service deployment in virtualized network
RU2456662C2 (ru) Согласование загрузки между несколькими способными к загрузке устройствами
WO2016037479A1 (zh) 虚拟化网络功能vnf优化方法、装置及系统
WO2020123213A1 (en) Container migration in computing systems
EP4095678A1 (en) Method and apparatus of deploying a cluster, device and storage medium
EP4033349A1 (en) Method and apparatus for generating mirror image file, and computer-readable storage medium
CN113110883B (zh) 区块链系统的启动方法、装置、设备和存储介质
CN113254169B (zh) 区块链系统的运行方法、装置、设备和存储介质
TWI668634B (zh) 基於軟體容器提供雲端服務之系統及方法
WO2023169193A1 (zh) 用于生成智能合约的方法和装置
CN113110899B (zh) 区块链系统的运行方法、装置、设备和存储介质
CN113254168B (zh) 区块链系统的运行方法、装置、设备和存储介质
CN113253995B (zh) 区块链系统的开发方法、装置、设备和存储介质
CN113259378B (zh) 区块链系统的运行方法、装置、设备和存储介质
CN113110921B (zh) 区块链系统的运行方法、装置、设备和存储介质
KR20150137766A (ko) 가상머신 스택 생성 시스템 및 방법
CN115981847B (zh) 服务网格部署方法及装置、电子设备和存储介质
CN114281478B (zh) 容器运行方法、装置、电子设备及计算机存储介质
US11977922B2 (en) Resource reuse for pipeline workloads
WO2023193609A1 (en) Selective privileged container augmentation
CN117055956A (zh) 一种异构区块链的兼容方法、装置、设备以及存储介质
CN117407111A (zh) 图形显示服务启动方法、装置、电子设备和存储介质
CN113254114A (zh) 区块链系统的运行方法、装置、设备和存储介质
CN115604333A (zh) 基于dubbo的分布式大数据分析服务调度方法及系统

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