掌桥专利:专业的专利平台
掌桥专利
首页

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

文献发布时间:2023-06-19 09:43:16


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

技术领域

本发明属于代码相似度检测技术领域,具体涉及一种基于图匹配模型的智能合约相似度检测方法及系统。

背景技术

随着各种开源代码库的出现,开发人员开始习惯于复制这些代码库中已有的源码来提高开发效率,导致网络上出现越来越多的相似性代码。当前,很多研究指出频繁的代码复制会对程序或软件造成一定的负面影响,大量的代码复制会增加代码维护的成本,消耗额外的人力物力。此外,盲目的代码复制可能会产生无法预料的程序漏洞,从而降低程序或软件的可靠性和安全性。

鉴于此,研究人员开始致力于检测代码的相似度。代码相似度检测也称为代码克隆或重复代码检测,是指判断两个及以上的程序是否存在相同或相似的源代码片段。根据代码相似度不同,代码克隆通常可以分为4类:1)完全相同的程序代码;2)完全复用除空格、注释、变量或函数重命名等之外的代码;3)类型2基础上略有修改的代码;4)实现方式不同但语义或功能相同的代码。传统的代码相似度检测通常只考虑文本表征,因此只能达到类型1和类型2的检测水平,现有的相似度检测方法则考虑了更高层次的源代码表征,通过基于词汇、语法、语义的分析能够实现类型3甚至类型4的代码相似度检测。

智能合约相似度检测是针对区块链上智能合约的代码克隆检测。智能合约实际上是由高级语言编写的程序代码,具有不可逆和不可变性,即合约部署在区块链上将不能进行修改和更新。因此,若是某个智能合约存在漏洞,可能会导致其克隆的衍生合约也存在相应的漏洞,由于智能合约漏洞造成的损失是巨大且不可逆转的,因此,研究一种智能合约的相似度检测方法能够有效地避免漏洞的传播,进一步提高智能合约的可靠性和安全性。

图匹配网络(graph matching)是一种用来比较两个图之间相似性的图神经网络模型,其主要的特点在于能够实现图之间的信息传递;进一步地,图匹配网络通过计算余弦相似度来检测图之间的相似程度。本发明提出基于图匹配模型的智能合约相似度检测,有效地解决了智能合约的相似度检测问题。

发明内容

针对上述现有技术存在的问题,为了解决智能合约的相似度检测问题,本发明提出了一种基于图匹配模型的智能合约相似度检测方法及系统。

为了解决上述技术问题,本发明通过下述技术方案得以解决:

一种基于图匹配模型的智能合约相似度检测方法,包括如下步骤:

收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;

将智能合约代码块转换为智能合约图;

基于智能合约图,构建智能合约克隆图数据集;

构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;

利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。

作为一种可实施方式,所述提取智能合约代码块并匹配合约克隆对,具体包括以下步骤:

去除智能合约源码中的空行和注释;

智能合约源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示;

以函数为单位提取合约源码,并组装智能合约代码块,匹配一组有相同或相似功能的合约,形成合约克隆对(C

作为一种可实施方式,所述将智能合约代码块转换为智能合约图,具体包括以下步骤:

基于提取的智能合约代码块,采用抽象语法树提取工具将合约代码块转换为智能合约AST;

基于智能合约AST图,增加控制流边、数据流边和Fallback边,将智能合约AST图转换为新型智能合约图,捕获相应的控制流和数据流信息。

作为一种可实施方式,构建智能合约克隆图数据集,具体包括以下步骤:

基于新型智能合约图构建智能合约克隆图对,将合约克隆图对(G

以合约克隆图对为单位构建智能合约克隆图数据集D={(G

作为一种可实施方式,所述基于智能合约克隆图数据集训练图匹配网络模型,具体包括以下步骤:

利用多层感知器对智能合约图的每个节点和每条边进行编码;

计算两个智能合约图之间的信息传递,为每个节点匹配另一个智能合约图中的相似节点,形成智能合约图之间的信息交换;

经过多次信息传递后,更新智能合约图中节点的最终状态,得到预训练的图匹配网络模型。

作为一种可实施方式,所述利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果,具体包括以下步骤:

调用智能合约图转换工具将智能合约克隆对(C

设定一个阈值σ,并将(G

若S

一种基于图匹配模型的智能合约相似度检测系统,包括第一处理模块、信息转换模块、数据集构建模块、模型训练模块和结果预测模块;

所述第一处理模块,用于收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;

所述信息转换模块,用于将智能合约代码块转换为智能合约图;

所述数据集构建模块,用于基于智能合约图,构建智能合约克隆图数据集;

所述模型训练模块,用于构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;

所述结果预测模块,用于利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下的方法步骤:

收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;

将智能合约代码块转换为智能合约图;

基于智能合约图,构建智能合约克隆图数据集;

构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;

利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。

一种基于图匹配模型的智能合约相似度检测装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实现如下的方法步骤:

收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;

将智能合约代码块转换为智能合约图;

基于智能合约图,构建智能合约克隆图数据集;

构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;

利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。

本发明利用智能合约图表示以及图匹配神经网络模型,提供了一种基于图匹配模型的智能合约相似度检测方法及系统,能够对以太坊智能合约进行相似度检测,相较于传统的代码克隆检测方法,实现了更准确、更高效的检测效果,填补了当前基于深度神经网络的智能合约相似度检测的空缺,不仅具有良好的通用性和实用价值,而且有很好的借鉴意义,具体有益技术效果和创新性主要表现在以下三个方面:

(1)本发明阐述的智能合约图构建方式,通过抽象语法树(AST)提取工具捕获了智能合约语法信息,增加了数据流和控制流边以获取智能合约的语义信息,有效地将智能合约源码转换为合约图的表示形式;

(2)本发明提出的图匹配神经网络,有效地计算了智能合约图之间的相似度,并且提高了检测的准确率和效率;

(3)本发明首次结合了图匹配神经网络模型和智能合约图,并应用于智能合约相似度的检测,具有很好的拓展性与借鉴意义。

附图说明

图1为本发明基于图匹配模型的智能合约相似度检测方法流程示意图。

图2为本发明智能合约代码克隆检测过程示意图。

图3为本发明具体实例智能合约代码块及合约图提取示意图。

图4为本发明具体实例检测智能合约相似度仿真示意图。

具体实施方式

为了清晰地阐述本发明,使本发明实施例的目的、技术方案和优点更清楚,下面结合了本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,以令本领域技术人员参照说明书文字能够据以实施。下面将附图结合具体实施方式对本发明的技术加以详细说明。

实施例1:

一种基于图匹配模型的智能合约相似度检测方法,实现语义(类型4)层面的智能合约源代码相似度检测,该方法具体包括如下步骤:

(1)以以太坊智能合约为研究对象,对智能合约进行预处理,提取智能合约代码块(contract snippet)并匹配合约克隆对(C

(2)根据数据流和控制流依赖,结合抽象语法树(AST),将智能合约代码块转换为合约图(contract graph);

(3)构建智能合约克隆图数据集D={(G

(4)构建图匹配神经网络,以智能合约克隆图数据集为输入,训练图匹配网络模型;

(5)给定任意一组智能合约克隆对(C

进一步地,所述以以太坊智能合约为研究对象,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对(C

收集以太坊智能合约源代码,对智能合约源码进行以下预处理操作:

1)去除智能合约源码中的空行和注释;

2)源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示。

接着,以函数为单位提取合约源码,并组装智能合约代码块;然后匹配一组有相同或相似功能的合约,形成合约克隆对(C

进一步地,所述根据数据流和控制流依赖,结合抽象语法树(AST),将智能合约代码块转换为合约图,具体实现方式为:

首先,以步骤(1)中提取的智能合约代码块为研究对象,利用抽象语法树提取工具将合约代码块转换成智能合约AST的形式;然而,由于普通的AST无法捕获程序的语义信息,仍停留在语法层面;因此,本发明在智能合约AST图的基础上,通过增加控制流边(control-flow),数据流边(data-flow)和Fallback边,将智能合约AST图转换为新型的智能合约图(contract graph)形式,以此来捕获合约中的控制流和数据流信息。

进一步地,所述构建智能合约克隆图数据集D={(G

根据步骤(2)中所得的智能合约图G

进一步地,所述构建图匹配神经网络,以智能合约克隆图数据集为输入,训练图匹配网络模型,具体实现方式为:

首先,构建基于智能合约图的图匹配神经网络,以智能合约克隆图数据集D作为输入数据;接着,对图匹配神经网络进行训练,训练细节如下:

1)利用多层感知器(MLP)对智能合约图的每个节点和每条边进行编码;

其中,x

2)计算两个图之间的信息传递,每个节点都会去尽量匹配另一个图中的相似节点,形成图之间的信息交换。此外,图匹配神经网络利用attention机制计算图之间的attention值;

其中,f

其中,s

3)经过多次信息传递后,更新图中节点的最终状态。

其中,GRU是一个门控循环单元,用来更新节点的最终状态。

通过以上的图匹配神经网络训练,最终得到预训练好的图匹配网络模型。

进一步地,所述给定任意一组智能合约克隆对(C

给定一组智能合约克隆对(C

设定一个阈值σ,并将(G

若S

1.本发明基于图匹配模型的智能合约相似度检测方法,其主要借助抽象语法树提取工具捕获智能合约语法信息,利用数据流和控制流边获取智能合约的语义信息,将智能合约源码转换为合约图输入图匹配神经网络,以此实现智能合约相似度的检测,其流程图如图1所示。

2.如图2所示,对智能合约代码克隆检测包括四个主要阶段:代码预处理、代码表征、代码相似度比较和代码克隆结果整合。首先,去除智能合约源码中的空行和注释,提取和组装智能合约代码块,形成合约克隆对;其次,根据数据流和控制流依赖,结合抽象语法树,将智能合约代码块转换为合约图;接着,进行相似度比较,每一个代码片段都会与其他代码片段进行对比来找到代码的克隆,比对的结果以克隆对列表的方式呈现;最后,将代码克隆结果进行整合,将代码克隆和原始的源代码关联,以特定的方式呈现。

3.如图3所示,对智能合约代码块与合约图的提取包括三个主要阶段:智能合约代码块提取、生成合约图、规范合约图。首先,根据智能合约源码中函数的功能、特征不同,提取并组装智能合约代码块,其次,将该智能合约中的关键函数调用withdraw函数、balance函数和call.value函数作为核心节点C1、C2、C3;将关键变量amount作为辅助节点N1;Fallback函数为Fallback节点F。具体对应关系如表1所示。

表1

由于节点不是孤立的存在,而是以时间顺序紧密联系,为了更好地捕获节点之间丰富的语义依赖关系,构建三种类型的有向边:

(a)控制流边:捕获具有条件控制的代码(如if、for、assert、require语句);

(b)数据流边:捕获变量访问或修改的代码;

(c)Fallback边:模拟Fallback函数与函数之间的交互关系。

边与边之间的对应关系如表2所示:

表2

语句和类型的对应关系如表3所示:

表3

最后受k-partite的启发,规范化合约图,删除图中辅助节点N

4.本实例以图4所示的代码相似度检测为例,具体检测流程如下:

(1)首先,将源码A和源码B进行代码预处理的操作,其具体实施步骤如下:

(1-1)去除智能合约源码A和B中的空行和注释;

(1-2)源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示。

(1-3)以函数为单位提取合约源码,并组装智能合约代码块;然后匹配一组有相同或相似功能的合约,形成合约克隆对(C

(2)其次,根据数据流和控制流依赖,结合抽象语法树(AST),将智能合约代码块转换为合约图G

(3)利用图匹配网络模型计算G

(3-1)设定一个阈值σ=0.9,并将(C

(3-2)若S

(3-3)本案例相似度值大于0.9,表示合约A,B存在语义相似性。

实施例2:

一种基于图匹配模型的智能合约相似度检测系统,包括第一处理模块、信息转换模块、数据集构建模块、模型训练模块和结果预测模块;

所述第一处理模块,用于收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;

所述信息转换模块,用于将智能合约代码块转换为智能合约图;

所述数据集构建模块,用于基于智能合约图,构建智能合约克隆图数据集;

所述模型训练模块,用于构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;

所述结果预测模块,用于利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。

实施例3:

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下的方法步骤:

收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;

将智能合约代码块转换为智能合约图;

基于智能合约图,构建智能合约克隆图数据集;

构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;

利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。

在一个实施例中,处理器执行计算机程序时,实现所述提取智能合约代码块并匹配合约克隆对,具体包括以下步骤:

去除智能合约源码中的空行和注释;

智能合约源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示;

以函数为单位提取合约源码,并组装智能合约代码块,匹配一组有相同或相似功能的合约,形成合约克隆对(C

在一个实施例中,处理器执行计算机程序时,实现所述将智能合约代码块转换为智能合约图,具体包括以下步骤:

基于提取的智能合约代码块,采用抽象语法树提取工具将合约代码块转换为智能合约AST;

基于智能合约AST图,增加控制流边、数据流边和Fallback边,将智能合约AST图转换为新型智能合约图,捕获相应的控制流和数据流信息。

在一个实施例中,处理器执行计算机程序时,实现构建智能合约克隆图数据集,具体包括以下步骤:

基于新型智能合约图构建智能合约克隆图对,将合约克隆图对(G

以合约克隆图对为单位构建智能合约克隆图数据集D={(G

在一个实施例中,处理器执行计算机程序时,实现所述基于智能合约克隆图数据集训练图匹配网络模型,具体包括以下步骤:

利用多层感知器对智能合约图的每个节点和每条边进行编码;

计算两个智能合约图之间的信息传递,为每个节点匹配另一个智能合约图中的相似节点,形成智能合约图之间的信息交换;

经过多次信息传递后,更新智能合约图中节点的最终状态,得到预训练的图匹配网络模型。

在一个实施例中,处理器执行计算机程序时,实现所述利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果,具体包括以下步骤:

调用智能合约图转换工具将智能合约克隆对(C

设定一个阈值σ,并将(G

若S

实施例4:

在一个实施例中,提供了一种基于图匹配模型的智能合约相似度检测装置,该基于图匹配模型的智能合约相似度检测的装置可以是服务器也可以是移动终端。该基于图匹配模型的智能合约相似度检测包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该基于图匹配模型的智能合约相似度检测装置的处理器用于提供计算和控制能力。该基于图匹配模型的智能合约相似度检测的装置的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该数据库用于存储基于图匹配模型的智能合约相似度检测的装置的所有数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现基于图匹配模型的智能合约相似度检测的方法。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

需要说明的是:

说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。

上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。

相关技术
  • 基于图匹配模型的智能合约相似度检测方法及系统
  • 一种基于图匹配网络的智能合约庞氏骗局检测方法及系统
技术分类

06120112272193