CN109522008A - 一种区块链智能合约构建方法 - Google Patents
一种区块链智能合约构建方法 Download PDFInfo
- Publication number
- CN109522008A CN109522008A CN201811312067.3A CN201811312067A CN109522008A CN 109522008 A CN109522008 A CN 109522008A CN 201811312067 A CN201811312067 A CN 201811312067A CN 109522008 A CN109522008 A CN 109522008A
- Authority
- CN
- China
- Prior art keywords
- data
- intelligent contract
- block chain
- action
- condition
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种区块链智能合约构建方法,包括以下步骤:(1)将智能合约分解为多个action操作,其action操作之间没有相互联系;(2)将每个action操作使用类SQL的语法进行编写;(3)编写好的action操作采用antlr技术生成标准AST树,将AST树翻译对应区块链语言的函数代码,对其进行四则运算和函数调用;(4)搭建智能合约开发框架,将翻译后的函数代码文件引入到智能合约开发框架中;(5)根据翻译后的函数代码,通过智能合约开发框架的在线编译模块在线编译生成对应的智能合约,完成区块链智能合约的构建。本发明减小了区块链智能合约的开发难度,不同语言的区域链也可以进行统一开发,给智能合约开发人员提供了便利。
Description
技术领域
本发明涉及区块链智能合约领域,具体地说,是涉及一种区块链智能合约构建方法。
背景技术
智能合约基于区块链,在区块链上运行,智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。其智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。
由于智能合约有着处理交易时效率更高,不可逆转,安全的交易以及全自动化流程的优点,近年来得到了广泛的关注以及快速的发展。随着区块链和智能合约的发展,目前区块链的智能合约开发方式在不同的区块链(以太坊和EOS)上是不一样的,造成两者的合约无法通用,再者当区块链上支持多语言类型时,编程语言比较难以理解,需要较强的逻辑思维能力,造成智能合约开发难度增加,如何减小智能合约的开发难度是相关人员亟需解决的问题。
发明内容
本发明的目的在于提供一种区块链智能合约构建方法,减小区块链智能合约的开发难度。
为实现上述目的,本发明采用的技术方案如下:
一种区块链智能合约构建方法,包括以下步骤:
(1)将智能合约分解为多个action操作,其action操作之间没有相互联系;
(2)将每个action操作使用类SQL的语法进行编写;
(3)编写好的action操作采用antlr技术生成标准的AST树,根据区块链语言特点,将AST树翻译对应语言的函数代码,对其进行四则运算和函数调用;
(4)搭建智能合约开发框架,将翻译后的函数代码文件引入到智能合约开发框架中;
(5)根据翻译后的函数代码,通过智能合约开发框架的在线编译模块在线编译生成对应的智能合约,完成区块链智能合约的构建。
所述步骤(2)中使用类SQL语法编写action操作的过程为:采用create action作为一个action操作的声明,结合数据查询语句:select attr.name,...from tblname(where conditionlist)?、数据添加语句:insert into tblname value(attr.name,...)(where conditionlist)?、数据删除语句:drop tblname(where condition)?对区块链的数据结构数据进行查询、添加、删除,最后以end action作为action操作的结束;
进一步地,所述数据查询语句:select attr.name,...from tblname(whereconditionlist)?中的?表示所要查询数据的数据列表可能存在或者不存在;所述数据添加语句:insert into tblname value(attr.name,...)(where conditionlist)?中的?表示所要添加数据的数据列表可能存在或者不存在,如果要添加数据的数据列表不存在where条件则表示要添加一个数据,如果要添加数据的数据列表存在where条件则表示要修改某个数据;所述数据删除语句:drop tblname(where condition)?中的?表示所要删除数据的数据列表可能存在或者不存在,如果存在where condition条件表示删除数据列表内的某个数据,不存在where condition条件表示删除表数据并且删除这个表。
进一步地,所述AST树所翻译的语言类型有Python、Java、go、c++、Solidity。
进一步地,在步骤(4)中,搭建的智能合约开发框架为翻译后函数代码相应语言的智能合约开发框架。
与现有技术相比,本发明具有以下有益效果:
本发明通过将智能合约对区块链的数据结构操作分解为多个action操作,然后每个action操作使用类SQL的语法进行编写,对智能合约进行构建时只需按照特定的语法规则进行action操作编写即可,减小了智能合约的开发难度,降低的对智能合约开发要求;然后再根据编写的代码采用antlr技术生成标准的AST树,对AST树翻译成所需语言的代码,最后根据翻译后的代码在线编译生成对应的智能合约。提升了现有的智能合约开发方式技术,不同的区块链上也可以统一的开发。
附图说明
图1为本发明的整体流程示意图。
具体实施方式
下面结合附图说明和实施例对本发明作进一步说明,本发明的方式包括但不仅限于以下实施例。
实施例
如图1所示,本发明公开的一种区块链智能合约构建方法,包括以下步骤:
(1)将智能合约分解为多个action操作,其action操作之间没有相互联系;
(2)将每个action操作使用类SQL的语法进行编写;
(3)编写好的action操作采用antlr技术生成标准的AST树,根据区块链语言特点,将AST树翻译对应语言的函数代码,对其进行四则运算和函数调用;
(4)搭建智能合约开发框架,将翻译后的函数代码文件引入到智能合约开发框架中;
(5)根据翻译后的函数代码,通过智能合约开发框架的在线编译模块在线编译生成对应的智能合约,完成区块链智能合约的构建。
所述步骤(2)中使用类SQL语法编写action操作的过程为:采用create action作为一个action操作的声明,结合数据查询语句:select attr.name,...from tblname(where conditionlist)?、数据添加语句:insert into tblname value(attr.name,...)(where conditionlist)?、数据删除语句:drop tblname(where condition)?对区块链的数据结构数据进行查询、添加、删除,最后以end action作为action操作的结束;
进一步地,所述数据查询语句:select attr.name,...from tblname(whereconditionlist)?中的?表示所要查询数据的数据列表可能存在或者不存在;所述数据添加语句:insert into tblname value(attr.name,...)(where conditionlist)?中的?表示所要添加数据的数据列表可能存在或者不存在,如果要添加数据的数据列表不存在where条件则表示要添加一个数据,如果要添加数据的数据列表存在where条件则表示要修改某个数据;所述数据删除语句:drop tblname(where condition)?中的?表示所要删除数据的数据列表可能存在或者不存在,如果存在where condition条件表示删除数据列表内的某个数据,不存在where condition条件表示删除表数据并且删除这个表。
所述AST树所翻译的语言类型有Python、Java、go、c++、Solidity。其步骤(4)中搭建的智能合约开发框架为翻译后函数代码相应语言的智能合约开发框架。
在智能合约具体的构建过程中,其中对区块链的数据结构的相关操作示例为:
区块链的数据结构为:
typedef eosio::multi_index<N(mindex),mindex,indexed_by<N(secondid),const_mem_fun<mindex,uint64_t,&mindex::bysecond>>>mindex_table;
action操作将其数据结构转换为表的具体过程为:先sql代码解析mindex确定结构体的名称,解析参数id,type,data和类型确定结构体的字段。解析primar生成表的键值,解析index生成索引,然后根据结构体mindex,字段id,type,data生成EOSLIB_SERIALIZE,最后根据mindex和index生成mindex_table表。
其action操作内表定义语法为:icql_create(uint64_tmindex,uint64_tprimaryid,uint64_t index type,std::string data)
对生成表的进行插入数据操作具体为:
先解析mindex获取表名,解析primary确定键值,生成查找键值语句,根据结构体获取字段名称,根据输入参数id、type和data生成插入语句。
语法表示为:
create_action icql_insert(user,mindex,id,type,data)
{
insert into mindex(id,type,data)values(id,type,data);
}
本发明通过上述设计,有效地解决了智能合约开发难度较大的问题,不同语言的区块链可进行统一的开发,减小了智能合约的开发难度。
上述实施例仅为本发明的优选实施方式之一,不应当用于限制本发明的保护范围,但凡在本发明的主体设计思想和精神上做出的毫无实质意义的改动或润色,其所解决的技术问题仍然与本发明一致的,均应当包含在本发明的保护范围之内。
Claims (4)
1.一种区块链智能合约构建方法,其特征在于,包括以下步骤:
(1)将智能合约分解为多个action操作,其action操作之间没有相互联系;
(2)将每个action操作使用类SQL的语法进行编写;
(3)编写好的action操作采用antlr技术生成标准的AST树,根据区块链语言特点,将AST树翻译对应区块链语言的函数代码,对其进行四则运算和函数调用;
(4)搭建智能合约开发框架,将翻译后的函数代码文件引入到智能合约开发框架中;
(5)根据翻译后的函数代码,通过智能合约开发框架的在线编译模块在线编译生成对应的智能合约,完成区块链智能合约的构建。
2.根据权利要求1所述的一种区块链智能合约构建方法,其特征在于,所述步骤(2)中使用类SQL语法编写action操作的过程为:采用create action作为一个action操作的声明,结合数据查询语句:select attr.name,...from tblname(where conditionlist)?、数据添加语句:insert into tblname value(attr.name,...)(where conditionlist)?、数据删除语句:drop tblname(where condition)?对区块链的数据结构数据进行查询、添加、删除,最后以end action作为action操作的结束;所述数据查询语句:selectattr.name,...from tblname(where conditionlist)?中的?表示所要查询数据的数据列表可能存在或者不存在;所述数据添加语句:insert into tblname value(attr.name,...)(where conditionlist)?中的?表示所要添加数据的数据列表可能存在或者不存在,如果要添加数据的数据列表不存在where条件则表示要添加一个数据,如果要添加数据的数据列表存在where条件则表示要修改某个数据;所述数据删除语句:droptblname(where condition)?中的?表示所要删除数据的数据列表可能存在或者不存在,如果存在where condition条件表示删除数据列表内的某个数据,不存在where condition条件表示删除表数据并且删除这个表。
3.根据权利要求2所述的一种区块链智能合约构建方法,其特征在于,AST树所翻译的语言类型包括Python、Java、go、c++、Solidity。
4.根据权利要求3所述的一种区块链智能合约构建方法,其特征在于,在步骤(4)中,搭建的智能合约开发框架为翻译后函数代码相应语言的智能合约开发框架。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811312067.3A CN109522008B (zh) | 2018-11-06 | 2018-11-06 | 一种区块链智能合约构建方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811312067.3A CN109522008B (zh) | 2018-11-06 | 2018-11-06 | 一种区块链智能合约构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109522008A true CN109522008A (zh) | 2019-03-26 |
CN109522008B CN109522008B (zh) | 2020-07-10 |
Family
ID=65773169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811312067.3A Active CN109522008B (zh) | 2018-11-06 | 2018-11-06 | 一种区块链智能合约构建方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522008B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309196A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 区块链数据存储和查询方法、装置、设备及存储介质 |
CN110554866A (zh) * | 2019-09-12 | 2019-12-10 | 北京工商大学 | 一种基于mvc交易类智能合约交互式设计方法 |
CN110569033A (zh) * | 2019-09-12 | 2019-12-13 | 北京工商大学 | 一种数字化交易类智能合约基础代码生成方法 |
CN110688151A (zh) * | 2019-09-24 | 2020-01-14 | 暨南大学 | 一种面向以太坊Solidity智能合约的安全翻译与解析方法 |
CN111399850A (zh) * | 2020-03-27 | 2020-07-10 | 象链网络科技(上海)有限公司 | 基于区块链的多语言智能合约编译方法 |
CN113110843A (zh) * | 2021-03-05 | 2021-07-13 | 卓尔智联(武汉)研究院有限公司 | 合约生成模型训练方法、合约生成方法及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106681739A (zh) * | 2017-01-11 | 2017-05-17 | 杭州云象网络技术有限公司 | 一种智能合约的自动化生成方法 |
CN106874440A (zh) * | 2017-02-07 | 2017-06-20 | 杭州秘猿科技有限公司 | 一种基于sql数据库的区块链状态存储方法 |
US20170193412A1 (en) * | 2015-12-30 | 2017-07-06 | Progressclaim.Com Pty Ltd | System and method for project contract management |
CN107844294A (zh) * | 2017-11-17 | 2018-03-27 | 杭州秘猿科技有限公司 | 一种高可用的合约执行方法及系统 |
CN108052321A (zh) * | 2017-12-28 | 2018-05-18 | 杭州趣链科技有限公司 | 一种基于配置信息自动生成区块链智能合约的方法 |
CN108459860A (zh) * | 2018-03-28 | 2018-08-28 | 成都链安科技有限公司 | 区块链智能合约形式化验证代码转换器及转换方法 |
-
2018
- 2018-11-06 CN CN201811312067.3A patent/CN109522008B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170193412A1 (en) * | 2015-12-30 | 2017-07-06 | Progressclaim.Com Pty Ltd | System and method for project contract management |
CN106681739A (zh) * | 2017-01-11 | 2017-05-17 | 杭州云象网络技术有限公司 | 一种智能合约的自动化生成方法 |
CN106874440A (zh) * | 2017-02-07 | 2017-06-20 | 杭州秘猿科技有限公司 | 一种基于sql数据库的区块链状态存储方法 |
CN107844294A (zh) * | 2017-11-17 | 2018-03-27 | 杭州秘猿科技有限公司 | 一种高可用的合约执行方法及系统 |
CN108052321A (zh) * | 2017-12-28 | 2018-05-18 | 杭州趣链科技有限公司 | 一种基于配置信息自动生成区块链智能合约的方法 |
CN108459860A (zh) * | 2018-03-28 | 2018-08-28 | 成都链安科技有限公司 | 区块链智能合约形式化验证代码转换器及转换方法 |
Non-Patent Citations (2)
Title |
---|
MAHDI JAFARI 等: "Code construction for multiple sources network coding", 《MOBIHOC S3 "09: PROCEEDINGS OF THE 2009 MOBIHOC S3 WORKSHOP ON MOBIHOC S3》 * |
朱忠宁: "基于DSL和区块链技术的可编程智能合约设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309196A (zh) * | 2019-05-22 | 2019-10-08 | 深圳壹账通智能科技有限公司 | 区块链数据存储和查询方法、装置、设备及存储介质 |
CN110554866A (zh) * | 2019-09-12 | 2019-12-10 | 北京工商大学 | 一种基于mvc交易类智能合约交互式设计方法 |
CN110569033A (zh) * | 2019-09-12 | 2019-12-13 | 北京工商大学 | 一种数字化交易类智能合约基础代码生成方法 |
CN110569033B (zh) * | 2019-09-12 | 2022-11-01 | 北京工商大学 | 一种数字化交易类智能合约基础代码生成方法 |
CN110554866B (zh) * | 2019-09-12 | 2022-11-01 | 北京工商大学 | 一种基于mvc交易类智能合约交互式设计方法 |
CN110688151A (zh) * | 2019-09-24 | 2020-01-14 | 暨南大学 | 一种面向以太坊Solidity智能合约的安全翻译与解析方法 |
CN110688151B (zh) * | 2019-09-24 | 2022-03-29 | 暨南大学 | 一种面向以太坊Solidity智能合约的安全翻译与解析方法 |
CN111399850A (zh) * | 2020-03-27 | 2020-07-10 | 象链网络科技(上海)有限公司 | 基于区块链的多语言智能合约编译方法 |
CN111399850B (zh) * | 2020-03-27 | 2023-05-16 | 象链网络科技(上海)有限公司 | 基于区块链的多语言智能合约编译方法 |
CN113110843A (zh) * | 2021-03-05 | 2021-07-13 | 卓尔智联(武汉)研究院有限公司 | 合约生成模型训练方法、合约生成方法及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109522008B (zh) | 2020-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522008A (zh) | 一种区块链智能合约构建方法 | |
Del Fabro et al. | Semi-automatic model integration using matching transformations and weaving models | |
Garlan et al. | Acme: An architecture description interchange language | |
Engelen et al. | Integrating textual and graphical modelling languages | |
US20060048109A1 (en) | Enhanced compiled representation of transformation formats | |
US20160342628A1 (en) | Textual query editor for graph databases that performs semantic analysis using extracted information | |
CN108829884A (zh) | 数据映射方法及装置 | |
US20050097453A1 (en) | Method and system for reversible design tree transformations | |
CN110162297A (zh) | 一种源代码段自然语言描述自动生成方法及系统 | |
Telles | Python for Professionals: Learning Python as a Second Language | |
CN109857458B (zh) | 基于ANTLR的AltaRica 3.0的扁平化的转化方法 | |
Sanchez et al. | Bigraphical modelling of architectural patterns | |
US7346889B1 (en) | Method and system for building message instances | |
Do Nascimento Fidalgo et al. | EERMM: a metamodel for the enhanced entity-relationship model | |
Zhao et al. | Pattern-based design evolution using graph transformation | |
Meyers et al. | Composing textual modelling languages in practice | |
CN116010444B (zh) | 低代码交互式的图查询语句构建方法 | |
Kim et al. | An integrated framework with UML and Object-Z for developing a precise and understandable specification: the light control case study | |
CN106446034A (zh) | 数据可视化查询语言系统 | |
Hearnden et al. | Anti-Yacc: MOF-to-text | |
CN103631983A (zh) | 一种战术数据报文模拟方法及系统 | |
Loth et al. | UVLS: A Language Server Protocol For UVL | |
CN111679809A (zh) | 一种基于Noesis逻辑的程序开发与验证方法及系统 | |
Lovrenčić et al. | 1957-2007: 50 years of higher order programming languages | |
O'Reilly et al. | CSP-CASL-Prover: a generic tool for process and data refinement |
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 |