CN108052321A - 一种基于配置信息自动生成区块链智能合约的方法 - Google Patents
一种基于配置信息自动生成区块链智能合约的方法 Download PDFInfo
- Publication number
- CN108052321A CN108052321A CN201711454225.4A CN201711454225A CN108052321A CN 108052321 A CN108052321 A CN 108052321A CN 201711454225 A CN201711454225 A CN 201711454225A CN 108052321 A CN108052321 A CN 108052321A
- Authority
- CN
- China
- Prior art keywords
- name
- function
- configuration information
- block chain
- automatically generated
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/04—Payment circuits
- G06Q20/06—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
- G06Q20/065—Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
Abstract
本发明公开一种基于配置信息自动生成区块链智能合约的方法,包括如下步骤:提供结构化数据的配置信息,包括对枚举类型、表结构和表操作函数的数据的定义;根据配置信息自动生成智能合约代码,然后根据配置信息自动生成调用智能合约的服务端代码。本发明的方法提供了数据之间的一一映射关系,实现了对各个表操作函数的具体化的智能合约函数,省去了开发者在定义了数据结构和功能需求之后,需要具体编写智能合约的工作量,提高了智能合约开发者的工作效率。
Description
技术领域
本发明涉及智能合约的设计和开发技术领域,具体涉及一种基于配置信息自动生成区块链智能合约的方法。
背景技术
区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,用于存储区块链网络上所有用户的余额,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。
区块链由于其特殊的链式数据存储结构,使得直接基于区块链实现结构化数据的增删改查操作变得困难,而开发智能合约可以将结构化数据上链并实现相关的操作。
区块链智能合约从本质上讲是区块链上的可执行语言,其工作原理类似于其它计算机程序语句,以这种方式与真实世界的资产等数据进行交互。智能合约往往用Solidity(与Javascript类似的专用语言)高级语言编写。
结构化数据也称作行数据,是由二维表结构来逻辑表达和实现的数据,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。如果将二维表结构数据和智能合约中的存储结构建立一一映射,即可通过智能合约将结构化数据在区块链上进行存储和管理。
发明内容
针对现有技术的不足,本发明提供一种基于配置信息自动生成区块链智能合约的方法,该方法极大地提高了智能合约的开发效率。具体技术方案如下:
一种基于配置信息自动生成区块链智能合约的方法,其特征在于,包括如下步骤:
(1)提供结构化数据的配置信息,所述的配置信息包括对枚举类型、表结构和表操作函数的数据的定义;
(2)根据所述的配置信息自动生成智能合约代码,其包括:根据所述的配置信息中定义的枚举类型和表结构,在智能合约中定义相应的枚举对象和结构体;根据所述的配置信息中定义的表操作函数,在智能合约中定义所需要的存储结构和索引存储映射,同时生成利用所述的存储结构和索引存储映射实现增加、删除、修改和查询功能的函数;
(3)根据所述的配置信息自动生成调用智能合约的服务端代码,其包括:根据所述的配置信息中定义的枚举类型和表结构,在服务端代码中添加相应的枚举类和实体类,根据所述的配置信息中定义的表操作函数,在服务端代码中添加调用所述的步骤(2)生成的函数的函数。
进一步地,所述的步骤(1)中,所述的对枚举类型的定义包括枚举名、枚举名说明、枚举成员名、枚举成员名说明。
进一步地,所述的步骤(1)中,所述的对表结构的定义包括表名、表名说明、表字段名、表字段名说明、表字段类型、表字段长度、表字段小数位数、表字段主键类型。
进一步地,所述的步骤(1)中,所述的对表操作函数的定义包括定义单表存储、插入、更新多条数据的函数,定义单表更新指定字段的函数,定义单表按指定字段查询的函数和定义多表多字段关联查询的函数。
进一步地,所述的步骤(2)中,所述的枚举对象的枚举名和枚举类型的枚举名一致,所述的枚举对象的枚举成员名和枚举类型的枚举成员名一致,枚举对象的枚举注释采用枚举类型的枚举名说明,枚举对象的枚举成员注释采用枚举类型的枚举成员名说明。
进一步地,所述的步骤(2)中,所述的结构体名和表名一致,结构体注释采用表名说明,结构体成员名和表字段名一致,结构体成员注释采用表字段名说明,结构体成员类型由表字段类型、表字段长度和表字段小数位数共同决定。
进一步地,所述的步骤(2)中,所述的利用存储结构和索引实现增加、删除、修改和查询功能的函数的函数名和表操作函数名一致,所述的智能合约中的相关索引存储映射和函数的功能由所述的配置信息中的表操作函数功能决定。
进一步地,所述的步骤(3)中,所述的枚举类的枚举名和枚举类型的枚举名一致,枚举类的枚举成员名和枚举类型的枚举成员名一致,枚举类的枚举注释采用枚举类型的枚举名说明,枚举类的枚举成员注释采用枚举类型的枚举成员名说明。
进一步地,所述的步骤(3)中,所述的实体类名和表名一致,实体类注释采用表名说明,实体类字段名和表字段名一致,实体类字段注释采用表字段名说明,实体类字段类型统一为字符串类型。
进一步地,所述的步骤(3)中,所述服务端代码中的调用智能合约方法的调用函数的函数名同表操作函数的函数名一致,合约调用函数功能由服务端调用合约的框架决定。
与现有技术相比,本发明的有益效果如下:
(1)本发明的方法基于区块链的结构化数据持久化应用规范,该规范使得项目的设计更简单,更易于维护和拓展;
(2)本方法由开发者定义的配置信息自动生成智能合约和服务端代码,简单易用,能支持常用的结构化数据增删改查功能,不需要开发者处理智能合约和服务端两者之间的适配问题,而是自动标准化两者之间的通讯方式,大大减少了开发者的工作量。
附图说明
图1是配置信息中的枚举类型示意图;
图2是配置信息中的表结构示意图;
图3是配置信息中的表操作函数的示意图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的基于配置信息自动生成区块链智能合约的方法的原理是根据开发者提供的结构化数据的配置信息,将结构化数据与智能合约存储结构建立一一对映关系,通过设计智能合约函数对智能合约存储结构进行存储和管理,从而实现对结构化数据的存储和管理。
具体步骤如下:
(1)提供结构化数据的配置信息,所述的配置信息包括对枚举类型、表结构和表操作函数的数据的定义;其中,枚举类型的定义包括枚举名、枚举名说明、枚举成员名、枚举成员名说明。表结构的定义包括表名、表名说明、表字段名、表字段名说明、表字段类型、表字段长度、表字段小数位数、表字段主键类型。表操作函数的定义包括定义单表存储、插入、更新多条数据的函数,定义单表更新指定字段的函数,定义单表按指定字段查询的函数和定义多表多字段关联查询的函数。
枚举类型默认含有区块链用户角色枚举类型,其成员必须含有超级用户;预置含有区块链用户状态枚举类型,其成员预置含有正常状态。开发者可以在区块链用户角色枚举类型和区块链用户状态枚举类型中添加其他成员,也可以添加其他枚举类型,并为它们添加成员。
表结构默认含有区块链用户表,其字段预置含有区块链用户地址、区块链用户角色、区块链用户状态。开发者可以在区块链用户表中添加其他字段,也可以添加其他表,并为它们添加字段。
表操作函数默认含有对区块链用户表的保存、更新、删除和查询函数。开发者可以为各个表添加保存、插入、更新、删除、查询、按字段更新、按字段查询的函数操作,也可以为多个表添加Mysql查询语法命令(指利用关键词SELECT、FROM、WHERE的查询命令)的多表联查函数操作。其中SELECT部分是待查询的表字段,FROM部分是查询涉及的表,WHERE部分是查询逻辑,支持各个表字段之间的等于、不等于、大于、大于等于、小于、小于等于的逻辑比较。每个表操作函数需要指定合法的调用者,在所有区块链用户角色进行指定,可以指定多个,以此来实现对表操作的权限控制。
(2)根据配置信息自动生成智能合约代码,其包括:根据配置信息中定义的枚举类型和表结构,在智能合约中定义相应的枚举对象和结构体;根据配置信息中定义的表操作函数,在智能合约中定义所需要的存储结构和索引存储映射,同时生成利用存储结构和索引实现增加、删除、修改和查询功能的函数;
枚举对象的枚举名和枚举类型的枚举名一致,枚举对象的枚举成员名和枚举类型的枚举成员名一致,枚举对象的枚举注释采用枚举类型的枚举名说明,枚举对象的枚举成员注释采用枚举类型的枚举成员名说明。
结构体名和表名一致,结构体注释采用表名说明,结构体成员名和表字段名一致,结构体成员注释采用表字段名说明,结构体成员类型由表字段类型、表字段长度和表字段小数位数共同决定。
利用存储结构和索引实现增加、删除、修改和查询功能的函数的函数名和表操作函数名一致,相关索引存储映射和函数的功能由表操作函数功能决定。
具体的结构化数据与智能合约存储结构建立一一对映关系如下表1所示。
表1结构化数据与智能合约存储结构一一对映关系表
结构化数据 | 处理 | 智能合约存储结构 |
enum | 枚举名和成员一一对应 | enum |
table | 表名和字段名一一对应 | struct |
varchar(<=32) | 直接对应 | bytes32 |
varchar(>32) | 按每32个字符拆成数组 | bytes32[] |
varchar(<=10)含中文 | 直接对应 | bytes32 |
varchar(>10)含中文 | 按每10个字符拆成数组 | bytes32[] |
int | 直接对应 | int256 |
double | 扩大10的小数位数次倍 | int256 |
address | 直接对应 | address |
int(enum) | 强制类型转化 | enum(int256) |
在建立了结构化数据与智能合约存储结构一一对映关系之后,即可通过智能合约函数对智能合约存储结构进行操作,实现对结构化数据的存储和管理。
下面介绍智能合约函数的设计。
首先是默认含有对区块链用户表的保存、删除、查询和更新用户状态的函数。
对用户结构体的保存函数实现了将用户地址、用户角色和用户状态三个数据存入区块链,并维护了从主键——用户地址到用户结构体的索引映射存储、主键列表和从用户状态到主键列表的索引映射存储的操作。
对用户结构体的删除函数实现了按主键——用户地址删除用户结构体的操作。具体方法是从主键到用户结构体的索引映射存储中取出待删除的用户结构体,删除从用户状态到主键列表的索引映射存储中的该用户结构体主键,删除主键列表中的该用户结构体主键,最后删除该用户结构体。
对用户结构体的查询函数实现了查询所有用户结构体信息的操作。具体方法是遍历主键列表,对每一个主键,从主键到用户结构体的索引映射存储中取出用户结构体,然后将用户结构体的三个字段数据放入返回值列表中。最后把返回值列表返回给函数调用方即可。
对用户结构体更新用户状态的函数实现了按主键更新用户结构体的用户状态字段的操作。具体方法是从主键到用户结构体的索引映射存储中取出用户结构体,删除从旧用户状态到主键列表的索引映射存储中的该用户结构体主键,添加从新用户状态到主键列表的索引映射存储中的该用户结构体主键,最后将用户结构体的用户状态字段赋值为新的状态。
下面介绍对于其他表结构操作函数在智能合约函数的通用设计方法。
单表存储函数的设计,包括以下部分:
1)函数入参有bytes32[]_bytes32List、int[]_intList、address[]_addressList、uint[]_lengthList四个数组,前3个数组中包含待存储的数据,最后1个数组包含字符串被拆分成数组的长度。如此设计即满足了对多字段表的存储,也支持对多条表数据的存储,同时节省了局部变量个数。
2)函数回参有返回代码。返回代码是一个枚举类型Code,其成员有SUCCESS、HYPER_USER_INVALID和HYPER_USER_PERMISSION_DENIED。
3)区块链用户的权限控制。根据表操作函数中指定的用户角色控制可调用该函数的用户,并保证调用者的状态是正常的。如果函数调用者不符合规定的用户角色,则返回Code.HYPER_USER_PERMISSION_DENIED,如果函数调用者的状态不是正常状态,则返回Code.HYPER_USER_INVALID。
4)初始化存储相关参数。将全局数组变量bytes32List、intList、addressList和lengthList清空,将全局变量b、i、a、l置0,这4个全局变量是将全局数组变量的下标。
5)读取表的各个字段值并存储。将4个函数入参依次赋值给4个全局数组变量,然后从4个全局数组变量中按结构体字段顺序取出值组成一个结构体数据,接着维护相关的索引存储映射,最后存储该结构体数据。
6)返回函数执行结果——Code.SUCCESS。
单表插入函数的设计,与单表储存函数的不同之处仅在于多了一步对待存储数据是否已经存在的判断。如果已经存在则不能再次存储,如果不存在则可以插入。
单表更新函数的设计,与单表储存函数的不同之处仅在于多了一步对待存储数据是否已经存在的判断。如果已经存在则可以更新,如果不存在则不能更新。
单表删除函数的设计,包括以下部分:
1)函数入参有bytes32[]_bytes32List、int[]_intList、address[]_addressList、uint[]_lengthList四个数组,前3个数组中包含待删除的主键数据,最后1个数组包含字符串被拆分成数组的长度。如此设计满足了删除多条表数据的需求。
2)函数回参有返回代码。逻辑同单表存储函数的设计2)。
3)区块链用户的权限控制。逻辑同单表存储函数的设计3)。
4)初始化存储相关参数。逻辑同单表存储函数的设计4)。
5)删除结构体数据。将4个函数入参依次赋值给4个全局数组变量,然后从4个全局数组变量中取出主键值,接着按主键取出结构体,在删除了所有和该结构体相关的索引映射存储中的该结构体主键,最后再删除该结构体。
6)返回函数执行结果——Code.SUCCESS。
单表查询函数的设计,包括以下部分:
1)函数入参有bytes32[]_bytes32List、int[]_intList、address[]_addressList、uint[]_lengthList四个数组,前3个数组中包含待删除的主键数据,最后1个数组包含字符串被拆分成数组的长度。如此设计满足了查询多条表数据的需求。
2)函数回参有返回代码和bytes32[]bytes32ListReturn、int[]intListReturn、address[]addressListReturn、uint[]lengthListReturn四个数组。
3)初始化返回值。将全局返回数组变量bytes32ListReturn、intListReturn、addressListReturn和lengthListReturn清空,并把它们的下标br、ir、ar和lr置0。
4)区块链用户的权限控制。逻辑同单表存储函数的设计3),但返回值除了返回代码外,还需返回4个空数组。
5)初始化存储相关参数。逻辑同单表存储函数的设计4)。
6)查询结构体数据。将4个函数入参依次赋值给4个全局数组变量,然后从4个全局数组变量中取出主键值,接着按主键取出结构体,依次将结构体的字段值放入4个全局返回数组变量。
7)返回函数执行结果——Code.SUCCESS和4个已经放入了字段值的全局返回数组变量。
单表更新字段函数的设计,包括以下部分:
1)函数入参有bytes32[]_bytes32List、int[]_intList、address[]_addressList、uint[]_lengthList四个数组,前3个数组中包含待删除的主键数据,最后1个数组包含字符串被拆分成数组的长度。
2)函数回参有返回代码。逻辑同单表存储函数的设计2)。
3)区块链用户的权限控制。逻辑同单表存储函数的设计3)。
4)初始化存储相关参数。逻辑同单表存储函数的设计4)。
5)更新结构体字段数据。将4个函数入参依次赋值给4个全局数组变量,然后从4个全局数组变量中取出主键值和待更新的新字段值,接着按主键取出结构体,删除从旧字段值到主键列表的索引映射存储中的主键,增加从新字段值到主键列表的索引映射存储中的主键,最后再更新该结构体的字段值。
6)返回函数执行结果——Code.SUCCESS。
单表按字段查询函数的设计,包括以下部分:
1)函数入参。逻辑同单表查询函数的设计1)。
2)函数回参。逻辑同单表查询函数的设计2)。
3)初始化返回值。逻辑同单表查询函数的设计3)。
4)区块链用户的权限控制。逻辑同单表查询函数的设计4)。
5)初始化存储相关参数。逻辑同单表查询函数的设计5)。
6)查询结构体数据。将4个函数入参依次赋值给4个全局数组变量,然后从4个全局数组变量中取出索引值,接着按索引值从相关的索引映射存储中取出主键,再按从主键到结构体映射存储中取出结构体,最后依次将结构体的字段值放入4个全局返回数组变量。
7)返回函数执行结果。逻辑同单表查询函数的设计7)。
多表联查函数的设计,包括以下部分:
1)函数入参。逻辑同单表查询函数的设计1)。
2)函数回参。逻辑同单表查询函数的设计2)。
3)初始化返回值。逻辑同单表查询函数的设计3)。
4)区块链用户的权限控制。逻辑同单表查询函数的设计4)。
5)初始化存储相关参数。逻辑同单表查询函数的设计5)。
6)查询结构体数据。将4个函数入参依次赋值给4个全局数组变量,然后从4个全局数组变量中取出索引值,接着按遍历次数最小原则,依次确定FROM语句中的表主键,直到所有表主键被确定,依次将SELECT语句中指定的字段值放入4个全局返回数组变量。其中按遍历次数最小原则确定表主键是指,如果有某个表可以根据索引值从索引映射存储中直接确定主键,则优先确定该表的主键;否则按FROM语句中表的顺序依次遍历主键列表,确定主键。
7)返回函数执行结果。逻辑同单表查询函数的设计7)。
至此智能合约的设计结束,下面说明自动生成调用智能合约的服务端代码。
(3)根据所述的配置信息自动生成调用智能合约的服务端代码,其包括:根据配置信息中定义的枚举类型和表结构,在服务端代码中添加相应的枚举类和实体类,根据所述的配置信息中定义的表操作函数,在服务端代码中添加调用相应智能合约方法的函数。
服务端代码包括枚举类、实体类和合约调用类。根据配置信息中定义的枚举类型和表结构,按照枚举名和表名同类名一致,成员名和字段名同类成员名一致的原则自动生成类代码。对于合约调用类,根据服务端调用智能合约的框架,在调用合约的公共类中自动生成同智能合约中函数同名的合约调用函数。合约调用函数的入参为4个字符串数组,与智能合约函数中4个数组入参对应,合约调用函数的返参为一个数组,根据不同智能合约函数的返回类型返回不同的值。
如图1所示,为配置信息中的枚举类型示意图;其中,图1(a)为枚举类型的枚举名和枚举名的说明,图1(b)为枚举类型的成员名和成员名的说明。开发者填写枚举类型的相关信息,采用本发明的方法,将自动生成满足要求的智能合约代码,如下所示:
如图2所示,为配置信息中的表结构示意图,其中,图2(a)为表名和表名的说明,图2(b)为表的字段名和字段名的相关信息。开发者填写表结构的相关信息,采用本发明的方法,将自动生成满足要求的智能合约代码,如下所示:
如图3所示,为配置信息中的表操作函数的示意图。开发者只需要填写表操作函数的相关信息,采用本发明的方法,将自动生成满足要求的智能合约代码,如下所示:
可以发现提升开发者效率的关键之处在于,本方法在提供了数据之间的一一映射关系的基础上,实现了对各个表操作函数的具体化的智能合约函数,省去了开发者在定义了数据结构和功能需求之后,需要具体编写智能合约的工作量。
对于枚举类型的填写,开发者只需要填入枚举名和枚举名说明。在枚举类型中添加枚举成员,只需要填入枚举成员名和枚举成员名说明。对于表结构的填写,开发者只需要填入表名和表名说明。在表中添加字段,只需要填入字段名、字段名说明、字段长度,并选择字段类型和主键类型。对于表操作函数,开发者只需要选择要操作的表名,选择函数的操作类型,选择允许调用的用户角色。
开发者将自动生成的智能合约部署到区块链上之后,需要通过服务端调用智能合约中的函数,本方法也自动生成了服务端代码中调用智能合约的部分,其中,服务端的实体类的代码具体如下:
服务端的调用智能合约函数的函数的代码具体如下:
对于服务端代码中调用智能合约的函数,开发者只需要在需要调用的地方添加函数,传入由实体类转化为字符串数组后的结构,即可调用智能合约中方法。智能合约方法返回后的参数通过解析,转化为对应的实体类。所以开发者只需要对实体类进行处理即可,而对智能合约中相关数据结构和函数透明,方便了服务端的开发工作。
上述具体实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和原则要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。
Claims (10)
1.一种基于配置信息自动生成区块链智能合约的方法,其特征在于,包括如下步骤:
(1)提供结构化数据的配置信息,所述的配置信息包括对枚举类型、表结构和表操作函数的数据的定义。
(2)根据所述的配置信息自动生成智能合约代码,其包括:根据所述的配置信息中定义的枚举类型和表结构,在智能合约中定义相应的枚举对象和结构体;根据所述的配置信息中定义的表操作函数,在智能合约中定义所需要的存储结构和索引存储映射,同时生成利用所述的存储结构和索引存储映射实现增加、删除、修改和查询功能的函数。
(3)根据所述的配置信息自动生成调用智能合约的服务端代码,其包括:根据所述的配置信息中定义的枚举类型和表结构,在服务端代码中添加相应的枚举类和实体类,根据所述的配置信息中定义的表操作函数,在服务端代码中添加调用所述的步骤(2)生成的函数的函数。
2.根据权利要求1所述的基于配置信息自动生成区块链智能合约的方法,其特征在于,所述的步骤(1)中,所述的对枚举类型的定义包括枚举名、枚举名说明、枚举成员名、枚举成员名说明。
3.根据权利要求1或2所述的基于配置信息自动生成区块链智能合约的方法,其特征在于,所述的步骤(1)中,所述的对表结构的定义包括表名、表名说明、表字段名、表字段名说明、表字段类型、表字段长度、表字段小数位数、表字段主键类型。
4.根据权利要求1-3中任一项所述的基于配置信息自动生成区块链智能合约的方法,其特征在于,所述的步骤(1)中,所述的对表操作函数的定义包括定义单表存储、插入、更新多条数据的函数,定义单表更新指定字段的函数,定义单表按指定字段查询的函数和定义多表多字段关联查询的函数。
5.根据权利要求1所述的基于配置信息自动生成区块链智能合约的方法,其特征在于,所述的步骤(2)中,所述的枚举对象的枚举名和枚举类型的枚举名一致,所述的枚举对象的枚举成员名和枚举类型的枚举成员名一致,枚举对象的枚举注释采用枚举类型的枚举名说明,枚举对象的枚举成员注释采用枚举类型的枚举成员名说明。
6.根据权利要求1所述的基于配置信息自动生成区块链智能合约的方法,其特征在于,所述的步骤(2)中,所述的结构体名和表名一致,结构体注释采用表名说明,结构体成员名和表字段名一致,结构体成员注释采用表字段名说明,结构体成员类型由表字段类型、表字段长度和表字段小数位数共同决定。
7.根据权利要求1所述的基于配置信息自动生成区块链智能合约的方法,其特征在于,所述的步骤(2)中,所述的利用存储结构和索引实现增加、删除、修改和查询功能的函数的函数名和表操作函数名一致,所述的智能合约中的相关索引存储映射和函数的功能由所述的配置信息中的表操作函数功能决定。
8.根据权利要求1所述的基于配置信息自动生成区块链智能合约的方法,其特征在于,所述的步骤(3)中,所述的枚举类的枚举名和枚举类型的枚举名一致,枚举类的枚举成员名和枚举类型的枚举成员名一致,枚举类的枚举注释采用枚举类型的枚举名说明,枚举类的枚举成员注释采用枚举类型的枚举成员名说明。
9.根据权利要求1所述的基于配置信息自动生成区块链智能合约的方法,其特征在于,所述的步骤(3)中,所述的实体类名和表名一致,实体类注释采用表名说明,实体类字段名和表字段名一致,实体类字段注释采用表字段名说明,实体类字段类型统一为字符串类型。
10.根据权利要求1所述的基于配置信息自动生成区块链智能合约的方法,其特征在于,所述的步骤(3)中,所述服务端代码中的调用智能合约方法的调用函数的函数名同表操作函数的函数名一致,合约调用函数功能由服务端调用合约的框架决定。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711454225.4A CN108052321B (zh) | 2017-12-28 | 2017-12-28 | 一种基于配置信息自动生成区块链智能合约的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711454225.4A CN108052321B (zh) | 2017-12-28 | 2017-12-28 | 一种基于配置信息自动生成区块链智能合约的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108052321A true CN108052321A (zh) | 2018-05-18 |
CN108052321B CN108052321B (zh) | 2020-12-25 |
Family
ID=62128495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711454225.4A Active CN108052321B (zh) | 2017-12-28 | 2017-12-28 | 一种基于配置信息自动生成区块链智能合约的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052321B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117501A (zh) * | 2018-07-03 | 2019-01-01 | 北京航空航天大学 | 基于区块链的科技数据建模及存储方法 |
CN109522008A (zh) * | 2018-11-06 | 2019-03-26 | 陕西医链区块链集团有限公司 | 一种区块链智能合约构建方法 |
CN109559229A (zh) * | 2018-11-30 | 2019-04-02 | 众安信息技术服务有限公司 | 基于区块链的更新智能合约组的方法 |
CN109683867A (zh) * | 2018-12-27 | 2019-04-26 | 石更箭数据科技(上海)有限公司 | 一种对接区块链的方法及其装置、介质、终端 |
CN109857811A (zh) * | 2019-02-15 | 2019-06-07 | 上海优扬新媒信息技术有限公司 | 一种区块链数据管理方法及装置 |
CN109919691A (zh) * | 2019-02-27 | 2019-06-21 | 腾讯科技(深圳)有限公司 | 一种数据处理的系统、方法以及装置 |
CN110020542A (zh) * | 2018-12-20 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据读写方法及装置、电子设备 |
CN110032568A (zh) * | 2018-12-20 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 数据结构的读取及更新方法、装置、电子设备 |
CN110032598A (zh) * | 2018-12-20 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 字段更新方法及装置、电子设备 |
CN110113328A (zh) * | 2019-04-28 | 2019-08-09 | 武汉理工大学 | 一种基于区块链的软件定义机会网络DDoS防御方法 |
CN110532115A (zh) * | 2019-09-04 | 2019-12-03 | 北京海益同展信息科技有限公司 | 用于开发智能合约的系统、方法和装置 |
CN110851127A (zh) * | 2019-10-28 | 2020-02-28 | 杭州趣链科技有限公司 | 一种基于区块链的通用存证方法 |
CN110969429A (zh) * | 2018-09-28 | 2020-04-07 | 中思博安科技(北京)有限公司 | 一种基于区块链技术的数据目录的存储方法及装置 |
WO2020135434A1 (zh) * | 2018-12-29 | 2020-07-02 | 杭州复杂美科技有限公司 | 数据存储方法、数据读取方法、设备和存储介质 |
CN111368073A (zh) * | 2020-02-06 | 2020-07-03 | 贝壳技术有限公司 | 系统间数据交互方法、装置、存储介质及电子设备 |
CN111581181A (zh) * | 2020-04-07 | 2020-08-25 | 浙商银行股份有限公司 | 一种基于数据库数据表自动生成区块链智能合约的方法 |
CN111611004A (zh) * | 2019-02-25 | 2020-09-01 | 国际商业机器公司 | 使用基于枚举模式的注释进行程序合成 |
WO2020233629A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 基于代码标注的对象级收据存储方法和节点 |
WO2020233637A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 结合代码标注与用户类型的收据存储方法和节点 |
CN112686671A (zh) * | 2021-01-07 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 基于区块链的智能合约部署方法、装置、设备以及介质 |
WO2022105049A1 (zh) * | 2020-11-18 | 2022-05-27 | 南威软件股份有限公司 | 一种定义区块链上链数据业务规约及应用业务规约的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893042A (zh) * | 2016-03-31 | 2016-08-24 | 北京航空航天大学 | 一种基于区块链的智能合约的实现方法 |
CN106681739A (zh) * | 2017-01-11 | 2017-05-17 | 杭州云象网络技术有限公司 | 一种智能合约的自动化生成方法 |
CN106933552A (zh) * | 2015-12-30 | 2017-07-07 | 中国移动通信集团公司 | 一种数据处理方法及前端代码生成装置 |
CN107147704A (zh) * | 2017-04-21 | 2017-09-08 | 杭州趣链科技有限公司 | 一种面向区块链的通用服务中间件系统 |
US20170344988A1 (en) * | 2016-05-24 | 2017-11-30 | Ubs Ag | System and method for facilitating blockchain-based validation |
CN107479883A (zh) * | 2017-08-07 | 2017-12-15 | 海闻科技有限公司 | 一种代码生成方法及代码生成器 |
-
2017
- 2017-12-28 CN CN201711454225.4A patent/CN108052321B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933552A (zh) * | 2015-12-30 | 2017-07-07 | 中国移动通信集团公司 | 一种数据处理方法及前端代码生成装置 |
CN105893042A (zh) * | 2016-03-31 | 2016-08-24 | 北京航空航天大学 | 一种基于区块链的智能合约的实现方法 |
US20170344988A1 (en) * | 2016-05-24 | 2017-11-30 | Ubs Ag | System and method for facilitating blockchain-based validation |
CN106681739A (zh) * | 2017-01-11 | 2017-05-17 | 杭州云象网络技术有限公司 | 一种智能合约的自动化生成方法 |
CN107147704A (zh) * | 2017-04-21 | 2017-09-08 | 杭州趣链科技有限公司 | 一种面向区块链的通用服务中间件系统 |
CN107479883A (zh) * | 2017-08-07 | 2017-12-15 | 海闻科技有限公司 | 一种代码生成方法及代码生成器 |
Non-Patent Citations (1)
Title |
---|
CHRISTOPHER K. FRANTZ ; MARIUSZ NOWOSTAWSKI: ""From Institutions to Code: Towards Automated"", 《2016 IEEE 1ST INTERNATIONAL WORKSHOPS ON FOUNDATIONS AND APPLICATIONS OF SELF* SYSTEMS (FAS*W)》 * |
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117501A (zh) * | 2018-07-03 | 2019-01-01 | 北京航空航天大学 | 基于区块链的科技数据建模及存储方法 |
CN110969429A (zh) * | 2018-09-28 | 2020-04-07 | 中思博安科技(北京)有限公司 | 一种基于区块链技术的数据目录的存储方法及装置 |
CN109522008A (zh) * | 2018-11-06 | 2019-03-26 | 陕西医链区块链集团有限公司 | 一种区块链智能合约构建方法 |
CN109559229A (zh) * | 2018-11-30 | 2019-04-02 | 众安信息技术服务有限公司 | 基于区块链的更新智能合约组的方法 |
TWI724570B (zh) * | 2018-12-20 | 2021-04-11 | 開曼群島商創新先進技術有限公司 | 資料結構的讀取及更新方法、裝置、電子設備及儲存媒體 |
CN110020542A (zh) * | 2018-12-20 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 数据读写方法及装置、电子设备 |
CN110032568A (zh) * | 2018-12-20 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 数据结构的读取及更新方法、装置、电子设备 |
CN110032598A (zh) * | 2018-12-20 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 字段更新方法及装置、电子设备 |
US11775507B2 (en) | 2018-12-20 | 2023-10-03 | Advanced New Technologies Co., Ltd. | Methods and apparatuses for reading and updating data structures, and electronic devices |
US11200226B2 (en) | 2018-12-20 | 2021-12-14 | Advanced New Technologies Co., Ltd. | Data read and write method and apparatus, and electronic device |
CN110032598B (zh) * | 2018-12-20 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 字段更新方法及装置、电子设备 |
WO2020125224A1 (zh) * | 2018-12-20 | 2020-06-25 | 阿里巴巴集团控股有限公司 | 数据结构的读取及更新方法、装置、电子设备 |
WO2020125233A1 (zh) * | 2018-12-20 | 2020-06-25 | 阿里巴巴集团控股有限公司 | 字段更新方法及装置、电子设备 |
CN109683867A (zh) * | 2018-12-27 | 2019-04-26 | 石更箭数据科技(上海)有限公司 | 一种对接区块链的方法及其装置、介质、终端 |
WO2020135434A1 (zh) * | 2018-12-29 | 2020-07-02 | 杭州复杂美科技有限公司 | 数据存储方法、数据读取方法、设备和存储介质 |
CN109857811B (zh) * | 2019-02-15 | 2022-08-26 | 度小满科技(北京)有限公司 | 一种区块链数据管理方法及装置 |
CN109857811A (zh) * | 2019-02-15 | 2019-06-07 | 上海优扬新媒信息技术有限公司 | 一种区块链数据管理方法及装置 |
CN111611004A (zh) * | 2019-02-25 | 2020-09-01 | 国际商业机器公司 | 使用基于枚举模式的注释进行程序合成 |
CN111611004B (zh) * | 2019-02-25 | 2023-09-22 | 国际商业机器公司 | 使用基于枚举模式的注释进行程序合成 |
US11790263B2 (en) | 2019-02-25 | 2023-10-17 | International Business Machines Corporation | Program synthesis using annotations based on enumeration patterns |
CN109919691A (zh) * | 2019-02-27 | 2019-06-21 | 腾讯科技(深圳)有限公司 | 一种数据处理的系统、方法以及装置 |
CN110113328B (zh) * | 2019-04-28 | 2021-01-15 | 武汉理工大学 | 一种基于区块链的软件定义机会网络DDoS防御方法 |
CN110113328A (zh) * | 2019-04-28 | 2019-08-09 | 武汉理工大学 | 一种基于区块链的软件定义机会网络DDoS防御方法 |
WO2020233637A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 结合代码标注与用户类型的收据存储方法和节点 |
WO2020233629A1 (zh) * | 2019-05-20 | 2020-11-26 | 创新先进技术有限公司 | 基于代码标注的对象级收据存储方法和节点 |
CN110532115B (zh) * | 2019-09-04 | 2021-03-05 | 北京海益同展信息科技有限公司 | 用于开发智能合约的系统、方法和装置 |
CN110532115A (zh) * | 2019-09-04 | 2019-12-03 | 北京海益同展信息科技有限公司 | 用于开发智能合约的系统、方法和装置 |
CN110851127A (zh) * | 2019-10-28 | 2020-02-28 | 杭州趣链科技有限公司 | 一种基于区块链的通用存证方法 |
CN110851127B (zh) * | 2019-10-28 | 2023-10-24 | 杭州趣链科技有限公司 | 一种基于区块链的通用存证方法 |
CN111368073A (zh) * | 2020-02-06 | 2020-07-03 | 贝壳技术有限公司 | 系统间数据交互方法、装置、存储介质及电子设备 |
CN111581181A (zh) * | 2020-04-07 | 2020-08-25 | 浙商银行股份有限公司 | 一种基于数据库数据表自动生成区块链智能合约的方法 |
CN111581181B (zh) * | 2020-04-07 | 2021-06-29 | 浙商银行股份有限公司 | 一种基于数据库数据表自动生成区块链智能合约的方法 |
WO2022105049A1 (zh) * | 2020-11-18 | 2022-05-27 | 南威软件股份有限公司 | 一种定义区块链上链数据业务规约及应用业务规约的方法 |
CN112686671A (zh) * | 2021-01-07 | 2021-04-20 | 腾讯科技(深圳)有限公司 | 基于区块链的智能合约部署方法、装置、设备以及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108052321B (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108052321A (zh) | 一种基于配置信息自动生成区块链智能合约的方法 | |
US8429601B2 (en) | Code completion for object relational mapping query language (OQL) queries | |
US6853997B2 (en) | System and method for sharing, mapping, transforming data between relational and hierarchical databases | |
US6839714B2 (en) | System and method for comparing heterogeneous data sources | |
CN101427249B (zh) | 具有对丰富数据类型的支持的可扩展查询语言 | |
US6374252B1 (en) | Modeling of object-oriented database structures, translation to relational database structures, and dynamic searches thereon | |
EP1603057A2 (en) | Systems and methods for the implementation of unordered and ordered collections in data store | |
US20020002566A1 (en) | Transfromation of marked up documents using a base architecture | |
JP2007509422A (ja) | 集合値化された列とスカラ値化された列を単一のステートメントで修正するためのsql言語の拡張 | |
Holubová et al. | Unified Management of Multi-model Data: (Vision Paper) | |
CN108959591A (zh) | 数据库与区块链集成的方法、系统、设备及存储介质 | |
CA3206880A1 (en) | Systems and methods for accessing data entities managed by a data processing system | |
KR101030368B1 (ko) | 데이터 저장소 내의 비순서화 및 순서화 컬렉션의 구현을 위한 시스템 및 방법 | |
JP2005056085A (ja) | データ構造変換プログラム | |
Jackson | Thirty years (and more) of databases | |
Aithal et al. | Disconnected Data Access Architecture using ADO. NET Framework | |
CN1322418C (zh) | 实现对象持续化服务的系统及其方法 | |
JP7216377B2 (ja) | クエリバインディング機能を備えたオンラインレポート作成システム | |
KR100309670B1 (ko) | 씨에이에스이모형정보스키마변환시스템 | |
Murdaca | An Object-Relational Compiler | |
CN116680279A (zh) | 基于哈希索引的数据处理方法、系统、装置和计算机可读介质 | |
CN117688023A (zh) | 一种基于json通用数据操作sql数据库的方法及服务系统 | |
JPH0582615B2 (zh) | ||
Paterson et al. | Comparing the Object and Relational Data Models | |
Oleynik | Unified model for testing object-oriented application development tools |
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 |