当前位置: 首页 > 专利查询>中山大学专利>正文

一种基于图神经网络的智能合约代码补全方法及装置制造方法及图纸

技术编号:32974310 阅读:13 留言:0更新日期:2022-04-09 11:48
本发明专利技术公开了一种基于图神经网络的智能合约代码补全方法及装置,其中方法包括以下步骤:根据智能合约源代码的版本号构建多个智能合约源代码数据集;根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图;构建基于门控图神经网络的代码补全模型,利用所述代码表示图训练所述代码补全模型得到训练好的所述代码补全模型;将待补全智能合约对应的代码表示图嵌入到训练好的所述代码补全模型中,进行代码补全预测得到补词列表。本发明专利技术构建代码表示图时考虑了智能合约源代码的语义信息,能快速准确地预测出用于补全智能合约的代码词,并结合业界安全实践模式,提高了智能合约预测代码词的安全性。提高了智能合约预测代码词的安全性。提高了智能合约预测代码词的安全性。

【技术实现步骤摘要】
一种基于图神经网络的智能合约代码补全方法及装置


[0001]本专利技术涉及区块链
,尤其是涉及一种基于图神经网络的智能合约代码补全方法及装置。

技术介绍

[0002]近年来,区块链技术以其去中心化、不可篡改、公开透明、安全性等特点,成为实现价值互联网的基石。部署在区块链上的智能合约也具有去中心化、不可篡改的特点,智能合约已经得到广泛的关注,并被应用到许多领域,覆盖金融产品,在线游戏,房地产,运输和后勤等领域。
[0003]由于所有部署在区块链上的智能合约都可以通过公共方法自由访问,智能合约内部任何功能缺陷或漏洞都可能导致灾难性的损失。然而,现有的智能合约集成开发环境IDE大多是在传统IDE工具上新增拓展插件的方式构成,代码补全功能只支持基于模糊匹配的自动补全,无法处理上下文相关性和数据依赖性,更无法获得深层次语义关联以提供更有针对性的内容。
[0004]除了无法提供更具有针对性的内容外,现有的智能合约IDE在提供代码补全功能时,缺乏代码安全性的考虑,隐藏在智能合约源代码中的漏洞可能会被利用,并造成巨大损失。

技术实现思路

[0005]本专利技术的目的是提供一种基于图神经网络的智能合约代码补全方法及装置,以解决现有技术中无法有针对性地、安全地补全智能合约代码的技术问题。
[0006]本专利技术的目的,可以通过如下技术方案实现:
[0007]一种基于图神经网络的智能合约代码补全方法,包括以下步骤:
[0008]根据智能合约源代码的版本号构建多个智能合约源代码数据集;
[0009]根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图;
[0010]构建基于门控图神经网络的代码补全模型,利用所述代码表示图训练所述代码补全模型得到训练好的所述代码补全模型;
[0011]将待补全智能合约对应的代码表示图嵌入到训练好的所述代码补全模型中,进行代码补全预测得到补词列表。
[0012]可选地,根据智能合约源代码的版本号构建多个智能合约源代码数据集包括:
[0013]获取区块链公链上的智能合约源代码,通过安全分析工具对所述智能合约源代码进行检测得到安全的智能合约,根据所述智能合约源代码的版本号将所述智能合约分为多个智能合约源代码数据集。
[0014]可选地,根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图包括:
[0015]将各数据集中的各智能合约源代码解析成对应的抽象语法树;
[0016]将所述抽象语法树中的节点作为代码表示图的节点,根据智能合约源代码的语义信息在代码表示图中添加多种类型的语义边;
[0017]从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为代码片段中的节点间添加特征边。
[0018]可选地,所述语义边至少包括:
[0019]控制流边和数据流边,所述控制流边表示智能合约源代码中的控制流信息,所述数据流边表示智能合约源代码中的数据流信息。
[0020]可选地,所述控制流边至少包括以下控制流类型:
[0021]if语句、while语句、do while语句、for语句、assert语句和require语句。
[0022]可选地,从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为代码片段中的节点间添加特征边包括:
[0023]根据智能合约执行相关的业界安全实践,从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为包含在所述代码片段中的节点间添加表示遵循业界安全实践的特征边。
[0024]本专利技术还提供了一种基于图神经网络的智能合约代码补全装置,包括:
[0025]数据集构建模块,用于根据智能合约源代码的版本号构建多个智能合约源代码数据集;
[0026]代码表示图构建模块,用于根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图;
[0027]代码补全模型训练模块,用于构建基于门控图神经网络的代码补全模型,利用所述代码表示图训练所述代码补全模型得到训练好的所述代码补全模型;
[0028]代码补全预测模块,用于将待补全智能合约对应的代码表示图嵌入到训练好的所述代码补全模型中,进行代码补全预测得到补词列表。
[0029]可选地,数据集构建模块根据智能合约源代码的版本号构建多个智能合约源代码数据集包括:
[0030]所述数据集构建模块获取区块链公链上的智能合约源代码,通过安全分析工具对所述智能合约源代码进行检测得到安全的智能合约,根据所述智能合约源代码的版本号将所述智能合约分为多个智能合约源代码数据集。
[0031]可选地,代码表示图构建模块根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图包括:
[0032]所述代码表示图构建模块将各数据集中的各智能合约源代码解析成对应的抽象语法树;
[0033]将所述抽象语法树中的节点作为代码表示图的节点,根据智能合约源代码的语义信息在代码表示图中添加多种类型的语义边;
[0034]从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为代码片段中的节点间添加特征边。
[0035]可选地,代码表示图构建模块从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为代码片段中的节点间添加特征边包括:
[0036]所述代码表示图构建模块根据智能合约执行相关的业界安全实践,从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为包含在所述代码片段中的节点间添加表示遵循业界安全实践的特征边。
[0037]本专利技术提供了一种基于图神经网络的智能合约代码补全方法及装置,其中方法包括以下步骤:根据智能合约源代码的版本号构建多个智能合约源代码数据集;根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图;构建基于门控图神经网络的代码补全模型,利用所述代码表示图训练所述代码补全模型得到训练好的所述代码补全模型;将待补全智能合约对应的代码表示图嵌入到训练好的所述代码补全模型中,进行代码补全预测得到补词列表。
[0038]有鉴如此,本专利技术带来的有益效果是:
[0039]本专利技术根据智能合约源代码的版本号将智能合约分为多个数据集,使得代码补全模型能够针对性地学习不同版本的智能合约源代码的语法特征,在代码补全时为开发者提供符合开发者当前使用版本的补词列表;根据各数据集中的智能合约源代码的语义信息构建代码表示图时,考虑了源代码中的语义信息,代码补全模型能更好地源代码中的语义信息,能快速地预测出用于补全智能合约的代码词;构建智能合约源代码的代码表示图时结合业界安全实践,在代码补全模型中添加最佳安全实践,能针对性地学习具有良好编程结构的代码,提高智能合约预测代码词列表的安全性。
附图说明
[0040]图1为本专利技术智能合约代码补全方法的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于图神经网络的智能合约代码补全方法,其特征在于,包括以下步骤:根据智能合约源代码的版本号构建多个智能合约源代码数据集;根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图;构建基于门控图神经网络的代码补全模型,利用所述代码表示图训练所述代码补全模型得到训练好的所述代码补全模型;将待补全智能合约对应的代码表示图嵌入到训练好的所述代码补全模型中,进行代码补全预测得到补词列表。2.根据权利要求1所述的基于图神经网络的智能合约代码补全方法,其特征在于,根据智能合约源代码的版本号构建多个智能合约源代码数据集包括:获取区块链公链上的智能合约源代码,通过安全分析工具对所述智能合约源代码进行检测得到安全的智能合约,根据所述智能合约源代码的版本号将所述智能合约分为多个智能合约源代码数据集。3.根据权利要求1所述的基于图神经网络的智能合约代码补全方法,其特征在于,根据各数据集中的智能合约源代码的语义信息和业界安全实践构建对应的代码表示图包括:将各数据集中的各智能合约源代码解析成对应的抽象语法树;将所述抽象语法树中的节点作为代码表示图的节点,根据智能合约源代码的语义信息在代码表示图中添加多种类型的语义边;从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为代码片段中的节点间添加特征边。4.根据权利要求3所述的基于图神经网络的智能合约代码补全方法,其特征在于,所述语义边至少包括:控制流边和数据流边,所述控制流边表示智能合约源代码中的控制流信息,所述数据流边表示智能合约源代码中的数据流信息。5.根据权利要求4所述的基于图神经网络的智能合约代码补全方法,其特征在于,所述控制流边至少包括以下控制流类型:if语句、while语句、do while语句、for语句、assert语句和require语句。6.根据权利要求3所述的基于图神经网络的智能合约代码补全方法,其特征在于,从所述抽象语法树中筛选出符合业界安全实践的代码片段,在所述代码表示图中为代码片段中的节点间添加特征边包括:根据智能合约执行相关的业界安全实践,从所述抽象语法树中筛选出符合业界安全实践...

【专利技术属性】
技术研发人员:郑子彬唐秀雯蒋子规
申请(专利权)人:中山大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1