CN115391330A - 区块链的智能合约的生成方法、装置、设备及存储介质 - Google Patents
区块链的智能合约的生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115391330A CN115391330A CN202110574681.2A CN202110574681A CN115391330A CN 115391330 A CN115391330 A CN 115391330A CN 202110574681 A CN202110574681 A CN 202110574681A CN 115391330 A CN115391330 A CN 115391330A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- service
- description information
- data
- target service
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000009877 rendering Methods 0.000 claims abstract description 13
- 238000012360 testing method Methods 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 15
- 238000012986 modification Methods 0.000 claims description 15
- 230000004048 modification Effects 0.000 claims description 15
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000011161 development Methods 0.000 abstract description 20
- 230000006870 function Effects 0.000 description 48
- 230000008569 process Effects 0.000 description 19
- 238000013507 mapping Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提出了一种区块链的智能合约的生成方法、装置、设备及存储介质,该方法包括:获取目标业务的业务需求;按照所述业务需求为所述目标业务对应的智能合约定义数据层描述信息;根据所述数据层描述信息编写所述智能合约的模板文件;对所述数据层描述信息和所述模板文件进行渲染处理,生成所述智能合约,可以自动生成智能合约,从而提升智能合约的开发效率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链的智能合约的生成方法、一种区块链的智能合约的生成装置、一种计算机设备及一种计算机可读存储介质。
背景技术
区块链是一种多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术。区块链上可运行智能合约。目前,智能合约通常采用手工编写,开发者需要先理解业务逻辑,再手工编写智能合约的注册逻辑和操作逻辑。这使得智能合约在开发过程中,需要耗费大量的时间精力成本,导致智能合约的开发效率较低。
发明内容
本申请实施例提供了一种区块链的智能合约的生成方法、装置、设备及存储介质,可以自动生成智能合约,提升智能合约的开发效率。
一方面,本申请实施例提供了一种区块链的智能合约的生成方法,该方法包括:
获取目标业务的业务需求;
按照业务需求为目标业务对应的智能合约定义数据层描述信息;
根据数据层描述信息编写智能合约的模板文件;
对数据层描述信息和模板文件进行渲染处理,生成智能合约。
一方面,本申请实施例提供了一种区块链的智能合约的生成装置,该装置包括:
获取模块,用于获取目标业务的业务需求;
处理模块,用于按照业务需求为目标业务对应的智能合约定义数据层描述信息;
处理模块,还用于根据数据层描述信息编写智能合约的模板文件;
处理模块,还用于对数据层描述信息和模板文件进行渲染处理,生成智能合约。
一方面,本申请实施例提供了一种计算机设备,包括:
处理器,适于执行计算机程序;
计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器执行时,实现上述的区块链的智能合约的生成方法。
一方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行上述的区块链的智能合约的生成方法。
一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的区块链的智能合约的生成方法。
本申请实施例中,可按照目标业务的业务需求为目标业务对应的智能合约定义数据层描述信息,并根据数据层描述信息编写智能合约的模板文件,对数据层描述信息及智能合约的模板文件进行渲染处理,就可自动化地生成智能合约;上述智能合约的自动化生成过程基于反对象关系映射的方法而实现,该基于反对象关系映射的方法可以将原始的数据层描述信息转换为智能合约的相应代码,此方法符合数据驱动的思想,能够减少重复操作,简化智能合约的开发流程,有效提升智能合约的开发效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请一个示例性实施例提供的一种区块链系统的架构示意图;
图1B是本申请一个示例性实施例提供的一种区块链的结构示意图;
图1C是本申请一个示例性实施例提供的一种区块生成过程的流程示意图;
图1D是本申请一个示例性实施例提供的智能合约的生命周期的流程示意图;
图2为本申请一个示例性实施例提供的一种区块链的智能合约的生成方法的流程示意图;
图3为本申请另一个示例性实施例提供的一种区块链的智能合约的生成方法的流程示意图;
图4为本申请另一个示例性实施例提供的一种区块链的智能合约的生成方法的流程示意图;
图5为本申请一个示例性实施例提供的一种区块链的智能合约的生成装置的结构示意图;
图6为本申请一个示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请涉及区块链,区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。下面将结合附图,对区块链的相关技术进行详细说明。
图1A是本申请一个示例性实施例提供的一种区块链系统的结构示意图。如图1A所示,区块链系统是一个数据共享系统,该区块链系统中可以包括多个节点,多个节点具体可以包括节点1、节点2、节点3…、节点N,这里的节点1、节点2、节点3…、节点N。其中,每个节点在进行正常工作时可以接收到外界发送的数据,并基于接收到的数据进行区块上链处理,也可以向外界发送数据。为了保证各个节点之间的数据互通,每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当区块链系统中的任意节点接收到输入信息时,区块链系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链系统中全部节点上存储的数据均一致。
可以理解的是,上述的信息连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接方式,本申请在此不做限制。
可以理解的是,对于区块链系统中的每个节点,均具有与其对应的节点标识,而且区块链系统中的每个节点均可以存储有区块链系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至区块链系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明:
表1
节点名称 | 节点标识 |
节点1 | 117.114.151.174 |
节点2 | 117.116.189.145 |
节点3 | 117.113.181.124 |
… | … |
节点N | xx.xx.xx.xx |
区块链系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图1B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图1C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据区块链系统中其他节点的节点标识,将新生成的区块分别发送给其所在的区块链系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
区块链系统中可以包括智能合约,智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议,能够允许在没有第三方的情况下进行可信交易,且这些交易可追踪不可篡改。智能合约可以是指一种区块链系统中的各个节点可以理解并执行的代码,可以执行任意逻辑并得到结果。应当理解,区块链系统中可以包括一个或多个智能合约,这些智能合约可以通过标识号(Identity document,ID)或名称来进行区分,而业务请求中可以携带智能合约的标识号或名称,以此指定区块链系统需要运行的智能合约。
图1D是本申请一个示例性实施例提供的智能合约的生命周期的示意图。如图1D所示,智能合约的一个生命周期通常会经历如下几个阶段:(1)编写阶段。开发人员可以采用对象关系映射(Object Relational Mapping,ORM)的方法编写智能合约,所谓ORM是指一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换,可以将程序设计的对象转换为基于SQL的操作语句。换句话说,ORM是一种将基于面向对象编程语言编写的代码转换为SQL库表结构的一种方法。该方法的处理过程为:基于业务需求,通过某种编程语言(例如契约型编程语言(solidity语言)、通用编程语言(vyper语言)、即时编译型的编程语言(javascript语言)等语言)定义智能合约的合约逻辑(包括注册逻辑和操作逻辑),并正向编写智能合约。其中,solidity语言是一种面向智能合约的高级语言,基于此语言编写的智能合约能够生成在EVM(以太坊虚拟机,用于执行智能合约的环境)上执行的字节码。(2)编译阶段。编译阶段可以对定义的智能合约的合约逻辑进行词法分析和语法分析,在确认智能合约的合约逻辑符合语法规则之后,输出智能合约,输出的智能合约为机器可以识别并运行的二进制语言;(3)部署阶段。开发人员可以通过虚拟机(如以太坊的EVM,Fabric的docker等)进行智能合约的共识处理,在智能合约通过共识后,将智能合约部署至区块链系统中的各个节点。(4)调用阶段。当区块链系统中的节点监测到合约事件(例如用户发送一笔交易)时,可以调用相应的智能合约,并执行智能合约包括的合约逻辑,从而对合约事件进行处理。(5)监听阶段。该阶段是指对智能合约的合约事件进行监听,可以得到合约事件触发的完整信息。(6)销毁阶段。当智能合约失效或不再使用时,需要将智能合约在区块链系统上进行销毁。
目前,智能合约在编写阶段通常采用ORM的方法进行编写,存在智能合约开发效率低、重复操作多等问题。基于此,本申请实施例提供一种区块链的智能合约的生成方法,可以基于反ORM(即反向ORM)的方法来自动生成智能合约,本实施例所谓的反ORM是指与ORM反向或逆向的一种处理技术,即可以是将SQL库表结构反向转换为基于面向对象编程语言的代码文件的一种方法。具体地:按照目标业务的业务需求为目标业务对应的智能合约定义数据层描述信息,并根据数据层描述信息编写智能合约的模板文件,对数据层描述信息及智能合约的模板文件进行渲染处理,就可自动化地生成智能合约;上述基于反ORM的方法自动生成智能合约的过程中,可以将原始的数据层描述信息转换为智能合约的相应代码,此方法符合数据驱动的思想,能够减少重复操作,简化智能合约的开发流程,有效提升智能合约的开发效率。
在自动生成智能合约后,可以对该智能合约进行编译、测试,并在测试通过后将智能合约部署至该区块链系统,使得区块链系统中的节点可以利用该智能合约来处理并实现目标业务。
本申请实施例所提供的一种区块链的智能合约的生成方法可以由计算机设备执行,计算机设备可以为终端或服务器。此处的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。计算机设备可以是区块链系统之外的任一设备,当然,计算机设备也可以是区块链系统中的节点。
下面详细介绍本申请的一种区块链的智能合约的生成方法。
图2是本申请一个示例性实施例提供的一种区块链的智能合约的生成方法的流程示意图,该方法可包括以下步骤S201-S204:
S201、获取目标业务的业务需求。
目标业务可以是需要通过智能合约执行的任一业务,例如目标业务可以是指数据上链业务,或者可以是支付业务,或者可以是审计业务等等。业务需求用于描述目标业务需要达到的目标或需要实现的功能;例如:目标业务为数据上链业务,其业务需求可以描述为需要在区块链上为传输的数据创建一个新的区块。本申请实施例中,计算机设备可输出配置界面,智能合约的开发人员可以在该配置界面中对目标业务的业务需求进行配置,计算机设备获得开发人员所配置的目标业务的业务需求,并依据此业务需求的指引,基于后续流程自动生成该目标业务对应的智能合约。
S202、按照业务需求为目标业务对应的智能合约定义数据层描述信息。
智能合约的数据层描述信息是指用于描述智能合约的数据层的描述语句;该描述语句可以包括但不限于SQL(Structured Query Language,结构化查询语言)语句。在一种实现中,数据层描述信息可以是指目标业务对应的数据表的DDL(Data DefinitionLanguage,数据定义语言)描述语句,DDL是SQL语言集中负责数据结构定义与数据库对象定义的语言,用来创建数据库中的各种对象(表、视图、索引、同义词、聚簇等)。
计算机设备在获取到业务需求后,根据业务需求获取目标业务的业务参数,例如:设目标业务为权限控制业务,业务需求是对用户进行权限控制,那么业务参数可以包括用户信息,包括但不限于用户标识、用户姓名、用户年龄等等。进一步,可以利用目标业务的业务参数在关系型数据库中创建数据表,例如,该数据表可以为二维表,可以将业务参数作为二维表中的字段名(属性名),从而得到目标业务对应的数据表,并根据目标业务对应的数据表生成该数据表的DDL描述语句作为数据层描述信息,此时该数据层描述信息表现为关系型数据库中的数据表。
关系型数据库(Relational database)是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
S203、根据数据层描述信息编写智能合约的模板文件。
计算机设备在确定数据层描述信息后,可以根据数据层描述信息编写智能合约的模板文件,在一种实施方式中,数据层描述信息为目标业务对应的数据表的DDL描述语句,则该模板文件中可以包括与该数据表的表结构相匹配的功能函数,利用该功能函数可以生成区块链系统中的节点可进行数据操作的数据表。
S204、对数据层描述信息和模板文件进行渲染处理,生成智能合约。
从数据层描述信息(例如目标业务对应的数据表的DDL描述语句)中可以获得目标业务的业务参数,将目标业务的业务参数填充到智能合约的模板文件中,就可以得到目标业务的智能合约。
在本申请实施例中,计算机设备根据目标业务的业务需求为目标业务对应的智能合约定义数据层描述信息,并根据数据层描述信息编写智能合约的模板文件,通过对数据层描述信息和智能合约的模板文件进行渲染处理,可以自动化地生成目标业务的智能合约;该智能合约的自动化生成过程是基于反对象关系映射的方法实现的,该基于反对象关系映射的方法可以将原始的数据层描述信息转换为智能合约的相应代码,此方法符合数据驱动的思想,能够减少重复操作,简化智能合约的开发流程,有效提升智能合约的开发效率。
图3是本申请另一个示例性实施例提供的一种区块链的智能合约的生成方法的流程示意图,该方法可包括以下步骤S301-S307:
S301、获取目标业务的业务需求。
目标业务的业务需求中可以携带目标业务的业务参数,如开发人员可以配置目标业务的业务参数包括:消息标识(MsgID)、整型参数(KeyInt)、字符串型参数(KeyString)、变量型参数(KeyVariable)、布尔型参数(KeyBool)、结果型参数(Results)、索引对象参数(KeyObjectIndex)、字符串型参数(KeyStringNew)、字符串型参数(KeyStringFor)、字符串型参数(KeyStringWhile)、字符串型参数(KeyStringDo)。
目标业务的业务需求中还可以携带业务参数的数据类型,如针对上述目标业务的业务参数可以配置相应的数据类型:MsgID是不为空指针(NULL)的最大长度为255的可变长字符串(varchar)、KeyInt、Results是最大数据长度为20的精确数字数据类型(bigint)、KeyString、KeyVariable、KeyObjectIndex、KeyStringNew、KeyStringFor、KeyStringWhile、KeyStringDo是最大长度为255的可变长字符串(varchar)、KeyBool是最大长度为4的整数数据类型(tinyint)。
S302、在关系型数据库中创建目标业务所需的数据表,数据表中包含字段。
计算机设备在关系型数据库中创建目标业务所需的数据表时,该数据表可以是二维表,该二维表中的首行是字段名(属性名),该字段名是唯一的,则首先可以根据目标业务的业务参数确定参数个数,在二维表中的首行创建与参数个数一致的多个字段。
S303、将业务需求中携带的业务参数作为字段值输入至数据表中,得到数据层描述信息。
具体地,计算机设备在获取到业务需求中携带的业务参数后,将业务参数作为数据表中的多个字段对应的字段值输入到数据表中,就得到目标业务对应的数据表,计算机设备还可以将业务参数的数据类型作为字段值的数据类型添加到数据表中;进一步地,可以利用目标业务对应的数据表生成DDL描述语句(即根据该DDL描述语句可以生成目标业务对应的数据表),从而得到数据层描述信息。
下面以一个具体示例进行说明,智能合约的数据层描述信息可以表示如下:
SET FOREIGN_KEY_CHECKS=0//可以更新或删除数据
DROP TABLE IF EXISTS't_sahehllo_table_JsNormal';//存在相应数据表则删除
CREATE TABLE't_sahehllo_table_JsNormal'(//创建数据表
'F_MsgID'varchar(255)NOT NULL,//MsgID是不为NULL的最大长度为255的可变长字符串(varchar)
'F_KeyInt'bigint(20)DEFAULT NULL,//KeyInt是最大数据长度为20的精确数字数据类型(bigint)
'F_KeyString'varchar(255)DEFAULT NULL,//KeyString是最大长度为255的varchar
'F_KeyVariable'varchar(255)DEFAULT NULL,//KeyVariable是最大长度为255的varchar
'F_KeyBool'tinyint(4)DEFAULT NULL,//KeyBool是最大长度为4的整数数据类型(tinyint)
'F_Results'bigint(20)DEFAULT NULL,//Results是最大数据长度为20的bigint
'F_KeyObjectIndex'varchar(255)DEFAULT NULL,//KeyObjectIndex是最大长度为255的varchar
'F_KeyStringNew'varchar(255)DEFAULT NULL,//KeyStringNew是最大长度为255的varchar
'F_KeyStringFor'varchar(255)DEFAULT NULL,//KeyStringFor是最大长度为255的varchar
'F_KeyStringWhile'varchar(255)DEFAULT NULL,//KeyStringWhile是最大长度为255的varchar
'F_KeyStringDo'varchar(255)DEFAULT NULL,//KeyStringDo是最大长度为255的varchar
PRIMARY KEY(F_MsgID)//MsgID是主关键字
)ENGING=InnoDB DEFAULY CHARSET=UTF8;//数据表中插入中文不会乱码
其中,t_sahehllo_table_JsNormal为目标业务对应的数据表。数据层描述信息中的字段是根据业务需求中携带的业务参数确定的。
S304、确定与数据表的表结构相匹配的功能函数,根据相匹配的功能函数编写智能合约的模板文件。
智能合约是区块链系统可执行的代码,例如solidity语言是一种面向智能合约的高级语言,利用solidity语言编写的智能合约能够生成在区块链系统上执行的字节码。基于此,基于DDL描述语句的数据表,需要被转换为区块链系统可执行的代码。计算机设备获取与数据表的表结构相匹配的功能函数,该功能函数则是能够在区块链系统中运行的代码。
在一个实施例中,计算机设备可以从模板库中获取与数据表的表结构相匹配的功能函数,该模板库中可以包括多种功能函数,包括但不限于测试注册对象的功能函数、对数据对象(测试注册对象)进行读写操作的功能函数等等。此处的模板库可以包括但不限于python模板库。在得到与数据表的表结构相匹配的功能函数后,就可以根据该功能函数编写智能合约的模板文件。
例如,与上述数据表t_sahehllo_table_JsNormal的表结构相匹配的功能函数为OnDeplay,则根据该功能函数编写智能合约的模板文件为:
S305、对数据层描述信息和模板文件进行渲染处理,生成智能合约。
在一个实施例中,对数据层描述信息和模板文件进行渲染处理,生成智能合约时,可以包括以下步骤:
(1)调用合约模板引擎解析数据表中的字段,得到字段值。由于目标业务所需的数据表中的字段值是基于目标业务的业务参数得到的,因此调用合约模板引擎解析得到的字段值能够反映目标业务的业务参数。
(2)调用合约模板引擎解析模板文件,确定模板文件中的变量位置。
(3)将解析得到的字段值作为规则变量填充至模板文件中的变量位置处,得到智能合约。
上述步骤中,合约模板引擎是能够对智能合约的模板文件及数据库表结构进行解析、渲染处理,并自动生成智能合约的代码的一个引擎工具。该合约模板引擎可以包括但不限于:jinja2引擎。jinja2引擎是python web框架下开发的一个模板系统,最初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用。
在一个实施例中,调用合约模板引擎对目标业务对应的数据表中的字段进行解析时,还可以得到字段值的数据类型等信息,合约模板引擎会将DDL语言定义的数据类型等信息转换为模板文件的开发语言的语言格式,例如将varchar(255)转换为字符串类型(string)、tinyint(4)转换为布尔型(bool)等。
进一步地,继续调用合约模板引擎解析模板文件,可以确定模板文件中的变量位置,以上述OnDeplay函数编写的智能合约的模板文件为例,合约模板引擎可以根据{{变量}}确定变量位置。在确定变量位置后,将得到的字段值作为规则变量填充至模板文件中的变量位置处,得到模板业务对应的智能合约。
例如,将数据表中的字段值(目标业务的业务参数)作为规则变量填充至上述OnDeplay函数编写的智能合约的模板文件中,得到:
S306、获取业务需求中目标业务的操作逻辑,获取与操作逻辑相匹配的操作函数。
其中,目标业务的操作逻辑可以根据目标业务的实际应用场景确定,例如业务需求指示允许对数据层进行读操作,那么操作逻辑为读操作逻辑,可以配置读操作逻辑的触发条件,如触发条件可以是当业务交易请求中携带有主关键字时,计算机设备才可以根据该主关键字执行读操作逻辑,从而获取该主关键字对应的业务参数的信息,另外,业务需求还可以指示哪些目标业务的业务参数是具有读权限的,等等,本申请对此不作限定。
在一个实施例中,业务需求还可以指示允许对数据层进行写操作,那么操作逻辑可以包含写操作逻辑,则操作函数包含写操作函数;或者,业务需求还可以指示允许对数据层进行读操作,那么操作逻辑可以包含读操作逻辑,则操作函数包含读操作函数;或者,业务需求还可以指示允许对数据层进行查询操作,那么操作逻辑还可以包含查询操作逻辑,则操作函数包含查询操作函数。
具体地,计算机设备需要确定执行操作逻辑的操作函数,并根据该操作函数生成与该操作逻辑相匹配的操作函数。
在一个实施例中,计算机设备确定执行操作逻辑的操作函数后,可以根据该操作函数生成对应的模板文件,利用该模板文件生成与目标业务的操作逻辑相匹配的操作函数。例如,执行读操作逻辑的读操作函数为GetJsNormal,计算机设备可以编写相应的模板文件为:
在一个实施例中,计算机设备也可以直接根据操作逻辑生成与操作逻辑相匹配的操作函数,例如,直接获取与写(查询)操作逻辑相匹配的写(查询)操作函数,如下所示:
S307、在智能合约中添加相匹配的操作函数。
具体地,计算机设备在智能合约中添加上述与操作逻辑相匹配的操作函数,使得当针对目标业务发起业务请求时,区块链系统可以直接调用该智能合约中相应的操作函数对目标业务对应的数据表进行数据操作。
相比于业务方根据目标业务的业务需求手工编写智能合约,容易因为业务需求改变而做大量重复工作的方法,本申请实施例可以利用基于反对象关系映射的方法,直接根据目标业务的业务需求创建目标业务对应的数据表,根据数据表的数据层描述信息自动转换为智能合约的相应代码,能够减少重复操作,简化智能合约的开发流程,有效提升智能合约的开发效率。
图4是本申请另一个示例性实施例提供的一种区块链的智能合约的生成方法的流程示意图。该方法可以结合上述图1D示例的智能合约的生命周期进行说明;该方法可以包括如下几个阶段:
(1)开发阶段。
在智能合约的开发阶段,计算机设备需要根据目标业务的业务需求定义数据层描述信息,并根据数据层描述信息生成智能合约,其详细实现过程可以参见前述实施例中的说明,在此不再赘述。在生成智能合约后,还可以针对生成的智能合约进行自定义,例如开发人员可以针对该智能合约生成修改逻辑(如修改逻辑为修改操作函数的触发条件等),并将包括修改逻辑的修改信息发送给计算机设备,计算机设备接收到包括修改逻辑的修改信息后,根据修改信息对智能合约进行修正,在修正完成后,输出智能合约。
(2)测试阶段。
计算机设备可以部署智能合约的测试环境,在测试环境中对智能合约进行测试,得到智能合约的测试结果。该测试可以为对智能合约的合约逻辑进行测试,验证智能合约在某些条件下是否能够正常工作,例如针对写操作逻辑进行测试时,针对某个业务参数写入值时,是否可以将值写入数据库中;该测试还可以为对智能合约进行可靠性测试,测试智能合约中是否存在安全漏洞,例如针对写操作逻辑进行可靠性测试时,针对某个业务参数写入的值,可以看值的数据类型是否与业务参数的数据类型相符合,如与业务参数的数据类型不符合,也能在数据库写入时,则认为该智能合约不可靠,就需要重新针对智能合约进行修正。
进一步地,当智能合约的测试结果指示智能合约能够满足目标业务的测试要求(测试通过)时,则将智能合约文件发布至区块链系统。
(3)发布阶段。
在一个实施例中,计算机设备为区块链系统中的节点时,计算机设备可以利用哈希算法生成智能合约的数据区块,在区块链系统中对智能合约的数据区块进行广播,以使得区块链系统对智能合约的数据区块进行共识处理,当智能合约的数据区块通过共识后,就将智能合约的数据区块发布至区块链系统中的节点。此时,区块链系统可以调用智能合约处理与目标业务相关的合约事件,并监听智能合约的合约事件。
在一个实施例中,计算机设备是区块链系统之外的任一设备时,可以将测试通过的智能合约发送给区块链系统中的任一节点,利用该节点实现智能合约的发布。
通过本申请实施例,计算机设备可以在生成智能合约后,还对智能合约进行自定义、测试、发布,使得智能合约的生命周期的整个过程都可以自动化地实现,从而可以提升智能合约的部署效率。
上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面提供了本申请实施例的装置。图5是本申请一个示例性实施例提供的一种基于区块链的智能合约的生成装置的结构示意图。如图5所示,该区块链的智能合约的生成装置50可以设置于计算机设备中,该装置50可以用于执行上述区块链的智能合约的生成方法中的相应步骤,该装置50可以包括:
获取模块501,用于获取目标业务的业务需求;
处理模块502,用于按照业务需求为目标业务对应的智能合约定义数据层描述信息;
该处理模块502,还用于根据数据层描述信息编写智能合约的模板文件;
该处理模块502,还用于对数据层描述信息和模板文件进行渲染处理,生成智能合约。
在一个实施例中,上述处理模块502,还用于:
在关系型数据库中创建目标业务所需的数据表,数据表中包含字段;
将业务需求中携带的业务参数作为字段值输入至数据表中,得到数据层描述信息。
在一个实施例中,上述处理模块502,还用于:
确定与数据表的表结构相匹配的功能函数;
根据相匹配的功能函数编写智能合约的模板文件。
在一个实施例中,上述处理模块502,还用于:
调用合约模板引擎解析数据表中的字段,得到字段值;
调用合约模板引擎解析模板文件,确定模板文件中的变量位置;
将解析得到的字段值作为规则变量填充至模板文件中的变量位置处,得到智能合约。
在一个实施例中,上述处理模块502,还用于:
获取与操作逻辑相匹配的操作函数;
在智能合约中添加相匹配的操作函数。
在一个实施例中,上述处理模块502,还用于:
当接收到针对智能合约的修改信息时,根据修改信息对智能合约进行修正。
在一个实施例中,上述处理模块502,还用于:
部署智能合约的测试环境;
在测试环境中对智能合约进行测试,得到智能合约的测试结果。
在一个实施例中,上述处理模块502,还用于:
若智能合约的测试结果指示智能合约能够满足目标业务的业务需求,则将智能合约文件发布至区块链。
在本申请实施例中,可以根据目标业务的业务需求为目标业务对应的智能合约定义数据层描述信息,并根据数据层描述信息编写智能合约的模板文件,通过对数据层描述信息和智能合约的模板文件进行渲染处理,可以自动化地生成目标业务的智能合约;该智能合约的自动化生成过程是基于反对象关系映射的方法实现的,该基于反对象关系映射的方法可以将原始的数据层描述信息转换为智能合约的相应代码,此方法符合数据驱动的思想,能够减少重复操作,简化智能合约的开发流程,有效提升智能合约的开发效率。
图6是本申请一个示例性实施例提供的一种计算机设备的结构示意图,该计算机设备60至少包括处理器601、存储器602以及通信接口603。其中,处理器601、存储器602以及通信接口603可通过总线或者其它方式连接。该设备60可以包括但不限于是节点,通信接口603可以用于接收或者发送数据。存储器602中存储有计算机可读存储介质,计算机可读存储介质用于存储计算机程序,计算机程序包括计算机指令。处理器601用于执行计算机指令。处理器601(或称CPU(Central Processing Unit,中央处理器))是计算机设备60的计算核心以及控制核心,其适于实现一条或多条计算机指令,具体适于加载并执行一条或多条计算机指令从而实现相应方法流程或相应功能。
该存储器602中存储有计算机程序,计算机程序包括一条或多条计算机指令;由处理器601加载并执行一条或多条计算机指令,以实现上述区块链的智能合约的生成方法实施例中的相应步骤;具体实现中,存储器602中的计算机指令由处理器601加载并执行如下步骤:
获取目标业务的业务需求;
按照业务需求为目标业务对应的智能合约定义数据层描述信息;
根据数据层描述信息编写智能合约的模板文件;
对数据层描述信息和模板文件进行渲染处理,生成智能合约。
在一个实施例中,上述处理器601,还用于:
在关系型数据库中创建目标业务所需的数据表,数据表中包含字段;
将业务需求中携带的业务参数作为字段值输入至数据表中,得到数据层描述信息。
在一个实施例中,上述处理器601,还用于:
确定与数据表的表结构相匹配的功能函数;
根据相匹配的功能函数编写智能合约的模板文件。
在一个实施例中,上述处理器601,还用于:
调用合约模板引擎解析数据表中的字段,得到字段值;
调用合约模板引擎解析模板文件,确定模板文件中的变量位置;
将解析得到的字段值作为规则变量填充至模板文件中的变量位置处,得到智能合约。
在一个实施例中,上述处理器601,还用于:
获取与操作逻辑相匹配的操作函数;
在智能合约中添加相匹配的操作函数。
在一个实施例中,上述处理器601,还用于:
当接收到针对智能合约的修改信息时,根据修改信息对智能合约进行修正。
在一个实施例中,上述处理器601,还用于:
部署智能合约的测试环境;
在测试环境中对智能合约进行测试,得到智能合约的测试结果。
在一个实施例中,上述处理器601,还用于:
若智能合约的测试结果指示智能合约能够满足目标业务的业务需求,则将智能合约文件发布至区块链。
在本申请实施例中,可以根据目标业务的业务需求为目标业务对应的智能合约定义数据层描述信息,并根据数据层描述信息编写智能合约的模板文件,通过对数据层描述信息和智能合约的模板文件进行渲染处理,可以自动化地生成目标业务的智能合约;该智能合约的自动化生成过程是基于反对象关系映射的方法实现的,该基于反对象关系映射的方法可以将原始的数据层描述信息转换为智能合约的相应代码,此方法符合数据驱动的思想,能够减少重复操作,简化智能合约的开发流程,有效提升智能合约的开发效率。
本申请实施例还提供了一种计算机可读存储介质(Memory),计算机可读存储介质是计算机设备60中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机可读存储介质既可以包括计算机设备60中的内置存储介质,当然也可以包括计算机设备60所支持的扩展存储介质。计算机可读存储介质提供存储空间,该存储空间存储了计算机设备60的操作系统。并且,在该存储空间中还存放了适于被处理器601加载并执行的一条或多条的计算机指令,这些计算机指令可以是一个或多个的计算机程序(包括程序代码)。需要说明的是,此处的计算机可读存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(Non-Volatile Memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器601的计算机可读存储介质。
本申请一个或多个实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法的实施例中所执行的步骤。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种区块链的智能合约的生成方法,其特征在于,所述方法包括:
获取目标业务的业务需求;
按照所述业务需求为所述目标业务对应的智能合约定义数据层描述信息;
根据所述数据层描述信息编写所述智能合约的模板文件;
对所述数据层描述信息和所述模板文件进行渲染处理,生成所述智能合约。
2.根据权利要求1所述的方法,其特征在于,所述业务需求中携带有所述目标业务的业务参数;
所述按照所述业务需求为所述目标业务对应的智能合约定义数据层描述信息,包括:
在关系型数据库中创建所述目标业务所需的数据表,所述数据表中包含字段;
将所述业务需求中携带的业务参数作为字段值输入至所述数据表中,得到所述数据层描述信息。
3.根据权利要求1所述的方法,其特征在于,所述数据层描述信息为关系型数据库中的数据表;
所述根据所述数据层描述信息编写所述智能合约的模板文件,包括:
确定与所述数据表的表结构相匹配的功能函数;
根据所述相匹配的功能函数编写所述智能合约的模板文件。
4.根据权利要求3所述的方法,其特征在于,所述对所述数据层描述信息和所述模板文件进行渲染处理,生成所述智能合约,包括:
调用合约模板引擎解析所述数据表中的字段,得到字段值;
调用所述合约模板引擎解析所述模板文件,确定所述模板文件中的变量位置;
将解析得到的所述字段值作为规则变量填充至所述模板文件中的变量位置处,得到所述智能合约。
5.根据权利要求1所述的方法,其特征在于,所述业务需求中包含所述目标业务的操作逻辑;所述方法还包括:
获取与所述操作逻辑相匹配的操作函数;
在所述智能合约中添加所述相匹配的操作函数。
6.根据权利要求5所述的方法,其特征在于,所述,所述操作逻辑包含写操作逻辑,则所述操作函数包含写操作函数;或者,
所述操作逻辑包含读操作逻辑,则所述操作函数包含读操作函数;或者,
所述操作逻辑包含查询操作逻辑,则所述操作函数包含查询操作函数。
7.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:输出所述智能合约;
当接收到针对所述智能合约的修改信息时,根据所述修改信息对所述智能合约进行修正。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
部署所述智能合约的测试环境;
在所述测试环境中对所述智能合约进行测试,得到所述智能合约的测试结果。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述智能合约的测试结果指示所述智能合约能够满足所述目标业务的业务需求,则将所述智能合约文件发布至区块链。
10.一种区块链的智能合约的生成装置,其特征在于,所述装置包括:
获取模块,用于获取目标业务的业务需求;
处理模块,用于按照所述业务需求为所述目标业务对应的智能合约定义数据层描述信息;
所述处理模块,还用于根据所述数据层描述信息编写所述智能合约的模板文件;
所述处理模块,还用于对所述数据层描述信息和所述模板文件进行渲染处理,生成所述智能合约。
11.一种计算机设备,其特征在于,包括:
处理器,适于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,实现如权利要求1-9任一项所述的区块链的智能合约的生成方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行权利要求1~9任一项所述的区块链的智能合约的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110574681.2A CN115391330A (zh) | 2021-05-25 | 2021-05-25 | 区块链的智能合约的生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110574681.2A CN115391330A (zh) | 2021-05-25 | 2021-05-25 | 区块链的智能合约的生成方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115391330A true CN115391330A (zh) | 2022-11-25 |
Family
ID=84114269
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110574681.2A Pending CN115391330A (zh) | 2021-05-25 | 2021-05-25 | 区块链的智能合约的生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115391330A (zh) |
-
2021
- 2021-05-25 CN CN202110574681.2A patent/CN115391330A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10216960B2 (en) | Data masking systems and methods | |
CN112015396B (zh) | 基于dsl的智能合约代码生成方法、装置、设备及存储介质 | |
CN114600420A (zh) | 修剪防篡改数据存储装置中的条目 | |
CN110597814B (zh) | 结构化数据的序列化、反序列化方法以及装置 | |
CN109445837B (zh) | 一种应用程序的发布方法及设备 | |
CN112148343B (zh) | 规则发布方法、装置及终端设备 | |
CN103019874A (zh) | 基于数据同步实现异常处理的方法及装置 | |
CN112070608B (zh) | 信息处理方法、装置、介质及电子设备 | |
CN111240772B (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN113434175A (zh) | 数据处理方法、装置、存储介质及设备 | |
CN114168149A (zh) | 一种数据转换方法及装置 | |
CN110598419B (zh) | 一种区块链客户端漏洞挖掘方法、装置、设备及存储介质 | |
CN115114372A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN113515303B (zh) | 一种项目转型方法、装置和设备 | |
CN113885876A (zh) | 一种参数校验方法、装置、存储介质及计算机系统 | |
CN107273764B (zh) | 一种Swift语言实施的安全协议的安全性验证方法 | |
CN115022312B (zh) | 多智能合约引擎的实现方法、装置、电子设备及存储介质 | |
CN111460436B (zh) | 一种基于区块链的非结构化数据操作方法和系统 | |
CN115391330A (zh) | 区块链的智能合约的生成方法、装置、设备及存储介质 | |
CN114677129A (zh) | 一种基于区块链的艺术品确权流通方法 | |
US11909858B1 (en) | System and method for generating and performing a smart contract | |
CN114003317B (zh) | 内联实现方法及装置、电子设备、存储介质及程序产品 | |
CN114328590A (zh) | 交易执行方法、装置、设备和存储介质 | |
CN116560641A (zh) | 接口自动生成方法、装置、设备及存储介质 | |
CN116303272A (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 |