[发明专利]一种自动生成Solidity智能合约Java客户端程序的方法有效
申请号: | 201910870035.3 | 申请日: | 2019-09-16 |
公开(公告)号: | CN110633076B | 公开(公告)日: | 2021-05-04 |
发明(设计)人: | 邱炜伟;李伟;李启雷;梁秀波;尹可挺;张丁文 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/33;G06F8/20 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 贾玉霞 |
地址: | 310051 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自动 生成 solidity 智能 合约 java 客户端 程序 方法 | ||
1.一种自动生成Solidity智能合约Java客户端程序的方法,其特征在于,该方法具体包括如下步骤:
(1)根据智能合约的ABI或者源代码,解析智能合约的接口;
(2)根据接口解析结果,自动生成该智能合约接口入参和返回参数相应的实体类;
(3)根据接口解析结果,自动生成该智能合约接口相应的调用方法;
(4)根据配套的调用层框架设计模式,生成智能合约客户端的调用层程序;
所述的步骤(3)中自动生成该智能合约接口相应的调用方法的具体步骤如下:
(3.1)定义调用层接口:其中调用层接口名由合约名决定,接口中的方法对应智能合约中暴露的接口,方法名由接口名和接口定义序号决定;方法入参和返回参数为对应的实体类;
(3.2)实现调用层接口对应的实现类:其中实现类命名由合约名决定,实现类中的方法的实现经过三个步骤:第一,将方法参数传入的实体类转化为对应的智能合约参数,具体为将java实体类转化为Solidity智能合约入参时,将字符串转化为Solidity中相应的数据类型;第二,指定对应的智能合约接口并传入智能合约参数,通过该智能合约提供的API调用相应的接口,获得返回参数;第三,将智能合约返回参数转化为对应的实体类,方法返回该实体类,具体为:将Solidity智能合约返回参数转化为java实体类时,如果返回的是数组类型,则按照预设的拆分规则,相应的拼接成Java实体类中的字符串,确保数组元素拼接时符合拆分时的记录的每个字段入参数组中所占的数组长度。
2.根据权利要求1所述的自动生成Solidity智能合约Java客户端程序的方法,其特征在于,所述的步骤(1)中解析智能合约的接口的具体步骤如下:
如果提供的是智能合约的ABI,则建立ABI相应的ABI解析对象,通过JSON转化把ABI文本转化为ABI解析对象,从而获得智能合约所有接口的信息;
如果提供的是智能合约的源代码,则把智能合约源代码文本进行语法分析,建立语法树,从而获得智能合约所有接口的信息。
3.根据权利要求1所述的自动生成Solidity智能合约Java客户端程序的方法,其特征在于,所述的步骤(2)中自动生成该智能合约接口入参和返回参数相应的实体类的具体如下:
实体类所在包名由合约名决定,实体类命名由接口名和接口定义序号决定;
实体类的字段类型根据接口参数的类型进行相应的转化;
实体类的字段命名由接口参数的命名信息决定;
实体类的构造函数、Get、Set、ToString、Equals、HashCode方法按POJO规范相应生成。
4.根据权利要求1所述的自动生成Solidity智能合约Java客户端程序的方法,其特征在于,所述的步骤(4)中生成智能合约客户端的调用层程序的具体步骤如下:
(4.1)定义并实现将实体类转化为智能合约参数的工具类:对于智能合约中的基本类型,直接进行一对一转化;对于智能合约中的数组和变长字符串类型,通过拆分并将拆分后每个片段的长度进行转化;
(4.2)封装智能合约提供的API。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910870035.3/1.html,转载请声明来源钻瓜专利网。