CN108595185B - 一种将以太坊智能合约转换成超级账本智能合约的方法 - Google Patents
一种将以太坊智能合约转换成超级账本智能合约的方法 Download PDFInfo
- Publication number
- CN108595185B CN108595185B CN201810322171.4A CN201810322171A CN108595185B CN 108595185 B CN108595185 B CN 108595185B CN 201810322171 A CN201810322171 A CN 201810322171A CN 108595185 B CN108595185 B CN 108595185B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- conversion
- recognition
- super
- converting
- 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.)
- Active
Links
Images
Classifications
-
- 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/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种将以太坊智能合约转换成超级账本智能合约的方法,包括:使用机器学习方法训练得到一个转换模型;输入Solidity源代码,对以太坊上使用Solidity编写的智能合约代码进行预处理;使用训练好的数学模型进行高级识别工作,包括对象的识别、算法的识别、模块的识别、接口的识别等,将Solidity语言的智能合约转换成超级账本上的Java语言的智能合约。本发明方法可以实现以太坊智能合约到超级账本智能合约的快速转换,节约开发人员的开发时间和开发成本。
Description
技术领域
本发明涉及区块链技术领域,特别涉及一种将以太坊上的智能合约转换成超级账本上的智能合约的方法。
背景技术
随着区块链技术的发展,延伸了不同种类的区块链。当前比较成功的有以太坊和超级账本。
智能合约是1990年左右由尼克萨博提出的概念,几乎与互联网同龄。智能合约是指一份能自动执行本需要手动才能完成任务的协议。但是由于缺少可以的执行环境,智能合约并没有被应用到实际的生产过程中。然而随着区块链技术出现,人们意识到区块链可以为智能合约提供可信的执行环境。在以太坊区块链里,智能合约是一个系统的参与者,它可以对接收到的信息进行回应,也可以接收和储存价值,更可以向外发送信息和价值。Solidity是以太坊上实施智能合约的高级语言,旨在针对以太坊虚拟机。
超级账本是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,加入成员包括:荷兰银行、埃森哲等十几个不同的利益体,目标是让成员共同合作,共建开放平台,满足来自多个不同行业的各种用户案例,并简化业务流程。由于点对点网络特定,分布式账本是完全共享、透明和去中心化的,故非常适合在金融行业的应用,以及其他例如物联网、银行、保险、等无数行业。通过创建分布式账本的公开标准,实现虚拟和数字形式的价格交换,例如资产合约、能源交易、结婚证书,能够安全、高效、低成本的进行追踪和交易。超级账本的智能合约是使用Java实现的。
由于以太坊使用的工作量证明机制,会消耗大量的算力和资源。而超级账本使用的拜占庭将军协议,相比较于工作量证明协议,超级账本会消耗更少的资源。而在并发方面,以太坊处理交易的速度是25tx/s,而超级账本处理交易的速度是1273tx/s,因此在并发量方面,超级账本的远远优于以太坊的交易速度。在延迟方面,以太坊的延迟是114s,而超级账本的延迟是51s,所以在延迟方面超级账本也优于以太坊。因此在后期开发人员非常有可能将以太坊的智能合约转移到超级账本上去。而这种人工的将以太坊的智能合约转移到超级账本上的智能合约,不仅会浪费大量的时间,而且会增加开发成本。另一方面,当前并没有存在一种可以人工转换的方法。因此针对这个问题,需要提供一种将以太坊上的智能合约转换成超级账本上的智能合约的方法。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种将以太坊智能合约转换成超级账本智能合约的方法,可以实现以太坊智能合约到超级账本智能合约的快速转换,节约开发人员的开发时间和开发成本。
本发明的目的通过以下的技术方案实现:一种将以太坊智能合约转换成超级账本智能合约的方法,包括:
S1、以收集到的以太坊智能合约源代码及其相对应的超级账本智能合约源代码为数据集,使用深度学习的方法训练得到一个以太坊智能合约转换成超级账本合约的转换模型;
S2、用户输入以太坊的智能合约可运行的源代码,对输入的源代码进行预处理;
S3、最后将处理成功后的源代码输入到转换模型中,转换模型对源代码进行高级识别工作,利用识别到的源码进行转换,输出超级账本的源代码。
优选的,所使用的深度学习模型是神经网络(ANN)。
优选的,步骤S1具体包括:利用深度学习方法训练得到转换模型,转换模型包括识别和转换两部分:
其中识别包括:对象的识别、算法的识别、模块的识别和接口的识别;
而转换包括:1)数据类型转换:以太坊智能合约上的数据类型转换成超级账本上智能合约的数据类型;2)函数转换;3)依赖包转换。
优选的,函数转换还包括了作用域的转换。
优选的,步骤S2对输入的源代码进行预处理是将不同用户输入的不同格式的智能合约处理成本方法可以识别的格式。
优选的,步骤S2包括:利用代码解析器对以太坊上使用Solidity编写的智能合约代码进行预处理;代码解析器通过输入的智能合约代码确定Solidity的词法记号和词法规则,运行这些文件自动生成Solidity的词法分析器和语法分析器;进一步通过抽象语法树的规则,生成Solidity的抽象语法树;最终通过使用树分析器遍历抽象语法树,完成语义分析。
优选的,步骤S3包括:输入步骤S2传入进来的抽象语法树、语义分析和智能合约代码到转换模型中,转换模型首先会通过抽象语法树、语义分析和智能合约代码来进行高级识别,包括对象的识别、算法的识别、模块的识别、接口的识别、数据类型识别、依赖包识别;识别成功后就会根据这些识别的结果进行转换,其中转换过程包括了类型转换、函数转换和依赖包转换;转换成功之后生成超级账本智能合约代码。
本发明与现有技术相比,具有如下优点和有益效果:
1、本发明能自动将以太坊上的智能合约迁移到超级账本上的智能合约,可以提高生产效率和节约开发成本,同时可以促进区块链应用的快速生产落地,不仅具有较好的经济效益,还有较大的社会价值。
2、本发明方法流程简单,开发实现的可操作性强;向用户提供充分的界面信息,用户只需要提供自己编写的经过编译的Solidity源代码即可;模型训练好后可以实现以太坊智能合约到超级账本智能合约的快速转换,节约开发人员的开发时间和开发成本。
附图说明
图1是实施例转换方法的流程示意图。
图2是实施例转换方法系统结构示意图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例1
Solidity是以太坊上实施智能合约的高级语言,受到C++,Python和JavaScript的影响,旨在针对以太虚拟机。Solidity是静态类型语言。静态类型语言指的是数据类型在编译期间确定或者说运行之前确定的,编写代码时候要明确规定变量的数据类型。超级账本的智能合约是使用Java实现的,而Java也是静态类型语言,因此为两者之间的转换提供了一种可能性。只需要通过分析其中的类型,找到两者之间的转换规则,就可以实现从Solidity到Java语言之间的转换。而Solidity在语法上又接近于JavaScript,是一种面向对象的语言,Java也是作为一种面向对象的语言,因此从Solidity到超级账本上的Java的转变是完全可行的。
一种将以太坊智能合约转换成超级账本智能合约的方法,首先以收集到的以太坊智能合约源代码及其相对应的超级账本智能合约源代码为数据集,使用深度学习的方法来训练得到一个以太坊智能合约转换成超级账本合约的转换模型;然后用户在这一步只需要输入以太坊的智能合约可运行的源代码;其次会对输入的源代码进行预处理;最后将处理成功后的源代码输入到模型中,模型对源代码进行高级识别工作,利用识别到的源码进行转换,输出超级账本的源代码。
具体包括以下步骤:
步骤一,利用神经网络(ANN)深度学习方法训练得到一个转换模型(这个转换模型具有专一性,并不能对其他类型的语言进行转换),转换模型其中包括识别和转换两部分:
其中识别包括:
1)对象的识别;
2)算法的识别;
3)模块的识别;
4)接口的识别;
5)数据类型的识别;
6)依赖包的识别;
而转换包括:
1)类型转换:以太坊智能合约上的数据类型转换成超级账本上智能合约的数据类型。以太坊Solidity语言的数据类型包括:布尔、整型、地址、字节数组、字符串、枚举等等。而超级账本虽然使用的是Java,但是其中仅仅是支持两种状态,“put state”和“getstate”。状态是用字符串数组来存储的,因此需要分析得到这种转换规则的关系。
2)函数转换:由于数据类型不一样,会导致函数在实现时候也会有一定的区别。因此需要将函数去转换。其中函数转换还包括了作用域的转换,比如在以太坊智能合约上大部分函数都是public,然而在超级账本中都是private,然后是重写里面的一个query()函数来调用合约函数。
3)依赖包转换:Solidity的依赖包与Java里的依赖包完全不一样,因此存在依赖包转换的情况。Solidity是通过导入其他的智能合约,相比较之下在超级账本中却没有这种方式。并且在超级账本中必须导入hyperledger包。
步骤二,输入Solidity源代码。这个是用户交互层,用户只需要在这层输入可以成功编译的Solidity源码。
步骤三,利用ANTLR v4(一种代码解析器)对以太坊上使用Solidity编写的智能合约代码进行预处理。通过预先创建一个Antlr文法文件并且输入Solidity的词法记号和词法规则,运行文法文件,ANTLR会生成Solidity语言的词法分析器和语法分析器。跟着去验证这两个词法分析器和语法分析器是否正确,如果通过验证则进行下一步。否则就重写文法文件。之后改写Antlr文件内容,添加语法规则,并且在每一个语法规则后面加上相对应的抽象语法树语法,生成Solidity抽象语法树。使用树分析器遍历抽象语法树,完成语义分析。最后将成功分析后的抽象语法树、语义分析和智能合约代码传到步骤四。
步骤四,输入步骤三传入进来的抽象语法树、语义分析和智能合约代码到转换模型中。转换模型首先会通过抽象语法树、语义分析和智能合约代码来进行高级识别,包括对象的识别、算法的识别、模块的识别、接口的识别、数据类型识别、依赖包识别等等。识别成功后就会根据这些识别的结果进行转换,其中转换过程包括了类型转换、函数转换和依赖包转换。转换成功之后就会生成超级账本的智能合约代码。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (4)
1.一种将以太坊智能合约转换成超级账本智能合约的方法,其特征在于,包括以下步骤:
S1、以收集到的以太坊智能合约源代码及其相对应的超级账本智能合约源代码为数据集,使用深度学习的方法训练得到一个以太坊智能合约转换成超级账本合约的转换模型;
步骤S1具体包括:利用深度学习方法训练得到转换模型,转换模型包括识别和转换两部分:
其中识别包括:对象的识别、算法的识别、模块的识别和接口的识别;
而转换包括:1)数据类型转换:以太坊智能合约上的数据类型转换成超级账本上智能合约的数据类型;2)函数转换;3)依赖包转换;
S2、用户输入以太坊的智能合约可运行的源代码,对输入的源代码进行预处理;
步骤S2包括:利用代码解析器对以太坊上使用Solidity编写的智能合约代码进行预处理;代码解析器通过输入的智能合约代码确定Solidity的词法记号和词法规则,运行这些文件自动生成Solidity的词法分析器和语法分析器;进一步通过抽象语法树的规则,生成Solidity的抽象语法树;最终通过使用树分析器遍历抽象语法树,完成语义分析;
S3、最后将处理成功后的源代码输入到转换模型中,转换模型对源代码进行高级识别工作,利用识别到的源码进行转换,输出超级账本的源代码;
步骤S3包括:输入步骤S2传入进来的抽象语法树、语义分析和智能合约代码到转换模型中,转换模型首先会通过抽象语法树、语义分析和智能合约代码来进行高级识别,包括对象的识别、算法的识别、模块的识别、接口的识别、数据类型识别、依赖包识别;识别成功后就会根据这些识别的结果进行转换,其中转换过程包括了类型转换、函数转换和依赖包转换;转换成功之后生成超级账本智能合约代码。
2.根据权利要求1所述的将以太坊智能合约转换成超级账本智能合约的方法,其特征在于,所使用的深度学习模型是神经网络。
3.根据权利要求1所述的将以太坊智能合约转换成超级账本智能合约的方法,其特征在于,函数转换还包括了作用域的转换。
4.根据权利要求1所述的将以太坊智能合约转换成超级账本智能合约的方法,其特征在于,步骤S2对输入的源代码进行预处理是将不同用户输入的不同格式的智能合约处理成本方法可以识别的格式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810322171.4A CN108595185B (zh) | 2018-04-11 | 2018-04-11 | 一种将以太坊智能合约转换成超级账本智能合约的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810322171.4A CN108595185B (zh) | 2018-04-11 | 2018-04-11 | 一种将以太坊智能合约转换成超级账本智能合约的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595185A CN108595185A (zh) | 2018-09-28 |
CN108595185B true CN108595185B (zh) | 2021-07-27 |
Family
ID=63621828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810322171.4A Active CN108595185B (zh) | 2018-04-11 | 2018-04-11 | 一种将以太坊智能合约转换成超级账本智能合约的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595185B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109493216B (zh) * | 2018-09-30 | 2021-02-09 | 北京小米移动软件有限公司 | 模型训练方法、装置、系统及存储介质 |
CN109684838B (zh) * | 2018-11-23 | 2020-03-27 | 电子科技大学 | 一种针对以太坊智能合约的静态代码审计系统及方法 |
CN109710384B (zh) * | 2018-12-29 | 2021-02-23 | 杭州趣链科技有限公司 | 一种安全的Java智能合约解释执行引擎及方法 |
CN110399730B (zh) * | 2019-07-24 | 2021-05-04 | 上海交通大学 | 智能合约漏洞的检查方法、系统及介质 |
US11636094B2 (en) * | 2019-10-16 | 2023-04-25 | International Business Machines Corporation | Chaincode recommendation based on existing chaincode |
CN111882074A (zh) * | 2020-07-30 | 2020-11-03 | 平安科技(深圳)有限公司 | 数据预处理系统、方法、计算机设备及可读存储介质 |
CN112346737B (zh) * | 2021-01-08 | 2021-04-13 | 深圳壹账通智能科技有限公司 | 编程语言翻译模型的训练方法、装置、设备及存储介质 |
CN113190628B (zh) * | 2021-07-01 | 2021-09-17 | 四川新龟科技有限公司 | 一种基于区块链的供应链物流控货平台及其使用方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106778882A (zh) * | 2016-12-23 | 2017-05-31 | 杭州云象网络技术有限公司 | 一种基于前馈神经网络的智能合约自动分类方法 |
CN107783758A (zh) * | 2016-08-25 | 2018-03-09 | 北京航空航天大学 | 一种智能合约工程方法 |
CN107861728A (zh) * | 2017-10-25 | 2018-03-30 | 深圳四方精创资讯股份有限公司 | 用于传统程序语言向现代程序语言转换的方法及其系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170060993A1 (en) * | 2015-09-01 | 2017-03-02 | Skytree, Inc. | Creating a Training Data Set Based on Unlabeled Textual Data |
-
2018
- 2018-04-11 CN CN201810322171.4A patent/CN108595185B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107783758A (zh) * | 2016-08-25 | 2018-03-09 | 北京航空航天大学 | 一种智能合约工程方法 |
CN106778882A (zh) * | 2016-12-23 | 2017-05-31 | 杭州云象网络技术有限公司 | 一种基于前馈神经网络的智能合约自动分类方法 |
CN107861728A (zh) * | 2017-10-25 | 2018-03-30 | 深圳四方精创资讯股份有限公司 | 用于传统程序语言向现代程序语言转换的方法及其系统 |
Non-Patent Citations (1)
Title |
---|
基于语义嵌入模型与交易信息的智能合约自动分类系统;黄步添等;《自动化学报》;20170930;第43卷(第09期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108595185A (zh) | 2018-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108595185B (zh) | 一种将以太坊智能合约转换成超级账本智能合约的方法 | |
CN107861728B (zh) | 用于传统程序语言向现代程序语言转换的方法及其系统 | |
CN112748914B (zh) | 一种应用程序开发方法、装置、电子设备和存储介质 | |
US20080216060A1 (en) | System for translating diverse programming languages | |
EP2330504A1 (en) | Lambda expressions | |
Schlenoff et al. | A robust process ontology for manufacturing systems integration | |
CN113312108B (zh) | Swift报文的校验方法、装置、电子设备及存储介质 | |
CN113031932B (zh) | 项目开发方法、装置、电子设备及存储介质 | |
CN113826070A (zh) | 工作流引擎工具 | |
CN111427583A (zh) | 组件的编译方法、装置和电子设备及计算机可读存储介质 | |
US20120330877A1 (en) | Efficient binary protocol marshalling for rule engine sessions | |
CN101553779A (zh) | 将主机系统应用程序转换为开放系统应用程序的转换装置和方法 | |
Liang et al. | Neutron: an attention-based neural decompiler | |
KR102074578B1 (ko) | 텍스트마이닝 기반 건설공사 문서분석방법 및 시스템 | |
US9684497B1 (en) | Optimized compiling of a template function | |
CN114020886A (zh) | 语音意图识别方法、装置、设备及存储介质 | |
CN112015374B (zh) | 一种基于自然语言的跨编程语言微服务集成系统 | |
CN112988163A (zh) | 编程语言智能适配方法、装置、电子设备和介质 | |
CN105573763A (zh) | 一种支持rtos的嵌入式系统建模方法 | |
CN116560631A (zh) | 一种机器学习模型代码的生成方法及装置 | |
CN113626035B (zh) | 基于tvm面向risc-v设备的神经网络编译方法 | |
Wickramarachchi et al. | Efficiently transform contracts written in Peyton Jones contract descriptive language to Solidity | |
CN113448874A (zh) | 一种单元测试脚本的生成方法及装置 | |
Chiu et al. | Integrating Semantic Web and Object-Oriented Programming for Cooperative Design. | |
EP4195092A1 (en) | Text processing method and apparatus, system, device, and storage medium |
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 |