CN112433710A - 一种区块链智能合约生成方法、设备及存储介质 - Google Patents

一种区块链智能合约生成方法、设备及存储介质 Download PDF

Info

Publication number
CN112433710A
CN112433710A CN202011350009.7A CN202011350009A CN112433710A CN 112433710 A CN112433710 A CN 112433710A CN 202011350009 A CN202011350009 A CN 202011350009A CN 112433710 A CN112433710 A CN 112433710A
Authority
CN
China
Prior art keywords
class
name
target
processed
value pair
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.)
Pending
Application number
CN202011350009.7A
Other languages
English (en)
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.)
WeBank Co Ltd
Original Assignee
WeBank 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 WeBank Co Ltd filed Critical WeBank Co Ltd
Priority to CN202011350009.7A priority Critical patent/CN112433710A/zh
Publication of CN112433710A publication Critical patent/CN112433710A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种区块链智能合约生成方法,该方法包括:获取待处理对象类;解析所述待处理对象类,确定至少一个目标键值对;其中,所述目标键值对与所述待处理对象类的类成员具有关联关系;基于至少一个所述目标键值对,生成与目标操作对应的智能合约代码。本申请实施例还公开了一种区块链智能合约生成设备和存储介质。

Description

一种区块链智能合约生成方法、设备及存储介质
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链智能合约生成方法、设备及存储介质。
背景技术
随着计算机技术的飞速发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性和实时性要求,也对技术提出了更高的要求。由于区块链具有去中心化、开放性、自治性和信息不可篡改等特点,在金融科技领域得到的广泛的应用。在区块链运行过程中,通常采用智能合约保证区块链的运行安全。智能合约是一种以信息化方式传播、验证或执行合同的计算机协议。由于智能合约有着处理交易时效率更高,不可逆转,安全的交易以及全自动化流程的优点,近年来得到了广泛的关注以及快速的发展。随着区块链和智能合约的发展,目前区块链的智能合约开发方式在不同的区块链(以太坊和EOS)上是不一样的,造成两者的合约无法通用,再者当区块链上支持多语言类型时,编程语言比较难以理解,需要较强的逻辑思维能力,造成智能合约开发难度增加,如何减小智能合约的开发难度是相关人员亟需解决的问题。
目前为了减小智能合约的开发难度,提出了一种针对增查改删(Create、Retrieve、Update、Delete,CRUD)四类操作的类SQL代码进行标记,并根据标记生成代码语法树,来通过代码语法树自动生成智能合约代码。但是目前自动生成智能合约代码方法中,需要编写大量代码字段与数据表字段的映射关系、数据表条件判断、返回(Getter)和赋值(Setter)的重复代码,导致自动生成智能合约代码过程较为复杂,造成编码效率低。
申请内容
为解决上述技术问题,本申请实施例期望提供一种区块链智能合约生成方法、设备及存储介质,解决了目前根据类SQL代码自动生成智能合约代码的效率较低的问题,有效简化自动生成智能合约代码的过程,并提高了编码效率,丰富了自动生成智能合约代码的实现方案。
本申请的技术方案是这样实现的:
第一方面,一种区块链智能合约生成方法,所述方法包括:
获取待处理对象类;
解析所述待处理对象类,确定至少一个目标键值对;其中,所述目标键值对与所述待处理对象类的类成员具有关联关系;
基于至少一个所述目标键值对,生成与目标操作对应的智能合约代码。
第二方面,一种区块链智能合约生成设备,所述区块链智能合约生成设备包括:存储器、处理器和通信总线;其中:
所述存储器,用于存储可执行指令;
所述通信总线,用于实现所述处理器和所述存储器之间的通信连接;
所述处理器,用于执行所述存储器中存储的区块链智能合约生成程序,实现如上述任一项所述的区块链智能合约生成方法的步骤。
第三方面,一种存储介质,所述存储介质上存储有区块链智能合约生成程序,所述区块链智能合约生成程序被处理器执行时实现如上述任一项所述的区块链智能合约生成方法的步骤。
本申请实施例中,区块链智能合约生成设备获取待处理对象类,并解析待处理对象类,确定至少一个目标键值对后,基于至少一个目标键值对,生成与目标操作对应的智能合约代码。这样,通过对待处理对象类进行解析得到至少一个目标键值对来生成与目标操作对应的智能合约代码,解决了目前根据类SQL代码自动生成智能合约代码的效率较低的问题,有效简化自动生成智能合约代码的过程,并提高了编码效率,丰富了自动生成智能合约代码的实现方案。
附图说明
图1为本申请实施例提供的一种区块链智能合约生成方法的流程示意图;
图2为本申请实施例提供的另一种区块链智能合约生成方法的流程示意图;
图3为本申请实施例提供的又一种区块链智能合约生成方法的流程示意图;
图4为本申请另一实施例提供的一种区块链智能合约生成方法的流程示意图;
图5为本申请实施例提供的一种应用场景的示意图;
图6为本申请实施例提供的另一种应用场景的示意图;
图7为本申请实施例提供的一种区块链智能合约生成设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请的实施例提供一种区块链智能合约生成方法,参照图1所示,方法应用于区块链智能合约生成设备,该方法包括以下步骤:
步骤101、获取待处理对象类。
在本申请实施例中,区块链智能合约生成设备是具备计算分析能力,且能够作为区块链运行节点的设备,可以是实体设备例如可以各种形式的服务器、台式电脑、笔记本电脑、平板电脑、智能手机,甚至是车载电脑等设备,也可以是虚拟设备。
待处理对象类是预先标记好的对象类,可以是用户手动进行标记得到的,也可以是区块链智能合约生成设备进行分析标记得到的。
步骤102、解析待处理对象类,确定至少一个目标键值对。
其中,目标键值对与待处理对象类的类成员具有关联关系。
在本申请实施例中,区块链智能合约生成设备对待处理对象类进行分析,确定待处理对象类中的类成员,基于待处理对象类中的类成员,确定得到至少一个目标键值对。
步骤103、基于至少一个目标键值对,生成与目标操作对应的智能合约代码。
在本申请实施例中,目标操作可以是一些智能合约中常用的操作,例如增(Create)、写(Insert)、改(Update)、查(Select或Retrieve)、删除(Remove或Delete)等;还可以是一些智能合约中特有的操作,例如返回(Set)操作和赋值(Get)操作。基于至少一个目标键值对,生成与目标操作对应的智能合约代码,即将一种形式的智能合约代码对应的至少一个目标键值对,生成对目标操作对应的另一种形式的智能合约代码。
本申请实施例中,区块链智能合约生成设备获取待处理对象类,并解析待处理对象类,确定至少一个目标键值对后,基于至少一个目标键值对,生成与目标操作对应的智能合约代码。这样,通过对待处理对象类进行解析得到至少一个目标键值对来生成与目标操作对应的智能合约代码,解决了目前根据类SQL代码自动生成智能合约代码的效率较低的问题,有效简化自动生成智能合约代码的过程,并提高了编码效率,丰富了自动生成智能合约代码的实现方案。
基于前述实施例,本申请的实施例提供一种区块链智能合约生成方法,参照图2所示,方法应用于区块链智能合约生成设备,该方法包括以下步骤:
步骤201、获取待处理对象类。
在本申请实施例中,以待处理对象类为用户预先标记好的为例进行说明,从一种形式的智能合约代码中获取用户预先标记好的待处理对象类,待处理对象类为智能合约代码中定义的一个完整的类(Class)。示例性的,得到的待处理对象类为Class A{Integerid,String aValue,Class B},B{Integer id,String bValue}。
步骤202、对待处理对象类进行解析,得到待处理对象类的类名。
在本申请实施例中,待处理对象类的类名为用于标识待处理对象类的标识信息。区块链智能合约生成设备对Class A{Integer id,String aValue,Class B},B{Integerid,String bValue}进行解析,确定A为待处理对象类的类名。
步骤203、基于待处理对象类的类名和预设类标识符,生成类名键值对。
其中,至少一个目标键值对包括类名键值对。
在本申请实施例中,类名键值对可以采用<待处理对象类的类名,预设类标识符>形式或者<预设类标识符,待处理对象类的类名>形式来表示。预设类标识符指的是用于表示类的符号,通常可以采用Class、class或者CLASS表示。以预设类标识符为class为例进行说明,待处理对象类的类名A和预设类标识符class,生成类名键值对<class,A>。
步骤204、对待处理对象类进行解析,得到待处理对象类包括的至少一个类成员。
在本申请实施例中,在待处理对象类的实际应用中,待处理对象类包括至少一个类成员。示例性的,对待处理对象类Class A{Integer id,String aValue,Class B},B{Integer id,String bValue}进行解析,得到待处理对象类包括的全部类成员,为Integerid、String aValue和Class B。
步骤205、确定至少一个类成员的数据类型和目标成员名。
在本申请实施例中,类成员通常由数据类型和目标成员名组成,除嵌套类型的子类外,这样,可以对嵌套类型的子类进行数据类型预设,预设的数据类型可以根据要生成的智能合约的特性来确定。示例性的,针对类成员Integer id,可以确定数据类型为Integer,目标成员名为id。
步骤206、基于至少一个类成员的数据类型和目标成员名,得到至少一个类成员的类成员键值对。
其中,至少一个目标键值对包括至少一个类成员的类成员键值对。
在本申请实施例中,对至少一个类成员的数据类型和目标成员名中的每一类成员的数据类型和目标成员名进行处理,得到对应的类成员键值对。示例性的,假设有Integerid和String aValue两个类成员时,得到2个类成员的数据类型和目标成员依次为:类成员Integer id的数据类型Integer和目标成员名id,类成员String aValue的数据类型String和目标成员名aValue,这样,对应的,根据每一类成员的数据类型和目标成员名生成得到对应的键值对,即可得到对应的2个类成员的类成员键值对:<Integer,id>和<String,aValue>。
步骤207、确定对至少一个目标键值对进行智能合约代码生成时的处理顺序。
在本申请实施例中,确定的处理顺序可以是根据获取得到每一目标键值对的顺序。示例性的,针对类名键值对、2个类成员的类成员键值对:<Integer,id>和<String,aValue>时,可以得到的处理顺序为类名键值对、<Integer,id>和<String,aValue>。其中,<Integer,id>和<String,aValue>的顺序是根据对应的类成员在待处理对象类中的顺序来确定的。
步骤208、确定目标操作。
在本申请实施例中,目标操作可以是例如Insert、Update、Select、Remove、Set和Get这些操作中的一个操作,或者多个操作。目标操作包括的操作可以根据实际情况来确定。示例性的,以目标操作为Create操作为例进行说明。
步骤209、按照处理顺序对至少一个目标键值对进行处理,生成与目标操作对应的智能合约代码。
在本申请实施例中,按照处理顺序为类名键值对、<Integer,id>和<String,aValue>,首先对<class,A>进行处理,得到与目标操作Create对应的表(table)智能合约临时代码为”createTable(“A”);”,然后对<Integer,id>进行处理,得到与目标操作Create对应的智能合约临时代码为”createTable(“A”,“id”);”,最后,对<String,aValue>进行处理,得到与目标操作Create对应的智能合约临时代码为”createTable(“A”,“id”,“aValue”);”。
需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。
本申请实施例中,区块链智能合约生成设备获取待处理对象类,并解析待处理对象类,确定至少一个目标键值对后,基于至少一个目标键值对,生成与目标操作对应的智能合约代码。这样,通过对待处理对象类进行解析得到至少一个目标键值对来生成与目标操作对应的智能合约代码,解决了目前根据类SQL代码自动生成智能合约代码的效率较低的问题,有效简化自动生成智能合约代码的过程,并提高了编码效率,丰富了自动生成智能合约代码的实现方案。并且,并未限定目标键值对包括的数据类型,有效增加了自动生成智能合约代码实现方案的应用场景,减少了不熟悉智能合约或区块链的开发人员在开发区块链应用时管理区块链数据的难度,有效提高了用户的使用体验效果。
基于前述实施例,本申请的实施例提供一种区块链智能合约生成方法,参照图3所示,方法应用于区块链智能合约生成设备,该方法包括以下步骤:
步骤301、获取待处理对象类。
步骤302、对待处理对象类进行解析,得到待处理对象类的类名。
步骤303、基于待处理对象类的类名和预设类标识符,生成类名键值对。
其中,至少一个目标键值对包括类名键值对。
步骤304、对待处理对象类进行解析,得到待处理对象类包括的至少一个类成员。
步骤305、确定至少一个类成员中属于待处理对象类嵌套包括的子类的类成员,得到第一目标类成员。
在本申请实施例中,第一目标类成员为待处理对象类嵌套包括的子类。示例性的,在对待处理对象类Class A{Integer id,String aValue,Class B},B{Integer id,StringbValue}进行解析,得到待处理对象类包括的全部类成员:Integer id、String aValue和Class B,可以确定Class B为待处理对象类嵌套包括的子类,对应的第一目标类成员为Class B。
步骤306、确定第一目标类成员的数据类型为预设数据类型。
其中,预设数据类型用于指示子类的数据类型。
在本申请实施例中,在生成的智能合约代码为Table表智能合约时,由于生成的代码基于Table表合约进行,根据Table表的特性,允许传入的字段类型为整型、字符串类型和对象类型,且字段类型为整型时,最终生成的合约代码将以字符串类型保存。因此,第一目标类成员的预设数据类型可以确定为字符串类型,对应的记为string类型。
步骤307、从待处理对象类中,获取第二目标类成员的数据类型。
其中,第二目标类成员为待处理对象类中除第一目标类成员外的类成员。
在本申请其他实施例中,第二目标类成员为除待处理对象类嵌套包括的子类外的普通类成员。示例性的,在得到待处理对象类包括的全部类成员:Integer id、StringaValue和Class B时,第二目标类成员包括Integer id和String aValue,从待处理对象类Class A{Integer id,String aValue,Class B},B{Integer id,String bValue},可以确定第二目标类成员Integer id的数据类型为整型Integer,第二目标类成员String bValue的数据类型为字符型String。
步骤308、从待处理对象类中,获取至少一个类成员的参考成员名。
在本申请实施例中,至少一个类成员的参考成员名为在待处理对象类中,每一类成员的命名内容。示例性的,待处理对象类Class A{Integer id,String aValue,ClassB},B{Integer id,String bValue}中,包括3个类成员的参考名依次对应为id、aValue和B。
步骤309、基于至少一个类成员的参考成员名,得到至少一个类成员的目标成员名。
在本申请实施例中,对至少一个类成员的参考成员名进行处理,得到至少一个类成员的目标成员名。示例性的,可以是将至少一个类成员的参考成员名中的字母进行大小写转换,例如将大写字母转换为小写字母,或者将小写字母转换为大写字母等,以将大写字母转换为小写字母为例进行说明,得到至少一个类成员的目标成员名为a、id、avalue和b。
步骤310、基于至少一个类成员的数据类型和目标成员名,得到至少一个类成员的类成员键值对。
其中,至少一个目标键值对包括至少一个类成员的类成员键值对。
在本申请实施例中,得到的至少一个类成员的类成员键值对包括:<class,a>、<integer,id>、<string,avalue>和<class,b>。
步骤311、从待处理对象类中,获取标记为目标身份标识的第一参考类成员。
其中,第一类成员属于待处理对象类的外部类,第一参考类成员属于至少一个类成员。
在本申请实施例中,目标身份标识的第一参考类成员为待处理对象中存在的对象,用于指示操作对应的具体对象。示例性的,目标身份标识可以用符号ID或id来表示,这样,从待处理对象类Class A{Integer id,String aValue,Class B},B{Integer id,String bValue}中,可以确定目标身份标识ID或id对应的类成员为Class A对应的Integerid和Class B对应的Integer id,但Class B属于Class A的嵌套的子类,因此,无需考虑Class B对应的Integer id,这样,可以确定第一参考类成员为Class A对应的Integer id。
步骤312、确定除第一参考类成员外的第二参考类成员在待处理对象类中的顺序,得到第二参考类成员的排序顺序。
其中,第二参考类成员属于至少一个类成员。
在本申请实施例中,在待处理对象类Class A{Integer id,String aValue,ClassB},B{Integer id,String bValue}中,除Class A对应的第一参考类成员Integer id外,还包括类成员String aValue和Class B,即第二参考类成员String aValue和第二参考类成员Class B,确定第二参考类成员String aValue在除第一参考类成员外的第二参考类成员在待处理对象类中的顺序为1,第二参考类成员Class B的顺序为2。
步骤313、确定待处理对象类的类名排序为第一、第一参考类成员排序为第二、第二参考类成员的排序顺序加2的排序顺序为处理顺序。
在本申请实施例中,示例性的,得到的处理顺序为A、id、aValue和B。
步骤314、确定目标操作。
在本申请实施例中,以目标操作为增加操作creat操作为例进行说明。
步骤315、按照处理顺序对至少一个目标键值对进行处理,生成与目标操作对应的智能合约代码。
在本申请实施例中,按照处理顺序为A、id、String aValue和Class B,对至少一个类成员的类成员键值对包括:<class,a>、<integer,id>、<string,avalue>和<class,b>依次进行处理。第一,对<class,a>进行处理,生成得到目标操作creat对应的临时智能合约代码”createTable(“a”);”,其中,a作为生成的Table表的表名;第二,对<integer,id>进行处理,生成得到目标操作creat对应的临时智能合约代码”createTable(“table_name”,“id”);”;第三,对<string,avalue>进行处理,生成得到目标操作creat对应的临时智能合约代码”createTable(“table_name”,“id”,“avalue”);”;最后,对<class,b>进行处理,生成得到目标操作creat对应的智能合约代码”createTable(“table_name”,“id”,“avalue”,“b”);”。即最终生成的智能合约代码为”createTable(“table_name”,“id”,“avalue”,“b”);”。
基于前述实施例,在本申请其他实施例中,步骤303可以由步骤a11~a14来实现:
步骤a11、获取待处理对象类的参考类名。
在本申请实施例中,待处理对象类的参考类名为在待处理对象类中定义的待处理对象类的定义类名。示例性的,待处理对象类Class A{Integer id,String aValue,ClassB},B{Integer id,String bValue}中,待处理对象类的参考类名为A。
其中,智能合约设备执行步骤a11后,根据待处理对象类的参考类名包括的字母的特点,选择执行步骤a12,或者步骤a13,或者步骤a14。在待处理对象类的参考类名属于驼峰式命名时,选择执行步骤a12,在待处理对象类的参考类名包括的字母均为大写字母时,选择执行步骤a13,在待处理对象类的参考类名包括的字母均为小写字母时,选择执行步骤a14。
步骤a12、若待处理对象类的参考类名属于驼峰式命名,在待处理对象类的参考类名包括的第一类型字母前加入目标连接符,并将待处理对象类的类名包括的第一类型字母替换为对应的第二类型字母,得到待处理对象类的类名。
其中,第一类型字母与第二类型字母不同。
在本申请实施例中,若第一类型字母是大写字母,对应的第二类型字母是小写字母,若第一类型字母是小写字母,对应的第二类型字母是大写字母。假设待处理对象类Class AppTable{Integer id,String aValue,Class B},B{Integer id,String bValue}时,以目标连接符为“_”、第一类型字母是大写字母和第二类型字母是小写字母为例进行说明,对应的待处理对象类的参考类名为AppTable,属于驼峰式命名法,则得到的待处理对象类的类名为app_table。
步骤a13、若待处理对象类的参考类名包括的字母均为第一类型字母,将第二参考成员名包括的字母替换为对应的第二类型字母,得到待处理对象类的类名。
在本申请实施例中,待处理对象类Class A{Integer id,String aValue,ClassB},B{Integer id,String bValue}中,待处理对象类的参考类名为A,包括的字母均为大写字母,因此,得到待处理对象类的类名为a。
步骤a14、若待处理对象类的参考类名包括的字母均为第二类型字母,将待处理对象类的参考类名作为待处理对象类的类名。
在本申请实施例中,待处理对象类Class a{Integer id,String aValue,ClassB},B{Integer id,String bValue}中,待处理对象类的参考类名为a,包括的字母均为小写字母,因此,得到待处理对象类的类名为就为待处理对象类的参考类名a,无需进行转换处理。
对应的,步骤309可以由步骤b11~b14来实现:
步骤b11、对至少一个类成员的参考成员名进行分组,得到命名方式为驼峰式命名法的第一参考成员名,命名方式为第一类型字母的第二参考成员名和命名方式为第二类型字母的第三参考成员名。
在本申请实施例中,以第一类型字母是大写字母,第二类型字母是小写字母为例进行说明,驼峰式命名法(Camel-Case)又称骆驼式命名法,是电脑程式编写时的一套命名规则或命名惯例,正如它的名称CamelCase所表示的那样,是指混合使用大小写字母来构成变量和函数的名字,程序员们为了自己的代码能更容易的在同行之间交流,所以多采取统一的可读性比较好的命名方式。示例性的,对至少一个类成员的参考成员名id、aValue和B进行分组,可以得到命名方式为驼峰式命名法的第一参考成员名aValue,得到命名方式为第一类型字母的第二参考成员名B,得到命名方式为第二类型字母的第三参考成员名id。
步骤b12、基于第一参考成员名,在第一参考成员名包括的第一类型字母前加入目标连接符,并将第一参考成员名包括的第一类型字母替换为对应的第二类型字母,得到第一参考成员名对应的第一中间成员名。
在本申请实施例中,目标连接符可以是下划连接线“_”或者连接线“-”等连接符号。示例性的,针对第一参考成员名aValue,得到的第一中间成员名a_value。
步骤b13、基于第二参考成员名,将第二参考成员名包括的字母替换为对应的第二类型字母,得到第二参考成员名对应的第二中间成员名。
在本申请实施例中,示例性的,第二参考成员名B得到的第二中间成员名为b。
步骤b14、基于第一中间成员名、第二中间成员名和第三参考成员名,得到第一目标类成员的目标成员名和第二目标类成员的目标成员名。
其中,至少一个类成员的目标成员名包括第一目标类成员的目标成员名和第二目标类成员的目标成员名。
在本申请实施例中,因为第三参考成员名已经为约定好的第二类型字母,因此,可以无需对第三参考成员名进行转换处理。由于第一目标类成员为Class B,第二目标类成员为Integer id和String aValue,对第一中间成员名、第二中间成员名和第三参考成员名id、a_value和b进行分组,得到第一目标类成员名的目标成员名为b,第二目标类成员名的目标成员名为id和a_value。
基于前述实施例,在本申请其他实施例中,步骤b14可以由步骤b141~b143来实现:
步骤b141、从第一中间成员名、第二中间成员名和第三参考成员名,确定第一目标类成员对应的成员名,得到第一目标类成员的第三中间成员名。
在本申请实施例中,从第一中间成员名、第二中间成员名和第三参考成员名id、a_value和b中,确定第一目标类成员的第三中间成员名为b。
步骤b142、采用子类标识对第三中间成员名进行标识,得到第一目标类成员的目标成员名。
在本申请实施例中,为了区分第一目标类成员即嵌套子类与父类,因此,需对第一目标类成员进行标识区分,因此,可以采用用于标识嵌套子类的子类标识来实现区分,子类标识可以是预先约定好的用于标识嵌套子类的一种符号,也可以是字符,例如可以采用“join_”来作为子类标识,对应的,得到第一目标类成员的目标成员名为join_b。这样,在区块链智能合约生成设备识别到join_字符时,就可以确定对应的类成员为嵌套子类。
步骤b143、从第一中间成员名、第二中间成员名和第三参考成员名,确定第二目标类成员对应的成员名,得到第二目标类成员的目标成员名。
在本申请其他实施例中,由于第二类目标类成员均不是特殊类成员,所以无需进行任何处理,直接可以确定进行字母转换处理后的类成员名为对应的目标成员名。
对应的,步骤315可以由步骤c11~c13来实现:
步骤c11、若至少一个目标键值包括具有子类标识的目标成员名,去除目标成员名的子类标识,得到目标成员名包括的目标子类名。
在本申请实施例中,若至少一个目标键值包括具有子类标识的目标成员名,直接按照处理顺序对至少一个目标键值对的每一键值对进行处理,生成与目标操作对应的生成代码。示例性的,至少一个目标键值对<class,a>、<integer,id>、<string,avalue>和<class,join_b>,其中,<class,join_b>中的join_b具有子类标识join_,因此去除join_,可以得到join_b包括的目标子类名b。
步骤c12、基于目标子类名,生成用于实现检测目标子类名对应的区块链数据表是否存在的检测代码。
在本申请实施例中,为了保证嵌套的子类对应的表在区块链中有已映射的数据表,所以需要生成检测代码,否则,生成的智能合约代码实现没有意义。
步骤c13、生成用于实现若目标子类名对应的区块链数据表存在,按照处理顺序对至少一个目标键值对的每一键值对进行处理,生成与目标操作对应的生成代码。
其中,智能合约代码包括检测代码和生成代码。
基于前述实施例,在本申请其他实施例中,步骤c12可以由步骤c121~c123来实现:
步骤c121、生成用于实现获取目标子类名对应的区块链数据表的第一代码。
在本申请实施例中,示例性的,第一代码可以记为”Table tableB=openTable(“b”);”。
步骤c122、生成用于实现判断是否获取到目标子类名对应的区块链数据表的第二代码。
步骤c123、生成用于实现若未获取到目标子类名对应的区块链数据表时,生成提示信息的第三代码。
其中,提示信息用于提示获取目标子类名对应的区块链数据表出错,检测代码包括第一代码、第二代码和第三代码。
基于前述实施例,本申请实施例提供一种区块链智能合约生成方法,实现步骤参照图4所示,包括:
步骤41、扫描标记的对象类,得到键值对。
步骤42、将键值对按照扫描顺序插入先进先出(First In First Out,FIFO)的缓存队列。
其中,扫描标记的对象类时,将先扫描对象类的类名,再扫描对象类中的类成员,即各个字段。
首先,扫描获取到对象类的类名后,以类名键值对放入FIFO缓存队列中。例如用户A类,其类名为A,则对应的数据表名映射为纯小写的”a”表,以类名键值对<class,a>放入缓存队列中;其次扫描该对象类中包含的字段类型和字段名,即前述的数据类型和目标成员名,由于生成的代码基于Table表合约进行,根据Table的特性,传入的字段类型仅支持整型、字符串类型、对象类型,且字段类型为整型时,最终生成的合约代码将以字符串类型保存。对象类中至少包含一个标记为Id,可以记为名为id的字段,可以将标记为ID的字段作为表的主键值传入缓存队列中。例如,A对象类中标记为ID的字段为整型字段id,这样,可以将键值对<int,id>放入缓存队列中。
示例性的,A类为class A{Integer id,String aValue,Class B},B{Integer id,String bValue}时,可以确定A对象中包含一个标记为Id的主键整型字段id,一个字符串字段aValue,一个嵌套的子类B对象类,其中,嵌套的子类B对象类中包含嵌套的子类B对象的主键整型字段id和字符串类型aValue。
下面举例说明扫描A类为class A{Integer id,String aValue,Class B},B{Integer id,String bValue}的过程,主要流程如下图5所示,包括:
步骤51、扫描对象类;
步骤52、得到类名键值对;
步骤53、将类名键值对存储至FIFO缓存队列;
步骤54、得到字段键值对;
步骤55、将字段键值对按照扫描顺序依次存储至FIFO缓存队列。
其中,字段键值对与前述至少一个类成员的类成员键值对对应。
其中,在执行步骤51实现扫描对象类的类名时,将类名中的大写字母改为小写字母,类名为A时,对应类名键值对为E1<class,a>。若类名是AppTable,则类名中的大小字母改为对应的小写字母后,在后续大写字母前加入”_”下划线连接,即AppTable得到<class,app_table>的键值对。扫描A类的类名后,将A类的E1键值对插入到FIFO的缓存队列中,得到队列[E1]。
扫描类名后,扫描对象类中的各个字段,扫描获得各个字段的键值对,记录字段的总个数,当队列的长度为总个数+1时,完成扫描。对具体某个字段键值对,检查字段的类型是否为整型或字符串类型,如,扫描A类,确定A类共有3个字段Integer id,String aValue和Class B;其中,扫描字段id,得到了整型字段键值对E2<int,id>,插入缓存队列中得到[E1,E2],扫描A类字符串字段aValue,将驼峰格式的”aValue”转为下划线模式,即在大写字母前加入下划线”_”,并将大写字母转为小写,得到”a_value”,最终得到键值对E3<string,a_value>插入到队列中得到[E1,E2,E3]。
继续扫描可以获得嵌套包含的子对象类B字段,B的类型不是整型和字符串类型,而是对象类。此时对子对象类B的扫描仅扫描类名,不会扫描子类中的字段。扫描B类的类名。得到B类的类名键值对E4为<class,b>,该类名键值对不是第一个键值对,因此是嵌套的子类的键值对,其值为”b”,因此转化为string类型的字段键值对,值从子类名”b”转为”join_b”,得到E4<string,join_b>,将E4插入到缓存队列中得到[E1,E2,E3,E4]。此时队列长度为4,等于A类字段的总个数3加上1(A类的类名键值对),扫描完成。开始从队列中取出键值对生成基于Table合约的代码。
步骤43、从缓存队列取出键值对,生成Table合约。
其中,从扫描完成后得到的缓存队列中,按照FIFO先进先出的顺序,逐个从队列中取出键值对,去取出键值对流程可以参照图6所示,包括:
步骤61、从FIFO缓存队列中取出键值对;
步骤62、判断取出的键值对是否为类名键值对,若是,执行步骤63,若不是,执行步骤64;
步骤63、生成CreatTable表名代码;
步骤64、确定键值对为字段键值对;
步骤65、判断字段键值对是否标记有id,若标记有id,执行步骤66,若未标记标记有id,执行步骤67;
步骤66、生成CreatTable主键id代码;
步骤67、确定字段键值对为非主键字段键值对;
步骤68、判断非主键字段键值对是否具备join_开头,若具备join_开头,执行步骤69,若不具备join_开头,执行步骤610;
步骤69、去除非主键字段键值对中的join_开头后生成CreatTable列名代码;
步骤610、直接生成CreatTable列名代码。
其中,在步骤62中判断取出的键值对是否为类名键值对时,可以通过判断获取键值对的键是否包括class来实现,若包括class,则确定是类名键值对,其值对应的是类名。通常,第一个且唯一一个的类名键值对是对象类的类名;类名键值对中的键通常是int或string类型,其值是字段名,并将进行代码的生成。
执行步骤61~610后,生成得到的智能合约代码的大致格式可以记为为:”createTable(“table_name”,“id”,“column1,column2,column3”);”,其中第一个参数为表名,第二个参数为表的主键值,第三个参数为其余列的列名,多个列时,用逗号相隔。
示例性的,首先从FIFO缓存队列中取出的键值对的键应为class,即第一个类名键值对。根据上文A类的扫描结果,可以得到E1键值对为<class,a>,键是”class”,值是”a”,因此该键值对是类名键值对,传入后可以生成第一部分的临时代码为:”createTable(“a”);”;
继续按照缓存顺序从FIFO缓存队列中取出键值对,可以得到E2键值对<int,id>,其键是int,因此是字段键值对,且判断字段名是id,因此该键值对是主键,将id类型转为string,得到<string,id>,传入后可生成第二部分的代码:”createTable(“a”,“id”);”
继续按照缓存顺序从FIFO缓存队列取出下一个键值对,得到了E3<string,a_value>,其键是string,因此是字段键值对,且字段名不是id,因此转化为列名,若字段名仍为id则抛出重复字段名的错误。作为列名传入,可以生成第三部分代码:”createTable(“a”,“id”,“a_value”);”
继续按照缓存顺序从FIFO缓存队列下一个键值对,得到E4<string,join_b>,其值为”join_b”,以”join_”开头,代表该键值对是嵌套子对象类的类名键值对转化所得,去除”join_”得到子类表名是”b”。嵌套的子类需要确保子类的表在区块链中有已映射的数据表,因此,此处生成额外的检查子类对应的区块链数据表是否存在:根据子类的类名”b”生成临时代码”Table tableB=openTable(“b”);assert tableB!=null;”,获取链上的表b,并判断b的返回是否为空,为空则则抛错。至此,最终生成得到的智能合约代码可以记为”TabletableB=openTable(“b”);assert tableB!=null;createTable(“a”,“id”,“a_value,join_b”);”。
需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。
本申请实施例中,区块链智能合约生成设备获取待处理对象类,并解析待处理对象类,确定至少一个目标键值对后,基于至少一个目标键值对,生成与目标操作对应的智能合约代码。这样,通过对待处理对象类进行解析得到至少一个目标键值对来生成与目标操作对应的智能合约代码,解决了目前根据类SQL代码自动生成智能合约代码的效率较低的问题,有效简化自动生成智能合约代码的过程,并提高了编码效率,丰富了自动生成智能合约代码的实现方案。并且,并未限定目标键值对包括的数据类型,有效增加了自动生成智能合约代码实现方案的应用场景,减少了不熟悉智能合约或区块链的开发人员在开发区块链应用时管理区块链数据的难度,有效提高了用户的使用体验效果。
基于前述实施例,本申请的实施例提供一种区块链智能合约生成设备,参照图7所示,区块链智能合约生成设备7可以包括:处理器71、存储器72和通信总线73,其中:
存储器72,用于存储可执行指令;
通信总线73,用于实现处理器71和存储器72之间的通信连接;
处理器71,用于执行存储器72中存储的区块链智能合约生成程序,以实现以下步骤:
获取待处理对象类;
解析待处理对象类,确定至少一个目标键值对;其中,目标键值对与待处理对象类的类成员具有关联关系;
基于至少一个目标键值对,生成与目标操作对应的智能合约代码。
在本申请其他实施例中,处理器执行步骤解析待处理对象类,确定至少一个目标键值对时,可以通过以下步骤来实现:
对待处理对象类进行解析,得到待处理对象类的类名;
基于待处理对象类的类名和预设类标识符,生成类名键值对;其中,至少一个目标键值对包括类名键值对;
对待处理对象类进行解析,得到待处理对象类包括的至少一个类成员;
确定至少一个类成员的数据类型和目标成员名;
基于至少一个类成员的数据类型和目标成员名,得到至少一个类成员的类成员键值对;其中,至少一个目标键值对包括至少一个类成员的类成员键值对。
在本申请其他实施例中,处理器执行步骤确定至少一个类成员的数据类型和目标成员名时,可以通过以下步骤来实现:
确定至少一个类成员中属于待处理对象类嵌套包括的子类的类成员,得到第一目标类成员;
确定第一目标类成员的数据类型为预设数据类型;其中,预设数据类型用于指示子类的数据类型;
从待处理对象类中,获取第二目标类成员的数据类型;其中,第二目标类成员为待处理对象类中除第一目标类成员外的类成员;
从待处理对象类中,获取至少一个类成员的参考成员名;
基于至少一个类成员的参考成员名,得到至少一个类成员的目标成员名。
在本申请其他实施例中,处理器执行步骤基于待处理对象类的类名和预设类标识符,生成类名键值对时,可以通过以下步骤来实现:
获取待处理对象类的参考类名;
若待处理对象类的参考类名属于驼峰式命名,在待处理对象类的参考类名包括的第一类型字母前加入目标连接符,并将待处理对象类的类名包括的第一类型字母替换为对应的第二类型字母,得到待处理对象类的类名;其中,第一类型字母与第二类型字母不同;
若待处理对象类的参考类名包括的字母均为第一类型字母,将第二参考成员名包括的字母替换为对应的第二类型字母,得到待处理对象类的类名;
若待处理对象类的参考类名包括的字母均为第二类型字母,将待处理对象类的参考类名作为待处理对象类的类名。
在本申请其他实施例中,处理器执行步骤基于至少一个类成员的参考成员名,得到至少一个类成员的目标成员名时,可以通过以下步骤来实现:
对至少一个类成员的参考成员名进行分组,得到命名方式为驼峰式命名法的第一参考成员名,命名方式为第一类型字母的第二参考成员名和命名方式为第二类型字母的第三参考成员名;
基于第一参考成员名,在第一参考成员名包括的第一类型字母前加入目标连接符,并将第一参考成员名包括的第一类型字母替换为对应的第二类型字母,得到第一参考成员名对应的第一中间成员名;
基于第二参考成员名,将第二参考成员名包括的字母替换为对应的第二类型字母,得到第二参考成员名对应的第二中间成员名;
基于第一中间成员名、第二中间成员名和第三参考成员名,得到第一目标类成员的目标成员名和第二目标类成员的目标成员名;其中,至少一个类成员的目标成员名包括第一目标类成员的目标成员名和第二目标类成员的目标成员名。
在本申请其他实施例中,处理器执行步骤基于第一中间成员名、第二中间成员名和第三参考成员名,得到第一目标类成员的目标成员名和第二目标类成员的目标成员名时,可以通过以下步骤来实现:
从第一中间成员名、第二中间成员名和第三参考成员名,确定第一目标类成员对应的成员名,得到第一目标类成员的第三中间成员名;
采用子类标识对第三中间成员名进行标识,得到第一目标类成员的目标成员名;
从第一中间成员名、第二中间成员名和第三参考成员名,确定第二目标类成员对应的成员名,得到第二目标类成员的目标成员名。
在本申请其他实施例中,处理器执行步骤基于至少一个目标键值对,生成与目标操作对应的智能合约代码时,可以通过以下步骤来实现:
确定对至少一个目标键值对进行智能合约代码生成时的处理顺序;
确定目标操作;
按照处理顺序对至少一个目标键值对进行处理,生成与目标操作对应的智能合约代码。
在本申请其他实施例中,处理器执行步骤确定对至少一个目标键值对进行智能合约代码生成时的处理顺序时,可以通过以下步骤来实现:
从待处理对象类中,获取标记为目标身份标识的第一参考类成员;其中,第一类成员属于待处理对象类的外部类,第一参考类成员属于至少一个类成员;
确定除第一参考类成员外的第二参考类成员在待处理对象类中的顺序,得到第二参考类成员的排序顺序;其中,第二参考类成员属于至少一个类成员;
确定待处理对象类的类名排序为第一、第一参考类成员排序为第二、第二参考类成员的排序顺序加2的排序顺序为处理顺序。
在本申请其他实施例中,处理器执行步骤按照处理顺序对至少一个目标键值对的每一键值对进行处理,生成与目标操作对应的智能合约代码时,可以通过以下步骤来实现:
若至少一个目标键值包括具有子类标识的目标成员名,去除目标成员名的子类标识,得到目标成员名包括的目标子类名;
基于目标子类名,生成用于实现检测目标子类名对应的区块链数据表是否存在的检测代码;
生成用于实现若目标子类名对应的区块链数据表存在,按照处理顺序对至少一个目标键值对的每一键值对进行处理,生成与目标操作对应的生成代码;其中,智能合约代码包括检测代码和生成代码。
在本申请其他实施例中,处理器执行步骤基于目标子类名,生成用于实现检测目标子类名对应的区块链数据表是否存在的检测代码时,可以通过以下步骤来实现:
生成用于实现获取目标子类名对应的区块链数据表的第一代码;
生成用于实现判断是否获取到目标子类名对应的区块链数据表的第二代码;
生成用于实现若未获取到目标子类名对应的区块链数据表时,生成提示信息的第三代码;其中,提示信息用于提示获取目标子类名对应的区块链数据表出错,检测代码包括第一代码、第二代码和第三代码。
需说明的是,本实施例中区块链智能合约生成设备中的单元与模块之间信息交互的具体实现过程,可以参照图1至3对应的实施例提供的区块链智能合约生成方法中的实现过程,此处不再赘述。
本申请实施例中,区块链智能合约生成设备获取待处理对象类,并解析待处理对象类,确定至少一个目标键值对后,基于至少一个目标键值对,生成与目标操作对应的智能合约代码。这样,通过对待处理对象类进行解析得到至少一个目标键值对来生成与目标操作对应的智能合约代码,解决了目前根据类SQL代码自动生成智能合约代码的效率较低的问题,有效简化自动生成智能合约代码的过程,并提高了编码效率,丰富了自动生成智能合约代码的实现方案。并且,并未限定目标键值对包括的数据类型,有效增加了自动生成智能合约代码实现方案的应用场景,减少了不熟悉智能合约或区块链的开发人员在开发区块链应用时管理区块链数据的难度,有效提高了用户的使用体验效果。
基于前述实施例,本申请的实施例提供一种计算机可读存储介质,简称为存储介质,该计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如图1至3对应的实施例提供的区块链智能合约生成方法实现过程,此处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。

Claims (12)

1.一种区块链智能合约生成方法,其特征在于,所述方法包括:
获取待处理对象类;
解析所述待处理对象类,确定至少一个目标键值对;其中,所述目标键值对与所述待处理对象类的类成员具有关联关系;
基于至少一个所述目标键值对,生成与目标操作对应的智能合约代码。
2.根据权利要求1所述的方法,其特征在于,所述解析所述待处理对象类,确定至少一个目标键值对,包括:
对所述待处理对象类进行解析,得到待处理对象类的类名;
基于所述待处理对象类的类名和预设类标识符,生成类名键值对;其中,所述至少一个目标键值对包括所述类名键值对;
对所述待处理对象类进行解析,得到所述待处理对象类包括的至少一个类成员;
确定至少一个所述类成员的数据类型和目标成员名;
基于至少一个所述类成员的所述数据类型和所述目标成员名,得到至少一个所述类成员的类成员键值对;其中,所述至少一个目标键值对包括至少一个所述类成员的类成员键值对。
3.根据权利要求2所述的方法,其特征在于,所述确定至少一个所述类成员的数据类型和目标成员名,包括:
确定所述至少一个类成员中属于所述待处理对象类嵌套包括的子类的类成员,得到第一目标类成员;
确定所述第一目标类成员的数据类型为预设数据类型;其中,所述预设数据类型用于指示子类的数据类型;
从所述待处理对象类中,获取所述第二目标类成员的数据类型;其中,所述第二目标类成员为所述待处理对象类中除所述第一目标类成员外的类成员;
从所述待处理对象类中,获取至少一个所述类成员的参考成员名;
基于至少一个所述类成员的参考成员名,得到至少一个所述类成员的目标成员名。
4.根据权利要求2所述的方法,其特征在于,所述基于所述待处理对象类的类名和预设类标识符,生成类名键值对,包括:
获取所述待处理对象类的参考类名;
若所述待处理对象类的参考类名属于驼峰式命名,在所述待处理对象类的参考类名包括的第一类型字母前加入目标连接符,并将所述待处理对象类的类名包括的第一类型字母替换为对应的第二类型字母,得到所述待处理对象类的类名;其中,所述第一类型字母与所述第二类型字母不同;
若所述待处理对象类的参考类名包括的字母均为第一类型字母,将所述第二参考成员名包括的字母替换为对应的第二类型字母,得到所述待处理对象类的类名;
若所述待处理对象类的参考类名包括的字母均为第二类型字母,将所述待处理对象类的参考类名作为所述待处理对象类的类名。
5.根据权利要求3所述的方法,其特征在于,所述基于至少一个所述类成员的参考成员名,得到至少一个所述类成员的目标成员名,包括:
对至少一个所述类成员的参考成员名进行分组,得到命名方式为驼峰式命名法的第一参考成员名,命名方式为第一类型字母的第二参考成员名和命名方式为第二类型字母的第三参考成员名;
基于所述第一参考成员名,在所述第一参考成员名包括的第一类型字母前加入目标连接符,并将所述第一参考成员名包括的所述第一类型字母替换为对应的第二类型字母,得到所述第一参考成员名对应的第一中间成员名;
基于所述第二参考成员名,将所述第二参考成员名包括的字母替换为对应的第二类型字母,得到所述第二参考成员名对应的第二中间成员名;
基于所述第一中间成员名、所述第二中间成员名和所述第三参考成员名,得到所述第一目标类成员的目标成员名和所述第二目标类成员的目标成员名;其中,所述至少一个所述类成员的目标成员名包括所述第一目标类成员的目标成员名和所述第二目标类成员的目标成员名。
6.根据权利要求5所述的方法,其特征在于,所述基于所述第一中间成员名、所述第二中间成员名和所述第三参考成员名,得到所述第一目标类成员的目标成员名和所述第二目标类成员的目标成员名,包括:
从所述第一中间成员名、所述第二中间成员名和所述第三参考成员名,确定所述第一目标类成员对应的成员名,得到所述第一目标类成员的第三中间成员名;
采用子类标识对所述第三中间成员名进行标识,得到所述第一目标类成员的目标成员名;
从所述第一中间成员名、所述第二中间成员名和所述第三参考成员名,确定所述第二目标类成员对应的成员名,得到所述第二目标类成员的目标成员名。
7.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个目标键值对,生成与目标操作对应的智能合约代码,包括:
确定对至少一个所述目标键值对进行所述智能合约代码生成时的处理顺序;
确定所述目标操作;
按照所述处理顺序对所述至少一个目标键值对进行处理,生成与所述目标操作对应的所述智能合约代码。
8.根据权利要求7所述的方法,其特征在于,所述确定对至少一个所述目标键值对进行所述智能合约代码生成时的处理顺序,包括:
从所述待处理对象类中,获取标记为目标身份标识的第一参考类成员;其中,所述第一类成员属于所述待处理对象类的外部类,所述第一参考类成员属于至少一个所述类成员;
确定除所述第一参考类成员外的第二参考类成员在所述待处理对象类中的顺序,得到所述第二参考类成员的排序顺序;其中,所述第二参考类成员属于至少一个类成员;
确定所述待处理对象类的类名排序为第一、所述第一参考类成员排序为第二、所述第二参考类成员的排序顺序加2的排序顺序为所述处理顺序。
9.根据权利要求7所述的方法,其特征在于,所述按照所述处理顺序对所述至少一个目标键值对的每一键值对进行处理,生成与所述目标操作对应的所述智能合约代码,包括:
若所述至少一个目标键值包括具有子类标识的目标成员名,去除所述目标成员名的所述子类标识,得到所述目标成员名包括的目标子类名;
基于所述目标子类名,生成用于实现检测所述目标子类名对应的区块链数据表是否存在的检测代码;
生成用于实现若所述目标子类名对应的区块链数据表存在,按照所述处理顺序对所述至少一个目标键值对的每一键值对进行处理,生成与所述目标操作对应的生成代码;其中,所述智能合约代码包括所述检测代码和所述生成代码。
10.根据权利要求9所述的方法,其特征在于,所述基于所述目标子类名,生成用于实现检测所述目标子类名对应的区块链数据表是否存在的检测代码,包括:
生成用于实现获取所述目标子类名对应的区块链数据表的第一代码;
生成用于实现判断是否获取到所述目标子类名对应的区块链数据表的第二代码;
生成用于实现若未获取到所述目标子类名对应的区块链数据表时,生成提示信息的第三代码;其中,所述提示信息用于提示获取所述目标子类名对应的区块链数据表出错,所述检测代码包括所述第一代码、第二代码和所述第三代码。
11.一种区块链智能合约生成设备,其特征在于,所述区块链智能合约生成设备包括:存储器、处理器和通信总线;其中:
所述存储器,用于存储可执行指令;
所述通信总线,用于实现所述处理器和所述存储器之间的通信连接;
所述处理器,用于执行所述存储器中存储的区块链智能合约生成程序,实现如权利要求1至10中任一项所述的区块链智能合约生成方法的步骤。
12.一种存储介质,其特征在于,所述存储介质上存储有区块链智能合约生成程序,所述区块链智能合约生成程序被处理器执行时实现如权利要求1至10中任一项所述的区块链智能合约生成方法的步骤。
CN202011350009.7A 2020-11-26 2020-11-26 一种区块链智能合约生成方法、设备及存储介质 Pending CN112433710A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011350009.7A CN112433710A (zh) 2020-11-26 2020-11-26 一种区块链智能合约生成方法、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011350009.7A CN112433710A (zh) 2020-11-26 2020-11-26 一种区块链智能合约生成方法、设备及存储介质

Publications (1)

Publication Number Publication Date
CN112433710A true CN112433710A (zh) 2021-03-02

Family

ID=74697855

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011350009.7A Pending CN112433710A (zh) 2020-11-26 2020-11-26 一种区块链智能合约生成方法、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112433710A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190628A (zh) * 2021-07-01 2021-07-30 四川新龟科技有限公司 一种基于区块链的供应链物流控货平台及其使用方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113190628A (zh) * 2021-07-01 2021-07-30 四川新龟科技有限公司 一种基于区块链的供应链物流控货平台及其使用方法

Similar Documents

Publication Publication Date Title
CN110245496B (zh) 一种源代码漏洞检测方法及检测器和其训练方法及系统
CN109739894B (zh) 补充元数据描述的方法、装置、设备及存储介质
CN108509556B (zh) 数据迁移方法和装置、服务器、存储介质
KR101617696B1 (ko) 데이터 정규표현식의 마이닝 방법 및 장치
CN109791492B (zh) 流水线相关树查询优化器和调度器
CN104063220B (zh) 基于文件的Linux基础软件依赖关系分析方法
CN116522403B (zh) 聚焦大数据隐私安全的互动信息脱敏方法及服务器
CN112433710A (zh) 一种区块链智能合约生成方法、设备及存储介质
Pont-Tuset et al. Semi-automatic video object segmentation by advanced manipulation of segmentation hierarchies
CN116663019B (zh) 一种源代码漏洞检测方法、装置和系统
CN113468524A (zh) 基于rasp的机器学习模型安全检测方法
CN111026736B (zh) 数据血缘管理方法及装置、数据血缘解析方法及装置
CN114385173A (zh) 编译方法、装置、设备及存储介质
CN111026604B (zh) 一种日志文件解析方法及装置
CN113419960B (zh) 用于可信操作系统内核模糊测试的种子生成方法及系统
CN113704215B (zh) 业务过程事件日志采样方法、系统、存储介质及计算设备
CN114860566A (zh) 源代码测试方法、装置、电子设备及存储介质
CN114625903A (zh) 一种图像检索方法和装置、图像检索设备
WO2021072776A1 (zh) 数据合并方法、装置、电子设备及存储介质
CN112214669A (zh) 家装材料甲醛释放数据处理方法、装置及监控服务器
CN112000312A (zh) 基于Kettle和GeoTools的空间大数据自动化并行处理方法和系统
CN113792247B (zh) 基于代码特征生成功能流程图的方法、装置、设备和介质
CN110879722B (zh) 生成逻辑示意图的方法及装置、计算机可存储介质
CN113672134B (zh) 媒体信息编辑方法、装置、计算机可读介质及电子设备
CN114722107A (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