基于图匹配模型的智能合约相似度检测方法及系统技术方案

技术编号:27201627 阅读:43 留言:0更新日期:2021-01-31 12:12
本发明专利技术公开了一种基于图匹配模型的智能合约相似度检测方法,实现了对以太坊智能合约代码相似度的检测。具体包括:收集以太坊智能合约源码,制作智能合约源码数据集;提取智能合约代码块并匹配合约克隆对;利用数据流和控制流依赖以及抽象语法树,将代码块转换为合约图;构建智能合约克隆图数据集;构建图匹配神经网络模型,将智能合约克隆图数据集输入图匹配神经网络模型,实现良好的学习和训练;将智能合约克隆对输入图匹配神经网络模型,输出智能合约相似度检测结果。该方法填补了当前基于深度神经网络的智能合约相似度检测方法的空缺,具有良好的实用价值和借鉴意义。具有良好的实用价值和借鉴意义。具有良好的实用价值和借鉴意义。

【技术实现步骤摘要】
基于图匹配模型的智能合约相似度检测方法及系统


[0001]本专利技术属于代码相似度检测
,具体涉及一种基于图匹配模型的智能合约相似度检测方法及系统。

技术介绍

[0002]随着各种开源代码库的出现,开发人员开始习惯于复制这些代码库中已有的源码来提高开发效率,导致网络上出现越来越多的相似性代码。当前,很多研究指出频繁的代码复制会对程序或软件造成一定的负面影响,大量的代码复制会增加代码维护的成本,消耗额外的人力物力。此外,盲目的代码复制可能会产生无法预料的程序漏洞,从而降低程序或软件的可靠性和安全性。
[0003]鉴于此,研究人员开始致力于检测代码的相似度。代码相似度检测也称为代码克隆或重复代码检测,是指判断两个及以上的程序是否存在相同或相似的源代码片段。根据代码相似度不同,代码克隆通常可以分为4类:1)完全相同的程序代码;2)完全复用除空格、注释、变量或函数重命名等之外的代码;3)类型2基础上略有修改的代码;4)实现方式不同但语义或功能相同的代码。传统的代码相似度检测通常只考虑文本表征,因此只能达到类型1和类型2的检测水平,现有的相本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于图匹配模型的智能合约相似度检测方法,其特征在于,包括如下步骤:收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;将智能合约代码块转换为智能合约图;基于智能合约图,构建智能合约克隆图数据集;构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。2.根据权利要求1所述的一种基于图匹配模型的智能合约相似度检测方法,其特征在于,所述提取智能合约代码块并匹配合约克隆对,具体包括以下步骤:去除智能合约源码中的空行和注释;智能合约源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示;以函数为单位提取合约源码,并组装智能合约代码块,匹配一组有相同或相似功能的合约,形成合约克隆对(C
i
,C
j
)。3.根据权利要求1所述的一种基于图匹配模型的智能合约相似度检测方法,其特征在于,所述将智能合约代码块转换为智能合约图,具体包括以下步骤:基于提取的智能合约代码块,采用抽象语法树提取工具将合约代码块转换为智能合约AST;基于智能合约AST图,增加控制流边、数据流边和Fallback边,将智能合约AST图转换为新型智能合约图,捕获相应的控制流和数据流信息。4.根据权利要求3所述的一种基于图匹配模型的智能合约相似度检测方法,其特征在于,构建智能合约克隆图数据集,具体包括以下步骤:基于新型智能合约图构建智能合约克隆图对,将合约克隆图对(G
i
,G
j
)标注其为y
ij
,表示该克隆图对是否存在克隆,若存在,则y
ij
为1,否则y
ij
为0;以合约克隆图对为单位构建智能合约克隆图数据集D={(G
i
,G
j
,y
ij
)}。5.根据权利要求1所述的一种基于图匹配模型的智能合约相似度检测方法,其特征在于,所述基于智能合约克隆图数据集训练图匹配网络模型,具体包括以下步骤:利用多层感知器对智能合约图的每个节点和每条...

【专利技术属性】
技术研发人员:黄步添钱鹏刘灵凤刘振广陈建海
申请(专利权)人:杭州云象网络技术有限公司
类型:发明
国别省市:

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

1
相关领域技术
  • 暂无相关专利