一种智能合约代码的生成方法、程序及设备
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种智能合约代码的生成方法、程序及设备。
背景技术
在区块链技术领域,业务方通常会在区块链网络中部署智能合约来实现业务。 一般而言,业务方通常会基于自己业务的实际情况来开发智能合约代码,这往往意味着不小的工作量。
此外,开发智能合约代码要求一定的技术门槛,技术水平较低的业务方开发智能合约代码的效率较低。
发明内容
为了解决现有的智能合约代码的开发方法存在的工作量大且效率低的问题,本说明书实施例提供一种智能合约代码的生成方法、程序及设备,方案如下:
根据本说明书实施例的第1方面,提供一种智能合约代码生成的方法,应用于自动化合约程序,所述方法包括:
向业务方提供数据表模板集合;其中,所述数据表模板集合包括第一数据表模板,所述第一数据表模板包括特征名称字段、特征类型字段与特征描述字段,用于配置针对所述业务方提交给区块链的业务数据的存储方式;
接收所述业务方向所述第一数据表模板中输入的至少一组条目参数;其中,向所述第一数据表模板中输入的每组条目参数包括与所述第一数据表模板的各字段一一对应的字段值;
根据预置的模板解析规则,将输入条目参数后的所述数据表模板集合解析成智能合约代码,提供给所述业务方。
根据本说明书实施例的第2方面,提供一种自动化合约程序,包括:
模板提供模块,向业务方提供数据表模板集合;其中,所述数据表模板集合包括第一数据表模板,所述第一数据表模板包括特征名称字段、特征类型字段与特征描述字段,用于配置针对所述业务方提交给区块链的业务数据的存储方式;
第一参数接收模块,接收所述业务方向所述第一数据表模板中输入的至少一组条目参数;其中,向所述第一数据表模板中输入的每组条目参数包括与所述第一数据表模板的各字段一一对应的字段值;
模板解析模块,根据预置的模板解析规则,将输入条目参数后的所述数据表模板集合解析成智能合约代码,提供给所述业务方。
本说明书实施例所提供的技术方案,开发一款自动化合约程序提供给业务方使用,自动化合约程序可以向业务方提供数据表模板,以便业务方根据自己的需求对业务数据存储方式进行配置,然后,自动化合约程序可以根据业务方的配置自动生成智能合约代码。通过本说明书实施例,由于不同的业务方往往都存在区块链存储业务数据的需求,而存储业务数据的需求往往可以用数据表来进行配置,因此,可以针对这种通用需求开发数据表模板,让不同的业务方可以使用数据表模板来进行业务数据的存储方式的配置,而不用再编写这部分智能合约代码,节省了工作量,提升了效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的一种智能合约代码生成的方法的流程示意图;
图2是本说明书实施例提供的一种自动化合约程序的软件结构示意图;
图3是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
众所周知,区块链的主要应用场景是数据存证,存证到区块链中的数据具有不可篡改性。因此,目前几乎所有的业务方在借助区块链开展业务时,都会将至少部分业务数据存储到区块链中。
也就是说,对几乎所有的业务方而言,虽然实际业务千差万别,但是都存在存储业务数据这一通用需求,然而,每个业务方在开发智能合约代码时,都需要自己开发有关业务数据存储方式的代码。
在本说明书的一个或多个实施例中,一方面考虑到可以将业务数据存储这种通用需求提炼出来,另一方面考虑到数据存储方式的配置可以通过结构化的数据表来体现,因此,开发一种自动化合约程序(或称自动化合约工具)提供给不同的业务方使用,自动化合约程序内置有数据表模板,业务方可以填写数据表模板,完成对于业务数据存储方式的配置,然后自动化合约程序根据预置的模板解析规则,自动将业务方配置完毕的数据表模板解析成智能合约代码返回给业务方,业务方也就不需要再开发这部分代码了。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1是本说明书实施例提供的一种智能合约代码生成的方法的流程示意图,包括以下步骤:
S100:向业务方提供数据表模板集合。
本方案的执行主体是自动化合约程序,业务方可以将自动化合约程序安装在自己的计算机设备(如电脑、手机、平板电脑)上进行使用。
自动化合约程序中内置有数据表模板集合(包括至少一个数据表模板),自动化合约程序可以向业务方提供可视化界面,将数据表模板集合展示给业务方,提示业务方对数据表模板集合中的数据表模板进行填写。
当数据表模板集合中包括不止一个数据表模板时,业务方可以选择其中一个数据表模板进行填写,也可以选择全部的数据表模板进行填写。
在本说明书实施例中,数据表模板集合中至少包括第一数据表模板,所述第一数据表模板包括特征名称字段、特征类型字段与特征描述字段,用于配置针对所述业务方提交给区块链的业务数据的存储方式。
当然,后文将会进一步提及,所述第一数据表模板还可以包括更多的其他字段。
S102:接收所述业务方向所述第一数据表模板中输入的至少一组条目参数。
表1示例性地给出了一种第一数据表模板:
表2示例性地给出了另一种第一数据表模板:
业务方可以选择第一数据表模板中的一个空白条目进行输入,每个空白条目用于配置对业务数据的某一个维度的特征进行存储。
对于表1,已经预留了若干空白条目供业务方输入,对于表2,业务方可以手动增加空白条目后再进行输入。
本文所述的“输入”,是指业务方填写第一数据表模板的方式,其具体可以是键入字段值,也可以是语音输入字段值,还可以是在每个空白单元格对应的下拉菜单中选择字段值。
总之,向所述第一数据表模板中输入的每组条目参数包括与所述第一数据表模板的各字段一一对应的字段值,用于表征业务方提交的业务数据的该维度下的特征名称、特征类型以及特征描述。
举例来说,假设业务方是专门售卖艺术品的电商平台,其想要将业务中产生的每一个订单数据提交给区块链进行存储。为此,电商平台在使用自动化合约程序进行配置时,可以按照如下方式配置第一数据表模板:
其中,table指代订单数据整体,可以视为表3的表标识,其是艺术品的订单数据,因此特征类型是艺术品(Art)。art id是指订单数据中的艺术品的标识,art size是指艺术品的尺寸,art type是指艺术品具体所属的种类(如绘画、雕塑),art owner是指艺术品的拥有者。
S104:根据预置的模板解析规则,将输入条目参数后的所述数据表模板集合解析成智能合约代码,提供给所述业务方。
当数据表模板集合中只包括第一数据表模板时,业务方完成对第一数据表模板的配置之后,自动化合约程序就可以根据预置的模板解析规则,将完成配置之后的第一数据表模板解析成智能合约代码,提供给业务方。在实际应用中,当业务方向区块链网络提交封装有业务数据的交易时,该交易调用该智能合约代码,并基于该智能合约代码,将该业务数据以用户通过第一数据表模板定义的存储方式进行存储。
通过图1所示的方法,开发一款自动化合约程序提供给业务方使用,自动化合约程序可以向业务方提供数据表模板,以便业务方根据自己的需求对业务数据存储方式进行配置,然后,自动化合约程序可以根据业务方的配置自动生成智能合约代码。通过本说明书实施例,由于不同的业务方往往都存在区块链存储业务数据的需求,而存储业务数据的需求往往可以用数据表来进行配置,因此,可以针对这种通用需求开发数据表模板,让不同的业务方可以使用数据表模板来进行业务数据的存储方式的配置,而不用再编写这部分智能合约代码,节省了工作量,提升了效率。
此外,在本说明书实施例中,第一数据表模板中还可以包括功能字段,用于配置针对提交给区块链的业务数据的预设功能集合中的至少一种。例如,可以参见表4所示:
预设功能集合是自动化合约程序中预置的,提供了若干预设功能,业务方可以在配置第一数据表模板时选择一个或多个预设功能,然后自动化合约程序生成的合约代码中也会一并包括业务方选择的预设功能对应的代码。
举例来说,预设功能集合中可以包括以下功能中的至少一种:
权限控制功能,用于控制针对业务数据的访问权限;
日志功能,用于生成针对业务数据的操作日志;
溯源功能,用于追溯业务方提交给区块链的每个包含业务数据的业务交易;
数据展示功能,用于以指定展示方案将业务数据输出展示;
触发生效功能,用于设定以业务方配置的存储方式对业务数据进行存储的的生效时间。
需要说明的是,预设功能一般是以业务数据整体为粒度进行配置,因此,对于表3所示,通常只有第一个条目包含预设功能的字段值,例如参见表5:
另外,在本说明书实施例中,所述数据表模板集合还可以包括第二数据表模板,所述第二数据表模板包括特征名称字段与操作方法字段,用于配置针对所述业务方提交给区块链的业务数据的操作方式。
在将输入条目参数后的数据表模板解析成智能合约代码之前,可以接收所述业务方向所述第二数据表模板中输入的至少一组条目参数;其中,向所述第二数据表模板中输入的每组条目参数包括与所述第二数据表模板的各字段一一对应的字段值。
其中,所述操作方法字段对应的字段值包括以下至少一种:
用于表征数据插入操作的字段值(如insert);
用于表征数据修改操作的字段值(如update);
用于表征数据查询操作的字段值(如query);
用于表征数据删除操作的字段值(如delete)。
在实际应用中,一方面,业务方可以向区块链网络提交封装有业务数据的交易,以便调用智能合约代码,将该业务数据以“业务方通过第一数据表模板预先定义的存储方式”进行存储,另一方面,在业务数据被存储后,业务方还可以向区块链网络发起操作交易,以便调用智能合约代码对存储后的业务数据进行插入、修改、查询、删除等操作(业务方通过第二数据表模板预先定义的操作方式)。
表6示例性地给出了一种第二数据表模板:
由于业务方一般是针对数据表模板集合进行输入的,而数据表模板集合中的第一数据表模板与第二数据表模板皆配置完毕后,当然具有关联关系。此外,为了在形式上体现出第一数据表模板与第二数据表模板之间的关联性,第二数据表模板也可以如表7所示:
其中,关联表字段中可以记录配置完毕的第一数据表模板的表标识。
如此,对应于表3所示的配置完成的第一数据表模板,配置完成的第二数据表模板可以是:
或者:
此外,在本说明书实施例中,根据预置的模板解析规则,将输入条目参数后的数据表模板集合解析成智能合约代码的实施方式有多种。可选的一种实施方式为,生成输入条目参数后的数据表模板集合对应的数据库模式schema描述,并基于所述schema描述确定智能合约代码。
例如,对于某个电商平台的业务数据(订单)而言,其可以被业务方通过第一数据表模板配置为以下表结构:
{
orderId:string;//订单id
time:string;//生成时间
operatorId:string;//操作者id
key:orderId;//表主键
}
上述表结构对应的schema描述为:
namespace ContractTableManager;
table TableManager {
Orders:[Order];
}
table Order{
OrderId:string;
time:string;
operatorId:string;
}
root_type TableManager;
自动化合约程序可以根据schema描述来实现对结构化数据(即数据表中的数据)的解析,生成用于调用结构化数据的接口的代码,接着,再生成用于调用接口的方法的代码,在生成的合约代码中,可以实现业务方配置的操作方法调用这些接口来获取数据,进行操作。
另外,在本说明书实施例中,自动化合约程序还可以基于输入条目参数后的数据表模板集合,生成测试框架提供给所述业务方,用于对所述智能合约代码进行测试,如此,业务方不必自行开发测试框架。
图2是本说明书实施例提供的一种自动化合约程序的软件结构示意图,包括:
模板提供模块201,向业务方提供数据表模板集合;其中,所述数据表模板集合包括第一数据表模板,所述第一数据表模板包括特征名称字段、特征类型字段与特征描述字段,用于配置针对所述业务方提交给区块链的业务数据的存储方式;
第一参数接收模块202,接收所述业务方向所述第一数据表模板中输入的至少一组条目参数;其中,向所述第一数据表模板中输入的每组条目参数包括与所述第一数据表模板的各字段一一对应的字段值;
模板解析模块203,根据预置的模板解析规则,将输入条目参数后的所述数据表模板集合解析成智能合约代码,提供给所述业务方。
所述第一数据表模板还包括功能字段,用于配置针对提交给区块链的业务数据的预设功能集合中的至少一种。
所述预设功能集合包括以下功能:
权限控制功能,用于控制针对业务数据的访问权限;
日志功能,用于生成针对业务数据的操作日志;
溯源功能,用于追溯业务方提交给区块链的每个包含业务数据的业务交易;
数据展示功能,用于以指定展示方案将业务数据输出展示;
触发生效功能,用于设定以业务方配置的存储方式对业务数据进行存储的的生效时间。
所述数据表模板集合还包括第二数据表模板,所述第二数据表模板包括特征名称字段与操作装置字段,用于配置针对所述业务方提交给区块链的业务数据的操作方式;
所述装置还包括:
第二参数接收模块204,在所述模板解析模块将输入条目参数后的数据表模板解析成智能合约代码之前,接收所述业务方向所述第二数据表模板中输入的至少一组条目参数;其中,向所述第二数据表模板中输入的每组条目参数包括与所述第二数据表模板的各字段一一对应的字段值。
所述操作装置字段对应的字段值包括以下至少一种:
用于表征数据插入操作的字段值;
用于表征数据修改操作的字段值;
用于表征数据查询操作的字段值;
用于表征数据删除操作的字段值。
所述模板解析模块203,生成输入条目参数后的数据表模板集合对应的数据库模式schema描述,并基于所述schema描述确定智能合约代码。
自动化合约程序还包括:框架生成模块205,基于输入条目参数后的数据表模板集合,生成测试框架提供给所述业务方,用于对所述智能合约代码进行测试。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图1所示的方法。
图3示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1所示的方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务设备,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。