[发明专利]一种基于源代码的智能合约优化方法及装置在审
申请号: | 202110013879.3 | 申请日: | 2021-01-06 |
公开(公告)号: | CN112631656A | 公开(公告)日: | 2021-04-09 |
发明(设计)人: | 陈湘萍;王子彦;孔雀屏;周晓聪;郑子彬 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F8/74 | 分类号: | G06F8/74 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 杨小红 |
地址: | 510275 *** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 源代码 智能 合约 优化 方法 装置 | ||
1.一种基于源代码的智能合约优化方法,其特征在于,包括:
读取预设的智能合约的源代码,并将所述源代码转换为抽象语法树;
在所述抽象语法树中检测具有预设的待优化模式的待优化源代码;
优化所述待优化源代码,生成优化源代码;
基于所述优化源代码生成优化智能合约,并对所述优化智能合约进行验证,当验证通过时,输出所述优化源代码。
2.根据权利要求1所述的方法,其特征在于,所述待优化模式包括稀疏存储模式;所述优化源代码包括第一优化源代码;所述优化所述待优化源代码,生成优化源代码的步骤,包括:
当检测到所述稀疏存储模式对应的第一待优化源代码时,在所述第一待优化源代码中提取状态变量定义顺序;
调整所述状态变量定义顺序,生成调整顺序;
当所述调整顺序对应的插槽数小于所述状态变量定义顺序对应的插槽数时,基于所述调整顺序生成所述第一优化源代码。
3.根据权利要求2所述的方法,其特征在于,所述待优化模式还包括小变量模式;所述优化源代码还包括第二优化源代码;所述优化所述待优化源代码,生成优化源代码的步骤,还包括:
当检测到所述小变量模式对应的第二待优化源代码时,将所述第二待优化源代码的变量类型转化为预设类型,生成所述第二优化源代码。
4.根据权利要求3所述的方法,其特征在于,所述待优化模式还包括重复赋值模式;所述优化源代码还包括第三优化源代码;所述优化所述待优化源代码,生成优化源代码的步骤,还包括:
当检测到所述重复赋值模式对应的第三待优化源代码时,从第三待优化源代码中提取声明赋值状态变量列表和构造函数赋值状态变量列表;
对比所述声明赋值状态变量列表和所述构造函数赋值状态变量列表,确定重复赋值状态变量;
删除所述重复赋值状态变量的声明赋值,生成所述第三优化源代码。
5.根据权利要求4所述的方法,其特征在于,所述待优化模式还包括频繁使用状态变量模式;所述优化源代码还包括第四优化源代码;所述优化所述待优化源代码,生成优化源代码的步骤,还包括:
当检测到所述频繁使用状态变量模式对应的第四待优化源代码时,获取所述第四待优化源代码中的循环状态变量;
采用预设局部变量替换所述循环状态变量,生成所述第四优化源代码。
6.根据权利要求5所述的方法,其特征在于,所述待优化模式还包括未考虑短路规则模式;所述优化源代码还包括第五优化源代码;所述优化所述待优化源代码,生成优化源代码的步骤,还包括:
当检测到所述未考虑短路规则模式对应的第五待优化源代码时,获取所述第五待优化源代码对应的逻辑操作的左操作数和右操作数;
当所述左操作数对应的gas消耗量大于所述右操作数对应的gas消耗量时,替换所述左操作数与所述右操作数的位置,生成所述第五优化源代码。
7.根据权利要求6所述的方法,其特征在于,所述待优化模式还包括不准确的函数可见性模式;所述优化源代码还包括第六优化源代码;所述优化所述待优化源代码,生成优化源代码的步骤,还包括:
当检测到所述不准确的函数可见性模式对应的第六待优化源代码时,从所述第六待优化源代码中提取未调用的公有函数;
调整所述未调用的公有函数的可见性,生成所述第六优化源代码。
8.根据权利要求1所述的方法,其特征在于,所述基于所述优化源代码生成优化智能合约,并对所述优化智能合约进行验证,当验证通过时,输出所述优化源代码的步骤,包括:
基于所述优化源代码生成优化智能合约,并验证所述优化智能合约的第一操作行为与所述智能合约的第二操作行为是否一致;
若一致,则判定验证通过,输出所述优化源代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110013879.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:湿帘组件及风扇
- 下一篇:一种智能庞氏骗局合约识别方法及装置