CN113283901B - 一种面向区块链平台的基于字节码的诈骗合约检测方法 - Google Patents
一种面向区块链平台的基于字节码的诈骗合约检测方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial 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};
其中,μ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中的数据输入到单类支持向量机模型中;
s.t.‖φ(Btrain)-a‖2≤R2+ξi,ξi≥0,i=1,2,…,n;
其中,a表示超球体的球心,R表示超球体的半径,ξ表示松弛因子,ξi表示特征矩阵Btrain中第i个列向量的松弛因子,C表示权衡超球体体积和误分类率的惩罚参数,n表示特征矩阵Btrain中共有n个列向量;
然后,计算特征矩阵Btrain中的测试样本到超球体球心的距离d;
设从特征矩阵Btrain中挑选的测试样本为xt,则xt到超球体球心的距离d为:
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);
e表示训练样本xf从子树iTree的根节点到叶子节点的过程中经过的二叉树的边数,即训练样本xf经过iTree的边数;ctree(m)表示使用m条样本数据构建的二叉树的平均路径长度;γ表示欧拉常数;
然后按照上述方法,再对特征矩阵Brrain使用不放回抽样的方式随机选取m条数据,重复上述孤立树的训练过程,直至特征矩阵Btrain中的数据都选取一遍,完成训练;
C23:训练完成后,孤立森林模型根据特征矩阵Btrain中的数据确定孤立树中样本的平均路径长度E(h(xf))的值,然后使用特征矩阵Btest对孤立森林模型的性能进行测试。
采用单类支持向量机和孤立森林的融合模型作为异常检测模型的训练和测试的具体步骤如下:
其中,表示使用单类支持向量机检测得到的检测结果; l表示中共有l个检测结果,即中共有l个列向量;取值为0或1,若表示中的第j个智能合约为正常合约,若则表示中的第j个智能合约为诈骗合约;j=1,2,…,l;
皮尔森相关系数r的计算公式如下:
C35:根据步骤B34得到差异性最大的两组检测结果,即r值最大时所对应的单类支持向量机模型的检测结果和孤立森林模型的检测结果;然后再将所得到的r值最大时所对应的单类支持向量机模型的检测结果和孤立森林模型的检测结果作为输入对随机森林模型进行训练;最终得到确定的单类支持向量机和孤立森林的融合模型,作为最佳异常检测模型。
在使用特征矩阵Btest对训练后的异常检测模型的性能进行测试后,根据异常检测模型输出的结果对训练后的异常检测模型性能进行评估;
评估时,选用F值(F1-score)对训练后的单类支持向量机模型性能进行评估。
其中,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则表示中的第j个智能合约为正常合约,yj=1表示中的第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的标准化公式为:
其中,μ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中的数据输入到单类支持向量机模型中;
s.t.‖φ(Btrain)-a‖2≤R2+ξi,ξi≥0,i=1,2,…,n;
其中,a表示超球体的球心,R表示超球体的半径,ξ表示松弛因子,ξi表示特征矩阵Btrain中第i个列向量的松弛因子,C表示权衡超球体体积和误分类率的惩罚参数,C值增大时对误分类的惩罚增大,C值减小时对误分类的惩罚减小,n表示特征矩阵Btrain中共有n个列向量。
然后,计算特征矩阵Btrain中的测试样本到超球体球心的距离d;
在计算时,根据拉格朗日乘子法,原始问题的对偶问题为:
其中,αi和αj分别表示样本xi和xj对应的拉格朗日系数;xi和xj分别表示从特征矩阵Btrain中选择的两个列向量;K(xi,xj)表示核函数,它等同于特征空间中样本的内积操作,即:
K(xi,xj)=<φ(xi),φ(xj)>;
将原始问题转化为对偶问题后,则计算超球体的球心a和半径R,计算公式如下:
在训练过程中,把拉格朗日系数满足0≤αi≤C的样本称为支持向量,设SV表示从特征矩阵Btrain中划分出来的训练样本中所有的支持向量;则在计算超球体的半径R的公式中,xv表示SV中的列向量,xv∈SV,K(xv,xv)和K(xv,xi)均表示核函数,xi表示从特征矩阵Btrain选择的列向量;
因此,设从特征矩阵Btrain中挑选的测试样本为xt,则xt到超球体球心的距离d为:
最后,利用特征矩阵Btrain中的测试样本到超球体球心的距离d,判断特征矩阵Btrain中对应的测试样本是否属于诈骗合约;
若d≤R,说明测试样本在超球体的内部,属于正常样本;
若d>R则说明测试样本在超球体的外部,属于异常样本,即属于诈骗合约;
C14:通过步骤C13中的方法,利用特征矩阵Btrain中的数据对单类支持向量机模型进行训练;最终确定单类支持向量机模型中参数R,d,αi的数值;
C15:将特征矩阵Btest中的数据输入到训练后的单类支持向量机模型中,并根据单类支持向量机模型输出的结果对训练后的单类支持向量机模型性能进行测试及评估;
评估时,选用F值(F1-score)对训练后的单类支持向量机模型性能进行评估。
其中,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);
e表示训练样本xf从子树iTree的根节点到叶子节点的过程中经过的二叉树的边数,即训练样本xf经过iTree的边数。Ctree(m)表示使用m条样本数据构建的二叉树的平均路径长度。γ表示欧拉常数。
上述过程为一颗孤立树的训练过程,然后再对特征矩阵Btrain使用不放回抽样的方式随机选取m条数据,重复上述孤立树的训练过程,直至特征矩阵Btrain中的数据都选取一遍。选取完成后表示此训练完成。
C23:训练完成后,孤立森林模型根据特征矩阵Btrain中的数据确定孤立树中样本的平均路径长度E(h(xf))的值,然后使用特征矩阵Btest对孤立森林模型的性能进行测试及评估。评估过程与训练过程相似,只是训练过程中确定的E(h(xf))值,在评估过程中不再改变。
C24:评估时,选用F值(F1-score)对训练后的单类支持向量机模型性能进行评估。
其中,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生成降维后的特征矩阵并表示为和其中,特征矩阵i=2,3,…,q-1表示在特征矩阵Btrain的基础上使用PCA降维算法所生成的i维特征矩阵,特征矩阵i=2,3,…,q-1表示在特征矩阵Btest的基础上使用PCA降维算法所生成的i维特征矩阵。
C32:按照步骤C11至步骤C15的方法,利用降维后的特征矩阵对单类支持向量机模型进行训练,训练完成后,使用训练后的单类支持向量机模型检测特征矩阵中的诈骗合约,得到检测结果数组其中,表示使用单类支持向量机检测得到的检测结果,i=2,3,…,q-1。l表示中共有l个检测结果,即中共有l个列向量。取值为0或1,若表示中的第j个智能合约为正常合约,若则表示中的第j个智能合约为诈骗合约。
C33:按照步骤C21至步骤C24的方法,利用降维后的特征矩阵对孤立森林模型进行训练,训练完成后,使用训练后的孤立森林模型检测特征矩阵中的诈骗合约,得到检测结果数组其中,表示使用孤立森林检测得到的检测结果,i=2,3,…,q-1。l表示中共有l个检测结果,即中共有l个列向量。取值为0或1,若表示中的第j个智能合约为正常合约,若表示中的第j个智能合约为诈骗合约;
皮尔森相关系数r的计算公式如下:
C35:根据步骤B34得到差异性最大的两组结果,即r值最大时所对应的单类支持向量机模型的评估结果和孤立森林模型的评估结果;然后再将所得到的r值最大时所对应的单类支持向量机模型的评估结果和孤立森林模型的评估结果作为输入对随机森林模型进行训练;最终得到确定的单类支持向量机和孤立森林的融合模型,作为最佳异常检测模型。
本发明使用随机森林模型对单类支持向量机和孤立森林模型进行融合。使用随机深林时使用分类与回归树(Classification and regression tree,CART)作为随机森林算法的基分类器。随机森林模型输出的结果即为单类支持向量机与孤立森林进行模型融合后得到的最终的检测结果。
因为单类支持向量机和孤立森林的算法逻辑不同,所以它们分类的依据即对相同数据的不同的特征的敏感程度也不同。使用模型融合的方式同时使用这两个算法检测诈骗合约,可以综合考虑诈骗合约的特征,从而提高检测诈骗合约的精度。
Claims (7)
1.一种面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于,依次包括以下步骤:
A:获取区块链平台中智能合约的字节码,将获取到的字节码转化为标准化后的特征矩阵并消除特征矩阵中的噪声;
B:获取诈骗合约的数据集Dall,并将诈骗合约的数据集Dall划分为训练集Dtrain和测试集Dtest;然后将训练集Dtrain和测试集Dtest中的测试数据分别转化为标准化后的特征矩阵Btrain和特征矩阵Btest;
C:使用特征矩阵Btrain训练异常检测模型,并使用特征矩阵Btest测试异常检测模型的性能;最终得到最佳异常检测模型;
异常检测模型采用单类支持向量机模型、孤立森林模型或者单类支持向量机和孤立森林的融合模型;
D:利用步骤C中得到的最佳异常检测模型,对待判定的智能合约进行是否为诈骗合约的判定;
其中,采用单类支持向量机模型作为异常检测模型的训练和测试的具体步骤如下:
C11:将特征矩阵Btrain中的数据输入到单类支持向量机模型中;
s.t.‖φ(Btrain)-a‖2≤R2+ξi,ξi≥0,i=1,2,…,n;
其中,a表示超球体的球心,R表示超球体的半径,ξ表示松弛因子,ξi表示特征矩阵Btrain中第i个列向量的松弛因子,C表示权衡超球体体积和误分类率的惩罚参数,n表示特征矩阵Btrain中共有n个列向量;
然后,计算特征矩阵Btrain中的测试样本到超球体球心的距离d;
设从特征矩阵Btrain中挑选的测试样本为xt,则xt到超球体球心的距离d为:
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);
e表示训练样本xf从子树iTree的根节点到叶子节点的过程中经过的二叉树的边数,即训练样本xf经过iTree的边数;Ctree(m)表示使用m条样本数据构建的二叉树的平均路径长度;γ表示欧拉常数;
然后按照上述方法,再对特征矩阵Btrain使用不放回抽样的方式随机选取m条数据,重复上述孤立树的训练过程,直至特征矩阵Btrain中的数据都选取一遍,完成训练;
C23:训练完成后,孤立森林模型根据特征矩阵Btrain中的数据确定孤立树中样本的平均路径长度E(h(xf))的值,然后使用特征矩阵Btest对孤立森林模型的性能进行测试;
采用单类支持向量机和孤立森林的融合模型作为异常检测模型的训练和测试的具体步骤如下:
其中,表示使用单类支持向量机检测得到的检测结果; l表示中共有l个检测结果,即中共有l个列向量;取值为0或1,若表示中的第j个智能合约为正常合约,若则表示中的第j个智能合约为诈骗合约;j=1,2,…,l;
皮尔森相关系数r的计算公式如下:
C35:根据步骤C34得到差异性最大的两组检测结果,即r值最大时所对应的单类支持向量机模型的检测结果和孤立森林模型的检测结果;然后再将所得到的r值最大时所对应的单类支持向量机模型的检测结果和孤立森林模型的检测结果作为输入对随机森林模型进行训练;最终得到确定的单类支持向量机和孤立森林的融合模型,作为最佳异常检测模型。
3.根据权利要求2所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于:所述的步骤A4中,PCA算法采用特征分解或奇异值分解。
4.根据权利要求2所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于:所述的步骤B包括以下具体步骤:
B1:获取诈骗合约的数据集Dall,并将诈骗合约的数据集Dall划分为训练集Dtrain和测试集Dtest;
B2:利用步骤A3中的方法,将诈骗合约的训练集Dtrain中的训练数据和测试集Dtest中的测试数据,分别转化为标准化后的特征矩阵Btrain和特征矩阵Btest。
5.根据权利要求1所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于:在使用特征矩阵Btest对训练后的异常检测模型的性能进行测试后,根据异常检测模型输出的结果对训练后的异常检测模型性能进行评估;
评估时,选用F值(F1-score)对训练后的单类支持向量机模型性能进行评估;
其中,Positivetrue表示检测模型将原本是正常合约类别的智能合约预测为正常合约;Positivefalse表示检测模型将原本是诈骗合约类别的智能合约判断为正常合约;Negativefalse表示检测模型将原本是正常合约类别的智能合约预测为诈骗合约,Recall表示查全率,Precision表示查准率;
若F1-score≥0.9,则表示异常检测模型训练完成;若F1-score<0.9,则改变松弛因子ξ和惩罚参数C重新对异常检测模型进行训练;最终将得到F1-score≥0.9的异常检测模型作为最佳异常检测模型。
7.根据权利要求1所述的面向区块链平台的基于字节码的诈骗合约检测方法,其特征在于:所述的q=0.7。
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)
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)
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 | 中山大学 | 一种智能庞氏骗局合约识别方法及装置 |
-
2021
- 2021-06-04 CN CN202110627401.XA patent/CN113283901B/zh active Active
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 |