CN113127933B - 一种基于图匹配网络的智能合约庞氏骗局检测方法及系统 - Google Patents
一种基于图匹配网络的智能合约庞氏骗局检测方法及系统 Download PDFInfo
- Publication number
- CN113127933B CN113127933B CN202110302875.7A CN202110302875A CN113127933B CN 113127933 B CN113127933 B CN 113127933B CN 202110302875 A CN202110302875 A CN 202110302875A CN 113127933 B CN113127933 B CN 113127933B
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- control flow
- pompe
- graph
- intelligent
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Databases & Information Systems (AREA)
- Bioethics (AREA)
- Medical Informatics (AREA)
- Computer Hardware Design (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于图匹配网络的智能合约庞氏骗局检测方法及系统,该方法获取庞氏骗局数据集,庞氏骗局数据集包括多个智能合约地址、智能合约及其对应的标签,为智能合约字节码构造控制流图,利用深度学习中的图匹配网络技术,训练神经网络,为智能合约静态审计提供技术支持,缩小审计的范围,减少了用户和监管人员发现恶意合约的时间,而且漏报率和误报率较低。本发明基于开源代码数据集,使用静态审计技术。
Description
技术领域
本发明属于智能合约审计领域,涉及智能合约的图表示法和深度学习技术中的图匹配网络。该检测方法可以直接应用于智能合约中的庞氏骗局检测,可以自动对智能合约进行庞氏骗局的检测,判断智能合约是否是庞氏骗局,为后续智能合约静态审计的研究提供了技术支持。
背景技术
智能合约中的庞氏骗局可能导致安全问题,造成用户的财产损失,每年以太坊中庞氏骗局的金额可达百万美元。部分合约可以通过各种开源的工具检测出其中的庞氏骗局,而仍有一部分骗局被隐藏起来,导致检测工具检测失败。庞氏骗局以高利润广泛吸引平台投资者,制造赚钱的假象进而骗取更多的投资。这些诈骗合约在财务和平台上都会产生灾难性的影响。这些骗局通常是由诈骗者精心设计并隐藏在合约中的,并且区块链技术在某种程度上处于法律体系的灰色地带,没有完善的法律约束,并且由于其匿名性的特点,在诈骗发生后无法追查和制裁。
智能合约静态审计的是网络安全的一个基本问题,对问题合约的挖掘和发现也成为网络安全的热门问题之一。目前已有的庞氏骗局检测方法分为基于规则的检测和基于机器学习的检测方法,在全球网络安全竞争日益激烈的情况之下,智能合约静态审计技术也在不断智能化,集中体现为检测方法更多样化、技术形态更丰富,以及引入机器学习辅助甚至完全替代人工分析。
虽然已有多种基于规则的庞氏骗局检测方法和基于机器学习的庞氏骗局检测方法,但是前者由于规则的不全面性,无法识别出较复杂的庞氏骗局且误报率较高;而后者由于简单的将指令频率作为检测特征,其特征对智能合约的语义表达不完整使得检测效果提升有限。随着近些年开源代码库的广泛使用和图神经网络的迅速发展,使用数据驱动技术研究程序特性已成为可能。
在基于规则的庞氏骗局检测方法中,核心技术是智能合约的表示。MassimoBartoletti等人提出了一种字节码文件克隆检测方法,使用蒙特卡罗算法来估计任意两个合约之间的归一化编辑距离,再根据编辑距离来判断是否是庞氏骗局。这种基于文本的合约检测方法容易实现且开销很小,但是缺点也很明显:基于规则的检测会丢失大量信息,仅能检测到部分语法结构的相似性,并不能很好的处理语义相似。在机器学习的庞氏骗局检测方法中,核心技术是智能合约中庞氏骗局相关特征的提取。中山大学的Weili Chen团队提出了一种基于特征提取的合约检测方法。手动分析合约的账户信息与交易流,提取账户特征,交易特征与代码特征,采用XGBoost对智能合约的账户和代码进行分类,检测是否为庞氏骗局。但是基于提取特征的分类方法还是会不可避免的丢失一些信息,并且仅通过opcode的频率来检测代码特征并不能很好的把握合约语义。而文章中提到的账户信息则需要分析账户的资金流等特征,在出现庞氏骗局交易之后,与庞氏骗局相关的账户特征才会出现,因此无法在合约部署之初阻止骗局发生。
在智能合约庞氏骗局检测的前沿领域,将机器学习方法引入庞氏骗局检测时,通常是将智能合约的源码或字节码视作文本字符串,提取出可疑代码的文本或数字特征,然后输入进机器学习模型中。但是智能合约的源代码和字节码具有结构性,代码的本质并不是字符串,而是一个具有复杂拓扑的数据结构,字符串只是对这种数据结构的一种编码,在编译的过程中,首先要把代码的字符串解析为这种数据结构,之后才能进行语义分析、检查等过程。将源代码字符串解析为这种数据结构需要对代码进行词法分析、语法分析,通常用控制流图(Control Flow Graph,CFG)来表示这种数据结构。用字符串来表示智能合约会损失掉很多结构信息,同时字符串也很难表达出智能合约的语法信息和语义信息。
在当前源代码静态审计领域中,除了用字符串表示源代码之外,还有一种源代码表示方法,就是将源代码用图表示。图是一种复杂的拓扑结构,包括顶点和边,控制流图本身就是一种图结构,图的顶点表示着源代码的基本操作,图的边则表示顶点之间的顺序关系,用边将顶点连接,源代码就由扁平的字符串变成了具有拓扑结构的图。对源代码做语义分析,将语义相关的代码元素用边连接,图就可以清楚地表达出源代码的语义信息。
目前用图表示智能合约进行静态审计的研究中,通常的做法是将可疑合约构造为图,然后由专家写出图遍历规则,符合规则的视作漏洞,在这个过程中并没有利用到机器学习方法,反而需要专家定义图遍历规则。而训练神经网络自动对智能合约检测的工作要求有大量数据参与训练,目前已知的庞氏骗局数据远达不到训练网络的要求。
通过分析研究现有的基于机器学习的庞氏骗局检测方法可知,此类方法不需要人工专家来对智能合约进行特征提取,并且能够实现较好的庞氏骗局检测效果。但其对于智能合约的向量化表征是非结构化的,且语法和语义信息保存不完整,因此对于较复杂的庞氏骗局无法做出正确的预测。而利用图结构的庞氏骗局检测方法目前还无法完全脱离人工干预,需要专家指导。
发明内容
本发明针对现有的智能合约庞氏骗局检测技术语法语义信息保存不完整以及准确率低等问题,提出了一种基于图匹配网络的智能合约庞氏骗局检测方法及系统,将智能合约字节码用图表示,并对图进行机器学习训练,实现了对目标合约进行庞氏骗局检测功能,而且漏报率和误报率较低。本发明基于开源代码数据集,获取数据集中有庞氏骗局智能合约和安全的智能合约,使用静态审计技术,为合约字节码构造控制流图,利用深度学习中的图匹配网络技术,训练智能合约庞氏骗局检测模型,为智能合约静态审计提供技术支持,缩小审计的范围,减少了用户和监管人员发现恶意合约的时间。
为达到上述目的,本发明采取如下的技术方案:
一种基于图匹配网络的智能合约庞氏骗局检测模型构建方法,包括以下步骤:
步骤一:获取数据:获取带标签的庞氏骗局数据集,所述庞氏骗局数据集包括多个智能合约地址、智能合约及其对应的标签,根据获取的智能合约地址爬取智能合约的字节码;
步骤二:字节码构图:使用智能合约的字节码构建包含结构信息和语义信息的完整的控制流图;具体包括:
步骤2.1,将步骤一得到字节码反汇编生成智能合约的EVM指令,分析EVM指令并将其划分为多个基础块,对基础块添加关系边,得到初始控制流图;所述初始控制流图中每个基础块对应一个节点;
步骤2.2,找出初始控制流图中的所有子图,根据子图的生成顺序在子图间添加顺序依赖边,完善其结构信息,得到包含结构信息的控制流图;
步骤2.3,使用Sent2Vec模型对包含结构信息的控制流图中每个节点的特征信息进行向量化,并使用One-Hot编码将包含结构信息的控制流图中边的特征信息进行向量化;从而得到包含结构信息和语义信息的完整的控制流图;
步骤三:神经网络的构建和训练:构建初始图匹配神经网络模型,将庞氏骗局数据集中的两个智能合约的两个完整的控制流图作为输入,输出为两个智能合约的标签的相似系数,并将输出的相似系数与庞氏骗局数据集中这两个智能合约对应的原始标签之间的相似度进行对比,根据对比得到的误差,利用反向传播训练神经网络,得到训练后的神经网络模型;所述相似系数表示输入的两个智能合约的相似程度。
本发明还包括以下技术特征:
具体的,所述步骤一中的庞氏骗局数据集中的智能合约包括庞氏骗局智能合约以及安全智能合约。
具体的,所述步骤2.1中对基础块添加关系边包括:新建一个栈模拟EVM指令的进栈和出栈顺序,找到跳转指令,找到或计算跳转的目的地址,实现基础块之间的关系边的添加,得到初始控制流图;
所述步骤2.2中,初始控制流图中若包含多个子图,那么根据步骤2.1生成子图的顺序,在相邻的子图之间添加一条顺序依赖边,将相邻的两个子图合并为一个图,以此类推,使得最后只有一个图,最终得到图即为包含结构信息的控制流图。
具体的,所述步骤三中的初始图匹配神经网络包括:编码层、传播层和聚合层;编码层用于通过多层感知器将节点和边的特征进行编码;传播层用于在多轮迭代过程中使用注意力机制传播节点之间的特征信息;聚合层用于利用聚合函数计算所有节点的聚合信息,把图表示为一个向量。
一种基于图匹配网络的智能合约庞氏骗局检测方法,包括以下步骤:
步骤4.1,将待检测的智能合约生成完整的待检测控制流图;
步骤4.2,在庞氏骗局数据集中选取任意一个庞氏骗局智能合约生成完整的目标控制流图;
步骤4.3,将步骤4.1中的待检测控制流图和步骤4.2得到的目标控制流图输入权利要求1得到的训练后的神经网络模型得到相似系数;
步骤4.4,如果步骤4.3得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;如果步骤4.3得到的相似系数低于设定阈值,则重复执行步骤4.3,直至得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;反之,若待检测的智能合约与庞氏骗局数据集中的任意一个庞氏骗局智能合约都不相似,则为安全智能合约。
一种基于图匹配网络的智能合约庞氏骗局检测系统,该系统包括:
数据获取模块,用于获取带标签的庞氏骗局数据集,所述庞氏骗局数据集包括多个智能合约地址、智能合约及其对应的标签,根据获取的智能合约地址爬取智能合约的字节码;
构图模块,用于使用智能合约的字节码构建包含结构信息和语义信息的完整的控制流图;
神经网络的构建和训练模块,用于构建初始图匹配神经网络模型,将庞氏骗局数据集中的两个智能合约的两个完整的控制流图作为输入,输出为两个智能合约的标签的相似系数,并将输出的相似系数与庞氏骗局数据集中这两个智能合约对应标签之间的相似度进行对比,根据对比得到的误差,利用反向传播训练神经网络,得到训练后的神经网络模型;所述相似系数表示输入的两个智能合约的相似程度;
检测模块,用于对待检测的智能合约进行检测,得到检测结果。
具体的,所述构图模块中,将字节码反汇编生成智能合约的EVM指令,分析EVM指令并将其划分为多个基础块,对基础块添加关系边,得到初始控制流图;所述初始控制流图中每个基础块对应一个节点;
找出初始控制流图中的所有子图,根据子图的生成顺序在子图间添加顺序依赖边,完善其结构信息,得到包含结构信息的控制流图;
使用Sent2Vec模型对包含结构信息的控制流图中每个节点的特征信息进行向量化,并使用One-Hot编码将包含结构信息的控制流图中边的特征信息进行向量化;从而得到包含结构信息和语义信息的完整的控制流图。
具体的,所述对基础块添加关系边包括:新建一个栈模拟EVM指令的进栈和出栈顺序,找到跳转指令,找到或计算跳转的目的地址,实现基础块之间的关系边的添加,得到初始控制流图。
具体的,所述检测模块中,将待检测的智能合约通过构图模块生成完整的待检测控制流图;在庞氏骗局数据集中选取任意一个庞氏骗局智能合约通过构图模块生成完整的目标控制流图;将待检测控制流图和目标控制流图输入练后的神经网络模型得到相似系数;如果得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;如果得到的相似系数低于设定阈值,则在庞氏骗局数据集中再选取任意一个庞氏骗局智能合约重复通过构图模块生成完整的目标控制流图;将待检测控制流图和目标控制流图输入练后的神经网络模型得到相似系数;直至得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;反之,若待检测的智能合约与庞氏骗局数据集中的任意一个庞氏骗局智能合约都不相似,则为安全智能合约。
本发明与现有技术相比,有益的技术效果是:
(1)使用智能合约字节码生成的控制流图表示法具有很强的表达力。本发明用控制流图表示源代码,并在其基础上增加控制流边和节点语义信息,可以全面地表达出智能合约的结构信息、语法信息和语义信息,解决了传统的文本字符串表示法难以表达结构信息、语义信息的问题。
(2)模拟编译动态构图。本发明模拟智能合约字节码执行过程,字节码划分为执行的基础块,模拟执行时字节码进栈出栈操作,精确找到指令跳转位置,将基本快链接起来形成图,避免了静态构图时找不到跳转位置的问题,增强控制流图的连通性和准确性,增强图的结构语义表达能力。
(3)不需要专家制定图遍历规则。本发明引入机器学习方法中的图匹配网络技术,将构造好的控制流图输入进图匹配网络模型中进行训练和检测,控制流图中的庞氏骗局检测规则由图匹配网络模型自动学习,无需人工参与。
(4)模型更新速度快。本发明基于开源代码库和机器学习方法,在检测问题发生变更时,只需要更新数据集并继续用新的代码数据训练图匹配网络模型,智能合约庞氏骗局检测模型即可更新。解决了专家制定图遍历规则进而需要对新代码进行分析并重新制定规则的问题。
附图说明
图1.发明框架图。
图2.EVM指令分类。
图3.图匹配网络模型结构图。
图4.实施例字节码构图中将其划分为多个基础块的示意图。
图5.实施例字节码构图中生成包含结构信息控制流图的示意图。
具体实施方式
本发明根据当前智能合约庞氏骗局检测研究现状,提出一种结合智能合约字节码的图表示法和机器学习方法的庞氏骗局检测技术,填补当前研究领域的空白,为后续的智能合约静态审计技术研究提供参考。针对此问题,本文研究并提出一种基于图匹配网络的智能合约庞氏骗局检测方法。研究如何设计智能合约字节码的图表示方法和对应的特征表示,以及图的嵌入和图神经网络检测模型的设计和构建。
以下对本发明涉及的定义或概念内涵做以说明:
智能合约:本发明中提到的智能合约是区块链领域的智能合约。智能合约是一段程序,它以计算机指令的方式实现了传统合约的自动化处理。简单来说,智能合约就是一种把我们生活中的合约数字化,当满足一定条件后,可以由程序自动执行的技术。
庞氏骗局:是一种欺诈性投资骗局,利用新投资人的钱来向老投资者支付利息和短息回报,以制造赚钱的假象进而骗取更多的投资。
EVM指令:EVM的指令由一个字节长度的,代表着某种特定操作含义的操作码以及跟随其后的零至多个代表此操作所需要的操作数所构成。
字节码反汇编:将字节码转为汇编代码的过程;这里的汇编代码由EVM指令组成。
以下对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
一种基于图匹配网络的智能合约庞氏骗局检测模型构建方法,包括以下步骤:
步骤一:获取数据:获取带标签的庞氏骗局数据集,所述庞氏骗局数据集包括多个智能合约地址、智能合约及其对应的标签,根据获取的智能合约地址爬取智能合约的字节码。本实施方式中,使用区块链数据集共享平台XBlock中带标签的庞氏骗局数据集,XBlock目前分享并包括比特币、以太坊和EOS在内的三大平台的多层次角度的海量数据,以及中山大学数据科学与计算机学院InPlusLab在此领域的相关研究工作;所有的区块链数据集都进行了标准化的清晰和归类;其中带标签的庞氏骗局数据集包含若干个智能合约地址,以及此智能合约对应的标签,标签为1,说明智能合约为庞氏骗局智能合约,否则为安全智能合约;并且这些数据集都通过人工校验,确保标签的正确性。
步骤二:字节码构图:使用智能合约的字节码构建包含结构信息和语义信息的完整的控制流图;具体包括:
步骤2.1,将步骤一得到字节码反汇编生成智能合约的EVM指令,分析EVM指令并将其划分为多个基础块,对基础块添加关系边,得到初始控制流图;所述初始控制流图中每个基础块对应一个节点;如图4所示为字节码划分基础块的案例,图4中左边为字节码反汇编后得到的指令段,根据划分基础块的原则,可以将指令段划分为图4中右边的多个基础块;图5左侧即为对基础块添加关系边后得到的初始控制流图,其中包含3种关系边,分别为跳转成功边、跳转失败边和无条件跳转边,此初始控制流图包含两个子图,分别为子图1和子图2。
步骤2.2,找出初始控制流图中的所有子图,根据子图的生成顺序在子图间添加顺序依赖边,完善其结构信息,得到包含结构信息的控制流图;图5左边是初始控制流图中的子图1和子图2,通过添加顺序依赖边,将两个子图连接,得到如图5右边的包含结构信息的控制流图。
步骤2.3,使用Sent2Vec模型对包含结构信息的控制流图中每个节点的特征信息进行向量化,并使用One-Hot编码将包含结构信息的控制流图中边的特征信息进行向量化;从而得到包含结构信息和语义信息的完整的控制流图;
具体的,在本实施方式中,在所有EVM指令中,与控制流有关的指令可以分为以下几类:其中无条件跳转指令JUMP与条件跳转指令JUMPI主要用以实现控制流的改变,它们是基础块的最后一条指令;RETURN、STOP、INVALID、SELFDESTRUCT和REVERT指令代表暂停执行,同样也是位于基础块的末尾;指令JUMPDEST是一个标记,它的作用是将某个位置标记为有效的跳转目标,当通过指令JUMP或者JUMPI进行控制流改变时,目标位置必须包含JUMPDEST指令,否则执行将失败。
基础块是一个最大化的指令序列,程序执行的时候只能从这个序列的第一条指令进入,从序列的最后一条指令退出。对于智能合约字节码构建基础块的原则有:(1)遇到跳转语句、循环语句、分支语句,即EVM控制流指令中的无条件指令JUMP、条件指令JUMPI和暂停执行指令,将该指令作为当前块的最后一条指令,并结束当前块。(2)遇到程序或者子程序的第一条语句,即EVM控制流指令中的JUMPDEST或遇到的首个指令,结束当前块,并将该语句作为新的基础块的第一条语句。(3)遇到其他语句,即EVM指令中与控制流无关的其他指令,直接将其加入到当前基础块。
根据以上规则将所有字节码划分为多个基础块,这些基础块将作为控制流的节点;然后根据控制流的方向,在基础块之间添加控制流边,从而实现字节码构图。
基础块之间的跳转关系生成图的边,而基础块之间的跳转关系在EVM指令集中是通过跳转指令JUMP和JUMPI来是实现的。因此,通过分析智能合约反汇编后指令段中的所有跳转指令,确定每个跳转指令进行跳转的正确目的地址,即可找出智能合约的所有控制流,进而完成基础块之间边的构建。
然而智能合约字节码是通过以太坊虚拟机的堆栈来执行,指令的跳转与字节码的进栈出栈顺序有关。字节码中的某些跳转指令的目的地址不位于与之相邻的指令中,若仅仅依靠普通的静态分析,是无法获取跳转地址的,这也解释了仅通过无条件跳转指令JUMP和条件跳转指令JUMPI添加图中节点之间的边,会使得图中存在一些孤立节点或者孤立子图。
为解决上述问题,本发明采用动态构图法,模拟以太坊虚拟机的堆栈并象征性地执行EVM指令,当遇到跳转指令时,可以从模拟堆栈中获得跳转目标。不论紧接在跳转操作之前被推入到堆栈上的跳转目标,还是通过位于其他位置的推入操作而不是恰好在跳转操作之前的位置将跳转目标推到堆栈上,都可以识别出跳转目标;此外,如果跳转目标是通过算术或按位运算来计算的,或者需要通过解释EVM指令的语义来确定跳转目标,同样可以处理这种情况,因为象征性地执行了EVM运算。
根据前面的字节码构图方法设计,可以得到智能合约对应的控制流图,但是在图神经网络神经模型领域中,图中节点和关系边的特征必须以向量化的形式作为输入,因此,在完成构图后,需要使用向量化的方法对图中节点信息和关系边的信息进行嵌入,实现向量化,为后续使用图神经网络模型做准备。
本发明使用Sent2Vec模型对图中每个节点的特征信息进行向量化,实现将文本信息转为数值向量,Sent2Vec被广泛用于文本挖掘,基于分布式表示的思想,它将一个句子转换为固定长度向量;本发明将图中每个节点的特征信息当作句子,并利用Sent2Vec生成与之对应的100维的向量,这个向量就是节点的特征向量。
本发明使用One-Hot编码将图中边的特征信息转换为向量表示,One-Hot编码是机器学习中对数据进行预处理常用的手段,可以将分类变量转换为二进制向量表示;本发明将图中边按照其功能分为四大类,并使用One-Hot编码生成与之对应的4维的向量,这个向量就是边的特征信息。
步骤三:神经网络模型的构建和训练:构建初始图匹配神经网络模型,将庞氏骗局数据集中的两个智能合约的两个完整的控制流图作为输入,输出为两个智能合约的标签的相似系数,并将输出的相似系数与庞氏骗局数据集中这两个智能合约对应的原始标签之间的相似度进行对比,根据对比得到的误差,利用反向传播训练神经网络,得到训练后的神经网络模型;所述相似系数表示输入的两个智能合约的相似程度;
现实世界中很多的数据有着不规则的结构和,比如知识图谱、社交网络、推荐系统、电子交易、分子结构等,这些图谱结构中的每个节点连接都不尽相同,每个节点都有自己独特的特征信息和结构信息,图匹配神经网络(Graph Matching Network,GMN)可以很好的处理这种图数据;图匹配网络可以高效处理复杂的图结构,不仅可以提取图中节点之间的依赖关系,而且可以利用关系边对节点信息进行传播和聚合。
智能合约本质是一种复杂的拓扑数据结构,本发明用控制流图表示智能合约,训练图匹配网络,图匹配网络的输入是两个智能合约的控制流图,输出是两个图的相似系数,表示两个合约的相似程度,用来作为是否为庞氏骗局的检测结果。在训练的时候,根据控制流图的原始标签和预测结果,使用TensorFlow计算Hamming Loss,根据Hamming Loss值传递给优化器进行优化。
更具体的,步骤一中的庞氏骗局数据集中的智能合约包括庞氏骗局智能合约以及安全智能合约。
步骤2.1中对基础块添加关系边包括:新建一个栈模拟EVM指令的进栈和出栈顺序,找到跳转指令,找到或计算跳转的目的地址,实现基础块之间的关系边的添加,得到初始控制流图。
步骤2.2中若包含多个子图,那么根据步骤2.1生成子图的顺序,在相邻的子图之间添加一条顺序依赖边,将相邻的两个子图合并为一个图,以此类推,使得最后只有一个图。最终得到图即为包含结构信息的控制流图。
步骤三中的初始图匹配神经网络模型包括:编码层、传播层和聚合层;其中编码层用于通过多层感知器将节点和边的特征进行编码;传播层用于在多轮迭代过程中使用注意力机制传播节点之间的特征信息;聚合层用于利用聚合函数计算所有节点的聚合信息,最终把图表示为一个向量。
本实施方式还提供一种基于图匹配网络的智能合约庞氏骗局检测方法,对待检测的智能合约进行检测,得到检测结果,包括以下步骤:
步骤4.1,将待检测的智能合约按照上述步骤二生成完整的待检测控制流图;
步骤4.2,在庞氏骗局数据集中选取任意一个庞氏骗局智能合约按照上述步骤二生成完整的目标控制流图;将步骤4.1中的待检测控制流图和目标控制流图输入步骤三训练后的神经网络模型得到相似系数;
步骤4.3,如果步骤4.2得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;如果步骤4.2得到的相似系数低于设定阈值,则重复执行步骤4.2,直至得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;反之,若待检测的智能合约与庞氏骗局数据集中的任意一个庞氏骗局智能合约都不相似,则为安全智能合约。
本实施方式还提供一种基于图匹配网络的智能合约庞氏骗局检测系统,该系统包括:
数据获取模块,用于获取带标签的庞氏骗局数据集,所述庞氏骗局数据集包括多个智能合约地址、智能合约及其对应的标签,根据获取的智能合约地址爬取智能合约的字节码;
构图模块,用于使用智能合约的字节码构建包含结构信息和语义信息的完整的控制流图;
神经网络的构建和训练模块,用于构建初始图匹配神经网络模型,将庞氏骗局数据集中的两个智能合约的两个完整的控制流图作为输入,输出为两个智能合约的标签的相似系数,并将输出的相似系数与庞氏骗局数据集中这两个智能合约对应标签之间的相似度进行对比,根据对比得到的误差,利用反向传播训练神经网络,得到训练后的神经网络模型;所述相似系数表示输入的两个智能合约的相似程度;
检测模块,用于对待检测的智能合约进行检测,得到检测结果。
构图模块中,将字节码反汇编生成智能合约的EVM指令,分析EVM指令并将其划分为多个基础块,对基础块添加关系边,得到初始控制流图;所述初始控制流图中每个基础块对应一个节点;
找出初始控制流图中的所有子图,根据子图的生成顺序在子图间添加顺序依赖边,完善其结构信息,得到包含结构信息的控制流图;
使用Sent2Vec模型对包含结构信息的控制流图中每个节点的特征信息进行向量化,并使用One-Hot编码将包含结构信息的控制流图中边的特征信息进行向量化;从而得到包含结构信息和语义信息的完整的控制流图。
对基础块添加关系边包括:新建一个栈模拟EVM指令的进栈和出栈顺序,找到跳转指令,找到或计算跳转的目的地址,实现基础块之间的关系边的添加,得到初始控制流图。
检测模块中,将待检测的智能合约通过构图模块生成完整的待检测控制流图;在庞氏骗局数据集中选取任意一个庞氏骗局智能合约通过构图模块生成完整的目标控制流图;将待检测控制流图和目标控制流图输入练后的神经网络模型得到相似系数;如果得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;如果得到的相似系数低于设定阈值,则在庞氏骗局数据集中再选取任意一个庞氏骗局智能合约重复通过构图模块生成完整的目标控制流图;将待检测控制流图和目标控制流图输入练后的神经网络模型得到相似系数;直至得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;反之,若待检测的智能合约与庞氏骗局数据集中的任意一个庞氏骗局智能合约都不相似,则为安全智能合约。
实施例:
(一)训练和测试数据集
本实施例使用XBlock中带标签的智能合约庞氏骗局数据集,在对数据进行训练和测试的过程中,首先使用爬虫工具从以太坊中爬取数据集中的每个智能合约的字节码,使用本文提出的字节码构图步骤或模块对爬取到的所有字节码进行构图;然后使用向量化方法将图中节点的特征信息和边的特征信息进行向量化表示;最后,将向量化表示后的图作为图匹配网络的输入,进行网络模型的训练和测试。在训练和测试的过程中,将数据集划分为训练集和测试集,比例为7:3,使用训练集来训练图匹配网络,使用测试集来评估模型的泛化能力。表1是XBlock中庞氏骗局数据集用于模型训练和测试的庞氏骗局智能合约数目与安全智能合约数据。
表1用于模型训练和测试的庞氏骗局智能合约数目与安全智能合约数据
庞氏骗局智能合约 | 安全智能合约 | 总计 | |
训练集 | 140 | 2507 | 2647 |
测试集 | 59 | 1075 | 1134 |
(二)模型训练
(1)训练模型的硬件平台
NVIDIA GeForce GTX 1080GPU、Intel Xeon E5-1620 CPU
(2)图匹配网络模型
本发明将图匹配网络视作一个黑盒,输入两个智能合约的控制流图,输出一个相似系数作为预测结果,因此简要介绍网络模型是如何迭代的。
输入的控制流图包含表示各个节点的特征信息和表示节点连接关系的特征信息,每一次迭代都对图中的各个节点的特征向量进行更新,在更新某个节点的特征向量时,会综合考虑这个节点本身的特征向量与对这个节点产生影响的邻接节点的特征向量,将这些特征向量与一个矩阵参数相乘之后就是这个节点更新之后的特征向量,矩阵参数在网络模型训练过程中会不断更新。经过一定的迭代次数之后,将特征矩阵和一个矩阵参数相乘,得到模型的输出即相似系数,这个矩阵参数同样会在网络模型训练的过程中不断更新。
(三)模型的参数为:
本发明将参数设置为图匹配网络和自然语言处理领域常用的参数值,设置节点的特征向量为100维,训练的batch size为20,学习率为0.001,特征矩阵的迭代次数为5。
(四)实验结果
(1)检测精确率高、召回率高。
经过图匹配网络模型训练,针对XBlock中庞氏骗局数据集的测试集,本发明的测试结果如下表所示。将是庞氏骗局智能合约的测试用例标记为正样本,安全智能合约的测试用例标记为负样本,因此True Positive(TP)表示正样本被正确的分类为正样本,FalseNegative(FN)表示正样本被错误的分类为负样本,True Negative(TN)表示负样本被正确的分类为负样本,False Positive(FP)表示负样本被错误的分类为正样本,Precision表示正样本被正确的分类为正样本占预测正样本的比例,Recall表示正样本被正确的分类为正样本占实际正样本的比例,其中Precision=TP/(TP+FP),Recall=TP/(TP+FN)。
表2对XBlock中庞氏骗局数据集测试集的检测结果
数据集 | Precision(%) | Recall(%) |
XBlock庞氏骗局测试集 | 0.98 | 0.76 |
表2展示了对XBlock中庞氏骗局数据集测试集的检测结果,从检测结果可以看到,具有很高精确率(Precision)的同时也有很高的召回率(Recall)。
(五)对比试验及结果
为验证我们所提出的方法对庞氏骗局检测的有效性,我们选择两种已有的庞氏骗局检测工具进行对比实验。待对比的检测工具都是通过统计指令频率并基于机器学习的算法来实现对庞氏骗局的检测。不同检测方法分别对庞氏骗局数据集进行模型训练和检测,比较检测效果。最终实验结果如表3所示。
表3使用不同方法对XBlock中庞氏骗局数据集测试集的检测结果
算法 | Precision(%) | Recall(%) |
XGBoost | 0.90 | 0.67 |
RF | 0.95 | 0.69 |
GMN | 0.98 | 0.76 |
通过表3可以看到,对于庞氏骗局检测效果的评估主要通过Precision(准确率)和Recall(召回率)来进行衡量。其中,前2种检测方法都是基于机器学习的,虽然使用了不同的机器学习算法,但是提取特征的方法是相同的,即将指令出现的频率作为智能合约的特征。这种取决人为提取智能合约的指令特征,由于主观因素的筛选和试别,不可避免地会遗漏一些关键特征,并且会包含一些不相关的特征。从实验结果可以看出,XGBoost和RF对于庞氏骗局检测可以得到很高的Precision,但是Recall不是很理想。结合评估指标的含义,说明这些检测方法将较多的庞氏骗局预测为非庞氏骗局,即模型没有准确的学习到庞氏骗局的特征。因此最终检测效果不理想。可以看出,使用本文所提出的基于图匹配网络的庞氏骗局检测方法明先比其他方法的检测效果好,再提高Precision的同时,Recall也增加了多个百分点。因此,我们认为我们的方法在解决庞氏骗局检测中是有效的。
Claims (6)
1.一种基于图匹配网络的智能合约庞氏骗局检测模型构建方法,其特征在于,包括以下步骤:
步骤一:获取数据:获取带标签的庞氏骗局数据集,所述庞氏骗局数据集包括多个智能合约地址、智能合约及其对应的标签,根据获取的智能合约地址爬取智能合约的字节码;
步骤二:字节码构图:使用智能合约的字节码构建包含结构信息和语义信息的完整的控制流图;具体包括:
步骤2.1,将步骤一得到的字节码反汇编生成智能合约的EVM指令,分析EVM指令并将其划分为多个基础块,对基础块添加关系边,得到初始控制流图;所述初始控制流图中每个基础块对应一个节点;
步骤2.2,找出初始控制流图中的所有子图,根据子图的生成顺序在子图间添加顺序依赖边,完善其结构信息,得到包含结构信息的控制流图;
步骤2.3,使用Sent2Vec模型对包含结构信息的控制流图中每个节点的特征信息进行向量化,并使用One-Hot编码将包含结构信息的控制流图中边的特征信息进行向量化;从而得到包含结构信息和语义信息的完整的控制流图;
所述步骤2.1中对基础块添加关系边包括:新建一个栈模拟EVM指令的进栈和出栈顺序,找到跳转指令,找到或计算跳转的目的地址,实现基础块之间的关系边的添加,得到初始控制流图;
所述步骤2.2中,初始控制流图中若包含多个子图,那么根据步骤2.1生成子图的顺序,在相邻的子图之间添加一条顺序依赖边,将相邻的两个子图合并为一个图,以此类推,使得最后只有一个图,最终得到图即为包含结构信息的控制流图;
步骤三:神经网络的构建和训练:构建初始图匹配神经网络模型,将庞氏骗局数据集中的两个智能合约的两个完整的控制流图作为输入,输出为两个智能合约的标签的相似系数,并将输出的相似系数与庞氏骗局数据集中这两个智能合约对应的原始标签之间的相似度进行对比,根据对比得到的误差,利用反向传播训练神经网络,得到训练后的神经网络模型;所述相似系数表示输入的两个智能合约的相似程度。
2.如权利要求1所述的基于图匹配网络的智能合约庞氏骗局检测模型构建方法,其特征在于,所述步骤一中的庞氏骗局数据集中的智能合约包括庞氏骗局智能合约以及安全智能合约。
3.如权利要求1所述的基于图匹配网络的智能合约庞氏骗局检测模型构建方法,其特征在于,所述步骤三中的初始图匹配神经网络包括:编码层、传播层和聚合层;编码层用于通过多层感知器将节点和边的特征进行编码;传播层用于在多轮迭代过程中使用注意力机制传播节点之间的特征信息;聚合层用于利用聚合函数计算所有节点的聚合信息,把图表示为一个向量。
4.一种基于图匹配网络的智能合约庞氏骗局检测方法,其特征在于,包括以下步骤:
步骤4.1,将待检测的智能合约生成完整的待检测控制流图;
步骤4.2,在庞氏骗局数据集中选取任意一个庞氏骗局智能合约生成完整的目标控制流图;
步骤4.3,将步骤4.1中的待检测控制流图和步骤4.2得到的目标控制流图输入权利要求1得到的训练后的神经网络模型得到相似系数;
步骤4.4,如果步骤4.3得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;如果步骤4.3得到的相似系数低于设定阈值,则重复执行步骤4.3,直至得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;反之,若待检测的智能合约与庞氏骗局数据集中的任意一个庞氏骗局智能合约都不相似,则为安全智能合约。
5.一种基于图匹配网络的智能合约庞氏骗局检测系统,其特征在于,该系统包括:
数据获取模块,用于获取带标签的庞氏骗局数据集,所述庞氏骗局数据集包括多个智能合约地址、智能合约及其对应的标签,根据获取的智能合约地址爬取智能合约的字节码;
构图模块,用于使用智能合约的字节码构建包含结构信息和语义信息的完整的控制流图;
神经网络的构建和训练模块,用于构建初始图匹配神经网络模型,将庞氏骗局数据集中的两个智能合约的两个完整的控制流图作为输入,输出为两个智能合约的标签的相似系数,并将输出的相似系数与庞氏骗局数据集中这两个智能合约对应标签之间的相似度进行对比,根据对比得到的误差,利用反向传播训练神经网络,得到训练后的神经网络模型;所述相似系数表示输入的两个智能合约的相似程度;
检测模块,用于对待检测的智能合约进行检测,得到检测结果;
所述构图模块中,将字节码反汇编生成智能合约的EVM指令,分析EVM指令并将其划分为多个基础块,对基础块添加关系边,得到初始控制流图;所述初始控制流图中每个基础块对应一个节点;
找出初始控制流图中的所有子图,根据子图的生成顺序在子图间添加顺序依赖边,完善其结构信息,得到包含结构信息的控制流图;
使用Sent2Vec模型对包含结构信息的控制流图中每个节点的特征信息进行向量化,并使用One-Hot编码将包含结构信息的控制流图中边的特征信息进行向量化;从而得到包含结构信息和语义信息的完整的控制流图;
所述对基础块添加关系边包括:新建一个栈模拟EVM指令的进栈和出栈顺序,找到跳转指令,找到或计算跳转的目的地址,实现基础块之间的关系边的添加,得到初始控制流图。
6.如权利要求5所述的基于图匹配网络的智能合约庞氏骗局检测系统,其特征在于,所述检测模块中,将待检测的智能合约通过构图模块生成完整的待检测控制流图;在庞氏骗局数据集中选取任意一个庞氏骗局智能合约通过构图模块生成完整的目标控制流图;将待检测控制流图和目标控制流图输入练后的神经网络模型得到相似系数;如果得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;如果得到的相似系数低于设定阈值,则在庞氏骗局数据集中再选取任意一个庞氏骗局智能合约重复通过构图模块生成完整的目标控制流图;将待检测控制流图和目标控制流图输入练后的神经网络模型得到相似系数;直至得到的相似系数超过设定阈值,则判定该待检测的智能合约为庞氏骗局智能合约;反之,若待检测的智能合约与庞氏骗局数据集中的任意一个庞氏骗局智能合约都不相似,则为安全智能合约。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110302875.7A CN113127933B (zh) | 2021-03-22 | 2021-03-22 | 一种基于图匹配网络的智能合约庞氏骗局检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110302875.7A CN113127933B (zh) | 2021-03-22 | 2021-03-22 | 一种基于图匹配网络的智能合约庞氏骗局检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127933A CN113127933A (zh) | 2021-07-16 |
CN113127933B true CN113127933B (zh) | 2023-04-07 |
Family
ID=76773684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110302875.7A Active CN113127933B (zh) | 2021-03-22 | 2021-03-22 | 一种基于图匹配网络的智能合约庞氏骗局检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127933B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113783852B (zh) * | 2021-08-29 | 2022-12-20 | 复旦大学 | 一种基于神经网络的智能合约庞氏骗局检测算法 |
CN114511330B (zh) * | 2022-04-18 | 2022-12-13 | 山东省计算中心(国家超级计算济南中心) | 一种基于改进的cnn-rf的以太坊庞氏骗局检测方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035842A (zh) * | 2020-08-17 | 2020-12-04 | 杭州云象网络技术有限公司 | 一种基于编码解码器的智能合约漏洞检测可解释性方法 |
CN112434742A (zh) * | 2020-11-26 | 2021-03-02 | 西安交通大学 | 一种识别以太坊上庞氏骗局的方法、系统及设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11277390B2 (en) * | 2015-01-26 | 2022-03-15 | Listat Ltd. | Decentralized cybersecure privacy network for cloud communication, computing and global e-commerce |
US10999323B2 (en) * | 2017-09-22 | 2021-05-04 | Nec Corporation | Network gateway spoofing detection and mitigation |
US10990879B2 (en) * | 2019-09-06 | 2021-04-27 | Digital Asset Capital, Inc. | Graph expansion and outcome determination for graph-defined program states |
CN110751554A (zh) * | 2019-09-20 | 2020-02-04 | 暨南大学 | 区块链中数字货币的智能监测方法及系统 |
CN111447179A (zh) * | 2020-03-03 | 2020-07-24 | 中山大学 | 一种针对以太网钓鱼诈骗的网络表示学习方法 |
CN111460472B (zh) * | 2020-03-20 | 2023-05-16 | 西北大学 | 一种基于深度学习图网络的加密算法识别方法 |
CN112699375A (zh) * | 2020-12-30 | 2021-04-23 | 杭州趣链科技有限公司 | 基于网络嵌入相似性的区块链智能合约安全漏洞检测方法 |
-
2021
- 2021-03-22 CN CN202110302875.7A patent/CN113127933B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112035842A (zh) * | 2020-08-17 | 2020-12-04 | 杭州云象网络技术有限公司 | 一种基于编码解码器的智能合约漏洞检测可解释性方法 |
CN112434742A (zh) * | 2020-11-26 | 2021-03-02 | 西安交通大学 | 一种识别以太坊上庞氏骗局的方法、系统及设备 |
Non-Patent Citations (3)
Title |
---|
Weili Chen等.Detecting Ponzi Schemes on Ethereum: Towards Healthier Blockchain Technology.Proceedings of the 2018 World Wide Web Conference.2018,全文. * |
张艳梅等.基于深度神经网络的庞氏骗局合约检测方法.计算机科学.2021,48(01),全文. * |
韩松明 ; 梁彬 ; 黄建军 ; 石文昌 ; .DC-Hunter:一种基于字节码匹配的危险智能合约检测方案.信息安全学报.2020,05(03),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN113127933A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Nafi et al. | Clcdsa: cross language code clone detection using syntactical features and api documentation | |
CN109977682A (zh) | 一种基于深度学习的区块链智能合约漏洞检测方法及装置 | |
Basile | It’s the end of the gold standard as we know it. on the impact of pre-aggregation on the evaluation of highly subjective tasks | |
CN112579477A (zh) | 一种缺陷检测方法、装置以及存储介质 | |
CN111460450A (zh) | 一种基于图卷积网络的源代码漏洞检测方法 | |
CN113127933B (zh) | 一种基于图匹配网络的智能合约庞氏骗局检测方法及系统 | |
CN113360915A (zh) | 基于源代码图表示学习的智能合约多漏洞检测方法及系统 | |
Varró et al. | Towards the automated generation of consistent, diverse, scalable and realistic graph models | |
Nichols et al. | Faster fuzzing: Reinitialization with deep neural models | |
CN107729241B (zh) | 一种基于变异体分组的软件变异测试数据进化生成方法 | |
CN109799990A (zh) | 源代码注释自动生成方法及系统 | |
CN116049831A (zh) | 一种基于静态分析和动态分析的软件漏洞检测方法 | |
CN113961241A (zh) | 一种基于gat图神经网络模型的代码克隆检测方法 | |
CN113486357A (zh) | 一种基于静态分析和深度学习的智能合约安全检测方法 | |
Xia et al. | Enhancing backdoor attacks with multi-level mmd regularization | |
CN115374778A (zh) | 一种基于深度学习的化妆品舆情文本实体关系抽取方法 | |
CN114547611A (zh) | 一种基于多模态特征的智能合约庞氏骗局检测方法及系统 | |
CN111651765B (zh) | 基于生成式对抗网络的程序执行路径生成方法 | |
Naeem et al. | Scalable mutation testing using predictive analysis of deep learning model | |
CN113904844B (zh) | 基于跨模态教师-学生网络的智能合约漏洞检测方法 | |
CN113111184B (zh) | 基于显式事件结构知识增强的事件检测方法及终端设备 | |
Qu et al. | Empirical research for self-admitted technical debt detection in blockchain software projects | |
Zhao et al. | Suzzer: A vulnerability-guided fuzzer based on deep learning | |
CN116663018A (zh) | 一种基于代码可执行路径的漏洞检测方法及装置 | |
CN116702157A (zh) | 一种基于神经网络的智能合约漏洞检测方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |