基于卷积神经网络的庞氏骗局合约检测方法①

2022-11-22 10:50政,斌,
关键词:庞氏骗局合约

袁 政, 葛 斌, 任 萍

(安徽理工大学计算机科学与工程学院,安徽 淮南 232001)

0 引 言

随着区块链技术的发展,智能合约[1]数量爆发式增长,同时带来诸多安全问题,庞氏骗局合约就是其中之一[2]。庞氏骗局合约以高回报为噱头骗取后入投资者资金用于回报先前投资者,该类型骗局合约已造成上千万美元资金的流失[3],严重影响区块链环境健康。众多学者针对此类型合约的检测展开研究,Massimo Bartoletti等人[3]以待检测合约与庞氏骗局合约字节码的相似度来判断其是否为庞氏骗局合约。该方法以归一化莱文斯坦距离作为判断依据,但是阈值设置未经过科学证明,说服力不足,检测精度不高。庞氏骗局合约账户具有区别于普通合约账户的明显特征,为更加精准检测庞氏骗局合约,更多学者开始结合账户特征对合约进行检测。Weili Chen等人[4]通过将提取操作码特征和账户特征相结合的方法,利用极端梯度提升(eXtreme Gradient Boosting,XGBoost)检测庞氏骗局合约。Weili Chen等人[4]为进一步提升检测精度,采取相同的特征提取方法,而后通过训练随机森林(Random Forest,RF)检测合约。Shuhui Fan[6]通过有序目标统计处理账户和操作码特征,结合有序增强思想基于决策树(Decision Tree,DT)构造一个无偏残差模型,用来检测合约。现有方法大多结合代码特征和账户特征,通过训练传统机器学习模型进行检测合约。该方法结合账户特征提升检测精度,对不存在账户特征的初步部署合约检测效果一般。对此,提出一种新的检测方法。首先,将合约操作码作为唯一数据源;改进合成少数类过采样技术,解决现存数据集的正常合约与庞氏合约分布不均衡问题。然后,创新性引入卷积神经网络检测庞氏骗局合约,改进卷积神经网络,更加充分提取操作码的特征,提升检测精度。仿真实验表明,该方法较现有庞氏骗局合约检测方法具有更高检测精度。

1 数据处理

1.1 数据获取

实验采用的数据来自中山大学团队的以太坊庞氏骗局智能合约公开数据集[4]。

1.2 改进合成少数类过采样技术

数据集中庞氏骗局合约样本占样本总数比例较小,采用样本类分布不均衡数据集训练模型,少数类检测准确率较低。

传统合成少数类过采样技术(Synthetic Minority Oversampling Technique,SMOTE)存在合成样本质量问题,合成样本有概率分布在样本边界及正常多数类样本范围,破坏数据集正确性,影响检测精度。

改进SMOTE算法,提出小范围合成少数类过采样技术,用于生成高质量样本。

数据集s={(xi,yi)|i=1,2,…,n},xi为合约操作码,yi为标签。yi=0,xi则为正常样本;yi=1,xi为庞氏合约样本。sn为正常样本集,sf庞氏合约样本集。

对sf中所有样本,利用k邻近(k-Nearest Neighbor)算法得到该样本的k个最邻近样本。

利用公式(1),判断xi属性为safe或danger,用所有xi=safe构造小范围安全少数类样本集ss.

(1)

从ss中随机选择xi,按照采样倍率j,选择j个xi的最邻近样本xij,利用公式(2)合成yi=1的样本xnew.

xnew=xi+rand(0,1)×(xij-xi)

(2)

式(2)中,rand(0,1)为范围零至一的随机数。

1.3 实验数据及预处理

智能合约的操作码由操作指令和操作数据构成,操作指令为官方定义指令集中指令,具有一定的规范性,操作数据由地址等数据组成没有规律性,需要对智能合约操作码进行数据清洗。合约操作码没有固定长度,需要对其进行统一化处理,将超过指定长度的合约进行截取,对长度不足的合约进行补零。对处理后的合约样本进行词频统计,共计64种操作指令,构建词典和词频矩阵。

2 检测庞氏骗局合约的卷积神经网络模型

2.1 改进卷积神经网络

创新性引入卷积神经网络[7](Convolutional Neural Network,CNN)用于庞氏骗局合约的检测。

传统卷积神经网络,采用单一通道对数据进行特征提取,数据特征获取不够充分。

为更充分获取合约操作码特征,提升检测精度,改进卷积神经网络。改变传统单通道卷积,使用不同尺寸卷积核,采用不平衡双路卷积,对操作码进行更加充分的特征提取。双通道特征提取后在融合层使用系列特征融合。

图1为改进卷积神经网络图,C1,C2一维卷积核,P1,P2为池化层。

2.2 检测庞氏骗局合约方法的框架

图2为检测庞氏骗局合约方法的框架。

首先通过以太坊浏览器(etherscan.io)对合约字节码进行获取,通过以太坊虚拟机反汇编规则,将合约的字节码反汇编成操作码。根据改进SMOTE方法解决样本不均衡分布问题。对完善后的数据集进行划分,以一比三的比例划分后,分别用于测试和模型的训练。改进CNN模型经训练后对测试集合约进行检测,得到检测结果。

3 实验结果及分析

3.1 实验环境

计算机处理器为AMD R7 4800H,显卡RTX2060(6G),内存16G,操作系统WIN10,开发工具为Anaconda3,深度学习框架为TensorFlow。

3.2 实验结果与分析

分别选用尺寸为3和4的一维卷积核,池化层选择最大池化,选择ReLU作为神经元激活函数,批尺寸为128,随机失或率为0.2,二元交叉熵作为损失函数,sigmoid作为输出层激活函数,采用k折验证对改进的模型进行训练。

图3为训练、验证准确率和迭代次数关系,图4为训练、验证的损失和迭代次数关系。初始设置训练轮数为40。由图,在训练20轮后,训练准确率和损失趋于稳定,验证准确率缓慢下降,损失逐渐增加,出现过拟合现象,训练轮数定为20轮。

将训练20轮后的模型作为最终的合约检测模型,用于后续的合约检测。

在相同实验环境下,分别使用支持向量机、决策树、极端梯度提升和模型在原始数据集以及模型在改进数据集上进行训练和测试。每组实验进行十次,取平均值,作为最终实验结果。评标指标为查准率(Precision),查全率(Recall),F-score三项。

表1为五组实验的最终实验结果。

表1 实验对比图

从实验结果来看,实验模型在原始数据集上,传统模型支持向量机和本文模型的准确率都达到0.94,对合约的检测都有较高的准确率,极端梯度提升略低,决策树最低只有0.64,表现较差。有较高查准率的支持向量机模型的查全率最低为0.43,有大量庞氏骗局合约未能检测出,F-score同样最低为0.59整体表现较差。本文模型相比支持向量机、决策树和极端梯度提升在查准率等三项指标上均更高表现更好,有更好的检测精度。

模型在改进数据集的表现上相比原始数据集,查准率提升1%,查全率提升4%,对合约检测具有更高的精度。

4 结 语

针对现有方法对初步部署庞氏骗局合约检测精度低问题,提出一种基于卷积神经网络的庞氏骗局合约检测方法。首先,考虑到初步部署合约不存在账户特征,选择操作码作为唯一特征提取源。然后,改进SMOTE算法,生成人工样本解决样本类不均衡问题;创新性引入卷积神经网路用于检测合约,改进采用双路不均衡卷积后特征融合,提升检测精度。最后,通过仿真实验表明,该方法对初步部署庞氏骗局合约有较好检测精度。

猜你喜欢
庞氏骗局合约
别被骗局牢牢关住!
转盘骗局
那些永不过时的“骗局”
二十四孝之涌泉跃鲤
天上不会掉馅饼 地下不会长黄金 “庞氏”金融骗局启示录:天下没有无风险的高收益
涌泉跃鲤
骗局
亦贤亦悲演庞氏