CN112286575A - 基于图匹配模型的智能合约相似度检测方法及系统 - Google Patents
基于图匹配模型的智能合约相似度检测方法及系统 Download PDFInfo
- Publication number
- CN112286575A CN112286575A CN202011125815.4A CN202011125815A CN112286575A CN 112286575 A CN112286575 A CN 112286575A CN 202011125815 A CN202011125815 A CN 202011125815A CN 112286575 A CN112286575 A CN 112286575A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- graph
- contract
- clone
- similarity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 52
- 238000012549 training Methods 0.000 claims abstract description 21
- 238000000034 method Methods 0.000 claims abstract description 20
- 238000013528 artificial neural network Methods 0.000 claims abstract description 18
- 230000006870 function Effects 0.000 claims description 30
- 238000004590 computer program Methods 0.000 claims description 22
- 238000010586 diagram Methods 0.000 claims description 19
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 238000007781 pre-processing Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 8
- 238000010276 construction Methods 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 8
- 238000003062 neural network model Methods 0.000 abstract description 6
- 238000011160 research Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010367 cloning Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000011895 specific detection Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
- G06F8/751—Code clone detection
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于图匹配模型的智能合约相似度检测方法,实现了对以太坊智能合约代码相似度的检测。具体包括:收集以太坊智能合约源码,制作智能合约源码数据集;提取智能合约代码块并匹配合约克隆对;利用数据流和控制流依赖以及抽象语法树,将代码块转换为合约图;构建智能合约克隆图数据集;构建图匹配神经网络模型,将智能合约克隆图数据集输入图匹配神经网络模型,实现良好的学习和训练;将智能合约克隆对输入图匹配神经网络模型,输出智能合约相似度检测结果。该方法填补了当前基于深度神经网络的智能合约相似度检测方法的空缺,具有良好的实用价值和借鉴意义。
Description
技术领域
本发明属于代码相似度检测技术领域,具体涉及一种基于图匹配模型的智能合约相似度检测方法及系统。
背景技术
随着各种开源代码库的出现,开发人员开始习惯于复制这些代码库中已有的源码来提高开发效率,导致网络上出现越来越多的相似性代码。当前,很多研究指出频繁的代码复制会对程序或软件造成一定的负面影响,大量的代码复制会增加代码维护的成本,消耗额外的人力物力。此外,盲目的代码复制可能会产生无法预料的程序漏洞,从而降低程序或软件的可靠性和安全性。
鉴于此,研究人员开始致力于检测代码的相似度。代码相似度检测也称为代码克隆或重复代码检测,是指判断两个及以上的程序是否存在相同或相似的源代码片段。根据代码相似度不同,代码克隆通常可以分为4类:1)完全相同的程序代码;2)完全复用除空格、注释、变量或函数重命名等之外的代码;3)类型2基础上略有修改的代码;4)实现方式不同但语义或功能相同的代码。传统的代码相似度检测通常只考虑文本表征,因此只能达到类型1和类型2的检测水平,现有的相似度检测方法则考虑了更高层次的源代码表征,通过基于词汇、语法、语义的分析能够实现类型3甚至类型4的代码相似度检测。
智能合约相似度检测是针对区块链上智能合约的代码克隆检测。智能合约实际上是由高级语言编写的程序代码,具有不可逆和不可变性,即合约部署在区块链上将不能进行修改和更新。因此,若是某个智能合约存在漏洞,可能会导致其克隆的衍生合约也存在相应的漏洞,由于智能合约漏洞造成的损失是巨大且不可逆转的,因此,研究一种智能合约的相似度检测方法能够有效地避免漏洞的传播,进一步提高智能合约的可靠性和安全性。
图匹配网络(graph matching)是一种用来比较两个图之间相似性的图神经网络模型,其主要的特点在于能够实现图之间的信息传递;进一步地,图匹配网络通过计算余弦相似度来检测图之间的相似程度。本发明提出基于图匹配模型的智能合约相似度检测,有效地解决了智能合约的相似度检测问题。
发明内容
针对上述现有技术存在的问题,为了解决智能合约的相似度检测问题,本发明提出了一种基于图匹配模型的智能合约相似度检测方法及系统。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种基于图匹配模型的智能合约相似度检测方法,包括如下步骤:
收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;
将智能合约代码块转换为智能合约图;
基于智能合约图,构建智能合约克隆图数据集;
构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;
利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。
作为一种可实施方式,所述提取智能合约代码块并匹配合约克隆对,具体包括以下步骤:
去除智能合约源码中的空行和注释;
智能合约源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示;
以函数为单位提取合约源码,并组装智能合约代码块,匹配一组有相同或相似功能的合约,形成合约克隆对(Ci,Cj)。
作为一种可实施方式,所述将智能合约代码块转换为智能合约图,具体包括以下步骤:
基于提取的智能合约代码块,采用抽象语法树提取工具将合约代码块转换为智能合约AST;
基于智能合约AST图,增加控制流边、数据流边和Fallback边,将智能合约AST图转换为新型智能合约图,捕获相应的控制流和数据流信息。
作为一种可实施方式,构建智能合约克隆图数据集,具体包括以下步骤:
基于新型智能合约图构建智能合约克隆图对,将合约克隆图对(Gi,Gj)标注其为yij,表示该克隆图对是否存在克隆,若存在,则yij为1,否则yij为0;
以合约克隆图对为单位构建智能合约克隆图数据集D={(Gi,Gj,yij)}。
作为一种可实施方式,所述基于智能合约克隆图数据集训练图匹配网络模型,具体包括以下步骤:
利用多层感知器对智能合约图的每个节点和每条边进行编码;
计算两个智能合约图之间的信息传递,为每个节点匹配另一个智能合约图中的相似节点,形成智能合约图之间的信息交换;
经过多次信息传递后,更新智能合约图中节点的最终状态,得到预训练的图匹配网络模型。
作为一种可实施方式,所述利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果,具体包括以下步骤:
调用智能合约图转换工具将智能合约克隆对(Ci,Cj)转换成相应的合约克隆图对形式(Gi,Gj);
设定一个阈值σ,并将(Gi,Gj)输入到预训练的图匹配模型中,计算输出该合约克隆图对的相似度值,相似度值表示为Sij;
若Sij>σ,则表示(Gi,Gj)是一组合约克隆图,表示这两个合约存在语义相似性;反之,则两个合约不存在语义相似性。
一种基于图匹配模型的智能合约相似度检测系统,包括第一处理模块、信息转换模块、数据集构建模块、模型训练模块和结果预测模块;
所述第一处理模块,用于收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;
所述信息转换模块,用于将智能合约代码块转换为智能合约图;
所述数据集构建模块,用于基于智能合约图,构建智能合约克隆图数据集;
所述模型训练模块,用于构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;
所述结果预测模块,用于利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下的方法步骤:
收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;
将智能合约代码块转换为智能合约图;
基于智能合约图,构建智能合约克隆图数据集;
构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;
利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。
一种基于图匹配模型的智能合约相似度检测装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实现如下的方法步骤:
收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;
将智能合约代码块转换为智能合约图;
基于智能合约图,构建智能合约克隆图数据集;
构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;
利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。
本发明利用智能合约图表示以及图匹配神经网络模型,提供了一种基于图匹配模型的智能合约相似度检测方法及系统,能够对以太坊智能合约进行相似度检测,相较于传统的代码克隆检测方法,实现了更准确、更高效的检测效果,填补了当前基于深度神经网络的智能合约相似度检测的空缺,不仅具有良好的通用性和实用价值,而且有很好的借鉴意义,具体有益技术效果和创新性主要表现在以下三个方面:
(1)本发明阐述的智能合约图构建方式,通过抽象语法树(AST)提取工具捕获了智能合约语法信息,增加了数据流和控制流边以获取智能合约的语义信息,有效地将智能合约源码转换为合约图的表示形式;
(2)本发明提出的图匹配神经网络,有效地计算了智能合约图之间的相似度,并且提高了检测的准确率和效率;
(3)本发明首次结合了图匹配神经网络模型和智能合约图,并应用于智能合约相似度的检测,具有很好的拓展性与借鉴意义。
附图说明
图1为本发明基于图匹配模型的智能合约相似度检测方法流程示意图。
图2为本发明智能合约代码克隆检测过程示意图。
图3为本发明具体实例智能合约代码块及合约图提取示意图。
图4为本发明具体实例检测智能合约相似度仿真示意图。
具体实施方式
为了清晰地阐述本发明,使本发明实施例的目的、技术方案和优点更清楚,下面结合了本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,以令本领域技术人员参照说明书文字能够据以实施。下面将附图结合具体实施方式对本发明的技术加以详细说明。
实施例1:
一种基于图匹配模型的智能合约相似度检测方法,实现语义(类型4)层面的智能合约源代码相似度检测,该方法具体包括如下步骤:
(1)以以太坊智能合约为研究对象,对智能合约进行预处理,提取智能合约代码块(contract snippet)并匹配合约克隆对(Ci,Cj);
(2)根据数据流和控制流依赖,结合抽象语法树(AST),将智能合约代码块转换为合约图(contract graph);
(3)构建智能合约克隆图数据集D={(Gi,Gj,yij)};
(4)构建图匹配神经网络,以智能合约克隆图数据集为输入,训练图匹配网络模型;
(5)给定任意一组智能合约克隆对(Ci,Cj),生成它们的合约克隆图对形式(Gi,Gj),利用图匹配网络模型计算两个图之间的相似度Sij,并给出预测结果。
进一步地,所述以以太坊智能合约为研究对象,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对(Ci,Cj),具体实现方式为:
收集以太坊智能合约源代码,对智能合约源码进行以下预处理操作:
1)去除智能合约源码中的空行和注释;
2)源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示。
接着,以函数为单位提取合约源码,并组装智能合约代码块;然后匹配一组有相同或相似功能的合约,形成合约克隆对(Ci,Cj)。
进一步地,所述根据数据流和控制流依赖,结合抽象语法树(AST),将智能合约代码块转换为合约图,具体实现方式为:
首先,以步骤(1)中提取的智能合约代码块为研究对象,利用抽象语法树提取工具将合约代码块转换成智能合约AST的形式;然而,由于普通的AST无法捕获程序的语义信息,仍停留在语法层面;因此,本发明在智能合约AST图的基础上,通过增加控制流边(control-flow),数据流边(data-flow)和Fallback边,将智能合约AST图转换为新型的智能合约图(contract graph)形式,以此来捕获合约中的控制流和数据流信息。
进一步地,所述构建智能合约克隆图数据集D={(Gi,Gj,yij)},具体实现方式为:
根据步骤(2)中所得的智能合约图Gi,构建智能合约克隆图对,其中,给定一组合约克隆图对(Gi,Gj),标注其为yij,表示该克隆图对是否存在克隆,若是,则标注为1,否则标注为0;接着,以合约克隆图对为单位,构建智能合约克隆图数据集D={(Gi,Gj,yij)}。
进一步地,所述构建图匹配神经网络,以智能合约克隆图数据集为输入,训练图匹配网络模型,具体实现方式为:
首先,构建基于智能合约图的图匹配神经网络,以智能合约克隆图数据集D作为输入数据;接着,对图匹配神经网络进行训练,训练细节如下:
1)利用多层感知器(MLP)对智能合约图的每个节点和每条边进行编码;
其中,xi和xij分别代表节点和边的特征。
2)计算两个图之间的信息传递,每个节点都会去尽量匹配另一个图中的相似节点,形成图之间的信息交换。此外,图匹配神经网络利用attention机制计算图之间的attention值;
其中,fmessage表示的就是一个MLP单元,用来计算信息传递,fmatch表示attention机制,它的定义如下:
其中,sh是用来计算相似度的函数。
3)经过多次信息传递后,更新图中节点的最终状态。
其中,GRU是一个门控循环单元,用来更新节点的最终状态。
通过以上的图匹配神经网络训练,最终得到预训练好的图匹配网络模型。
进一步地,所述给定任意一组智能合约克隆对(Ci,Cj),生成它们的合约克隆图对形式(Gi,Gj),利用图匹配网络模型计算两个图之间的相似度Sij,并给出预测结果,具体实现方式为:
给定一组智能合约克隆对(Ci,Cj),调用智能合约图转换工具得到相应的合约克隆图对形式(Gi,Gj);
设定一个阈值σ,并将(Gi,Gj)输入到预训练的图匹配模型中,计算输出该合约克隆图对的相似度值,即Sij;
若Sij>σ,则表示(Gi,Gj)是一组合约克隆图,表示这两个合约存在语义相似性;反之,则两个合约不存在语义相似性。
1.本发明基于图匹配模型的智能合约相似度检测方法,其主要借助抽象语法树提取工具捕获智能合约语法信息,利用数据流和控制流边获取智能合约的语义信息,将智能合约源码转换为合约图输入图匹配神经网络,以此实现智能合约相似度的检测,其流程图如图1所示。
2.如图2所示,对智能合约代码克隆检测包括四个主要阶段:代码预处理、代码表征、代码相似度比较和代码克隆结果整合。首先,去除智能合约源码中的空行和注释,提取和组装智能合约代码块,形成合约克隆对;其次,根据数据流和控制流依赖,结合抽象语法树,将智能合约代码块转换为合约图;接着,进行相似度比较,每一个代码片段都会与其他代码片段进行对比来找到代码的克隆,比对的结果以克隆对列表的方式呈现;最后,将代码克隆结果进行整合,将代码克隆和原始的源代码关联,以特定的方式呈现。
3.如图3所示,对智能合约代码块与合约图的提取包括三个主要阶段:智能合约代码块提取、生成合约图、规范合约图。首先,根据智能合约源码中函数的功能、特征不同,提取并组装智能合约代码块,其次,将该智能合约中的关键函数调用withdraw函数、balance函数和call.value函数作为核心节点C1、C2、C3;将关键变量amount作为辅助节点N1;Fallback函数为Fallback节点F。具体对应关系如表1所示。
关键函数与变量 | 节点类型 |
withdraw | C1 |
balance | C2 |
call.value | C3 |
amount | N1 |
Fallback | F |
表1
由于节点不是孤立的存在,而是以时间顺序紧密联系,为了更好地捕获节点之间丰富的语义依赖关系,构建三种类型的有向边:
(a)控制流边:捕获具有条件控制的代码(如if、for、assert、require语句);
(b)数据流边:捕获变量访问或修改的代码;
(c)Fallback边:模拟Fallback函数与函数之间的交互关系。
边与边之间的对应关系如表2所示:
Vs | Ve | Order | Type | |
e<sub>1</sub> | C<sub>1</sub> | C<sub>2</sub> | 1 | IT |
e<sub>2</sub> | C<sub>1</sub> | N<sub>1</sub> | 2 | IT |
e<sub>3</sub> | C<sub>2</sub> | N<sub>1</sub> | 3 | AC |
e<sub>4</sub> | N<sub>1</sub> | C<sub>3</sub> | 4 | FW |
e<sub>5</sub> | C<sub>3</sub> | N<sub>1</sub> | 5 | AC |
e<sub>6</sub> | C<sub>3</sub> | C<sub>3</sub> | 6 | RG |
e<sub>7</sub> | C<sub>3</sub> | C<sub>2</sub> | 7 | FW |
e<sub>8</sub> | C<sub>2</sub> | C<sub>2</sub> | 8 | AC |
e<sub>9</sub> | C<sub>2</sub> | N<sub>1</sub> | 9 | AG |
e<sub>10</sub> | C<sub>3</sub> | F | 10 | FB |
e<sub>11</sub> | F | C<sub>1</sub> | 11 | FB |
表2
语句和类型的对应关系如表3所示:
表3
最后受k-partite的启发,规范化合约图,删除图中辅助节点N1和Fallback节点F,传递N1和F节点的特征到最近的主要节点上,保留连接到已删除节点的边,将起点和终点移动到相应的主节点上,形成规范化合约图。
4.本实例以图4所示的代码相似度检测为例,具体检测流程如下:
(1)首先,将源码A和源码B进行代码预处理的操作,其具体实施步骤如下:
(1-1)去除智能合约源码A和B中的空行和注释;
(1-2)源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示。
(1-3)以函数为单位提取合约源码,并组装智能合约代码块;然后匹配一组有相同或相似功能的合约,形成合约克隆对(Ca,Cb),具体实施方案如图2所示。
(2)其次,根据数据流和控制流依赖,结合抽象语法树(AST),将智能合约代码块转换为合约图Ga,Gb,具体实施方案如图3所示。
(3)利用图匹配网络模型计算Ga,Gb两个图之间的相似度Sab,并给出预测结果,具体实现方式为:
(3-1)设定一个阈值σ=0.9,并将(Ca,Cb)输入到预训练的图匹配模型中,计算输出A,B合约克隆图对的相似度值,即Sab。
(3-2)若Sab>σ,即相似度值大于0.9,则表示(Ca,Cb)是一组合约克隆图,表示A,B合约存在语义相似性;反之,则A,B合约不存在语义相似性。
(3-3)本案例相似度值大于0.9,表示合约A,B存在语义相似性。
实施例2:
一种基于图匹配模型的智能合约相似度检测系统,包括第一处理模块、信息转换模块、数据集构建模块、模型训练模块和结果预测模块;
所述第一处理模块,用于收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;
所述信息转换模块,用于将智能合约代码块转换为智能合约图;
所述数据集构建模块,用于基于智能合约图,构建智能合约克隆图数据集;
所述模型训练模块,用于构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;
所述结果预测模块,用于利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。
实施例3:
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下的方法步骤:
收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;
将智能合约代码块转换为智能合约图;
基于智能合约图,构建智能合约克隆图数据集;
构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;
利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。
在一个实施例中,处理器执行计算机程序时,实现所述提取智能合约代码块并匹配合约克隆对,具体包括以下步骤:
去除智能合约源码中的空行和注释;
智能合约源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示;
以函数为单位提取合约源码,并组装智能合约代码块,匹配一组有相同或相似功能的合约,形成合约克隆对(Ci,Cj)。
在一个实施例中,处理器执行计算机程序时,实现所述将智能合约代码块转换为智能合约图,具体包括以下步骤:
基于提取的智能合约代码块,采用抽象语法树提取工具将合约代码块转换为智能合约AST;
基于智能合约AST图,增加控制流边、数据流边和Fallback边,将智能合约AST图转换为新型智能合约图,捕获相应的控制流和数据流信息。
在一个实施例中,处理器执行计算机程序时,实现构建智能合约克隆图数据集,具体包括以下步骤:
基于新型智能合约图构建智能合约克隆图对,将合约克隆图对(Gi,Gj)标注其为yij,表示该克隆图对是否存在克隆,若存在,则yij为1,否则yij为0;
以合约克隆图对为单位构建智能合约克隆图数据集D={(Gi,Gj,yij)}。
在一个实施例中,处理器执行计算机程序时,实现所述基于智能合约克隆图数据集训练图匹配网络模型,具体包括以下步骤:
利用多层感知器对智能合约图的每个节点和每条边进行编码;
计算两个智能合约图之间的信息传递,为每个节点匹配另一个智能合约图中的相似节点,形成智能合约图之间的信息交换;
经过多次信息传递后,更新智能合约图中节点的最终状态,得到预训练的图匹配网络模型。
在一个实施例中,处理器执行计算机程序时,实现所述利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果,具体包括以下步骤:
调用智能合约图转换工具将智能合约克隆对(Ci,Cj)转换成相应的合约克隆图对形式(Gi,Gj);
设定一个阈值σ,并将(Gi,Gj)输入到预训练的图匹配模型中,计算输出该合约克隆图对的相似度值,相似度值表示为Sij;
若Sij>σ,则表示(Gi,Gj)是一组合约克隆图,表示这两个合约存在语义相似性;反之,则两个合约不存在语义相似性。
实施例4:
在一个实施例中,提供了一种基于图匹配模型的智能合约相似度检测装置,该基于图匹配模型的智能合约相似度检测的装置可以是服务器也可以是移动终端。该基于图匹配模型的智能合约相似度检测包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该基于图匹配模型的智能合约相似度检测装置的处理器用于提供计算和控制能力。该基于图匹配模型的智能合约相似度检测的装置的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该数据库用于存储基于图匹配模型的智能合约相似度检测的装置的所有数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现基于图匹配模型的智能合约相似度检测的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是:
说明书中提到的“一个实施例”或“实施例”意指结合实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,说明书通篇各个地方出现的短语“一个实施例”或“实施例”并不一定均指同一个实施例。
上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。
Claims (9)
1.一种基于图匹配模型的智能合约相似度检测方法,其特征在于,包括如下步骤:
收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;
将智能合约代码块转换为智能合约图;
基于智能合约图,构建智能合约克隆图数据集;
构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;
利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。
2.根据权利要求1所述的一种基于图匹配模型的智能合约相似度检测方法,其特征在于,所述提取智能合约代码块并匹配合约克隆对,具体包括以下步骤:
去除智能合约源码中的空行和注释;
智能合约源码中的变量名用“VAR”表示,函数名用“FUN”表示,变量类型名用“TYPE”表示;
以函数为单位提取合约源码,并组装智能合约代码块,匹配一组有相同或相似功能的合约,形成合约克隆对(Ci,Cj)。
3.根据权利要求1所述的一种基于图匹配模型的智能合约相似度检测方法,其特征在于,所述将智能合约代码块转换为智能合约图,具体包括以下步骤:
基于提取的智能合约代码块,采用抽象语法树提取工具将合约代码块转换为智能合约AST;
基于智能合约AST图,增加控制流边、数据流边和Fallback边,将智能合约AST图转换为新型智能合约图,捕获相应的控制流和数据流信息。
4.根据权利要求3所述的一种基于图匹配模型的智能合约相似度检测方法,其特征在于,构建智能合约克隆图数据集,具体包括以下步骤:
基于新型智能合约图构建智能合约克隆图对,将合约克隆图对(Gi,Gj)标注其为yij,表示该克隆图对是否存在克隆,若存在,则yij为1,否则yij为0;
以合约克隆图对为单位构建智能合约克隆图数据集D={(Gi,Gj,yij)}。
5.根据权利要求1所述的一种基于图匹配模型的智能合约相似度检测方法,其特征在于,所述基于智能合约克隆图数据集训练图匹配网络模型,具体包括以下步骤:
利用多层感知器对智能合约图的每个节点和每条边进行编码;
计算两个智能合约图之间的信息传递,为每个节点匹配另一个智能合约图中的相似节点,形成智能合约图之间的信息交换;
经过多次信息传递后,更新智能合约图中节点的最终状态,得到预训练的图匹配网络模型。
6.根据权利要求1所述的一种基于图匹配模型的智能合约相似度检测方法,其特征在于,所述利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果,具体包括以下步骤:
调用智能合约图转换工具将智能合约克隆对(Ci,Cj)转换成相应的合约克隆图对形式(Gi,Gj);
设定一个阈值σ,并将(Gi,Gj)输入到预训练的图匹配模型中,计算输出该合约克隆图对的相似度值,相似度值表示为Sij;
若Sij>σ,则表示(Gi,Gj)是一组合约克隆图,表示这两个合约存在语义相似性;反之,则两个合约不存在语义相似性。
7.一种基于图匹配模型的智能合约相似度检测系统,其特征在于,包括第一处理模块、信息转换模块、数据集构建模块、模型训练模块和结果预测模块;
所述第一处理模块,用于收集以太坊智能合约源代码,对智能合约进行预处理,提取智能合约代码块并匹配合约克隆对;
所述信息转换模块,用于将智能合约代码块转换为智能合约图;
所述数据集构建模块,用于基于智能合约图,构建智能合约克隆图数据集;
所述模型训练模块,用于构建图匹配神经网络,基于智能合约克隆图数据集训练图匹配网络模型;
所述结果预测模块,用于利用图匹配网络模型计算两个待测智能合约图之间的相似度,并给出预测结果。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述的方法步骤。
9.一种基于图匹配模型的智能合约相似度检测装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任意一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011125815.4A CN112286575A (zh) | 2020-10-20 | 2020-10-20 | 基于图匹配模型的智能合约相似度检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011125815.4A CN112286575A (zh) | 2020-10-20 | 2020-10-20 | 基于图匹配模型的智能合约相似度检测方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112286575A true CN112286575A (zh) | 2021-01-29 |
Family
ID=74423959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011125815.4A Pending CN112286575A (zh) | 2020-10-20 | 2020-10-20 | 基于图匹配模型的智能合约相似度检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112286575A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312268A (zh) * | 2021-07-29 | 2021-08-27 | 北京航空航天大学 | 一种智能合约代码相似检测方法 |
CN113448852A (zh) * | 2021-06-29 | 2021-09-28 | 中国工商银行股份有限公司 | 一种测试案例的获取方法、装置、电子设备及存储介质 |
CN114780103A (zh) * | 2022-04-26 | 2022-07-22 | 中国人民解放军国防科技大学 | 一种基于图匹配网络的语义类代码克隆检测方法 |
CN114880023A (zh) * | 2022-07-11 | 2022-08-09 | 山东大学 | 面向技术特征的源代码对比方法、系统与程序产品 |
CN115129364A (zh) * | 2022-07-05 | 2022-09-30 | 四川大学 | 基于抽象语法树和图神经网络的指纹身份识别方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077147A (zh) * | 2014-07-11 | 2014-10-01 | 东南大学 | 一种基于代码克隆自动检测和及时提醒的软件复用方法 |
US20180046441A1 (en) * | 2015-02-10 | 2018-02-15 | The Trustees Of Columbia University In The City Of New York | Code relatives detection |
US20190354689A1 (en) * | 2018-05-18 | 2019-11-21 | Deepmind Technologies Limited | Deep neural network system for similarity-based graph representations |
CN110990273A (zh) * | 2019-11-29 | 2020-04-10 | 中国银行股份有限公司 | 克隆代码检测方法及装置 |
CN111488582A (zh) * | 2020-04-01 | 2020-08-04 | 杭州云象网络技术有限公司 | 一种基于图神经网络的智能合约重入性漏洞检测的方法 |
-
2020
- 2020-10-20 CN CN202011125815.4A patent/CN112286575A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104077147A (zh) * | 2014-07-11 | 2014-10-01 | 东南大学 | 一种基于代码克隆自动检测和及时提醒的软件复用方法 |
US20180046441A1 (en) * | 2015-02-10 | 2018-02-15 | The Trustees Of Columbia University In The City Of New York | Code relatives detection |
US20190354689A1 (en) * | 2018-05-18 | 2019-11-21 | Deepmind Technologies Limited | Deep neural network system for similarity-based graph representations |
CN110990273A (zh) * | 2019-11-29 | 2020-04-10 | 中国银行股份有限公司 | 克隆代码检测方法及装置 |
CN111488582A (zh) * | 2020-04-01 | 2020-08-04 | 杭州云象网络技术有限公司 | 一种基于图神经网络的智能合约重入性漏洞检测的方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448852A (zh) * | 2021-06-29 | 2021-09-28 | 中国工商银行股份有限公司 | 一种测试案例的获取方法、装置、电子设备及存储介质 |
CN113312268A (zh) * | 2021-07-29 | 2021-08-27 | 北京航空航天大学 | 一种智能合约代码相似检测方法 |
CN114780103A (zh) * | 2022-04-26 | 2022-07-22 | 中国人民解放军国防科技大学 | 一种基于图匹配网络的语义类代码克隆检测方法 |
CN114780103B (zh) * | 2022-04-26 | 2022-12-20 | 中国人民解放军国防科技大学 | 一种基于图匹配网络的语义类代码克隆检测方法 |
CN115129364A (zh) * | 2022-07-05 | 2022-09-30 | 四川大学 | 基于抽象语法树和图神经网络的指纹身份识别方法和系统 |
CN115129364B (zh) * | 2022-07-05 | 2023-04-18 | 四川大学 | 基于抽象语法树和图神经网络的指纹身份识别方法和系统 |
CN114880023A (zh) * | 2022-07-11 | 2022-08-09 | 山东大学 | 面向技术特征的源代码对比方法、系统与程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112286575A (zh) | 基于图匹配模型的智能合约相似度检测方法及系统 | |
CN111428044B (zh) | 多模态获取监管识别结果的方法、装置、设备及存储介质 | |
CN108446540B (zh) | 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统 | |
US11144833B2 (en) | Data processing apparatus and method for merging and processing deterministic knowledge and non-deterministic knowledge | |
CN113360915B (zh) | 基于源代码图表示学习的智能合约多漏洞检测方法及系统 | |
CN111159395B (zh) | 基于图神经网络的谣言立场检测方法、装置和电子设备 | |
Gu et al. | DeepAM: Migrate APIs with multi-modal sequence to sequence learning | |
CN108874878A (zh) | 一种知识图谱的构建系统及方法 | |
CN111460472B (zh) | 一种基于深度学习图网络的加密算法识别方法 | |
US20070214164A1 (en) | Unstructured data in a mining model language | |
CN108491228B (zh) | 一种二进制漏洞代码克隆检测方法及系统 | |
CN105868108A (zh) | 基于神经网络的指令集无关的二进制代码相似性检测方法 | |
CN107967152B (zh) | 基于最小分支路径函数胎记的软件局部抄袭证据生成方法 | |
KR101617696B1 (ko) | 데이터 정규표현식의 마이닝 방법 및 장치 | |
CN104008166A (zh) | 一种基于形态和语义相似度的对话短文本聚类方法 | |
CN110659502B (zh) | 一种基于文本信息关联关系分析的项目版本检测方法及系统 | |
CN109799990A (zh) | 源代码注释自动生成方法及系统 | |
CN115033896A (zh) | 以太坊智能合约漏洞检测方法、装置、系统与介质 | |
CN112613040A (zh) | 一种基于二进制程序的漏洞检测方法及相关设备 | |
CN107622201B (zh) | 一种抗加固的Android平台克隆应用程序快速检测方法 | |
CN111562943B (zh) | 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置 | |
KR20200072851A (ko) | 링크드 데이터와 문자열 데이터를 이용한 온톨로지 인스턴스 확장 방법 및 시스템 | |
CN114911933A (zh) | 基于图内图间联合信息传播的假新闻检测方法及系统 | |
KR102324196B1 (ko) | 지식 베이스 보강을 위한 시스템 및 방법 | |
Patel et al. | Combining holistic source code representation with siamese neural networks for detecting code clones |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |