[发明专利]一种自动生成Solidity智能合约Java客户端程序的方法有效
申请号: | 201910870035.3 | 申请日: | 2019-09-16 |
公开(公告)号: | CN110633076B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 邱炜伟;李伟;李启雷;梁秀波;尹可挺;张丁文 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/33;G06F8/20 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 贾玉霞 |
地址: | 310051 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自动 生成 solidity 智能 合约 java 客户端 程序 方法 | ||
本发明公开一种自动生成Solidity智能合约Java客户端程序的方法,该方法具体包括如下步骤:(1)根据智能合约的ABI或者源代码,解析智能合约的接口;(2)根据接口解析结果,自动生成该智能合约接口入参和返回参数相应的实体类;(3)根据接口解析结果,自动生成该智能合约接口相应的调用方法;(4)根据配套的调用层框架设计模式,生成智能合约客户端的调用层程序。本发明的方法提供了一种通用的智能合约接口解析、参数转化方法以及配套的调用层框架设计模式,自动化地生成智能合约客户端程序,简化了传统的智能合约开发流程,提高了智能合约的开发效率。
技术领域
本发明涉及Solidity智能合约、Java客户端程序、模型对象映射的技术领域,具体涉及一种Solidity智能合约接口转化为Java客户端调用层程序的方法。
背景技术
智能合约是区块链上可执行的计算机程序,Solidity是一种智能合约的高级语言,运行在以太坊虚拟机EVM之上。Solidity智能合约部署在区块链上之后,可以通过客户端程序进行调用,从而获得智能合约上定义的相应接口的服务。Java是一门面向对象编程的语言,是目前后台开发主流语言之一。Java客户端程序是众多开发者调用智能合约接口的主要选择。一般来说,开发者在编写完智能合约之后,还需要相应地编写调用该智能合约的客户端程序。事实上,由于智能合约的接口已经被定义,那么客户端调用这些接口的程序完全可以事先确定,只需要定义好通用的调用层框架,解决接口解析和入参数据转化的问题,就可以通过编辑器的插件自动生成客户端调用智能合约的程序。
发明内容
针对实际开发过程中缺乏类似的自动生成Solidity智能合约Java客户端程序的工具,本发明公开了一种自动生成智能合约客户端程序的方法,通过约定调用层程序框架的相应规范,可以简化开发者开发智能合约程序的流程,提高开发效率。具体技术方案如下:
一种自动生成Solidity智能合约Java客户端程序的方法,其特征在于,该方法具体包括如下步骤:
(1)根据智能合约的ABI或者源代码,解析智能合约的接口。
(2)根据接口解析结果,自动生成该智能合约接口入参和返回参数相应的实体类。
(3)根据接口解析结果,自动生成该智能合约接口相应的调用方法。
(4)根据配套的调用层框架设计模式,生成智能合约客户端的调用层程序。
进一步地,所述的步骤(1)中解析智能合约的接口的具体步骤如下:
如果提供的是智能合约的ABI,则建立ABI相应的ABI解析对象,通过JSON转化把ABI文本转化为ABI解析对象,从而获得智能合约所有接口的信息。
如果提供的是智能合约的源代码,则把智能合约源代码文本进行语法分析,建立语法树,从而获得智能合约所有接口的信息。
进一步地,所述的步骤(2)中自动生成该智能合约接口入参和返回参数相应的实体类的具体如下:
实体类所在包名由合约名决定,实体类命名由接口名和接口定义序号决定;实体类的字段类型根据接口参数的类型进行相应的转化;实体类的字段命名由接口参数的命名信息决定;实体类的构造函数、Get、Set、ToString、Equals、HashCode方法按POJO规范相应生成。
进一步地,所述的步骤(3)中自动生成该智能合约接口相应的调用方法的具体步骤如下:
(1)定义调用层接口。其中调用层接口名由合约名决定,接口中的方法对应智能合约中暴露的接口,方法名由接口名和接口定义序号决定;方法入参和返回参数为对应的实体类。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910870035.3/2.html,转载请声明来源钻瓜专利网。