[发明专利]一种基于图神经网络的智能合约代码补全方法及装置在审
申请号: | 202111668909.0 | 申请日: | 2021-12-30 |
公开(公告)号: | CN114296787A | 公开(公告)日: | 2022-04-08 |
发明(设计)人: | 郑子彬;唐秀雯;蒋子规 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F8/71 | 分类号: | G06F8/71;G06F8/41;G06F40/253;G06F40/30;G06N3/04;G06N3/08 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 彭祯奇 |
地址: | 510275 *** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 神经网络 智能 合约 代码 方法 装置 | ||
1.一种基于图神经网络的智能合约代码补全方法,其特征在于,包括以下步骤:
根据智能合约源代码的版本号构建多个智能合约源代码数据集;
根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图;
构建基于门控图神经网络的代码补全模型,利用所述代码表示图训练所述代码补全模型得到训练好的所述代码补全模型;
将待补全智能合约对应的代码表示图嵌入到训练好的所述代码补全模型中,进行代码补全预测得到补词列表。
2.根据权利要求1所述的基于图神经网络的智能合约代码补全方法,其特征在于,根据智能合约源代码的版本号构建多个智能合约源代码数据集包括:
获取区块链公链上的智能合约源代码,通过安全分析工具对所述智能合约源代码进行检测得到安全的智能合约,根据所述智能合约源代码的版本号将所述智能合约分为多个智能合约源代码数据集。
3.根据权利要求1所述的基于图神经网络的智能合约代码补全方法,其特征在于,根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图包括:
将各数据集中的各智能合约源代码解析成对应的抽象语法树;
将所述抽象语法树中的节点作为代码表示图的节点,根据智能合约源代码的语义信息在代码表示图中添加多种类型的语义边;
从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为代码片段中的节点间添加特征边。
4.根据权利要求3所述的基于图神经网络的智能合约代码补全方法,其特征在于,所述语义边至少包括:
控制流边和数据流边,所述控制流边表示智能合约源代码中的控制流信息,所述数据流边表示智能合约源代码中的数据流信息。
5.根据权利要求4所述的基于图神经网络的智能合约代码补全方法,其特征在于,所述控制流边至少包括以下控制流类型:
if语句、while语句、do while语句、for语句、assert语句和require语句。
6.根据权利要求3所述的基于图神经网络的智能合约代码补全方法,其特征在于,从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为代码片段中的节点间添加特征边包括:
根据智能合约执行相关的业界安全实践,从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为包含在所述代码片段中的节点间添加表示遵循业界安全实践的特征边。
7.一种基于图神经网络的智能合约代码补全装置,其特征在于,包括:
数据集构建模块,用于根据智能合约源代码的版本号构建多个智能合约源代码数据集;
代码表示图构建模块,用于根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图;
代码补全模型训练模块,用于构建基于门控图神经网络的代码补全模型,利用所述代码表示图训练所述代码补全模型得到训练好的所述代码补全模型;
代码补全预测模块,用于将待补全智能合约对应的代码表示图嵌入到训练好的所述代码补全模型中,进行代码补全预测得到补词列表。
8.根据权利要求7所述的基于图神经网络的智能合约代码补全装置,其特征在于,数据集构建模块根据智能合约源代码的版本号构建多个智能合约源代码数据集包括:
所述数据集构建模块获取区块链公链上的智能合约源代码,通过安全分析工具对所述智能合约源代码进行检测得到安全的智能合约,根据所述智能合约源代码的版本号将所述智能合约分为多个智能合约源代码数据集。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111668909.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种三相分离保压装置及其使用方法
- 下一篇:一种人眼安全的激光打标方法