CN114285859B - 中间层区块链服务的数据处理方法、装置、设备及存储介质 - Google Patents

中间层区块链服务的数据处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN114285859B
CN114285859B CN202111580425.0A CN202111580425A CN114285859B CN 114285859 B CN114285859 B CN 114285859B CN 202111580425 A CN202111580425 A CN 202111580425A CN 114285859 B CN114285859 B CN 114285859B
Authority
CN
China
Prior art keywords
interface
service
intelligent contract
description file
address
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
CN202111580425.0A
Other languages
English (en)
Other versions
CN114285859A (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.)
CCB Finetech Co Ltd
Original Assignee
CCB Finetech 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 CCB Finetech Co Ltd filed Critical CCB Finetech Co Ltd
Priority to CN202111580425.0A priority Critical patent/CN114285859B/zh
Publication of CN114285859A publication Critical patent/CN114285859A/zh
Application granted granted Critical
Publication of CN114285859B publication Critical patent/CN114285859B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提供一种中间层区块链服务的数据处理方法、装置、设备及存储介质,属于数据处理技术领域。所述方法包括:接收智能合约的代码文件,编译所述代码文件;将编译生成的智能合约接口描述文件,转换为具有通用接口信息的规范接口描述文件;基于所述规范接口描述文件,生成所述智能合约的网关服务;生成所述网关服务的网关服务地址。

Description

中间层区块链服务的数据处理方法、装置、设备及存储介质
技术领域
本发明涉及数据处理技术领域,具体地涉及一种中间层区块链服务的数据处理方法、一种数据处理装置、一种计算机程序产品、一种电子设备和一种计算机可读存储介质。
背景技术
区块链技术是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、防篡改、防抵赖的技术。典型的区块链是以块链结构实现数据存储的。智能合约是区块链技术重要的核心应用之一,其运行在区块链系统中,智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议、且在区块链系统上体现为可自动执行的计算机程序,该计算机程序执行具体合约的功能,智能合约可以将现实生活、生产的场景映射至区块链系统中,例如常见的售卖机、仓储数据库。智能合约通过编程语言来实现其执行逻辑的特点与普通的网络(Web)服务程序类似,可以根据实际业务需求定义服务接口,以便对外提供服务。智能合约在区块链系统中拥有独立的数据存储区,用来反映该智能合约在当前区块链的状态。外部系统(如使用者的客户端)一般通过调用智能合约的服务接口对区块链进行写操作(如将数据作为参数通过接口传给智能合约,合约执行,将结果写入存储区,最终改变当前区块链状态),或读操作(查询当前区块链数据)。
智能合约与其运行的区块链系统的特性紧密结合,智能合约的使用者(外部系统)通常使用区块链提供配套的软件工具包(SDK)来访问区块链系统和智能合约接口。使用者需要学习当前特定区块链的专业术语与具体技术细节(如交易字段格式,秘钥管理,签名,数据编码,事件监听等),明显增加了开发周期与成本。同时,SDK的版本会随着区块链系统升级而变化,使用者需要耗费大量时间来维护SDK版本的变化。
发明内容
本发明的目的是提供一种中间层区块链服务的数据处理方法、装置、设备及存储介质,避免智能合约规范与区块链配套的SDK等开发套件规范高度耦合而导致的难以不了解、不使用区块链规范情况下进行智能合约开发、使用、维护,进而实现区块链系统与智能合约的开发标准、改善开发周期、成本。
为了实现上述目的,本发明实施例提供一种中间层区块链服务的数据处理方法,该数据处理方法包括:
接收智能合约的代码文件,编译所述代码文件;
将编译生成的智能合约接口描述文件,转换为具有通用接口信息的规范接口描述文件;
基于所述规范接口描述文件,生成所述智能合约的网关服务;
生成所述网关服务的网关服务地址。
具体的,所述将编译生成的智能合约接口描述文件,转换为具有通用接口信息的规范接口描述文件,包括:
确定与所述智能合约对应的区块链系统;
确定所述区块链系统中智能合约的接口与通用接口框架的接口之间的指定匹配关系;
按照规范接口框架的数据结构,通过所述指定匹配关系,将编译生成的智能合约接口描述文件,映射为规范接口描述文件。
具体的,所述基于所述规范接口描述文件,生成所述智能合约的网关服务,其中所述网关服务具有以下至少一项功能:
地址映射功能:将所述通用接口框架的请求地址,映射至所述区块链系统中所述智能合约的地址;
入参传递功能:将所述通用接口框架的请求参数,转换为所述区块链系统中所述智能合约的输入参数;
返回传递功能:将所述区块链系统中所述智能合约的执行结果,转换并编码为所述规范接口框架的返回数据结构。
具体的,所述基于所述规范接口描述文件,生成所述智能合约的网关服务,包括:
解析所述规范接口描述文件,生成通用接口路由表配置和指定脚本文件;
通过所述脚本文件生成网关服务;其中,
所述网关服务具有所述地址映射功能、所述入参传递功能和所述返回传递功能;
所述网关服务在被访问时,通过查询所述通用接口路由表执行所述地址映射功能中的映射。
具体的,所述基于所述规范接口描述文件,生成所述智能合约的网关服务,包括:
解析所述规范接口描述文件,生成可编译的代码文件;
编译该可编译的代码文件为可执行程序,并对所述可执行程序进行注册;
将启动的所述可执行程序作为网关服务;其中,
所述网关服务具有所述地址映射功能、所述入参传递功能和所述返回传递功能。
具体的,该数据处理方法还包括:
生成多功能开发服务地址,所述多功能开发服务地址用于获取所述规范接口描述文件中接口描述及接口功能测试。
具体的,该数据处理方法还包括:
确定访问中间层区块链服务地址的外部系统已具有访问识别信息,允许访问所述网关服务地址;或
确定所述外部系统不具有访问识别信息,允许所述外部系统申请访问识别信息。
具体的,其中编译所述智能合约的代码文件后还生成所述智能合约的可执行文件,该数据处理方法还包括:
确定所述可执行文件未被实例化至区块链系统中,通过调用所述网关服务执行所述可执行文件的实例化部署;或
确定所述可执行文件已被实例化至区块链系统中,基于所述外部系统访问的通用接口地址,通过所述网关服务执行所述智能合约的接口调用。
具体的,该数据处理方法还包括:
通过消息中间件缓存由所述网关服务转发的外部系统的交易数据;
通过所述网关服务返回与所述交易数据的状态对应的响应数据至外部系统,其中,所述响应数据包括执行状态和响应标识符。
具体的,该数据处理方法还包括:
通过所述网关服务接收所述外部系统针对所述响应数据的轮询。
具体的,该数据处理方法还包括:
通过所述网关服务为所述外部系统注册用于事件推送的外部通用接口地址;
将更新的响应数据作为事件,推送至所述外部通用接口地址,其中,所述外部系统基于所述响应标识符监听所述事件。
本发明实施例提供一种数据处理装置,该数据处理装置包括:
编译模块,用于接收智能合约的代码文件,编译所述代码文件;
转换模块,用于将编译生成的智能合约接口描述文件,转换为具有通用接口信息的规范接口描述文件;
服务生成模块,用于基于所述规范接口描述文件,生成所述智能合约的网关服务;
地址生成模块,用于生成所述网关服务的网关服务地址。
再一方面,本发明实施例提供一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序在被处理器执行时实现前述的中间层区块链服务的数据处理方法。
又一方面,本发明实施例提供一种电子设备,该电子设备包括:
至少一个处理器;
存储器,与所述至少一个处理器连接;
其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,所述至少一个处理器通过执行所述存储器存储的指令实现前述的方法。
又一方面,本发明实施例提供一种计算机可读存储介质,存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行前述的方法。
本发明将智能合约代码文件编译产生的接口描述文件转换成规范接口描述文件,利用该规范接口描述的数据结构以及转换得到的通用接口信息,统一了面向智能合约使用者的交付产品形式,即使在增删、更改区块链种类之后、在区块链系统发生硬分叉等强制版本更替以及智能合约的协议修改之后,也能使得使用者保持相同的接口技术并继续使用发生更新的区块链系统以及智能合约的协议,不需要适配各种区块链系统的标准或规范,针对新协议的合约、新区块链的新规范进行外部系统应用耦合,外部系统仍然能够使用相同的通用接口和接口规范,实现了区块链应用的开发、使用和维护的难度、成本改善。
本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:
图1为本发明实施例的方法主要步骤示意图;
图2为本发明实施例的示例性的认证处理流程示意图;
图3为本发明实施例的示例性的实例化处理流程示意图;
图4为本发明实施例的示例性的一种系统架构示意图;
图5为本发明实施例的示例性的另一种系统架构示意图;
图6为本发明实施例的示例性的计算设备架构示意图。
具体实施方式
以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。
在一些应用中,外部系统中客户端与区块链系统中智能合约的交互实现,一般过程为:
根据业务需求开发智能合约,定义合约服务接口;
部署智能合约到区块链;
为智能合约开发对应的中间层区块链服务。
然而,首先,在各个不同的区块链中,都需要为不同的智能合约接口实现中间代理层服务,而该服务主要功能是接口转换与数据转发,开发人员需要花费大量时间,浪费人力与开发成本。其次,根据不同的应用需求,选择不同的区块链系统(如以太坊区块链系统、超级账本区块链系统等),导致开发人员需要熟悉不同的区块链底层技术,增加了开发时间周期。再次,中间层区块链服务开发没有标准化,很难保证中间层区块链服务的产品质量,导致开发的系统质量参差不齐,容易产生程序错误。本发明实施例将提供以上问题的解决方案。
在本发明实施例中,如图1,提供了中间层区块链服务的数据处理方法,该数据处理方法可以包括:
S1)接收智能合约的代码文件,编译所述代码文件;
S2)将编译生成的智能合约接口描述文件,转换为具有通用接口信息的规范接口描述文件;
S3)基于所述规范接口描述文件,生成所述智能合约的网关服务;
S4)生成所述网关服务的网关服务地址。
在一些具体实施中,智能合约的代码文件可以使用编程语言编写,例如Solidity,可以在中间层区块链服务的系统环境中安装该编程语言的编程环境并同时获得编译器,中间层区块链服务(通过上传接口,上传接口可以根据HTTP或FTP等数据传输协议有不同选择)接收编写完成的代码文件,在接收完成之后,可以对智能合约做语法检查,并通过编译器执行该合约的编译。需要说明的是,在本发明实施例中,中间层区块链服务是基于物理或虚拟化的计算资源执行的程序,可以是一种Web服务,该Web服务可以采用通用接口框架进行数据交互,例如HTTP RESTFul或JSON RPC等通用接口框架,该中间层区块链服务的服务地址可以是指定的域名或网络IP地址,该服务地址可以被外部系统访问。
编译器可以编译该代码文件,编译器将生成该智能合约的可执行文件和智能合约接口描述文件。可执行文件是含有字符编码的文件,这些字符编码是一系列可在区块链系统的虚拟机中执行的堆栈操作的编码定义,堆栈操作例如异或运算XOR,与运算AND,求和运算ADD,相减运算SUB等基本逻辑运算,从而将现实业务需要的数据处理功能实现在区块链系统中。智能合约接口描述文件是含有与区块链系统中智能合约交互的接口和数据编码类型等信息的文件,例如应用程序二进制接口(Application Binary Interface,ABI)文件。在一些应用中,该智能合约接口描述文件描述了智能合约接口的详细信息,包括智能合约名称,合约接口名称,接口参数描述,接口返回值描述,合约事件等信息,以用于后续生成智能合约的网关服务。
在本发明一些具体实施例中,对于步骤S2),可以包括:
S201)确定与所述智能合约对应的区块链系统;
S202)确定所述区块链系统中智能合约的接口与通用接口框架的接口之间的指定匹配关系;
S203)按照规范接口框架的数据结构,通过所述指定匹配关系,将编译生成的智能合约接口描述文件,映射为规范接口描述文件。
在本发明公开的一种示例性实例中,中间层区块链服务可以包括Web服务,中间层区块链服务还可以包括转换组件。转换组件可以包括多个可调用组件,可调用组件可以优选为JavaScript(.js)文件。转换组件可以被Web服务调用执行,也可以通过指令控制而执行。通用接口框架可以包括HTTP RESTFul或JSON RPC,规范接口框架可以包括OpenAPI规范框架,该规范框架的数据结构包括数据格式(例如int32、float等)、数据类型(例如string、number等)和对象等,对象例如Info(基本信息)对象、Server(服务器地址URL)对象、Path(相对路径)对象、Parameters(参数)对象等。可以使用转换组件实现智能合约的接口(URL、参数和方法等)映射在Server对象、Path对象、Parameters对象等中描述的(通用接口框架下)接口。每个对象的描述信息(可分为多种字段/元素对应的键值对)可以由转换组件中至少一个可调用组件转换得出,另还存在至少一个可调用组件(可称为组装组件或生成器)可用于组装其他可调用组件得到的对象的描述信息(该待组装的信息可以是序列化后获得的键值对)。智能合约接口描述文件中的特征字段与可调用组件中的特征字段可以存在指定匹配关系。此时,在步骤S203)中的映射可以包括:
S231)基于智能合约接口描述文件中的特征字段,在转换组件中通过存在指定匹配关系的特征字段的可调用组件执行继承;
S232)序列化所述智能合约接口描述文件中的特征字段下的描述信息;
S233)组装序列化后获得的键值对至规范接口描述文件中。
其中,对于序列化后获得的键值对,键值对的关键字key与值value之间可用一种特定符号(例如“=”)间隔,不同键值对之间可以使用另一种特定符号(例如“&”)间隔,例如key1=value1&key2=value2……,因此可以通过特定符号的间隔分别依次完成各个字段/元素的描述信息复制,将复制的描述信息写入至规范接口描述文件中。步骤S231)(可优选以构造函数的执行实现执行继承)和步骤S232)(可优选序列化函数执行)可以被各个与对象对应的可调用组件执行,步骤S233)通过生成器执行,以将各个可调用组件执行的结果按对象下的字段进行组装。需要说明的是,指定匹配关系可以是字符关系表构建的;中间层区块链服务和可调用组件的具体程序实施并不是唯一的,是可以基于测试、使用的效果,构建和使用合适的转换方式。
在一些应用中,转换组件可以包括测试用例组件和样式表组件等,可以支持生成图形化前端测试页面(可以通过访问多功能开发服务地址而呈现),用于呈现文件接口信息与测试接口,从而实现统一的接口信息交付。OpenAPI规范接口描述文件用于描述HTTPRESTFul/JSON-RPC API接口,该描述文件可以详细描述了智能合约网关服务的接口信息,如接口访问URL路径,接口入参数据信息,接口出参数据信息等。外部系统将能参考OpenAPI规范接口描述文件中的信息,可直接编写调用代码,无需了解智能合约与区块链系统具体细节,甚至可基于OpenAPI规范框架,通过该文件动态生成对应的调用代码,实现外部系统快速接入。
在本发明一些具体实施例中,可以通过网关服务完成外部系统与智能合约的访问和数据交互。而网关服务可以具有以下至少一项功能:
地址映射功能:将所述通用接口框架的请求地址,映射至所述区块链系统中所述智能合约的地址;
入参传递功能:将所述通用接口框架的请求参数,转换为所述区块链系统中所述智能合约的输入参数;
返回传递功能:将所述区块链系统中所述智能合约的执行结果,转换并编码为所述规范接口框架的返回数据结构。
网关服务可以使用OpenAPI(规范)接口描述文件进行生成。在第一种示例性的实例中,通过解析OpenAPI接口描述文件,生成RESTFUL路由表配置和脚本文件(例如Shell、Python和Go等语言的脚本文件),表每行包含(通用接口)URL路由地址,接口输入参数描述,接口返回参数描述。在智能合约网关服务被访问时,根据请求的URL路径,查找该路由表中是否存在URL路由地址,若存在,则网关服务向中间层区块链服务获取接口参数信息,并检测请求参数,检测通过后,对请求参数进行动态解析与转换,得到区块链SDK调用智能合约接口需要的各个参数,发起智能合约接口调用,智能合约执行完毕,返回执行结果。将结果转换编码为OpenAPI文件描述的当前接口应返还的数据结构,可以以OpenAPI规范的数据结构返回具有HTTP RESTFul/JSON-RPC接口格式的数据。因此,在此种实例中,对于步骤S3)可以包括:
S301)解析所述规范接口描述文件,生成通用接口路由表配置和指定脚本文件;
S302)通过所述脚本文件生成网关服务;其中,所述网关服务具有所述地址映射功能、所述入参传递功能和所述返回传递功能;所述网关服务在被访问时,通过查询所述通用接口路由表执行所述地址映射功能中的映射。
在本发明网关服务的第二种实例中,通过解析OpenAPI接口描述文件,生成对应的智能合约网关服务代码(例如C语言等代码文件),自动编译代码为可执行程序,作为智能合约服务启动该程序,同时将智能合约服务注册到当前的中间层区块链服务中,可以由中间层区块链服务统一管理。因此,在此种实例中,对于步骤S3)也可以包括:
S301`)解析所述规范接口描述文件,生成可编译的代码文件;
S302`)编译该可编译的代码文件为可执行程序,并对所述可执行程序进行注册;
S303`)将启动的所述可执行程序作为网关服务;其中,所述网关服务具有所述地址映射功能、所述入参传递功能和所述返回传递功能。
在网关服务生成之后,可以生成该网关服务的网关服务地址以及OpenAPI接口信息描述服务地址。生成智能合约网关服务地址,需要是唯一的,生成方式在本发明实施例中并不限制,示例性地,如使用合约地址、创建合约的交易标识符等生成服务地址,也可以根据具体产品需求指定个性化地址。此外,除了可以将前述的规范接口描述文件直接交付之外,也可以生成OpenAPI接口信息描述服务地址(作为一种多功能开发服务地址),开发人员可以访问OpenAPI接口信息描述服务地址,查看生成的智能合约网关服务接口的详细描述信息,该地址除了展示接口信息,还支持在页面中直接测试接口,输入请求数据,测试接口功能,查看返回结果,从而实现统一的地址信息交付。
在本发明的一些实现安全访问的实施例中,前述的数据处理方法还可以包括:
S5)可以针对外部系统的访问配置鉴权或身份信息的认证。
中间层区块链服务可以具有鉴权的功能和/或认证访问发起者的身份。
对于步骤S5),如图2,可以包括:
S501)网关服务重定向首次访问网关服务地址的外部系统至中间层区块链服务的地址;
S502)中间层区块链服务确定访问中间层区块链服务地址的外部系统是否已具有访问识别信息,若已具有,则执行步骤S504),若不具有,则执行步骤S503);
S503)中间层区块链服务接收外部系统的申请并生成访问ID和密钥;
S504)网关服务允许外部系统经网关服务地址的访问。其中,步骤之间可以被配置执行循环、跳转等操作。
网关服务可以判断外部系统的(客户端)网络地址、设备终端等是否首次访问,若是,则重定向访问者至中间层区块链服务的地址。中间层区块链服务可以接收外部系统申请访问标识符(ID)和访问密钥(两者为访问识别信息)。如果已经申请通过,外部系统可以使用已有的ID和密钥,中间层区块链服务可以进行认证该ID和密钥是否与记录的该外部系统申请的访问ID和密钥一致,认证完成后,可以再将外部系统的客户端重定向至网关服务地址。在一些应用中,也可以对外部系统的客户端进行鉴权,鉴权可以基于客户端的物理机标识是否与记录的该外部系统的物理机标识一致,该标识例如MAC地址等物理机标识。
在中间层区块链服务对外部系统完成鉴权和/或认证之后,可以允许该外部系统(客户端)访问智能合约的网关服务地址。在访问网关服务地址之后,前述的数据处理方法还可以包括:
S6)需要首先判断前述的智能合约的可执行文件是否已经实例化至区块链系统中。
智能合约网关服务可以提供对合约的实例化操作,实例化操作可以是在本发明实施例的智能合约的初始化应用场景中,此时外部系统可以通过智能合约网关服务与中间层区块链服务进行数据交互(例如此时在数据链路层转发数据包),也可以与中间层区块链服务直接进行数据交互。智能合约网关服务内部通过区块链SDK,将合约的可执行文件发布到区块链系统中,即可执行文件存储至该区块链系统中且关联至区块链系统中的地址。若在查询或执行指定操作时,可执行文件成功获得返回,则合约实发布到区块链系统成功。需要说明的是,实例化操作是为程序(如可执行文件)分配计算资源以实现该程序的功能,计算资源可以是区块链系统的计算资源,该计算资源可以是区块链系统的虚拟机提供。智能合约的每一个接口已被映射为智能合约网关服务的RESTFul APIURL地址,外部系统发起对相关URL地址的HTTP请求访问,即可轻松访问智能合约的所有接口。智能合约网关服务内部进行参数转换,数据编码,SDK调用等操作,和区块链系统中的智能合约交互。因此,对于可执行文件的实例化操作,如图3,步骤S6)可以包括:
S601)网关服务接收外部系统关于确定智能合约是否实例化的请求,若已实例化,则执行步骤S603),若未实例化,则执行步骤S602);
S602)网关服务向外部系统提供智能合约在区块链系统中的实例化接口,并基于可执行文件和ABI文件完成智能合约的发布;
S603)网关服务接收外部系统调用的智能合约的URL地址。
进一步地,在本发明公开的一种示例性实现异步执行功能的实例中,外部系统通过智能合约网关服务地址来访问对应的智能合约接口服务。返回结果数据库存储的数据是已经处理了与交易结果对应的交易ID等信息,返回结果数据库可以用于外部系统异步调用,与轮训查询结果。由于区块链系统处理交易的吞吐率不高,若外部系统交易数据出现突增的现象,将导致外部系统的交易数据的请求需要长时间阻塞之后,才能得到返回结果。对此,前述的数据处理方法还可以包括:
S7)通过消息中间件缓存由所述网关服务转发的外部系统的交易数据;
S8)通过所述网关服务返回与所述交易数据的状态对应的响应数据至外部系统,其中,所述响应数据包括执行状态和响应标识符。
通过进一步增加的消息中间件(服务),用来平衡与提高交易吞吐率,支持事件推送以及异步调用等。消息中间件可以是ApacheKafka消息中间件,通过点对点模式和/或订阅及发布模式,后端中间层服务节点可多实例部署,可并行执行交易或返回结果,以最佳的速率来平衡与提升两个系统的交易处理速率。
进一步地,在第一种示例性的调用方式中,外部系统发起关于交易数据的请求,该请求中智能合约网关地址会被网关服务转发到消息中间件中缓存,同时智能合约网关服务立即返回响应数据给外部系统,响应数据的状态为正在执行状态并且附带一个响应ID,此后外部系统通过此响应ID来轮询查询交易是否完成。因此,对于轮询方式,前述的数据处理方法还可以包括:
S9)通过所述网关服务接收所述外部系统针对所述响应数据的轮询。
进一步地,在第二种示例性的调用方式中,基于Webhook机制,智能合约网关服务向外部系统提供注册事件推送URL地址,该地址可以作为外部系统的一个服务地址。外部系统发起关于交易数据的请求,该请求中智能合约网关地址会被网关服务转发到消息中间件中缓存,同时网关服务立即返回响应数据返回给外部系统,响应数据的状态为正在执行并且附带第一响应ID,外部系统暂时缓存该第一响应ID。当智能合约服务网关确定与该交易数据对应的执行状态后,将该交易数据对应的执行结果以及第二响应ID作为事件推送给前述的注册事件推送URL地址,外部系统服务接收到与交易数据对应的事件,若通过查找缓存的第一响应ID比对第二响应ID是一致时,则可以基于推送的事件判断该交易数据是否已被智能合约的可执行文件成功执行。因此,可以使用Webhook机制,前述的数据处理方法还可以包括:
S9`)通过所述网关服务为所述外部系统注册用于事件推送的外部通用接口地址,以及
将更新的响应数据作为事件,推送至所述外部通用接口地址,其中,所述外部系统基于所述响应标识符监听所述事件。
在以上各实例的基础上,本发明实施例的数据处理方法还包括:一种区块链系统的交易数据处理方法。
在本发明实施例公开的第一种交互示例中,如图4,该交易数据处理方法包括:
通过网关服务102接收外部系统100发起的交易数据101的请求以及传输的该交易数据101(请求和交易数据可以合并发送);
通过网关服务102转发该请求和该交易数据101至中间层区块链服务103;
中间层区块链服务103(通过区块链SDK)转换(转码、更新数据结构等)请求,向区块链系统105发起转换后的请求和递交相应交易数据104;
中间层区块链服务103转换区块链系统105针对智能合约的可执行文件106的响应数据和/或响应状态,并发送至网关服务102的返回结果数据库107(该数据库可以配置于网关服务中而实现,或可以由该网关服务访问、读写指定服务器上的数据库实现)中;
通过网关服务102发送(推送)返回结果至外部系统100。其中,网关服务和中间层区块链服务的实例可以分别部署一个或多个。
在本发明实施例公开的第二种交互示例中,如图5,该交易数据处理方法包括:
通过网关服务202接收外部系统200发起的交易数据的请求以及传输的该交易数据201;
通过网关服务202转发该请求至消息中间件服务203;
通过消息中间件服务203将各个请求及相应交易数据队列化后依次发送至中间层区块链服务204;
中间层区块链服务204(通过区块链SDK)转换(转码、更新数据结构等)请求,向区块链系统206发起转换后的请求和递交相应交易数据205;
中间层区块链服务204转换区块链系统206的响应数据和/或响应状态,并发送至消息中间件服务203(再由消息中间件服务依次发送到网关服务的返回结果数据库中)或直接发送至网关服务202的返回结果数据库208(该数据库可以配置于网关服务202中而实现,或可以由该网关服务202访问、读写指定服务器上的数据库实现)中;
通过网关服务202发送返回结果至外部系统200。
需要补充说明的是,消息中间件服务和网关服务均可以在中间层区块链服务中注册,由中间层区块链服务执行所需资源(处理器和内存等资源)的管理。前述的各个服务可以是可被执行的计算机程序、脚本文件和/或可被执行的计算机程序的进程,在本发明实施例中均可按此理解。
在本发明实施例的一些关于交易数据和请求的命令行应用中,例如外部系统使用curl执行请求和发送交易数据,此请求和交易数据可以写为:
curl https://网关服务地址/外部系统的标识ID\
-X POST\
-H"返回结果数据对象"\
-d'{"jsonrpc":"2.0","具体指令":"发送交易指令","参数":["哈希值"]}'
其中,网关服务地址可以被网关服务转发至消息中间件服务的地址(在一些指定交易数据规模的应用中,也可以直接转发至中间层区块链服务),请求的方法为POST;返回结果数据对象可以根据需要进行指定,例如返回结果数据对象可以为Content-Type:application/json,可以指定返回json对象;jsonrpc接口(协议)格式可以是2.0版本或其他指定的版本;具体指令(关键字)对应的值可以是符合OpenAPI规范的描述信息文件中记录的各个HTTP RESTFul或JSON RPC接口格式的具体指令,例如,发送交易指令sendTransaction(在其他交互过程中,也可以是获取区块编号blocknumber、获取智能合约地址getReceipt等);参数(关键字)对应的值可以是哈希值或十六进制值等,该哈希值可以为交易数据(在其他交互过程中,也可以是合约地址、区块地址)等。需要说明的是,此处示例中,请求可以有更多的适合实际需要的关键字项(未示出,如id等);前述的具体指令以及以上的请求的数据结构可以不随区块链系统的更新和/或硬分叉等维护而更改,网关服务和中间层区块链服务可以将具体指令与发生改变后的区块链系统进行对应映射(指令转换等),外部系统的使用者只需通过规范数据结构和通用接口完成客户端开发、使用和维护。此请求和交易数据对应的返回结果数据可以包括“"结果":"哈希值"”;
而在经过中间层区块链服务转换后,转换后的结果可以写为:
响应:
……
指定字符1:
指定字符2:'#/外部系统的标识ID'
指定字符3:
……
结果:哈希值
此处作为本发明实施例的一种示例。若通过消息中间件服务发送的返回结果数据,则可以在上述的数据基础上,增加事件ID或响应ID等消息中间件服务实现的序列化的编号。
本发明实施例中通过中间层区块链服务和网关服务,以及优选的消息中间件服务,实现智能合约在区块链系统中使用,根据智能合约的接口定义,通过中间层区块链服务自动生成智能合约网关服务,不需要外部系统针对区块链底层进行耦合,避免了使用中间层区块链服务直接处理外部系统的针对区块链系统的请求以及直接返回结果响应给客户端,本发明实施例中网关服务可以与外部系统在公网或指定私有网络中通信,且网关服务也能够与中间层区块链服务、消息中间件服务在指定私有网络中通信,中间层区块链服务还能够与区块链系统在指定私有网络中通信,因此能够有多层网络隔离。
本发明实施例提供了统一的HTTP RESTFul或JSON RPC服务接口。该接口符合OpenAPI规范,支持生成图形化前端测试页面,用来展示与测试接口。同时中间层区块链服务增加了通用的消息中间件,可以显著提升与平衡交易吞吐量,支持事件订阅与推送,支持异步调用,支持分配应用访问凭证,接口鉴权。
再一方面,本发明实施例提供数据处理装置,该数据处理装置包括:
编译模块,用于接收智能合约的代码文件,编译所述代码文件;
转换模块,用于将编译生成的智能合约接口描述文件,转换为具有通用接口信息的规范接口描述文件;
服务生成模块,用于基于所述规范接口描述文件,生成所述智能合约的网关服务;
地址生成模块,用于生成所述网关服务的网关服务地址。
具体的,所述转换模块具体用于:
确定与所述智能合约对应的区块链系统;
确定所述区块链系统中智能合约的接口与通用接口框架的接口之间的指定匹配关系;
按照规范接口框架的数据结构,通过所述指定匹配关系,将编译生成的智能合约接口描述文件,映射为规范接口描述文件。
具体的,所述网关服务具有以下至少一项功能:
地址映射功能:将所述通用接口框架的请求地址,映射至所述区块链系统中所述智能合约的地址;
入参传递功能:将所述通用接口框架的请求参数,转换为所述区块链系统中所述智能合约的输入参数;
返回传递功能:将所述区块链系统中所述智能合约的执行结果,转换并编码为所述规范接口框架的返回数据结构。
具体的,所述服务生成模块具体用于:
解析所述规范接口描述文件,生成通用接口路由表配置和指定脚本文件;
通过所述脚本文件生成网关服务;其中,
所述网关服务具有所述地址映射功能、所述入参传递功能和所述返回传递功能;
所述网关服务在被访问时,通过查询所述通用接口路由表执行所述地址映射功能中的映射。
具体的,所述服务生成模块具体用于:
解析所述规范接口描述文件,生成可编译的代码文件;
编译该可编译的代码文件为可执行程序,并对所述可执行程序进行注册;
将启动的所述可执行程序作为网关服务;其中,
所述网关服务具有所述地址映射功能、所述入参传递功能和所述返回传递功能。
具体的,所述地址生成模块还用于:
生成多功能开发服务地址,所述多功能开发服务地址用于获取所述规范接口描述文件中接口描述及接口功能测试。
具体的,该数据处理装置还包括:
鉴权/认证模块,用于确定访问中间层区块链服务地址的外部系统已具有访问识别信息,允许访问所述网关服务地址;或
所述鉴权/认证模块用于确定所述外部系统不具有访问识别信息,允许所述外部系统申请访问识别信息。
具体的,该数据处理装置还包括:
实例化模块,用于确定所述可执行文件未被实例化至区块链系统中,通过调用所述网关服务执行所述可执行文件的实例化部署;或
所述实例化模块用于确定所述可执行文件已被实例化至区块链系统中,基于所述外部系统访问的通用接口地址,通过所述网关服务执行所述智能合约的接口调用。
具体的,该数据处理装置还包括:
缓存模块,用于通过消息中间件缓存由所述网关服务转发的外部系统的交易数据;
所述缓存模块用于通过所述网关服务返回与所述交易数据的状态对应的响应数据至外部系统,其中,所述响应数据包括执行状态和响应标识符。
具体的,所述缓存模块还用于:
通过所述网关服务接收所述外部系统针对所述响应数据的轮询
具体的,所述缓存模块还用于:
通过所述网关服务为所述外部系统注册用于事件推送的外部通用接口地址;
将更新的响应数据作为事件,推送至所述外部通用接口地址,其中,所述外部系统基于所述响应标识符监听所述事件。
在本发明中,通过本发明自动为不同的智能合约接口生成中间代理层服务。避免重复造车轮,节约人力,时间与开发成本。中间层区块链服务完全支持自动化生成,客户端只需要对接代理词HTTP RESTFul或者JSON RPC接口,客户端不需要了解底层区块链系统细节。节约了开发人员学习成本。中间层网关服务完全由脚本文件/代码文件自动生成,避免人为产生的错误。增加了附加的通用区块链服务接口,如事件订阅与通知,高吞吐率,异步调用等功能。便于与现有的企业系统等外部系统轻松对接,企业系统无需关心区块链底层实现以及对应SDK使用方式,减少与区块链的对接成本。
再一方面,本发明实施例提供计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现前述的中间层区块链服务的数据处理方法。
又一方面,本发明实施例提供电子设备,电子设备旨在表示各种形式的具备指令处理能力和计算能力的设备,例如,计算机、工控机和服务器等,处理器和存储器可以以片上系统型芯片形式实施(SoC或MCU)或直接使用具备连接接口的电路主板的组装方式。存储器存储有能被至少一个处理器执行的指令,至少一个处理器通过执行所述存储器存储的指令实现前述实施例的方法。
在本发明实施例中,提供一种计算机设备,该计算机设备可以是虚拟和/或物理的服务器,服务器数量可以是一台或多台,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器A01、网络接口A02、存储器(图中未示出)和数据库(图中未示出)。其中,该计算机设备的处理器A01用于提供计算和控制能力。该计算机设备的存储器包括内存储器A03和非易失性存储介质A04。该非易失性存储介质A04存储有操作系统B01、计算机程序B02和数据库(图中未示出)。该内存储器A03为非易失性存储介质A04中的操作系统B01和计算机程序B02的运行提供环境。该计算机设备的数据库可用于存储区块链系统的返回结果数据。该计算机设备的网络接口A02用于与外部的终端通过网络连接通信。该计算机程序B02被处理器A01执行时以实现前述的数据处理方法或交易数据处理方法。
本发明中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。以上结合附图详细描述了本发明实施例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。
本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得单片机、芯片或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质可以是非瞬时的,存储介质可以包括:U盘、硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、闪存(Flash memory)、磁碟或者光盘等各种可以存储程序代码的介质。
此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。

Claims (13)

1.一种中间层区块链服务的数据处理方法,其特征在于,该数据处理方法包括:
接收智能合约的代码文件,编译所述代码文件;
将编译生成的智能合约接口描述文件,转换为具有通用接口信息的规范接口描述文件,包括:确定与所述智能合约对应的区块链系统;确定所述区块链系统中智能合约的接口与通用接口框架的接口之间的指定匹配关系;按照规范接口框架的数据结构,通过所述指定匹配关系,将编译生成的智能合约接口描述文件,映射为规范接口描述文件;其中,按照规范接口框架的数据结构,通过所述指定匹配关系,将编译生成的智能合约接口描述文件,映射为规范接口描述文件,包括:基于智能合约接口描述文件中的特征字段,在转换组件中通过存在指定匹配关系的特征字段的可调用组件执行继承;序列化所述智能合约接口描述文件中的特征字段下的描述信息;组装序列化后获得的键值对至规范接口描述文件中;
基于所述规范接口描述文件,生成所述智能合约的网关服务;
生成所述网关服务的网关服务地址。
2.根据权利要求1所述的中间层区块链服务的数据处理方法,其特征在于,所述基于所述规范接口描述文件,生成所述智能合约的网关服务,其中所述网关服务具有以下至少一项功能:
地址映射功能:将所述通用接口框架的请求地址,映射至所述区块链系统中所述智能合约的地址;
入参传递功能:将所述通用接口框架的请求参数,转换为所述区块链系统中所述智能合约的输入参数;
返回传递功能:将所述区块链系统中所述智能合约的执行结果,转换并编码为所述规范接口框架的返回数据结构。
3.根据权利要求2所述的中间层区块链服务的数据处理方法,其特征在于,所述基于所述规范接口描述文件,生成所述智能合约的网关服务,包括:
解析所述规范接口描述文件,生成通用接口路由表配置和指定脚本文件;
通过所述脚本文件生成网关服务;其中,
所述网关服务具有所述地址映射功能、所述入参传递功能和所述返回传递功能;
所述网关服务在被访问时,通过查询所述通用接口路由表执行所述地址映射功能中的映射。
4.根据权利要求2所述的中间层区块链服务的数据处理方法,其特征在于,所述基于所述规范接口描述文件,生成所述智能合约的网关服务,包括:
解析所述规范接口描述文件,生成可编译的代码文件;
编译该可编译的代码文件为可执行程序,并对所述可执行程序进行注册;
将启动的所述可执行程序作为网关服务;其中,
所述网关服务具有所述地址映射功能、所述入参传递功能和所述返回传递功能。
5.根据权利要求1所述的中间层区块链服务的数据处理方法,其特征在于,该数据处理方法还包括:
生成多功能开发服务地址,所述多功能开发服务地址用于获取所述规范接口描述文件中接口描述及接口功能测试。
6.根据权利要求1所述的中间层区块链服务的数据处理方法,其特征在于,该数据处理方法还包括:
确定访问中间层区块链服务地址的外部系统已具有访问识别信息,允许访问所述网关服务地址;或
确定所述外部系统不具有访问识别信息,允许所述外部系统申请访问识别信息。
7.根据权利要求6所述的中间层区块链服务的数据处理方法,其中编译所述智能合约的代码文件后还生成所述智能合约的可执行文件,其特征在于,该数据处理方法还包括:
确定所述可执行文件未被实例化至区块链系统中,通过调用所述网关服务执行所述可执行文件的实例化部署;或
确定所述可执行文件已被实例化至区块链系统中,基于所述外部系统访问的通用接口地址,通过所述网关服务执行所述智能合约的接口调用。
8.根据权利要求1所述的中间层区块链服务的数据处理方法,其特征在于,该数据处理方法还包括:
通过消息中间件缓存由所述网关服务转发的外部系统的交易数据;
通过所述网关服务返回与所述交易数据的状态对应的响应数据至外部系统,其中,所述响应数据包括执行状态和响应标识符。
9.根据权利要求8所述的中间层区块链服务的数据处理方法,其特征在于,该数据处理方法还包括:
通过所述网关服务接收所述外部系统针对所述响应数据的轮询。
10.根据权利要求9所述的中间层区块链服务的数据处理方法,其特征在于,该数据处理方法还包括:
通过所述网关服务为所述外部系统注册用于事件推送的外部通用接口地址;
将更新的响应数据作为事件,推送至所述外部通用接口地址,其中,所述外部系统基于所述响应标识符监听所述事件。
11.一种数据处理装置,其特征在于,该数据处理装置包括:
编译模块,用于接收智能合约的代码文件,编译所述代码文件;
转换模块,用于将编译生成的智能合约接口描述文件,转换为具有通用接口信息的规范接口描述文件,包括:包括:确定与所述智能合约对应的区块链系统;确定所述区块链系统中智能合约的接口与通用接口框架的接口之间的指定匹配关系;按照规范接口框架的数据结构,通过所述指定匹配关系,将编译生成的智能合约接口描述文件,映射为规范接口描述文件;其中,按照规范接口框架的数据结构,通过所述指定匹配关系,将编译生成的智能合约接口描述文件,映射为规范接口描述文件,包括:基于智能合约接口描述文件中的特征字段,在转换组件中通过存在指定匹配关系的特征字段的可调用组件执行继承;序列化所述智能合约接口描述文件中的特征字段下的描述信息;组装序列化后获得的键值对至规范接口描述文件中;
服务生成模块,用于基于所述规范接口描述文件,生成所述智能合约的网关服务;
地址生成模块,用于生成所述网关服务的网关服务地址。
12.一种电子设备,其特征在于,该电子设备包括:
至少一个处理器;
存储器,与所述至少一个处理器连接;
其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现权利要求1至10中任意一项权利要求所述的方法。
13.一种计算机可读存储介质,存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行权利要求1至10中任意一项权利要求所述的方法。
CN202111580425.0A 2021-12-22 2021-12-22 中间层区块链服务的数据处理方法、装置、设备及存储介质 Active CN114285859B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111580425.0A CN114285859B (zh) 2021-12-22 2021-12-22 中间层区块链服务的数据处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111580425.0A CN114285859B (zh) 2021-12-22 2021-12-22 中间层区块链服务的数据处理方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN114285859A CN114285859A (zh) 2022-04-05
CN114285859B true CN114285859B (zh) 2023-08-29

Family

ID=80873704

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111580425.0A Active CN114285859B (zh) 2021-12-22 2021-12-22 中间层区块链服务的数据处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN114285859B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115086394A (zh) * 2022-06-15 2022-09-20 亚信科技(中国)有限公司 业务信息处理方法、装置及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111512333A (zh) * 2019-11-08 2020-08-07 支付宝(杭州)信息技术有限公司 实现基于区块链的去中心化应用的系统和方法
CN111770130A (zh) * 2020-05-08 2020-10-13 贵阳信息技术研究院(中科院软件所贵阳分部) 一种区块链分布式组网中软硬件资源高效协同复用的方法
CN112148613A (zh) * 2020-09-28 2020-12-29 财付通支付科技有限公司 用于测试区块链服务的智能合约的生成方法及装置
CN112686671A (zh) * 2021-01-07 2021-04-20 腾讯科技(深圳)有限公司 基于区块链的智能合约部署方法、装置、设备以及介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111512333A (zh) * 2019-11-08 2020-08-07 支付宝(杭州)信息技术有限公司 实现基于区块链的去中心化应用的系统和方法
CN111770130A (zh) * 2020-05-08 2020-10-13 贵阳信息技术研究院(中科院软件所贵阳分部) 一种区块链分布式组网中软硬件资源高效协同复用的方法
CN112148613A (zh) * 2020-09-28 2020-12-29 财付通支付科技有限公司 用于测试区块链服务的智能合约的生成方法及装置
CN112686671A (zh) * 2021-01-07 2021-04-20 腾讯科技(深圳)有限公司 基于区块链的智能合约部署方法、装置、设备以及介质

Also Published As

Publication number Publication date
CN114285859A (zh) 2022-04-05

Similar Documents

Publication Publication Date Title
CN108306877B (zh) 基于node js的用户身份信息的验证方法、装置和存储介质
WO2021073202A1 (zh) 智能合约处理方法、计算机设备及存储介质
US10397051B1 (en) Configuration and testing of network-based service platform resources using a service platform specific language
US11561997B2 (en) Methods, systems, and computer readable media for data translation using a representational state transfer (REST) application programming interface (API)
CN103843308A (zh) 跨越多个计算设备分布的应用的执行
CN108415710A (zh) 在智能对话开发平台上发布、调用api的方法和系统
US10747600B2 (en) Extensibility for third party application programming interfaces
CN104320396A (zh) 数据交互装置和方法
CN111934940B (zh) 配置化的服务请求方法及装置、电子设备和存储介质
CN109510799B (zh) 页面展示方法、浏览器客户端、设备及存储介质
CN111510330A (zh) 接口管理装置、方法及存储介质
CN113381866A (zh) 基于网关的服务调用方法、装置、设备及存储介质
US9128886B2 (en) Computer implemented method, computer system, electronic interface, mobile computing device and computer readable medium
CN114285859B (zh) 中间层区块链服务的数据处理方法、装置、设备及存储介质
CN110737425B (zh) 一种计费平台系统的应用程序的建立方法及装置
US9503351B1 (en) Deployment feedback for system updates to resources in private networks
US11487510B2 (en) Dynamic web-based integrated development environment
CN110780915B (zh) 一种数据处理方法、装置和存储介质
US20230267430A1 (en) Data processing method and device, and computer-readable storage medium
CN115098528B (zh) 业务处理方法、装置、电子设备及计算机可读存储介质
CN115774584A (zh) 数据处理方法、装置、电子设备和存储介质
CN115567604A (zh) 基于微服务系统的服务调用方法及服务器
CN112866268B (zh) 报文处理方法及系统
US11656972B1 (en) Paginating results obtained from separate programmatic interfaces
CN114840574A (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