一种基于对抗学习的庞氏骗局智能合约检测方法

未命名 08-02 阅读:108 评论:0


1.本发明涉及智能合约检测技术领域,尤其涉及一种基于对抗学习的庞氏骗局智能合约检测方法。


背景技术:

2.区块链技术的发展吸引了全球投资者的目光。以太坊作为区块链2.0阶段的代表作品,部署了大量的智能合约来实现各种业务。与此同时,以太坊上的诈骗行为急速增长,其中庞氏骗局诈骗行为的占比居高不下。
3.目前庞氏骗局合约的检测研究有:
[0004]“exploitingblockchain datato detect smartponzi schemes on ethereum”中将智能合约代码编译生成字节码,然后利用外部工具将其反编译为操作码(opcode),提取操作码频率特征。此外,他们还从智能合约的交易历史中提取了统计账户特征。最后,采用随机森林算法作为基于复合特征的分类模型,对庞氏骗局合约进行检测。该方法只分析了智能合约的交易历史和操作码频率特征,基于交易行为的检测需要相当数量的交易来学习行为,对交易数量少的智能合约不起作用,且手工制作的特性无法很好地捕获这些信息。而基于操作码频率的分析并未涉及操作码序列,而单个操作码在代码中出现的频率非常高,所以单条操作码虽然可以进行代码的判定,但难以全面刻画庞氏骗局合约代码的行为特征。
[0005]“ctrf:ethereum-based ponzi contract identification”提出了一种检测以太坊上庞氏骗局合约的方法ctrf。通过在代码特征中加入操作码的序列特征和提取更有效的交易特征来提高随机森林模型的召回率。该方法虽然对操作码的序列特征进行了提取,但其主要关注于操作码的n-gram特征,但其本质是利用操作码序列的频率特征进行检测,而未考虑操作码序列的语义信息。
[0006]“sadponzi:detecting and characterizingponzi schemes in ethereum smart contracts”基于动态符号执行技术提出一种用于识别以太坊智能合约中庞氏骗局的语义感知检测方法。实际上,它是一种启发式引导的符号执行技术,模拟源程序的运行过程,在根据庞氏骗局的再分配策略和用于存储用户信息的数据结构来进行庞氏骗局的检测。该方法的动态模拟和预先测试方法消耗了大量的时间和资源。此外,由于智能合约的源代码只有一小部分是公开的,所以从源代码的角度进行分析,适用性较小。
[0007]
基于机器学习的方法很容易受到规避技术的影响,虽然符号执行技术能够动态模拟程序执行流程,减少规避技术的影响,但却面临巨大的时间和资源的损耗。随着研究的不断推进,庞氏骗局合约的创建者可能会根据现有的判断机制而进行对抗干扰使得这种检测技术失效。


技术实现要素:

[0008]
本发明要解决的技术问题是针对上述现有技术的不足,提供一种基于对抗学习的
庞氏骗局智能合约检测方法,实现对庞氏骗局智能合约的检测。
[0009]
为解决上述技术问题,本发明所采取的技术方案是:一种基于对抗学习的庞氏骗局智能合约检测方法,
[0010]
对智能合约操作码序列进行分析,得到包含操作码最大逻辑信息和语义信息的操作码行为序列;
[0011]
根据词向量嵌入模型得到操作码行为序列的词向量表示;
[0012]
构建textcnn模型,并将操作码行为序列的词向量表示作为模型输入,进行庞氏骗局智能合约的判断;
[0013]
运用对抗训练算法给textcnn模型添加扰动,以此克服模型面对对抗攻击时缺乏鲁棒性和泛化性的问题。
[0014]
具体包括以下步骤:
[0015]
步骤1:智能合约数据收集与预处理:搜集标注的以太坊庞氏骗局合约的标签集,从以太坊上爬虫获取庞氏骗局智能合约与非庞氏骗局智能合约的字节码文件;将字节码文件反汇编为操作码文件,得到完整的智能合约操作码序列;
[0016]
步骤2:智能合约操作码行为模式的提取:将智能合约操作码序列构建为包含逻辑语义信息的控制流图g《n,e》,其中,n是控制流图中所有基本块的集合,e是控制流图中所有基本块之间边的集合;
[0017]
首先,基于操作码的停止指令与跳转指令将操作码进行基本块的划分,将基本块看作为控制流图的节点;其次,根据基本块的跳转地址,给基本块与基本块之间添加有向边;针对存在的未连通子图和孤立结点,采用顺序链接的方法,将地址连续的节点之间添加从高到低的有向边,至此控制流图建立完成。
[0018]
控制流图建立之后,遍历控制流图,对控制流图进行逻辑语义信息提取,得到操作码行为序列;本实例采用两种方法遍历控制流图,第一种是从第一个基本块开始纵深遍历,将图的每一个分支作为一条路径,然后将得到的所有路径整合起来,得到操作码的全路径序列;第二种是以第一个基本块为起点,采用深度优先遍历的方法,得到操作码的深度优先路径序列;
[0019]
步骤3:词向量嵌入:在得到操作码行为序列之后,对序列进行分析操作,其中每个操作码作为一个词语,然后将切分后的词语通过词向量嵌入模型word2vec进行训练,得到包含词语关联信息的稠密词向量;
[0020]
步骤4:构建textcnn模型进行庞氏骗局智能合约的判断;根据步骤3得到的稠密词向量,将操作码文本序列进行向量化表示,然后将其作为textcnn中的输入,textcnn捕捉词向量的局部特征进行训练,最后输出为智能合约的可能的类别的概率,判断是否属于庞氏骗局合约;
[0021]
步骤5:将对抗学习机制引入到textcnn模型中进行对抗训练;通过在textcnn的词向量层引入扰动来模仿攻击者对庞氏骗局合约操作码的改动,采用快速梯度法、投影梯度下降法和freeat分别进行textcnn模型训练;在进行模型训练时,对抗样本和正常样本联合训练共同调整模型的参数;并对比分析三种对抗学习算法对模型的鲁棒性能的影响,最后选出最优的对抗训练算法构建庞氏骗局检测模型;
[0022]
步骤6:获取待检测的智能合约,使用步骤5构建的庞氏骗局检测模型对待检测的
智能合约进行庞氏骗局检测。
[0023]
采用上述技术方案所产生的有益效果在于:本发明提供的一种基于对抗学习的庞氏骗局智能合约检测方法,对预处理之后的庞氏骗局合约操作码序列进行分析,提出根据操作码的控制流建立控制流图,并得到包含操作码最大语义信息的操作码行为序列,将其作为textcnn模型的输入进行训练,能最大程度的保留智能合约操作码的语义信息,因此提高了模型的分类效果。随后深度分析模型分类结果,得到最优的操作码行为序列。其次,将对抗学习机制引入神经网络模型,生成一个扰动因子对输入的文本向量进行扰动,模仿攻击者对庞氏合约的改动,然后在模型的训练过程中通过调节网络参数让神经网络逐渐适应网络,从而提高模型的有效性和鲁棒性。
附图说明
[0024]
图1为本发明实施例提供的一种基于对抗学习的庞氏骗局智能合约检测方法的流程图;
[0025]
图2为本发明实施例提供的操作码行为序列提取流程图;
[0026]
图3为本发明实施例提供的对抗训练过程图;
[0027]
图4为本发明实施例提供的原始路径、全路径和深度优先路径分别用于textcnn模型训练时的损失对比图;
[0028]
图5为本发明实施例提供的将fgm、pgd和freeat对抗训练算法加入textcnn模型后的损失对比图。
具体实施方式
[0029]
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0030]
本实施例中,一种基于对抗学习的庞氏骗局智能合约检测方法,如图1所示,具体包括以下步骤:
[0031]
步骤1:智能合约数据收集与预处理:搜集以往的相关研究论文中所标注的以太坊庞氏骗局合约的标签集,从以太坊上爬虫获取庞氏骗局智能合约与非庞氏骗局智能合约的字节码;随后搭建以太坊客户端go-ethereum,使用命令“evm disasm字节码文件名”将字节码文件反汇编为操作码文件,得到完整的智能合约操作码序列;
[0032]
步骤2:操作码行为模式的提取:受程序静态执行和图数据结构的启发,将操作码序列构建为包含逻辑语义信息的控制流图g《n,e》,其中,n是控制流图中所有基本块的集合,e是控制流图中所有基本块之间边的集合;
[0033]
具体步骤如图2所示,首先,基于操作码的停止指令(return、stop、invalid、selfdestruct、revert)与跳转指令(jump、jumpi、jumpdest)将操作码进行基本块的划分,将基本块看作为控制流图的节点;其次,根据基本块的跳转地址,给基本块与基本块之间添加有向边;针对存在的未连通子图和孤立结点,采用顺序链接的方法,将地址连续的节点之间添加从高到低的有向边,至此控制流图建立完成。
[0034]
控制流图建立之后,遍历控制流图,对控制流图进行逻辑语义信息提取,得到操作码行为序列;本实例采用两种方法遍历控制流图,第一种是从第一个基本块开始纵深遍历,
将图的每一个分支作为一条路径,然后将得到的所有路径整合起来,得到操作码的全路径序列(aps)。第二种是以第一个基本块为起点,采用深度优先遍历的方法,得到操作码的深度优先路径序列(dfs)。而经过分析前者得到的全路径序列的文本长度最大为1657279,最小为8;后者得到的深度优先路径序列的文本长度与初始文本一样,最大为13290,最小为8。
[0035]
步骤3:词向量嵌入:在得到操作码行为序列之后,对序列进行分析操作,其中每个操作码作为一个词语,然后将切分后的词语通过词向量嵌入模型word2vec进行训练,得到包含词语关联信息的稠密词向量;词向量嵌入模型word2vec有cbow和skip-gram两种结构,虽然在模型训练速度上cbow优于skip-gram,而skip-gram根据中间词语来预测上下文,在语义效果上更优,因此本实施例中,词向量嵌入模型word2vec采用skip-gram结构进行词向量训练。操作码序列通过word2vec模型后获取的词向量表示为v=(v1,v2,

,vn)。
[0036]
步骤4:构建textcnn(textcnn)模型进行庞氏骗局智能合约的判断;textcnn具有单层卷积和池化操作,通过改变滑动窗口的大小对输入文本进行卷积、池化等操作捕捉文本的局部语义信息,获取包含文本语义的局部特征向量;根据步骤3得到的稠密词向量v,将操作码文本序列进行向量化表示,然后将其作为textcnn中的输入,textcnn捕捉词向量的局部特征进行训练,最后输出为智能合约的可能的类别的概率,判断是否属于庞氏骗局合约;
[0037]
步骤5:对抗训练:将对抗学习机制引入到textcnn模型中,如图3所示;通过在textcnn的词向量层引入扰动来模仿攻击者对庞氏骗局合约操作码的改动,采用了三种常见的对抗训练算法快速梯度法(fast gradient method)、投影梯度下降法(projected gradient descent)、freeat(freeadversarial training)分别进行textcnn模型训练;其中扰动因子用γ表示,对词向量进行扰动得到对抗样本v

=γ+v,在进行模型训练时,对抗样本和正常样本联合训练共同调整模型的参数;并对比分析三种对抗学习算法对模型的鲁棒性能的影响,最后选出最优的对抗训练算法构建庞氏骗局检测模型;
[0038]
为了使随机按比例获取的数据子集同原始数据集保持统一分布,本实施例将预处理后的智能合约行为序列数据集按7:1:2的比例随机划分为训练集、测试集、验证集,其中训练集用于对textcnn模型进行训练,验证集用于查看模型训练的效果,测试集用于对训练好的模型进行分类测试。
[0039]
本实施例采用三种性能评价指标,其中包括精确率(precision)、召回率(recall)、f1值(f1-score)对测试结果进行评估;此三个指标均是取值越高,模型的性能越好。precision、recall、f1-score的计算公式如(1)(2)(3)所示:
[0040][0041][0042][0043]
其中,tp是true positive,代表标签为1,预测标签也为1的样本的数量;fp是false positive,代表标签为1,预测标签为0的样本数量;tn是true negative,代表标签为0,预测结果也为0的样本数量;fn是false negative,代表标签为0,预测结果也为1的样本
数量。
[0044]
根据precision、recall和f1-score的值对庞氏骗局智能合约的行为序列、对抗训练算法的测试结果进行分析,根据结果对比得到最优的庞氏骗局智能合约的行为序列;此外,得到庞氏骗局智能合约的操作码行为序列之后,对比分析三种对抗学习算法对模型的鲁棒性能的影响,最后选出最优的对抗训练算法构建庞氏骗局检测模型;
[0045]
步骤6:获取待检测的智能合约,使用步骤5构建的庞氏骗局检测模型对待检测的智能合约进行庞氏骗局检测。
[0046]
本实施例对提取的庞氏骗局智能合约操作码行为序列进行验证。将原始操作码序列、全路径序列(aps)、深度优先序列(dfs)作为textcnn模型输入进行分类测试阶段,结果如表1所示,深度优先序列的性能最好,分类效果最佳,其中,precision=0.9785,recall=0.9727,f1-score=0.9741。此外,如图4所示,相比于原始序列,本发明所提出的两种路径序列所训练的textcnn模型的loss下降更快。实验结果证明,本发明所提出的基于操作码的深度优先序列进行模型训练,能最大程度的保留智能合约操作码的语义信息,因此提高了模型的分类效果。
[0047]
表1采用不同路径作为textcnn模型输入的分类结果
[0048] precisionrecallf1-scorelosstextcnn0.95610.95740.95670.093textcnn-aps0.96790.96880.96810.13textcnn-dfs0.97850.97270.97410.1
[0049]
本实施例还基于fgm、pgd和freeat三种对抗训练方法对分类结果的影响进行测试,实验结果如表2所示,从表可以看出对抗训练算法对textcnn模型的性能具有不同程度的提高,其中pgd的分类性能最好,precision=0.9836,recall=0.9805,f1-score=0.9812。与此同时,加入对抗训练之后,textcnn模型的损失也逐渐下降,如图5所示。以上结果说明对抗训练对textcnn模型的分类有正向影响,且模型的鲁棒性也得到了提高。
[0050]
表2将fgm、pgd和freeat加入textcnn模型后的实验结果
[0051] precisionrecallf1-scorelosstextcnn0.97850.97270.94410.1textcnn+fgm0.98100.97660.97760.087textcnn+pgd0.98360.98050.98120.088textcnn+freeat0.97850.97270.94410.13
[0052]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。

技术特征:
1.一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:对智能合约操作码序列进行分析,得到包含操作码最大逻辑信息和语义信息的操作码行为序列;根据词向量嵌入模型得到操作码行为序列的词向量表示;构建textcnn模型,并将操作码行为序列的词向量表示作为模型输入,进行庞氏骗局智能合约的判断;运用对抗训练算法给textcnn模型添加扰动,以此克服模型面对对抗攻击时缺乏鲁棒性和泛化性的问题。2.根据权利要求1所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述方法包括以下步骤:步骤1:智能合约数据收集与预处理:搜集标注的以太坊庞氏骗局合约的标签集,从以太坊上爬虫获取庞氏骗局智能合约与非庞氏骗局智能合约的字节码文件;将字节码文件反汇编为操作码文件,得到完整的智能合约操作码序列;步骤2:智能合约操作码行为模式的提取:将智能合约操作码序列构建为包含逻辑语义信息的控制流图;遍历控制流图,对控制流图进行逻辑语义信息提取,得到操作码行为序列;步骤3:词向量嵌入:在得到操作码行为序列之后,对序列进行分析操作,其中每个操作码作为一个词语,然后将切分后的词语通过词向量嵌入模型word2vec进行训练,得到包含词语关联信息的稠密词向量;步骤4:构建textcnn模型进行庞氏骗局智能合约的判断;步骤5:将对抗学习机制引入到textcnn模型中进行对抗训练,得到庞氏骗局检测模型;步骤6:获取待检测的智能合约,使用庞氏骗局检测模型对待检测的智能合约进行庞氏骗局检测。3.根据权利要求2所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤2将智能合约操作码序列构建为包含逻辑语义信息的控制流图的具体方法为:基于操作码的停止指令与跳转指令将操作码进行基本块的划分,将基本块看作为控制流图的节点;其次,根据基本块的跳转地址,给基本块与基本块之间添加有向边;针对存在的未连通子图和孤立结点,采用顺序链接的方法,将地址连续的节点之间添加从高到低的有向边,进而建立包含逻辑语义信息的控制流图g<n,e>,其中,n是控制流图中所有基本块的集合,e是控制流图中所有基本块之间边的集合。4.根据权利要求3所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤2采用两种方法遍历控制流图,第一种是从第一个基本块开始纵深遍历,将图的每一个分支作为一条路径,然后将得到的所有路径整合起来,得到操作码的全路径序列;第二种是以第一个基本块为起点,采用深度优先遍历的方法,得到操作码的深度优先路径序列。5.根据权利要求2所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤4的具体方法为:根据步骤3得到的稠密词向量,将操作码文本序列进行向量化表示,然后将其作为textcnn中的输入,textcnn捕捉词向量的局部特征进行训练,最后输出为智能合约的可能
的类别的概率,判断是否属于庞氏骗局合约。6.根据权利要求2所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤4的具体方法为:通过在textcnn的词向量层引入扰动来模仿攻击者对庞氏骗局合约操作码的改动,采用多种对抗学习算法分别进行textcnn模型训练;在进行模型训练时,对抗样本和正常样本联合训练共同调整模型的参数;并对比分析多种对抗学习算法对模型的鲁棒性能的影响,最后选出最优的对抗训练算法构建庞氏骗局检测模型。7.根据权利要求6所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤4采用快速梯度法、投影梯度下降法和freeat三种对抗学习算法分别进行textcnn模型训练。

技术总结
本发明提供一种基于对抗学习的庞氏骗局智能合约检测方法,涉及智能合约检测技术领域。该方法首先收集并预处理智能合约数据,得到智能合约操作码序列;再对智能合约操作码序列进行分析,得到包含操作码最大逻辑信息和语义信息的操作码行为序列;并根据词向量嵌入模型得到操作码行为序列的词向量表示;然后构建TextCNN模型,并将操作码行为序列的词向量表示作为模型输入,进行庞氏骗局智能合约的判断,该过程能最大程度的保留智能合约操作码的语义信息,因此提高了模型的分类效果。最后运用对抗训练算法给TextCNN模型添加扰动,得到庞氏骗局检测模型,以此克服模型面对对抗攻击时缺乏鲁棒性和泛化性的问题。时缺乏鲁棒性和泛化性的问题。时缺乏鲁棒性和泛化性的问题。


技术研发人员:王兴伟 宁小勇 叶楚涵 高睿杰 张建忠 季娜
受保护的技术使用者:东北大学
技术研发日:2023.03.22
技术公布日:2023/7/31
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐