区块链系统的运行方法、装置、设备和存储介质转让专利
申请号 : CN202110652640.0
文献号 : CN113110920B
文献日 : 2021-11-09
发明人 : 万春辉 , 樊冰新
申请人 : 北京百度网讯科技有限公司
摘要 :
权利要求 :
1.一种区块链系统的运行方法,所述方法包括:通过区块链系统的内核引擎,获取待处理区块链数据;
通过所述内核引擎,对所述待处理区块链数据进行处理,并在处理过程中基于合约组件接口产生合约组件调用请求,根据所述合约组件调用请求调用对应的合约组件;其中,所述合约组件用于执行智能合约对事务请求进行处理,所述合约组件接口是供所述内核引擎调用所述合约组件的标准合约组件功能接口;
通过所述合约组件执行所述合约组件调用请求,以执行智能合约来处理待处理区块链数据中的事务请求;
其中,通过所述内核引擎,对所述待处理区块链数据进行处理,并在处理过程中基于合约组件接口产生合约组件调用请求,根据所述合约组件调用请求调用对应的合约组件包括:
通过所述内核引擎,对所述待处理区块链数据进行处理,并在处理过程中调用合约组件适配器提供的合约组件接口;
通过所述合约组件适配器,在所述合约组件接口被调用时,根据合约组件的合约指令接口产生合约组件调用请求;
通过所述合约组件适配器,根据所述合约组件调用请求调用对应的合约组件。
2.根据权利要求1所述的方法,其中,通过所述合约组件适配器,在所述合约组件接口被调用时,根据合约组件的合约指令接口产生合约组件调用请求包括:通过所述合约组件适配器,在所述合约组件接口被调用时,从同类的合约组件集合中确定待调用合约组件;
根据待调用合约组件的合约指令接口产生所述合约组件调用请求。
3.根据权利要求1所述的方法,其中,通过所述合约组件适配器,在所述合约组件接口被调用时,根据合约组件的合约指令接口产生合约组件调用请求包括:通过所述合约组件适配器,在所述合约组件接口被调用时,将调用输入参数基于合约组件的合约指令接口转换为合约组件调用请求的输入参数,以产生所述合约组件调用请求。
4.根据权利要求1所述的方法,其中,通过所述合约组件适配器,在所述合约组件接口被调用时,根据合约组件的合约指令接口产生合约组件调用请求包括:通过所述合约组件适配器,在所述合约组件接口被调用时,根据合约组件接口与合约指令接口的映射关系,确定至少一个合约指令接口;
通过所述合约组件适配器,根据合约组件的合约指令接口产生合约组件调用请求。
5.根据权利要求1所述的方法,其中,合约组件接口包括下述至少一种:创建合约上下文接口;
创建数据读写沙盒环境接口;
获取系统合约注册句柄接口;
合约调用接口;
资源使用查询接口;
持有资源释放接口;
合约指令接口包括下述至少一种:单次执行的合约虚拟机实例创建接口;
合约执行接口;
获取资源消耗统计接口;
资源释放接口;
运行退出接口。
6.根据权利要求1所述的方法,其中,通过所述内核引擎,对所述待处理区块链数据进行处理,并在处理过程中基于合约组件接口产生合约组件调用请求,根据所述合约组件调用请求调用对应的合约组件包括:通过所述内核引擎,针对所述待处理区块链数据中的事务请求,基于合约组件接口产生合约执行调用请求,根据所述合约执行调用请求调用对应的合约组件,以启动虚拟机实例运行智能合约,执行所述事务请求。
7.根据权利要求1所述的方法,还包括:在区块链节点启动时,在合约组件适配器中注册合约组件的合约指令接口和合约组件配置参数;
通过所述内核引擎启动并实例化合约组件的虚拟机。
8.一种区块链系统的运行装置,所述装置包括:待处理区块链数据获取模块,用于通过区块链系统的内核引擎,获取待处理区块链数据;
合约组件调用请求产生模块,用于通过所述内核引擎,对所述待处理区块链数据进行处理,并在处理过程中基于合约组件接口产生合约组件调用请求,根据所述合约组件调用请求调用对应的合约组件;其中,所述合约组件用于执行智能合约对事务请求进行处理,所述合约组件接口是供所述内核引擎调用所述合约组件的标准合约组件功能接口;
智能合约执行模块,用于通过所述合约组件执行所述合约组件调用请求,以执行智能合约来处理待处理区块链数据中的事务请求;
其中,合约组件调用请求产生模块,包括:合约组件接口调用子模块,用于通过所述内核引擎,对所述待处理区块链数据进行处理,并在处理过程中调用合约组件适配器提供的合约组件接口;合约组件调用请求产生子模块,用于通过所述合约组件适配器,在所述合约组件接口被调用时,根据合约组件的合约指令接口产生合约组件调用请求;合约组件调用子模块,用于通过所述合约组件适配器,根据所述合约组件调用请求调用对应的合约组件。
9.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑7中任一项所述的方法。
10.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1‑7中任一项所述的区块链系统的运行方法。
说明书 :
区块链系统的运行方法、装置、设备和存储介质
技术领域
背景技术
产业的新阶段。
会遇到适用性的问题,需要深入框架做改造,改造成本和技术门槛都非常高。
发明内容
中,所述合约组件用于执行智能合约对事务请求进行处理。
调用请求调用对应的合约组件;其中,所述合约组件用于执行智能合约对事务请求进行处
理。
统的运行方法。
行方法。
附图说明
具体实施方式
到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同
样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
屏蔽了复杂的区块链底层技术,在用户了解区块链基本原理的情况下即可搭建区块链完成
业务需求。可以由区块链系统主程序来实现区块链应用层的服务端功能。区块链应用层还
可以包括客户端(client)和应用程序接口(API),从而提供用户交互界面或交互机制,实现
与用户的交互。在一个区块链系统中可以支撑一个或多个区块链应用层的业务功能。应用
层的客户端或API可通过专有组件与区块链内核架构进行交互,专有组件例如是对设定交
互端口的监听服务。
链运行过程中的各种业务逻辑的核心流程,例如,交易处理流程、矿工出块流程、和同步区
块流程等。本申请实施例中,所谓交易,是由区块链用户发起,需要由区块链节点基于区块
链系统进行处理,并将处理过程上链存储的事务请求,并不限于交易业务,可以是任何区块
链所需承载的应用业务或区块链管理事务请求。所谓矿工,即当前出块周期内有权限进行
出块的区块链节点,并不限于基于工作量证明共识机制(POW)来确定的出块节点,基于其他
共识机制确定的出块节点,也可称为矿工。并且,内核引擎采用了读写分离的设计来降低复
杂度,可以采用独立读组件的方式来实现读操作,实现了读操作可单独扩展。内核引擎层中
的内核引擎是可以由用户根据场景需要,进行无框架代码侵入的扩展定制,或者轻量级的
代码调整定制。即,开发人员可以基于内核组件的功能来开发内核引擎,无需再单独开发内
核组件。基于内核架构为用户提供了配置多种类内核引擎层的可能性,具体的可配置开发:
超级公链引擎(xuperos engine)、超级联盟链引擎(xchain engine)和用户自主实现的内
核引擎(other engine)等。
擎的开发者选用,同时开发者也可以低成本的按照内核组件编程规范开发适合自己场景的
内核组件,并将自主实现的内核组件无缝接入到各种内核引擎中。其中,内核组件编程规范
是用以抽象内核组件的规范。根据内核组件编程规范实现内核组件,可以为内核引擎调用
内核组件提供标准内核组件功能接口,使得内核引擎可以通过内核引擎层内的组件适配器
(如consensus、contract、ledge、network或者permission)确定的内核组件接口,基于内核
组件接口实现对内核组件的调用,再通过内核组件完成对待处理区块链数据的处理工作。
内核组件接口也可称为内核功能接口,是内核组件提供给内核引擎调用的、功能层级的接
口。无论哪种内核组件,无论内部如何实现组件功能,都可以提供规范化、统一的内核组件
接口,以方便内核引擎调用。
扩展替换。基于本架构,用户可以根据具体场景的需要和喜好,非常轻量级的开发具体的区
块链系统,本架构将区块链系统开发的难度降维到只是根据场景需要扩展部分子领域功
能,极大的降低区块链技术的研发成本。
以由区块链系统的运行装置来执行,该装置可以由软件和/或硬件的方式实现,配置于具备
计算和存储功能的电子设备中,例如可以由区块链节点来执行。参见图1,本实施例提供的
一种区块链系统的运行方法,包括:
引擎的,也可以是内核引擎通过网络组件接收到用户客户端发送的待处理区块链数据,以
及内核引擎通过网络组件接收到区块链系统运行过程中如生成的新区块验证过程和区块
同步过程产生的待处理区块链数据。
节点和监控网络状态等操作数据,待处理区块链数据还可以是由内核引擎接收到的用户对
区块链中数据的查询请求。待处理区块链数据包括下述至少一项:待处理区块链事务请求、
待验证区块、待同步区块和区块链系统维护数据,待处理区块数据的具体内容在这里不限
定,具体依据实际情况确定。
件;其中,所述合约组件用于执行智能合约对事务请求进行处理。
处理区块链数据的处理。
其中,内核组件的数量为至少一个,具体数量和种类在这里不作限定,具体根据区块链系统
所适用的场景及其所需提供功能确定。但是值得注意的是,内核组件至少包括区块链专用
组件如合约组件、网络组件、账本组件或者共识组件。
反馈给所述内核引擎。
件接口,并基于合约组件接口产生合约组件调用请求,根据合约组件调用请求对应的合约
组件,通过合约组件执行智能合约来处理待处理区块链数据中的事务请求。
组件接口产生的,用于调用合约组件执行智能合约来处理待处理区块链数据中的事务请
求。值得注意的是,合约组件调用请求中所包括的参数的种类和参数数量,是根据预设合约
组件编程规范确定的,在这里不作限定,具体依据实际情况确定。示例性的,合约组件调用
请求包括:合约组件名称、输入参数、要求返回参数和回调函数等。
求调用对应的合约组件;其中,所述合约组件用于执行智能合约对事务请求进行处理之后,
所述方法还包括:通过所述合约组件执行所述合约组件调用请求,以执行智能合约来处理
待处理区块链数据中的事务请求。
求。
核引擎和合约组件均采用模块化设计,二者通过合约组件接口实现配合工作,从而实现了
模块间的松耦合,使得内核引擎和合约组件均可以自由扩展,进而扩展了区块链系统的场
景适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户
只需要根据场景需求扩展合约组件或者内核引擎功能的程度,极大的降低区块链技术的研
发成本。
理区块链数据进行处理,并在处理过程中基于合约组件接口产生合约组件调用请求,根据
所述合约组件调用请求调用对应的合约组件的细化。
处理区块链数据的内核组件接口。内核引擎对待处理区块链数据进行处理的过程中,实质
是根据待处理区块链数据对选择对应功能内核组件的过程。内核组件的数量为至少一个,
示例性的,内核组件可以包括共识组件、账本组件、合约组件和网络组件中的至少一个。内
核组件的种类和数量在这里不作限定,具体依据实际情况确定。
能实现细节。
口由组件适配器提供给内核引擎,内核引擎只需要根据待处理区块链数据对需要的内核组
件功能进行选择,无需关心内核组件功能的具体实现。内核引擎通过调用内核组件接口即
可实现对内核组件的调用。
约组件对应的合约组件适配器(contract)、与网络组件对应的网络组件适配器(network)
和权限组件对应的权限组件适配器(permission)等组件适配器。
组件接口实现对合约组件的调用。
件的功能抽象为可供内核引擎直接调用的合约组件接口,合约组件适配器向内核引擎屏蔽
合约组件的功能实现细节。无论哪种合约组件,无论合约组件内部如何实现组件功能,但合
约组件适配器抽象出来的,为内核引擎提供的合约组件接口是规范化的接口。这样做可以
保持内核引擎和合约组件之间的松耦合关联关系,使得内核引擎和合约组件都可以自由的
扩展替换。
口。在内核引擎调用合约组件接口时,合约组件适配器根据被调用的合约组件接口,确定与
合约组件接口对应的合约指令接口。通过合约指令接口对内核引擎发送的合约组件调用指
令进行处理,将合约组件调用指令转换为合约组件可以直接识别的形式。
调用指令转化为对应合约组件可识别的形式。
别的指令级别调用请求。可选的,合约组件调用请求中包括合约组件名称、输入参数、要求
返回参数和回调函数等。
请求。
求,产生合约组件调用请求可以直接被合约组件识别。示例性的,合约指令接口对调用输入
参数进行的转换可以对调用输入参数中的接口名称进行映射转换,还可以实现接口输入参
数的名称和类型转换。可以知道的是,合约组件接口和合约指令接口大致相同,但有些情况
下也可能不同。所以合约组件适配器需要起到接口名称映射转换,参数合法性校验和转换
的功能。
口与合约指令接口可以具备相同的功能,适配器根据内核引擎的调用直接调用合约指令接
口。或者,一个合约组件接口也可以经转换后,调用不同接口名称的一个或多个合约指令接
口来完成相应功能。
数据中的事务请求。
求。
计,二者通过合约组件适配器实现配合工作,从而实现了模块间的松耦合,合约组件适配器
向内核引擎提供合约组件接口,供内核引擎按需选择合约组件;另一方面,合约组件适配器
通过合约指令接口,将内核引擎的合约组件调用指令为合约组件能够识别的形式。合约组
件适配器的引入使得内核引擎和合约组件均可以自由扩展,进而扩展了区块链系统的场景
适用性,本申请的提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要
根据场景需求扩展合约组件或者内核引擎功能的程度,极大的降低区块链技术的研发成
本。
述合约组件接口被调用时,根据合约组件的合约指令接口产生合约组件调用请求的细化。
不同场景的合约组件,这些合约组件均可以执行智能合约来处理待处理区块链数据中的事
务请求。可选的,合约组件可以包括XML虚拟机(xvm)、原生代码虚拟机(native)和以太坊智
能合约虚拟机(EVM)。
合约组件的子类型进行选择。具体的,用户需求是用户根据区块链系统的应用场景和业务
需求确定的,并在区块链的初始化阶段,注册到合约组件适配器的。
计,二者通过合约组件适配器实现配合工作,从而实现了模块间的松耦合,合约组件适配器
的引入使得内核引擎和合约组件均可以自由扩展。另一方面,通过合约组件适配器,在合约
组件接口被调用时,从同类的合约组件集合中确定待调用合约组件,根据待调用合约组件
的内核指令接口产生所述合约组件调用请求,满足了用户个性化需求,扩大区块链系统的
应用程场景,本申请的提出的区块链系统运行方法将区块链系统开发的难度降维到用户只
需要根据场景需求扩展合约组件或者内核引擎功能的程度,极大的降低区块链技术的研发
成本。
述合约组件接口被调用时,根据合约组件的合约指令接口产生合约组件调用请求的细化。
多个合约指令接口。
的。
组件均采用模块化设计,二者通过合约组件适配器实现配合工作,从而实现了模块间的松
耦合,合约组件适配器向内核引擎提供合约组件接口,供内核引擎按需选择合约组件;另一
方面,合约组件适配器,在合约组件接口被调用时,根据合约组件接口与合约指令接口的映
射关系,确定合约指令接口,通过合约指令接口,将内核引擎的合约组件调用指令转换为合
约组件能够识别的形式。合约组件适配器的引入使得内核引擎和合约组件均可以自由扩
展,进而扩展了区块链系统的场景适用性,本申请的提出的区块链系统运行方法将区块链
系统开发的难度降维到用户只需要根据场景需求扩展合约组件或者内核引擎功能的程度,
极大的降低区块链技术的研发成本。
理区块链数据进行处理,并在处理过程中基于合约组件接口产生合约组件调用请求,根据
所述合约组件调用请求调用对应的合约组件的细化。
端发送的获奖账户确定请求。智能合约规定了获奖账户的确定方法,通过运行智能合约确
定获奖账户。
虚拟机实例运行智能合约,执行所述事务请求。
虚拟机实例运行智能合约,执行事务请求。
件将处理结果反馈给内核引擎。示例性的,通过运行智能合约虚拟机实例确定参与有奖竞
猜的获奖账户,并将获奖区块的区块标识作为合约处理结果反馈给内核引擎。
数;通过所述内核引擎启动并实例化合约组件的虚拟机。
组件的情况下,将合约组件调用指令转化为对应合约组件可识别的形式。合约组件配置参
数用于配置调用合约组件时的基本参数,合约组件的配置参数包括合约组件的选型信息。
可选的,将全部的合约组件的合约指令接口注册到合约组件适配器中。具体,可在合约适配
器中注册合约组件的具体实现逻辑,即组件驱动,从而通过组件驱动实现合约组件接口的
注册。
约组件包时,能够自动完成合约组件注册。开发人员只需要关注合约组件的接入规范,实现
规范约束的接口即可,组件驱动代码可以自由存放,无代码侵入。
采用模块化设计,二者通过合约组件接口实现配合工作,从而实现了模块间的松耦合,使得
内核引擎和合约组件均可以自由扩展,进而扩展了区块链系统的场景适用性,本申请实施
例提出的区块链系统运行方法将区块链系统开发的难度降维到用户只需要根据场景需求
扩展合约组件或者内核引擎功能的程度,极大的降低区块链技术的研发成本。
模块610和合约组件调用请求产生模块620。
件调用请求调用对应的合约组件;其中,所述合约组件用于执行智能合约对事务请求进行
处理;
核引擎和合约组件均采用模块化设计,二者通过合约组件接口实现配合工作,从而实现了
模块间的松耦合,使得内核引擎和合约组件均可以自由扩展,进而扩展了区块链系统的场
景适用性,本申请实施例提出的区块链系统运行方法将区块链系统开发的难度降维到用户
只需要根据场景需求扩展合约组件或者内核引擎功能的程度,极大的降低区块链技术的研
发成本。
求,根据所述合约组件调用请求调用对应的合约组件;其中,所述合约组件用于执行智能合
约对事务请求进行处理之后,通过所述合约组件执行所述合约组件调用请求,以执行智能
合约来处理待处理区块链数据中的事务请求。
器提供的合约组件接口;合约组件调用请求产生子模块,用于通过所述合约组件适配器,在
所述合约组件接口被调用时,根据合约组件的合约指令接口产生合约组件调用请求;合约
组件调用子模块,用于通过所述合约组件适配器,根据所述合约组件调用请求调用对应的
合约组件。
调用合约组件;第一合约组件调用请求产生单元,用于根据待调用合约组件的合约指令接
口产生所述合约组件调用请求。
调用请求的输入参数,以产生所述合约组件调用请求。
的映射关系,确定至少一个合约指令接口;第二合约组件调用请求产生单元,用于通过所述
合约组件适配器,根据合约组件的合约指令接口产生合约组件调用请求。
放接口;合约指令接口包括下述至少一种:单次执行的合约虚拟机实例创建接口;合约执行
接口;获取资源消耗统计接口;资源释放接口;运行退出接口。
约执行调用请求调用对应的合约组件,以启动虚拟机实例运行智能合约,执行所述事务请
求。
实例化模块,用于通过所述内核引擎启动并实例化合约组件的虚拟机。
助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种
形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算
装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限
制本文中描述的和/或者要求的本公开的实现。
行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计
算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至
总线704。
信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如
因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及
任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,
例如区块链系统的运行方法。例如,在一些实施例中,区块链系统的运行方法可被实现为计
算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算
机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700
上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的区块链系
统的运行方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任
何适当的方式(例如,借助于固件)而被配置为执行区块链系统的运行方法。
的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实
现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算
机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器
可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出
装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至
少一个输出装置。
理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的
功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件
包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电
子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合
适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计
算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM
或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD‑ROM)、光学储存设备、磁储存设备、或
上述内容的任何合适组合。
器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来
将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的
反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用
任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界
面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部
件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数
字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网
(LAN)、广域网(WAN)、区块链网络和互联网。
算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或
云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在
的管理难度大,业务扩展性弱的缺陷。
只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。