CN113253995B - 区块链系统的开发方法、装置、设备和存储介质 - Google Patents

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

Info

Publication number
CN113253995B
CN113253995B CN202110652753.0A CN202110652753A CN113253995B CN 113253995 B CN113253995 B CN 113253995B CN 202110652753 A CN202110652753 A CN 202110652753A CN 113253995 B CN113253995 B CN 113253995B
Authority
CN
China
Prior art keywords
kernel
engine
component
block chain
blockchain
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
CN202110652753.0A
Other languages
English (en)
Other versions
CN113253995A (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 CN202110652753.0A priority Critical patent/CN113253995B/zh
Publication of CN113253995A publication Critical patent/CN113253995A/zh
Application granted granted Critical
Publication of CN113253995B publication Critical patent/CN113253995B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Abstract

本申请公开了区块链系统的开发方法、装置、设备和存储介质,涉及计算机技术领域,尤其涉及区块链技术,可用于云计算和云领域。该方案为:通过区块链开发软件的交互界面,获取输入的区块链开发参数;根据所述区块链开发参数,以及区块链系统框架代码包中的主程序代码模板,产生区块链系统主程序,其中,所述区块链系统主程序中包括内核引擎的初始化方法、启动接口和退出接口,所述区块链系统主程序中还包括至少一个内核组件的初始化方法,所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件。执行本方案实现的对区块链系统主程序的订制开发,降低区块链技术的研发成本。

Description

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

Claims (13)

1.一种区块链系统的开发方法,所述方法包括:
通过区块链开发软件的交互界面,获取输入的区块链开发参数;
根据所述区块链开发参数,以及区块链系统框架代码包中的主程序代码模板,产生区块链系统主程序;其中,所述区块链系统主程序中包括内核引擎的初始化方法、启动接口和退出接口,所述区块链系统主程序中还包括至少一个内核组件的初始化方法,所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件;
运行区块链系统主程序,以初始化内核引擎和内核组件,将所述内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器;
通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件;
启动运行所述区块链系统主程序、内核引擎和内核组件,以运行区块链系统;
其中,所述区块链系统主程序用于执行区块链系统中的应用层业务功能;所述内核引擎用于执行区块链内核流程;所述内核组件用于执行区块链运行过程中的设定组件功能;
其中,所述内核引擎用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件。
2.根据权利要求1所述的方法,其中,所述区块链开发参数包括区块链链名、代码存储仓库名和生成的区块链程序代码保存路径。
3.根据权利要求1所述的方法,其中:
所述内核流程包括下述至少一个:交易提交流程、区块验证流程、区块同步流程和区块链系统管理功能;
所述内核组件包括下述至少一个:共识组件、网络组件、账本组件、合约组件和权限组件。
4.根据权利要求1所述的方法,其中,所述内核引擎中包括读数据组件,用于在调用内核组件的过程执行读操作。
5.根据权利要求1所述的方法,还包括:
通过所述区块链开发软件的交互界面,呈现所述区块链系统主程序和内核引擎的代码,并根据开发者的输入对所述代码进行调整;
所述开发者对区块链系统主程序的输入包括下述至少一项:操作链的命令行工具、操作链的服务接口、内核引擎的选型和内核组件的选型。
6.根据权利要求1所述的方法,其中,运行区块链系统主程序,以初始化内核引擎,将所述内核引擎注册到引擎工厂包括:
运行区块链系统主程序中的内核引擎初始化方法;
在所述内核引擎初始化方法的运行过程中,调用内核框架中引擎工厂的引擎注册接口,输入区块链引擎标识和内核引擎的实例化函数指针,通过所述引擎工厂,对应记录所述区块链引擎标识和所述内核引擎的实例化函数指针。
7.根据权利要求6所述的方法,其中,所述内核引擎为开发者定制开发引擎或通过所述区块链开发软件提供的标准化引擎。
8.根据权利要求1或6所述的方法,其中,运行区块链系统主程序,以初始化内核组件,将所述内核组件注册到对应组件适配器包括:
运行区块链系统主程序中的内核组件初始化方法;
在所述内核组件初始化方法的运行过程中,调用内核框架中适配器注册接口,以将所述内核组件的内核指令接口注册到组件适配器中。
9.根据权利要求6所述的方法,其中,通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件包括:
通过所述区块链系统主程序,调用所述引擎工厂的引擎创建接口,并输入所述区块链引擎标识和区块链系统的运行配置信息;
通过所述引擎工厂,根据所述区块链引擎标识确定对应的实例化函数指针;
通过所述引擎工厂,根据所述实例化函数指针获取内核引擎代码,并根据所述运行配置信息中的环境配置信息,对内核引擎代码进行内核引擎的实例化;
根据所述运行配置信息中的组件配置信息,对所述内核组件进行实例化。
10.根据权利要求9所述的方法,其中,所述环境配置信息包括下述至少一项:根链的链名、配置文件目录、数据存储目录、日志文件目录、证书文件目录、节点地址文件目录、引擎配置文件名、日志配置文件名、服务配置文件名、区块链账本存储目录、网络配置文件名和账本配置文件名。
11.一种区块链系统的开发装置,所述装置包括:
区块链开发参数获取模块,用于通过区块链开发软件的交互界面,获取输入的区块链开发参数;
区块链系统主程序产生模块,用于根据所述区块链开发参数,以及区块链系统框架代码包中的主程序代码模板,产生区块链系统主程序;其中,所述区块链系统主程序中包括内核引擎的初始化方法、启动接口和退出接口,所述区块链系统主程序中还包括至少一个内核组件的初始化方法,所述内核引擎用于在处理区块链数据的过程中基于内核组件接口调用至少一个内核组件;
主程序运行模块,用于在产生区块链系统主程序之后,运行区块链系统主程序,以初始化内核引擎和内核组件,将所述内核引擎注册到引擎工厂,将内核组件注册到对应组件适配器;
内核引擎和内核组件实例化模块,用于通过程序配置文件,获取区块链系统的运行配置信息,以实例化所述内核引擎和内核组件;
区块链系统运行模块,用于启动运行所述区块链系统主程序、内核引擎和内核组件,以运行区块链系统;
其中,所述区块链系统主程序用于执行区块链系统中的应用层业务功能;所述内核引擎用于执行区块链内核流程;所述内核组件用于执行区块链运行过程中的设定组件功能;
其中,所述内核引擎用于在处理区块链数据的过程中,基于组件适配器提供的内核组件接口发起内核组件调用请求,并通过组件适配器中注册的内核指令接口调用至少一个内核组件。
12.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-10中任一项所述的方法。
13.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-10中任一项所述的区块链系统的开发方法。
CN202110652753.0A 2021-06-11 2021-06-11 区块链系统的开发方法、装置、设备和存储介质 Active CN113253995B (zh)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN113253995A CN113253995A (zh) 2021-08-13
CN113253995B true CN113253995B (zh) 2021-11-09

Family

ID=77187572

Family Applications (1)

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

Country Status (1)

Country Link
CN (1) CN113253995B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710243A (zh) * 2018-12-29 2019-05-03 百度在线网络技术(北京)有限公司 基于可视化平台的区块链开发方法、装置、服务器及介质
CN110717268A (zh) * 2019-09-30 2020-01-21 北京航空航天大学 一种基于face架构的可移植组件单元封装方法
CN112256388A (zh) * 2020-10-15 2021-01-22 深圳壹账通智能科技有限公司 基于容器的区块链网络部署方法、装置、设备及存储介质
CN112686671A (zh) * 2021-01-07 2021-04-20 腾讯科技(深圳)有限公司 基于区块链的智能合约部署方法、装置、设备以及介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3776430B1 (en) * 2019-11-08 2022-04-27 Alipay (Hangzhou) Information Technology Co., Ltd. System and method for blockchain-based decentralized application development
US11210070B2 (en) * 2019-11-19 2021-12-28 Cognizant Technology Solutions India Pvt. Ltd. System and a method for automating application development and deployment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710243A (zh) * 2018-12-29 2019-05-03 百度在线网络技术(北京)有限公司 基于可视化平台的区块链开发方法、装置、服务器及介质
CN110717268A (zh) * 2019-09-30 2020-01-21 北京航空航天大学 一种基于face架构的可移植组件单元封装方法
CN112256388A (zh) * 2020-10-15 2021-01-22 深圳壹账通智能科技有限公司 基于容器的区块链网络部署方法、装置、设备及存储介质
CN112686671A (zh) * 2021-01-07 2021-04-20 腾讯科技(深圳)有限公司 基于区块链的智能合约部署方法、装置、设备以及介质

Also Published As

Publication number Publication date
CN113253995A (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
US10474438B2 (en) Intelligent cloud engineering platform
CN113312037B (zh) 应用于微服务的数据处理方法、装置、设备和存储介质
CN111930521A (zh) 用于部署应用的方法、装置、电子设备及可读存储介质
US10684838B2 (en) Dynamic application deployment
US20170351506A1 (en) Automating feature graduation
CN106873970A (zh) 一种操作系统的安装方法和装置
CN112486491A (zh) 页面生成方法、装置、计算机设备及存储介质
CN113110883B (zh) 区块链系统的启动方法、装置、设备和存储介质
JP2021131897A (ja) スケジューリング方法、装置、設備、記憶設備、及びプログラム
WO2023169193A1 (zh) 用于生成智能合约的方法和装置
CN113110920B (zh) 区块链系统的运行方法、装置、设备和存储介质
CN113253995B (zh) 区块链系统的开发方法、装置、设备和存储介质
CN113254168B (zh) 区块链系统的运行方法、装置、设备和存储介质
CN112905270A (zh) 工作流实现方法、装置、平台、电子设备以及存储介质
CN113110921B (zh) 区块链系统的运行方法、装置、设备和存储介质
CN109408336A (zh) 一种启动项监控方法、装置、终端及计算机可读介质
WO2023193609A1 (en) Selective privileged container augmentation
US11977922B2 (en) Resource reuse for pipeline workloads
US20230266976A1 (en) Syncing settings across incompatible operating systems
CN115469887A (zh) 云原生应用的发布方法及装置、电子设备和存储介质
CN113254114A (zh) 区块链系统的运行方法、装置、设备和存储介质
CN115826942A (zh) 业务组件的应用方法、装置、终端及存储介质
WO2023239462A1 (en) Using interchangeable non-compute resources for cloud-based applications
CN117311668A (zh) 一种智能仪表技术需求的生成方法、装置、设备及存储介质

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