CN113283901B - 一种面向区块链平台的基于字节码的诈骗合约检测方法 - Google Patents

一种面向区块链平台的基于字节码的诈骗合约检测方法 Download PDF

Info

Publication number
CN113283901B
CN113283901B CN202110627401.XA CN202110627401A CN113283901B CN 113283901 B CN113283901 B CN 113283901B CN 202110627401 A CN202110627401 A CN 202110627401A CN 113283901 B CN113283901 B CN 113283901B
Authority
CN
China
Prior art keywords
contract
feature matrix
model
train
training
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
Application number
CN202110627401.XA
Other languages
English (en)
Other versions
CN113283901A (zh
Inventor
沈夏炯
姜帅民
张磊
韩道军
陈会平
李星辰
马夏青
欧阳文蕾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Henan University
Original Assignee
Henan University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Henan University filed Critical Henan University
Publication of CN113283901A publication Critical patent/CN113283901A/zh
Application granted granted Critical
Publication of CN113283901B publication Critical patent/CN113283901B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种面向区块链平台的基于字节码的诈骗合约检测方法,依次包括以下步骤:A:获取区块链平台中智能合约的字节码,将获取到的字节码转化为标准化后的特征矩阵并消除特征矩阵中的噪声;B:获取诈骗合约的数据集并划分为训练集和测试集;然后将训练集和测试集中的测试数据分别转化为标准化后的特征矩阵;C:使用特征矩阵训练并测试异常检测模型,最终得到最佳异常检测模型;D:利用步骤C中得到的最佳异常检测模型,对待判定的智能合约进行是否为诈骗合约的判定。本发明能够有效的检测区块链平台中的诈骗类型的智能合约,维护区块链的健康发展。

Description

一种面向区块链平台的基于字节码的诈骗合约检测方法
技术领域
本发明涉及区块链领域,尤其涉及一种面向区块链平台的基于字节码的诈骗合约检测方法。
背景技术
区块链是一种具备时间戳、分布式共识和加密的技术,它可以在不依赖任何第三方中心化机构的情况下,实现点对点交易。而智能合约的出现赋予了区块链更多的可能性,使工业界和学术界对区块链技术给予了极大的关注,智能合约同样具有去中心化、自治化等特点,并且可以使分散的应用程序能够在不可信环境中运行。但是它的这些特点也容易被不法分子利用,当某人运行了诈骗合约(即诈骗类型的智能合约)之后,因为区块链去中心化、不可被篡改等特点,所以他将无法阻止诈骗合约的运行。诈骗合约的类型非常多,例如网络钓鱼合约、旁氏骗局合约等。虚拟货币调查和风险管理软件提供商Chainnalysis曾指出,仅在2017年上半年就有30287名受害者因为诈骗合约损失了2.25亿美元,这表明金融安全已经成为区块链生态系统中一个关键问题。
所以,在区块链中检测诈骗合约是维护区块链健康发展的一项重要任务。但是根据Dune Analytics的数据显示,截止2020年3月,仅以太坊区块链网络上发布的智能合约总量已经超过了200万份,显然使用人工检查区块链中的智能合约是不可取的。而目前又没有一种有效的检测手段检测区块链平台中的诈骗合约。
发明内容
本发明的目的是提供一种面向区块链平台的基于字节码的诈骗合约检测方法,能够有效的检测区块链平台中的诈骗类型的智能合约,维护区块链的健康发展。
本发明采用下述技术方案:
一种面向区块链平台的基于字节码的诈骗合约检测方法,依次包括以下步骤:
A:获取区块链平台中智能合约的字节码,将获取到的字节码转化为标准化后的特征矩阵并消除特征矩阵中的噪声;
B:获取诈骗合约的数据集Dall,并将诈骗合约的数据集Dall划分为训练集Dtrain和测试集Dtest;然后将训练集Dtrain和测试集Dtest中的测试数据分别转化为标准化后的特征矩阵Btrain和特征矩阵Btest
C:使用特征矩阵Btrain训练异常检测模型,并使用特征矩阵Btest测试异常检测模型的性能;最终得到最佳异常检测模型;
异常检测模型采用单类支持向量机模型、孤立森林模型或者单类支持向量机和孤立森林的融合模型;
D:利用步骤C中得到的最佳异常检测模型,对待判定的智能合约进行是否为诈骗合约的判定。
所述的步骤A包括以下具体步骤:
A1:通过区块链平台获取智能合约的字节码;
A2:将获取到的字节码转化为特征矩阵A;
A3:对特征矩阵A进行标准化,设特征矩阵A={a1,a2,…,an},a1,a2,…,an为列向量,表示标准化之前的特征值。设特征矩阵B为标准化后的特征值,B={b1,b2,…,bn};
列向量an的标准化公式为:
Figure BDA0003102119360000021
其中,μn和σn分别表示列向量an的均值和方差;
A4:使用PCA算法消除标准化后特征矩阵的噪声,得到消除噪声后的标准化特征矩阵x,x={x1,x2,…,xk}。
所述的步骤A4中,PCA算法采用特征分解或奇异值分解。
所述的步骤B包括以下具体步骤:
B1:获取诈骗合约的数据集Dall,并将诈骗合约的数据集Dall划分为训练集Dtrain和测试集Dtest
B2:利用步骤A3中的方法,将诈骗合约的训练集Dtrain中的训练数据和测试集Dtest中的测试数据,分别转化为标准化后的特征矩阵Btrain和特征矩阵Btest
采用单类支持向量机模型作为异常检测模型的训练和测试的具体步骤如下:
C11:将特征矩阵Btrain中的数据输入到单类支持向量机模型中;
C12:单类支持向量机模型通过非线性变化函数将特征矩阵Btrain映射到新的特征空间
Figure BDA0003102119360000031
映射关系为
Figure BDA0003102119360000032
C13:首先,在新的特征空间
Figure BDA0003102119360000033
中构造一个体积最小的超球体;
Figure BDA0003102119360000034
s.t.‖φ(Btrain)-a‖2≤R2ii≥0,i=1,2,…,n;
其中,a表示超球体的球心,R表示超球体的半径,ξ表示松弛因子,ξi表示特征矩阵Btrain中第i个列向量的松弛因子,C表示权衡超球体体积和误分类率的惩罚参数,n表示特征矩阵Btrain中共有n个列向量;
然后,计算特征矩阵Btrain中的测试样本到超球体球心的距离d;
设从特征矩阵Btrain中挑选的测试样本为xt,则xt到超球体球心的距离d为:
Figure BDA0003102119360000035
K(xt,xt)、K(xt,xi)和K(xi,xj)均表示核函数,ai和aj分别表示样本xi和xj对应的拉格朗日系数;xi和xj分别表示从特征矩阵Btrain中选择的两个列向量;
最后,利用特征矩阵Btrain中的测试样本到超球体球心的距离d,判断特征矩阵Btrain中对应的测试样本是否属于诈骗合约;
若d≤R,说明测试样本在超球体的内部,属于正常样本;
若d>R则说明测试样本在超球体的外部,属于异常样本,即属于诈骗合约;
C14:通过步骤C13中的方法,利用特征矩阵Btrain中的数据对单类支持向量机模型进行训练;最终确定单类支持向量机模型中参数R,d,ai的数值;
C15:将特征矩阵Btesi中的数据输入到训练后的单类支持向量机模型中,并根据单类支持向量机模型输出的结果对训练后的单类支持向量机模型性能进行测试。
采用孤立森林模型作为异常检测模型的训练和测试的具体步骤如下:
C21:将特征矩阵Btrain中的数据输入到孤立森林模型中;
C22:首先,从特征矩阵Btrain中挑选训练样本为xf,则h(xf)表示训练样本xf从根节点到外部节点的过程中xf经过的二叉树的边数,即路径长度;
h(xf)的计算公式如下:h(xf)=e+Ctree(m);
Figure BDA0003102119360000041
e表示训练样本xf从子树iTree的根节点到叶子节点的过程中经过的二叉树的边数,即训练样本xf经过iTree的边数;ctree(m)表示使用m条样本数据构建的二叉树的平均路径长度;γ表示欧拉常数;
根据得到的h(xf)的值计算xf异常值,设
Figure BDA0003102119360000045
表示xf的异常值:
Figure BDA0003102119360000042
其中,E(h(xf))表示xf在所有孤立树中的路径长度的平均值;设阈值为q,若
Figure BDA0003102119360000043
表示xf为诈骗合约,
Figure BDA0003102119360000044
表示xf为正常合约;
然后按照上述方法,再对特征矩阵Brrain使用不放回抽样的方式随机选取m条数据,重复上述孤立树的训练过程,直至特征矩阵Btrain中的数据都选取一遍,完成训练;
C23:训练完成后,孤立森林模型根据特征矩阵Btrain中的数据确定孤立树中样本的平均路径长度E(h(xf))的值,然后使用特征矩阵Btest对孤立森林模型的性能进行测试。
采用单类支持向量机和孤立森林的融合模型作为异常检测模型的训练和测试的具体步骤如下:
C31:假设特征矩阵Btrain和特征矩阵Btest中每个列向量均为q维的列向量,则使用PCA降维算法,分别将特征矩阵Btrain和特征矩阵Btest生成降维后的特征矩阵并表示为
Figure BDA0003102119360000051
Figure BDA0003102119360000052
其中,特征矩阵
Figure BDA0003102119360000053
表示在特征矩阵Btrain的基础上使用PCA降维算法所生成的i维特征矩阵,特征矩阵
Figure BDA0003102119360000054
表示在特征矩阵Btest的基础上使用PCA降维算法所生成的i维特征矩阵;i=2,3,…,q-1;
C32:利用降维后的特征矩阵
Figure BDA0003102119360000055
对单类支持向量机模型进行训练,训练完成后,使用训练后的单类支持向量机模型检测特征矩阵
Figure BDA0003102119360000056
中的诈骗合约,得到检测结果数组
Figure BDA0003102119360000057
其中,
Figure BDA0003102119360000058
表示使用单类支持向量机检测
Figure BDA0003102119360000059
得到的检测结果;
Figure BDA00031021193600000510
Figure BDA00031021193600000511
l表示
Figure BDA00031021193600000512
中共有l个检测结果,即
Figure BDA00031021193600000513
中共有l个列向量;
Figure BDA00031021193600000514
取值为0或1,若
Figure BDA00031021193600000515
表示
Figure BDA00031021193600000516
中的第j个智能合约为正常合约,若
Figure BDA00031021193600000517
则表示
Figure BDA00031021193600000518
中的第j个智能合约为诈骗合约;j=1,2,…,l;
C33:利用降维后的特征矩阵
Figure BDA00031021193600000519
对孤立森林模型进行训练,训练完成后,使用训练后的孤立森林模型检测特征矩阵
Figure BDA00031021193600000520
中的诈骗合约,得到检测结果数组
Figure BDA00031021193600000521
其中,
Figure BDA00031021193600000522
表示使用孤立森林检测
Figure BDA00031021193600000523
得到的检测结果,
Figure BDA00031021193600000524
l表示
Figure BDA00031021193600000525
中共有l个检测结果,即
Figure BDA00031021193600000526
中共有l个列向量;
Figure BDA00031021193600000527
取值为0或1,若
Figure BDA00031021193600000528
表示
Figure BDA00031021193600000529
中的第j个智能合约为正常合约,若
Figure BDA00031021193600000530
表示
Figure BDA00031021193600000531
中的第j个智能合约为诈骗合约;j=1,2,…,l;
C34:使用皮尔森相关系数对检测结果数组
Figure BDA00031021193600000532
Figure BDA00031021193600000533
进行相关性计算,得到皮尔森相关系数r;
皮尔森相关系数r的计算公式如下:
Figure BDA0003102119360000061
C35:根据步骤B34得到差异性最大的两组检测结果,即r值最大时所对应的单类支持向量机模型的检测结果和孤立森林模型的检测结果;然后再将所得到的r值最大时所对应的单类支持向量机模型的检测结果和孤立森林模型的检测结果作为输入对随机森林模型进行训练;最终得到确定的单类支持向量机和孤立森林的融合模型,作为最佳异常检测模型。
在使用特征矩阵Btest对训练后的异常检测模型的性能进行测试后,根据异常检测模型输出的结果对训练后的异常检测模型性能进行评估;
评估时,选用F值(F1-score)对训练后的单类支持向量机模型性能进行评估。
Figure BDA0003102119360000062
Figure BDA0003102119360000063
Figure BDA0003102119360000064
其中,Positivetrue表示检测模型将原本是正常合约类别的智能合约预测为正常合约;Positivefalse表示检测模型将原本是诈骗合约类别的智能合约判断为正常合约;Negativefalse表示检测模型将原本是正常合约类别的智能合约预测为诈骗合约,Recall表示查全率,Precision表示查准率;
若F1-score≥0.9,则表示异常检测模型训练完成;若F1-score<0.9,则改变松弛因子ξ和惩罚参数C重新对异常检测模型进行训练;最终将得到F1-score≥0.9的异常检测模型作为最佳异常检测模型。
所述的步骤D中,设利用最佳异常检测模型判定后的结果为Y={y1,y2,…,yl},yj取值为0或1,j=1,2,…,l,若yj=0则表示
Figure BDA0003102119360000065
中的第j个智能合约为正常合约,yj=1表示
Figure BDA0003102119360000066
中的第j个智能合约为诈骗合约。
所述的q=0.7。
本发明将智能合约字节码文件中的字节转化为特征矩阵,可以保留智能合约中的全部特征。然后再通过PCA降维算法消除一些无用的、重复的特征,可以保留下重要的特征,能很大程度上提高异常检测模型的性能。最后采用单类支持向量机、孤立森林或支持向量机与孤立森林的融合模型检测区块链平台的中诈骗合约,可以全面的分析智能合约的特征,尤其是支持向量机和孤立森林的融合模型,能综合考虑单类支持向量机和孤立森林的预测结果,从而提高检测诈骗合约的准确率。
附图说明
图1为本发明的流程示意图。
具体实施方式
以下结合附图和实施例对本发明作以详细的描述:
如图1所示,本发明所述的面向区块链平台的基于字节码的诈骗合约检测方法,包括以下步骤:
A:获取区块链平台中智能合约的字节码,将获取到的字节码转化为标准化后的特征矩阵并消除特征矩阵中的噪声。
由于区块链平台不同,智能合约的字节码也不同。例如以太坊中的字节码一般由Solidity语言编译生成,运行在Ethereum Virtual Machine(EVM)中;EOS区块链平台中的字节码文件运行在Web Assembly(WASM)中。但是,上述各种区块链平台中智能合约的字节码文件最后都是以16进制存储到计算机中。因此,本发明中,首先对智能合约的字节码的特征进行提取,特征提取完成后将字节码转化为特征矩阵;随后再对特征矩阵进行标准化,标准化完成后使用主成分分析(PCA)算法对特征矩阵进行降维,以消除特征矩阵中的噪声。
本发明中,在对诈骗合约进行检测时,可以每次只处理相同区块链平台中的字节码,也只检测相同区块链平台中的诈骗合约,以保证较高的检测结果准确率。
所述的步骤A包含以下具体步骤:
A1:通过区块链平台获取智能合约的字节码;
本发明中,字节码的具体形式为一串16进制的字符串,根据智能合约的不同,字符串的长度也不同。字节码可通过现有区块链平台中开放的对外公共数据下载接口获取。
A2:将获取到的字节码转化为特征矩阵A;
在将获取到的字节码转化为特征矩阵A时,首先根据字符排列顺序,将相邻两个字符作为一组特征,从前向后对未分割的字符进行分割。每组字符的初始数量设为零,在分割时,若遇到先后两组特征内的两个字符均相同,则将先划分的特征进行加1操作,并舍弃掉后划分的特征。分割完成后,每组特征的数量就是字节码的特征矩阵,设此步骤中得到的特征矩阵为n维;
A3:对特征矩阵A进行标准化,设特征矩阵A={a1,a2,…,an},a1,a2,…,an为列向量,表示标准化之前的特征值。设特征矩阵B为标准化后的特征值,B={b1,b2,…,bn}。
则列向量an的标准化公式为:
Figure BDA0003102119360000081
其中,μn和an分别表示列向量an的均值和方差;
A4:使用PCA算法消除标准化后特征矩阵的噪声,得到消除噪声后的标准化特征矩阵X。
实现PCA算法可采用特征分解或奇异值分解,本发明中使用奇异值分解实现PCA算法。设消除噪声后的标准化特征矩阵为X,且X是k维的,则X={x1,x2,…,xk};
B:获取诈骗合约的数据集Dall,并将诈骗合约的数据集Dall划分为训练集Dtrain和测试集Dtest;然后将训练集Dtrain和测试集Dtest中的测试数据分别转化为标准化后的特征矩阵Btrain和特征矩阵Btest
本发明中,步骤B包括以下具体步骤:
B1:获取诈骗合约的数据集Dall,并将诈骗合约的数据集Dall划分为训练集Dtrain和测试集Dtest
以诈骗合约中的庞氏合约为例阐述用于检测诈骗合约时的测试集和训练集的分割步骤。
庞氏合约数据集可通过XBlock网站(http://xblock.pro/home-cn/)获取,数据集名称为庞氏骗局标签数据集。庞氏骗局标签数据集中共有3780条数据,其中有200条数据被标记为旁氏骗局。为了保证实验结果的准确性和有效性。首先,将庞氏骗局标签数据集Dall中的全部数据80%作为训练集Dtrain中的训练数据,剩下的20%作为测试集Dtest中的测试数据进行实验。
B2:利用步骤A3中的方法(标准化公式),将诈骗合约的训练集Dtrain中的训练数据和测试集Dtest中的测试数据,分别转化为标准化后的特征矩阵Btrain和特征矩阵Btest
C:使用特征矩阵Btrain训练异常检测模型,并使用特征矩阵Btest测试异常检测模型的性能;最终得到最佳异常检测模型;
本发明中,异常检测模型可采用单类支持向量机模型、孤立森林模型或者单类支持向量机和孤立森林的融合模型。即,可利用特征矩阵Btrain训练单类支持向量机模型、孤立森林模型或者单类支持向量机和孤立森林的融合模型,使异常检测模型具有检测诈骗合约的能力。并用特征矩阵Btest测试异常检测模型的性能。特征矩阵Btrain与特征矩阵Btest中的每行数据都有一个标签,标志着此行数据是否是诈骗合约数据。
以下以诈骗合约中的庞氏合约为例,分别阐述单类支持向量机模型、孤立森林模型以及单类支持向量机和孤立森林的融合模型的训练和测试方法。
实施例1:
使用特征矩阵Btrain训练单类支持向量机模型,并使用特征矩阵Btest评估训练后的单类支持向量机模型的性能。
单类支持向量机(One Class Support Vector Machine,OC-SVM)是一种由支持向量机发展而来的机器学习模型,所以在使用单类支持向量机检测骗局合约前,需要对其进行训练。
采用单类支持向量机模型作为异常检测模型的训练和测试的具体步骤如下:
C11:将特征矩阵Btrain中的数据输入到单类支持向量机模型中;
C12:单类支持向量机模型通过非线性变化函数将特征矩阵Btrain映射到新的特征空间
Figure BDA0003102119360000101
映射关系为
Figure BDA0003102119360000102
C13:首先,在新的特征空间
Figure BDA0003102119360000103
中构造一个体积最小的超球体;
Figure BDA0003102119360000104
s.t.‖φ(Btrain)-a‖2≤R2ii≥0,i=1,2,…,n;
其中,a表示超球体的球心,R表示超球体的半径,ξ表示松弛因子,ξi表示特征矩阵Btrain中第i个列向量的松弛因子,C表示权衡超球体体积和误分类率的惩罚参数,C值增大时对误分类的惩罚增大,C值减小时对误分类的惩罚减小,n表示特征矩阵Btrain中共有n个列向量。
然后,计算特征矩阵Btrain中的测试样本到超球体球心的距离d;
在计算时,根据拉格朗日乘子法,原始问题的对偶问题为:
Figure BDA0003102119360000105
Figure BDA0003102119360000106
其中,αi和αj分别表示样本xi和xj对应的拉格朗日系数;xi和xj分别表示从特征矩阵Btrain中选择的两个列向量;K(xi,xj)表示核函数,它等同于特征空间中样本的内积操作,即:
K(xi,xj)=<φ(xi),φ(xj)>;
将原始问题转化为对偶问题后,则计算超球体的球心a和半径R,计算公式如下:
Figure BDA0003102119360000107
Figure BDA0003102119360000111
在训练过程中,把拉格朗日系数满足0≤αi≤C的样本称为支持向量,设SV表示从特征矩阵Btrain中划分出来的训练样本中所有的支持向量;则在计算超球体的半径R的公式中,xv表示SV中的列向量,xv∈SV,K(xv,xv)和K(xv,xi)均表示核函数,xi表示从特征矩阵Btrain选择的列向量;
因此,设从特征矩阵Btrain中挑选的测试样本为xt,则xt到超球体球心的距离d为:
Figure BDA0003102119360000112
最后,利用特征矩阵Btrain中的测试样本到超球体球心的距离d,判断特征矩阵Btrain中对应的测试样本是否属于诈骗合约;
若d≤R,说明测试样本在超球体的内部,属于正常样本;
若d>R则说明测试样本在超球体的外部,属于异常样本,即属于诈骗合约;
C14:通过步骤C13中的方法,利用特征矩阵Btrain中的数据对单类支持向量机模型进行训练;最终确定单类支持向量机模型中参数R,d,αi的数值;
C15:将特征矩阵Btest中的数据输入到训练后的单类支持向量机模型中,并根据单类支持向量机模型输出的结果对训练后的单类支持向量机模型性能进行测试及评估;
评估时,选用F值(F1-score)对训练后的单类支持向量机模型性能进行评估。
Figure BDA0003102119360000113
Figure BDA0003102119360000114
Figure BDA0003102119360000121
其中,Positivetrue表示检测模型将原本是正常合约类别的智能合约预测为正常合约;Positivefalse表示检测模型将原本是诈骗合约类别的智能合约判断为正常合约;Negativefalse表示检测模型将原本是正常合约类别的智能合约预测为诈骗合约,Recall表示查全率,Precision表示查准率。
若F1-score≥0.9,则表示模型训练完成;若F1-score<0.9,则改变松弛因子ξ和惩罚参数C重新训练。最终,得到F1-score≥0.9的单类支持向量机模型作为最佳异常检测模型;
实施例2:
使用特征矩阵Btrain训练孤立森林模型,并使用特征矩阵Btest评估训练后的孤立森林模型的性能。
孤立森林模型(Isolation Forest,IForest)是一种无监督的方法,首先,它通过从训练数据集中随机选取一个特征,然后,在该特征的最大值最小值之间随机选取一个分裂点,小于分裂点的点进入左侧分支,大于或等于分裂点的点进入右侧分支。接着,不断重复上述过程直到只剩一个样本或只剩下相似的样本。如果在重复上述分裂过程中达到了树深的限制,则会跳出上述过程。最后,孤立森林通过路径长度来表示一个样本点被“孤立”的程度。
本发明中,采用孤立森林模型作为异常检测模型的训练和测试的具体步骤如下:
C21:将特征矩阵Btrain中的数据输入到孤立森林模型中;
C22:首先:从特征矩阵Btrain中挑选训练样本为xf,则h(xf)表示训练样本xf从根节点到外部节点的过程中xf经过的二叉树的边数,即路径长度。一般来说,样本路径长度越小,则此样本被“孤立”的程度就越高,样本被“孤立”的程度越高就表示此样本越有可能为诈骗合约。
h(xf)公式如下:
h(xf)=e+Ctree(m);
Figure BDA0003102119360000131
e表示训练样本xf从子树iTree的根节点到叶子节点的过程中经过的二叉树的边数,即训练样本xf经过iTree的边数。Ctree(m)表示使用m条样本数据构建的二叉树的平均路径长度。γ表示欧拉常数。
当得到h(xf)的值以后,则计算xf孤立值(或称为异常值),设
Figure BDA0003102119360000136
表示xf的异常值,
Figure BDA0003102119360000137
公式如下:
Figure BDA0003102119360000132
E(h(xf))表示xf在所有孤立树中的路径长度的平均值。假设阈值q=0.7,则若
Figure BDA0003102119360000138
表示xf为诈骗合约,
Figure BDA0003102119360000139
表示xf为正常合约。
上述过程为一颗孤立树的训练过程,然后再对特征矩阵Btrain使用不放回抽样的方式随机选取m条数据,重复上述孤立树的训练过程,直至特征矩阵Btrain中的数据都选取一遍。选取完成后表示此训练完成。
C23:训练完成后,孤立森林模型根据特征矩阵Btrain中的数据确定孤立树中样本的平均路径长度E(h(xf))的值,然后使用特征矩阵Btest对孤立森林模型的性能进行测试及评估。评估过程与训练过程相似,只是训练过程中确定的E(h(xf))值,在评估过程中不再改变。
C24:评估时,选用F值(F1-score)对训练后的单类支持向量机模型性能进行评估。
Figure BDA0003102119360000133
Figure BDA0003102119360000134
Figure BDA0003102119360000135
其中,Positivetrue表示检测模型将原本是正常合约类别的智能合约预测为正常合约;Positivefalse表示检测模型将原本是诈骗合约类别的智能合约判断为正常合约;Negativefalse表示检测模型将原本是正常合约类别的智能合约预测为诈骗合约,Recall表示查全率,Precision表示查准率。
若F1-score≥0.9,则表示训练完成;若F1-score<0.9,则改变m的值重新训练。最终,得到F1-score≥0.9的孤立森林模型作为最佳异常检测模型;
由于单类支持向量机模型和孤立森林模型对诈骗合约检测的原理不同,所以检测时,分析诈骗合约特征的侧重点也不同,所以使用单个检测模型无法全面分析诈骗合约中的侧重点。所以本发明中还提出了单类支持向量机和孤立森林的融合模型,以准确检测诈骗合约。
实施例3:
使用特征矩阵Btrain训练单类支持向量机和孤立森林的融合模型,并使用特征矩阵Btest测试训练后的单类支持向量机和孤立森林的融合模型。
采用单类支持向量机和孤立森林的融合模型作为异常检测模型的训练和测试的具体步骤如下:
C31:假设特征矩阵Btrain和特征矩阵Btest中每个列向量均为q维的列向量。则使用PCA降维算法,分别将特征矩阵Btrain和特征矩阵Btest生成降维后的特征矩阵并表示为
Figure BDA0003102119360000141
Figure BDA0003102119360000142
其中,特征矩阵
Figure BDA0003102119360000143
i=2,3,…,q-1表示在特征矩阵Btrain的基础上使用PCA降维算法所生成的i维特征矩阵,特征矩阵
Figure BDA0003102119360000144
i=2,3,…,q-1表示在特征矩阵Btest的基础上使用PCA降维算法所生成的i维特征矩阵。
C32:按照步骤C11至步骤C15的方法,利用降维后的特征矩阵
Figure BDA0003102119360000145
对单类支持向量机模型进行训练,训练完成后,使用训练后的单类支持向量机模型检测特征矩阵
Figure BDA0003102119360000146
中的诈骗合约,得到检测结果数组
Figure BDA0003102119360000147
其中,
Figure BDA0003102119360000148
表示使用单类支持向量机检测
Figure BDA0003102119360000149
得到的检测结果,i=2,3,…,q-1。
Figure BDA00031021193600001410
l表示
Figure BDA00031021193600001411
中共有l个检测结果,即
Figure BDA0003102119360000151
中共有l个列向量。
Figure BDA0003102119360000152
取值为0或1,若
Figure BDA0003102119360000153
表示
Figure BDA0003102119360000154
中的第j个智能合约为正常合约,若
Figure BDA0003102119360000155
则表示
Figure BDA0003102119360000156
中的第j个智能合约为诈骗合约。
C33:按照步骤C21至步骤C24的方法,利用降维后的特征矩阵
Figure BDA0003102119360000157
对孤立森林模型进行训练,训练完成后,使用训练后的孤立森林模型检测特征矩阵
Figure BDA0003102119360000158
中的诈骗合约,得到检测结果数组
Figure BDA0003102119360000159
其中,
Figure BDA00031021193600001510
表示使用孤立森林检测
Figure BDA00031021193600001511
得到的检测结果,i=2,3,…,q-1。
Figure BDA00031021193600001512
l表示
Figure BDA00031021193600001513
中共有l个检测结果,即
Figure BDA00031021193600001514
中共有l个列向量。
Figure BDA00031021193600001515
取值为0或1,若
Figure BDA00031021193600001516
表示
Figure BDA00031021193600001517
中的第j个智能合约为正常合约,若
Figure BDA00031021193600001518
表示
Figure BDA00031021193600001519
中的第j个智能合约为诈骗合约;
C34:使用皮尔森相关系数对检测结果数组
Figure BDA00031021193600001520
Figure BDA00031021193600001521
进行相关性计算,最终得到皮尔森相关系数r;
皮尔森相关系数r的计算公式如下:
Figure BDA00031021193600001522
C35:根据步骤B34得到差异性最大的两组结果,即r值最大时所对应的单类支持向量机模型的评估结果和孤立森林模型的评估结果;然后再将所得到的r值最大时所对应的单类支持向量机模型的评估结果和孤立森林模型的评估结果作为输入对随机森林模型进行训练;最终得到确定的单类支持向量机和孤立森林的融合模型,作为最佳异常检测模型。
本发明使用随机森林模型对单类支持向量机和孤立森林模型进行融合。使用随机深林时使用分类与回归树(Classification and regression tree,CART)作为随机森林算法的基分类器。随机森林模型输出的结果即为单类支持向量机与孤立森林进行模型融合后得到的最终的检测结果。
因为单类支持向量机和孤立森林的算法逻辑不同,所以它们分类的依据即对相同数据的不同的特征的敏感程度也不同。使用模型融合的方式同时使用这两个算法检测诈骗合约,可以综合考虑诈骗合约的特征,从而提高检测诈骗合约的精度。
D:利用步骤C中得到的最佳异常检测模型,对待判定的智能合约进行是否为诈骗合约的判定,设利用最佳异常检测模型判定后的结果为Y={y1,y2,…,yl},yj取值为0或1,j=1,2,…,l,若yj=0则表示
Figure BDA0003102119360000161
中的第j个智能合约为正常合约,yj=1表示
Figure BDA0003102119360000162
中的第j个智能合约为诈骗合约。

Claims (7)

1.一种面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于,依次包括以下步骤:
A:获取区块链平台中智能合约的字节码,将获取到的字节码转化为标准化后的特征矩阵并消除特征矩阵中的噪声;
B:获取诈骗合约的数据集Dall,并将诈骗合约的数据集Dall划分为训练集Dtrain和测试集Dtest;然后将训练集Dtrain和测试集Dtest中的测试数据分别转化为标准化后的特征矩阵Btrain和特征矩阵Btest
C:使用特征矩阵Btrain训练异常检测模型,并使用特征矩阵Btest测试异常检测模型的性能;最终得到最佳异常检测模型;
异常检测模型采用单类支持向量机模型、孤立森林模型或者单类支持向量机和孤立森林的融合模型;
D:利用步骤C中得到的最佳异常检测模型,对待判定的智能合约进行是否为诈骗合约的判定;
其中,采用单类支持向量机模型作为异常检测模型的训练和测试的具体步骤如下:
C11:将特征矩阵Btrain中的数据输入到单类支持向量机模型中;
C12:单类支持向量机模型通过非线性变化函数将特征矩阵Btrain映射到新的特征空间
Figure FDA0003838646010000011
映射关系为
Figure FDA0003838646010000012
C13:首先,在新的特征空间
Figure FDA0003838646010000013
中构造一个体积最小的超球体;
Figure FDA0003838646010000014
s.t.‖φ(Btrain)-a‖2≤R2ii≥0,i=1,2,…,n;
其中,a表示超球体的球心,R表示超球体的半径,ξ表示松弛因子,ξi表示特征矩阵Btrain中第i个列向量的松弛因子,C表示权衡超球体体积和误分类率的惩罚参数,n表示特征矩阵Btrain中共有n个列向量;
然后,计算特征矩阵Btrain中的测试样本到超球体球心的距离d;
设从特征矩阵Btrain中挑选的测试样本为xt,则xt到超球体球心的距离d为:
Figure FDA0003838646010000021
K(xt,xt)、K(xt,xi)和K(xi,xj)均表示核函数,αi和αj分别表示样本xi和xj对应的拉格朗日系数;xi和xj分别表示从特征矩阵Btrain中选择的两个列向量;
最后,利用特征矩阵Btrain中的测试样本到超球体球心的距离d,判断特征矩阵Btrain中对应的测试样本是否属于诈骗合约;
若d≤R,说明测试样本在超球体的内部,属于正常样本;
若d>R则说明测试样本在超球体的外部,属于异常样本,即属于诈骗合约;
C14:通过步骤C13中的方法,利用特征矩阵Btrain中的数据对单类支持向量机模型进行训练;最终确定单类支持向量机模型中参数R,d,αi的数值;
C15:将特征矩阵Btest中的数据输入到训练后的单类支持向量机模型中,并根据单类支持向量机模型输出的结果对训练后的单类支持向量机模型性能进行测试;
采用孤立森林模型作为异常检测模型的训练和测试的具体步骤如下:
C21:将特征矩阵Btrain中的数据输入到孤立森林模型中;
C22:首先,从特征矩阵Btrain中挑选训练样本为xf,则h(xf)表示训练样本xf从根节点到外部节点的过程中xf经过的二叉树的边数,即路径长度;
h(xf)的计算公式如下:h(xf)=e+Ctree(m);
Figure FDA0003838646010000022
e表示训练样本xf从子树iTree的根节点到叶子节点的过程中经过的二叉树的边数,即训练样本xf经过iTree的边数;Ctree(m)表示使用m条样本数据构建的二叉树的平均路径长度;γ表示欧拉常数;
根据得到的h(xf)的值计算xf异常值,设
Figure FDA0003838646010000031
表示xf的异常值:
Figure FDA0003838646010000032
其中,E(h(xf))表示xf在所有孤立树中的路径长度的平均值;设阈值为q,若
Figure FDA0003838646010000033
表示xf为诈骗合约,
Figure FDA0003838646010000034
表示xf为正常合约;
然后按照上述方法,再对特征矩阵Btrain使用不放回抽样的方式随机选取m条数据,重复上述孤立树的训练过程,直至特征矩阵Btrain中的数据都选取一遍,完成训练;
C23:训练完成后,孤立森林模型根据特征矩阵Btrain中的数据确定孤立树中样本的平均路径长度E(h(xf))的值,然后使用特征矩阵Btest对孤立森林模型的性能进行测试;
采用单类支持向量机和孤立森林的融合模型作为异常检测模型的训练和测试的具体步骤如下:
C31:假设特征矩阵Btrain和特征矩阵Btest中每个列向量均为q维的列向量,则使用PCA降维算法,分别将特征矩阵Btrain和特征矩阵Btest生成降维后的特征矩阵并表示为
Figure FDA0003838646010000035
Figure FDA0003838646010000036
其中,特征矩阵
Figure FDA0003838646010000037
表示在特征矩阵Btrain的基础上使用PCA降维算法所生成的i维特征矩阵,特征矩阵
Figure FDA0003838646010000038
表示在特征矩阵Btest的基础上使用PCA降维算法所生成的i维特征矩阵;i=2,3,…,q-1;
C32:利用降维后的特征矩阵
Figure FDA0003838646010000039
对单类支持向量机模型进行训练,训练完成后,使用训练后的单类支持向量机模型检测特征矩阵
Figure FDA00038386460100000310
中的诈骗合约,得到检测结果数组
Figure FDA00038386460100000311
其中,
Figure FDA00038386460100000312
表示使用单类支持向量机检测
Figure FDA00038386460100000313
得到的检测结果;
Figure FDA00038386460100000314
Figure FDA00038386460100000315
l表示
Figure FDA00038386460100000316
中共有l个检测结果,即
Figure FDA00038386460100000317
中共有l个列向量;
Figure FDA00038386460100000318
取值为0或1,若
Figure FDA00038386460100000319
表示
Figure FDA00038386460100000320
中的第j个智能合约为正常合约,若
Figure FDA00038386460100000321
则表示
Figure FDA0003838646010000041
中的第j个智能合约为诈骗合约;j=1,2,…,l;
C33:利用降维后的特征矩阵
Figure FDA0003838646010000042
对孤立森林模型进行训练,训练完成后,使用训练后的孤立森林模型检测特征矩阵
Figure FDA0003838646010000043
中的诈骗合约,得到检测结果数组
Figure FDA0003838646010000044
其中,
Figure FDA0003838646010000045
表示使用孤立森林检测
Figure FDA0003838646010000046
得到的检测结果,
Figure FDA0003838646010000047
l表示
Figure FDA0003838646010000048
中共有l个检测结果,即
Figure FDA0003838646010000049
中共有l个列向量;
Figure FDA00038386460100000410
取值为0或1,若
Figure FDA00038386460100000411
表示
Figure FDA00038386460100000412
中的第j个智能合约为正常合约,若
Figure FDA00038386460100000413
表示
Figure FDA00038386460100000414
中的第j个智能合约为诈骗合约;j=1,2,…,l;
C34:使用皮尔森相关系数对检测结果数组
Figure FDA00038386460100000415
Figure FDA00038386460100000416
进行相关性计算,得到皮尔森相关系数r;
皮尔森相关系数r的计算公式如下:
Figure FDA00038386460100000417
C35:根据步骤C34得到差异性最大的两组检测结果,即r值最大时所对应的单类支持向量机模型的检测结果和孤立森林模型的检测结果;然后再将所得到的r值最大时所对应的单类支持向量机模型的检测结果和孤立森林模型的检测结果作为输入对随机森林模型进行训练;最终得到确定的单类支持向量机和孤立森林的融合模型,作为最佳异常检测模型。
2.根据权利要求1所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于,所述的步骤A包括以下具体步骤:
A1:通过区块链平台获取智能合约的字节码;
A2:将获取到的字节码转化为特征矩阵A;
A3:对特征矩阵A进行标准化,设特征矩阵A={a1,a2,…,an},a1,a2,…,an为列向量,表示标准化之前的特征值;设特征矩阵B为标准化后的特征值,B={b1,b2,…,bn};
列向量an的标准化公式为:
Figure FDA0003838646010000051
其中,μn和σn分别表示列向量an的均值和方差;
A4:使用PCA算法消除标准化后特征矩阵的噪声,得到消除噪声后的标准化特征矩阵X,X={x1,x2,…,xk}。
3.根据权利要求2所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于:所述的步骤A4中,PCA算法采用特征分解或奇异值分解。
4.根据权利要求2所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于:所述的步骤B包括以下具体步骤:
B1:获取诈骗合约的数据集Dall,并将诈骗合约的数据集Dall划分为训练集Dtrain和测试集Dtest
B2:利用步骤A3中的方法,将诈骗合约的训练集Dtrain中的训练数据和测试集Dtest中的测试数据,分别转化为标准化后的特征矩阵Btrain和特征矩阵Btest
5.根据权利要求1所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于:在使用特征矩阵Btest对训练后的异常检测模型的性能进行测试后,根据异常检测模型输出的结果对训练后的异常检测模型性能进行评估;
评估时,选用F值(F1-score)对训练后的单类支持向量机模型性能进行评估;
Figure FDA0003838646010000052
Figure FDA0003838646010000053
Figure FDA0003838646010000054
其中,Positivetrue表示检测模型将原本是正常合约类别的智能合约预测为正常合约;Positivefalse表示检测模型将原本是诈骗合约类别的智能合约判断为正常合约;Negativefalse表示检测模型将原本是正常合约类别的智能合约预测为诈骗合约,Recall表示查全率,Precision表示查准率;
若F1-score≥0.9,则表示异常检测模型训练完成;若F1-score<0.9,则改变松弛因子ξ和惩罚参数C重新对异常检测模型进行训练;最终将得到F1-score≥0.9的异常检测模型作为最佳异常检测模型。
6.根据权利要求1所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于:所述的步骤D中,设利用最佳异常检测模型判定后的结果为Y={y1,y2,…,yl},yj取值为0或1,j=1,2,…,l,若yj=0则表示
Figure FDA0003838646010000061
中的第j个智能合约为正常合约,yj=1表示
Figure FDA0003838646010000062
中的第j个智能合约为诈骗合约。
7.根据权利要求1所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于:所述的q=0.7。
CN202110627401.XA 2021-04-19 2021-06-04 一种面向区块链平台的基于字节码的诈骗合约检测方法 Active CN113283901B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202110416223 2021-04-19
CN2021104162236 2021-04-19

Publications (2)

Publication Number Publication Date
CN113283901A CN113283901A (zh) 2021-08-20
CN113283901B true CN113283901B (zh) 2022-11-01

Family

ID=77283547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110627401.XA Active CN113283901B (zh) 2021-04-19 2021-06-04 一种面向区块链平台的基于字节码的诈骗合约检测方法

Country Status (1)

Country Link
CN (1) CN113283901B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961434A (zh) * 2021-09-29 2022-01-21 西安交通大学 一种分布式区块链系统用户异常行为监测方法及系统
CN114331731A (zh) * 2022-02-28 2022-04-12 国网电子商务有限公司 基于pca与rf的区块链异常检测方法及相关装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109859029A (zh) * 2019-01-04 2019-06-07 深圳壹账通智能科技有限公司 异常申请检测方法、装置、计算机设备以及存储介质
CN111695597B (zh) * 2020-05-07 2023-05-02 数尊信息科技(上海)有限公司 基于改进式孤立森林算法的信贷欺诈团伙识别方法和系统
CN111833172A (zh) * 2020-05-25 2020-10-27 百维金科(上海)信息科技有限公司 一种基于孤立森林的消费信贷欺诈行为检测方法及其系统
CN112365338B (zh) * 2020-11-11 2024-03-22 天翼安全科技有限公司 基于人工智能的数据欺诈检测方法、装置、终端及介质
CN112631611B (zh) * 2021-01-06 2022-06-03 中山大学 一种智能庞氏骗局合约识别方法及装置

Also Published As

Publication number Publication date
CN113283901A (zh) 2021-08-20

Similar Documents

Publication Publication Date Title
CN109408389B (zh) 一种基于深度学习的代码缺陷检测方法及装置
CN111967502B (zh) 一种基于条件变分自编码器的网络入侵检测方法
CN111027069B (zh) 恶意软件家族检测方法、存储介质和计算设备
KR102600745B1 (ko) 신경망 분석 기반의 소리 분류용 이상 탐지 방법
CN113283901B (zh) 一种面向区块链平台的基于字节码的诈骗合约检测方法
CN110704840A (zh) 一种基于卷积神经网络cnn的恶意软件检测方法
CN111915437A (zh) 基于rnn的反洗钱模型的训练方法、装置、设备及介质
CN109190698B (zh) 一种网络数字虚拟资产的分类识别系统及方法
CN112199670B (zh) 一种基于深度学习改进iforest对行为异常检测的日志监控方法
US20080052010A1 (en) Method and Apparatus for Analyzing Signal Pattern of Sensor Array
CN115277189B (zh) 基于生成式对抗网络的无监督式入侵流量检测识别方法
CN112437053B (zh) 入侵检测方法及装置
Gabryel et al. Browser fingerprint coding methods increasing the effectiveness of user identification in the web traffic
Masood et al. Differential evolution based advised SVM for histopathalogical image analysis for skin cancer detection
CN115600200A (zh) 基于熵谱密度和自适应收缩卷积的安卓恶意软件检测方法
CN111431849A (zh) 一种网络入侵检测方法及装置
CN114372493A (zh) 一种计算机线缆电磁泄漏特征分析方法
Shi et al. An improved agglomerative hierarchical clustering anomaly detection method for scientific data
CN114692156A (zh) 内存片段恶意代码入侵检测方法、系统、存储介质及设备
CN115168865A (zh) 基于领域自适应的跨项目漏洞检测模型
CN115063224A (zh) 基于用户画像的业务审核方法、装置、设备及存储介质
CN112990989B (zh) 价值预测模型输入数据生成方法、装置、设备和介质
CN114035843A (zh) 基于Seq2Seq模型的代码克隆检测方法及检测装置
CN115760127A (zh) 一种基于规则注意力机制的交易欺诈检测方法及系统
CN113409105A (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