一种区块链智能合约构建方法技术

技术编号:20680053 阅读:47 留言:0更新日期:2019-03-27 18:35
本发明专利技术公开了一种区块链智能合约构建方法,包括以下步骤:(1)将智能合约分解为多个action操作,其action操作之间没有相互联系;(2)将每个action操作使用类SQL的语法进行编写;(3)编写好的action操作采用antlr技术生成标准AST树,将AST树翻译对应区块链语言的函数代码,对其进行四则运算和函数调用;(4)搭建智能合约开发框架,将翻译后的函数代码文件引入到智能合约开发框架中;(5)根据翻译后的函数代码,通过智能合约开发框架的在线编译模块在线编译生成对应的智能合约,完成区块链智能合约的构建。本发明专利技术减小了区块链智能合约的开发难度,不同语言的区域链也可以进行统一开发,给智能合约开发人员提供了便利。

【技术实现步骤摘要】
一种区块链智能合约构建方法
本专利技术涉及区块链智能合约领域,具体地说,是涉及一种区块链智能合约构建方法。
技术介绍
智能合约基于区块链,在区块链上运行,智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。其智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。由于智能合约有着处理交易时效率更高,不可逆转,安全的交易以及全自动化流程的优点,近年来得到了广泛的关注以及快速的发展。随着区块链和智能合约的发展,目前区块链的智能合约开发方式在不同的区块链(以太坊和EOS)上是不一样的,造成两者的合约无法通用,再者当区块链上支持多语言类型时,编程语言比较难以理解,需要较强的逻辑思维能力,造成智能合约开发难度增加,如何减小智能合约的开发难度是相关人员亟需解决的问题。
技术实现思路
本专利技术的目的在于提供一种区块链智能合约构建方法,减小区块链智能合约的开发难度。为实现上述目的,本专利技术采用的技术方案如下:一种区块链智能合约构建方法,包括以下步骤:(1)将智能合约分解为多个action操作,其action操作之间没有相互联系;(2)将每个action操作使用类SQL的语法进行编写;(3)编写好的action操作采用antlr技术生成标准的AST树,根据区块链语言特点,将AST树翻译对应语言的函数代码,对其进行四则运算和函数调用;(4)搭建智能合约开发框架,将翻译后的函数代码文件引入到智能合约开发框架中;(5)根据翻译后的函数代码,通过智能合约开发框架的在线编译模块在线编译生成对应的智能合约,完成区块链智能合约的构建。所述步骤(2)中使用类SQL语法编写action操作的过程为:采用createaction作为一个action操作的声明,结合数据查询语句:selectattr.name,...fromtblname(whereconditionlist)?、数据添加语句:insertintotblnamevalue(attr.name,...)(whereconditionlist)?、数据删除语句:droptblname(wherecondition)?对区块链的数据结构数据进行查询、添加、删除,最后以endaction作为action操作的结束;进一步地,所述数据查询语句:selectattr.name,...fromtblname(whereconditionlist)?中的?表示所要查询数据的数据列表可能存在或者不存在;所述数据添加语句:insertintotblnamevalue(attr.name,...)(whereconditionlist)?中的?表示所要添加数据的数据列表可能存在或者不存在,如果要添加数据的数据列表不存在where条件则表示要添加一个数据,如果要添加数据的数据列表存在where条件则表示要修改某个数据;所述数据删除语句:droptblname(wherecondition)?中的?表示所要删除数据的数据列表可能存在或者不存在,如果存在wherecondition条件表示删除数据列表内的某个数据,不存在wherecondition条件表示删除表数据并且删除这个表。进一步地,所述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操作的过程为:采用createaction作为一个action操作的声明,结合数据查询语句:selectattr.name,...fromtblname(whereconditionlist)?、数据添加语句:insertintotblnamevalue(attr.name,...)(whereconditionlist)?、数据删除语句:droptblname(wherecondition)?对区块链的数据结构数据进行查询、添加、删除,最后以endaction作为action操作的结束;进一步地,所述数据查询语句:selectattr.name,...fromtblname(whereconditionlist)?中的?表示所要查询数据的数据列表可能存在或者不存在;所述数据添加语句:insertintotblnamevalue(attr.name,...)(whereconditionlist)?中的?表示所要添加数据的数据列表可能存在或者不存在,如果要添加数据的数据列表不存在where条件则表示要添加一个数据,如果要添加数据的数据列表存在where条件则表示要修改某个数据;所述数据删除语句:droptblname(wherecondition)?中的?表示所要删除数据的数据列表可能存在或者不存在,如果存在wherecondition条件表示删除数据列表内的某个数据,不存在wherecondition条件表示删除表数据并且删除这个表。所述AST树所翻译的语言类型有Python、Java、go、c++、Solidity。其步骤(4)中搭建的智能合约开发框架为翻译后函数代码相应语言的智能合约开发框架。在智能合约具体的构建过程中,其中对区块链的数据结构的相关操作示例为:区块链的数据结构为:typedefeosio::multi_index<N(mindex),mindex,indexed_by<N(secondid),const_mem_fun<mindex,uint64_t,&mindex::bysecond>>>mindex_table;action操作将其数据结构转换为表的具体过程为:先sql本文档来自技高网...

【技术保护点】
1.一种区块链智能合约构建方法,其特征在于,包括以下步骤:(1)将智能合约分解为多个action操作,其action操作之间没有相互联系;(2)将每个action操作使用类SQL的语法进行编写;(3)编写好的action操作采用antlr技术生成标准的AST树,根据区块链语言特点,将AST树翻译对应区块链语言的函数代码,对其进行四则运算和函数调用;(4)搭建智能合约开发框架,将翻译后的函数代码文件引入到智能合约开发框架中;(5)根据翻译后的函数代码,通过智能合约开发框架的在线编译模块在线编译生成对应的智能合约,完成区块链智能合约的构建。

【技术特征摘要】
1.一种区块链智能合约构建方法,其特征在于,包括以下步骤:(1)将智能合约分解为多个action操作,其action操作之间没有相互联系;(2)将每个action操作使用类SQL的语法进行编写;(3)编写好的action操作采用antlr技术生成标准的AST树,根据区块链语言特点,将AST树翻译对应区块链语言的函数代码,对其进行四则运算和函数调用;(4)搭建智能合约开发框架,将翻译后的函数代码文件引入到智能合约开发框架中;(5)根据翻译后的函数代码,通过智能合约开发框架的在线编译模块在线编译生成对应的智能合约,完成区块链智能合约的构建。2.根据权利要求1所述的一种区块链智能合约构建方法,其特征在于,所述步骤(2)中使用类SQL语法编写action操作的过程为:采用createaction作为一个action操作的声明,结合数据查询语句:selectattr.name,...fromtblname(whereconditionlist)?、数据添加语句:insertintotblnamevalue(attr.name,...)(whereconditionlist)?、数据删除语句:droptblname(wherecondition)?对区块链的数据结构数据进行查询、添加、删除,...

【专利技术属性】
技术研发人员:苗政委
申请(专利权)人:陕西医链区块链集团有限公司
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1