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

文档序号:34973141发布日期:2023-08-01 19:28阅读:54来源:国知局
一种基于对抗学习的庞氏骗局智能合约检测方法

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


背景技术:

1、区块链技术的发展吸引了全球投资者的目光。以太坊作为区块链2.0阶段的代表作品,部署了大量的智能合约来实现各种业务。与此同时,以太坊上的诈骗行为急速增长,其中庞氏骗局诈骗行为的占比居高不下。

2、目前庞氏骗局合约的检测研究有:

3、“exploitingblockchain datato detect smartponzi schemes on ethereum”中将智能合约代码编译生成字节码,然后利用外部工具将其反编译为操作码(opcode),提取操作码频率特征。此外,他们还从智能合约的交易历史中提取了统计账户特征。最后,采用随机森林算法作为基于复合特征的分类模型,对庞氏骗局合约进行检测。该方法只分析了智能合约的交易历史和操作码频率特征,基于交易行为的检测需要相当数量的交易来学习行为,对交易数量少的智能合约不起作用,且手工制作的特性无法很好地捕获这些信息。而基于操作码频率的分析并未涉及操作码序列,而单个操作码在代码中出现的频率非常高,所以单条操作码虽然可以进行代码的判定,但难以全面刻画庞氏骗局合约代码的行为特征。

4、“ctrf:ethereum-based ponzi contract identification”提出了一种检测以太坊上庞氏骗局合约的方法ctrf。通过在代码特征中加入操作码的序列特征和提取更有效的交易特征来提高随机森林模型的召回率。该方法虽然对操作码的序列特征进行了提取,但其主要关注于操作码的n-gram特征,但其本质是利用操作码序列的频率特征进行检测,而未考虑操作码序列的语义信息。

5、“sadponzi:detecting and characterizingponzi schemes in ethereum smartcontracts”基于动态符号执行技术提出一种用于识别以太坊智能合约中庞氏骗局的语义感知检测方法。实际上,它是一种启发式引导的符号执行技术,模拟源程序的运行过程,在根据庞氏骗局的再分配策略和用于存储用户信息的数据结构来进行庞氏骗局的检测。该方法的动态模拟和预先测试方法消耗了大量的时间和资源。此外,由于智能合约的源代码只有一小部分是公开的,所以从源代码的角度进行分析,适用性较小。

6、基于机器学习的方法很容易受到规避技术的影响,虽然符号执行技术能够动态模拟程序执行流程,减少规避技术的影响,但却面临巨大的时间和资源的损耗。随着研究的不断推进,庞氏骗局合约的创建者可能会根据现有的判断机制而进行对抗干扰使得这种检测技术失效。


技术实现思路

1、本发明要解决的技术问题是针对上述现有技术的不足,提供一种基于对抗学习的庞氏骗局智能合约检测方法,实现对庞氏骗局智能合约的检测。

2、为解决上述技术问题,本发明所采取的技术方案是:一种基于对抗学习的庞氏骗局智能合约检测方法,

3、对智能合约操作码序列进行分析,得到包含操作码最大逻辑信息和语义信息的操作码行为序列;

4、根据词向量嵌入模型得到操作码行为序列的词向量表示;

5、构建textcnn模型,并将操作码行为序列的词向量表示作为模型输入,进行庞氏骗局智能合约的判断;

6、运用对抗训练算法给textcnn模型添加扰动,以此克服模型面对对抗攻击时缺乏鲁棒性和泛化性的问题。

7、具体包括以下步骤:

8、步骤1:智能合约数据收集与预处理:搜集标注的以太坊庞氏骗局合约的标签集,从以太坊上爬虫获取庞氏骗局智能合约与非庞氏骗局智能合约的字节码文件;将字节码文件反汇编为操作码文件,得到完整的智能合约操作码序列;

9、步骤2:智能合约操作码行为模式的提取:将智能合约操作码序列构建为包含逻辑语义信息的控制流图g<n,e>,其中,n是控制流图中所有基本块的集合,e是控制流图中所有基本块之间边的集合;

10、首先,基于操作码的停止指令与跳转指令将操作码进行基本块的划分,将基本块看作为控制流图的节点;其次,根据基本块的跳转地址,给基本块与基本块之间添加有向边;针对存在的未连通子图和孤立结点,采用顺序链接的方法,将地址连续的节点之间添加从高到低的有向边,至此控制流图建立完成。

11、控制流图建立之后,遍历控制流图,对控制流图进行逻辑语义信息提取,得到操作码行为序列;本实例采用两种方法遍历控制流图,第一种是从第一个基本块开始纵深遍历,将图的每一个分支作为一条路径,然后将得到的所有路径整合起来,得到操作码的全路径序列;第二种是以第一个基本块为起点,采用深度优先遍历的方法,得到操作码的深度优先路径序列;

12、步骤3:词向量嵌入:在得到操作码行为序列之后,对序列进行分析操作,其中每个操作码作为一个词语,然后将切分后的词语通过词向量嵌入模型word2vec进行训练,得到包含词语关联信息的稠密词向量;

13、步骤4:构建textcnn模型进行庞氏骗局智能合约的判断;根据步骤3得到的稠密词向量,将操作码文本序列进行向量化表示,然后将其作为textcnn中的输入,textcnn捕捉词向量的局部特征进行训练,最后输出为智能合约的可能的类别的概率,判断是否属于庞氏骗局合约;

14、步骤5:将对抗学习机制引入到textcnn模型中进行对抗训练;通过在textcnn的词向量层引入扰动来模仿攻击者对庞氏骗局合约操作码的改动,采用快速梯度法、投影梯度下降法和freeat分别进行textcnn模型训练;在进行模型训练时,对抗样本和正常样本联合训练共同调整模型的参数;并对比分析三种对抗学习算法对模型的鲁棒性能的影响,最后选出最优的对抗训练算法构建庞氏骗局检测模型;

15、步骤6:获取待检测的智能合约,使用步骤5构建的庞氏骗局检测模型对待检测的智能合约进行庞氏骗局检测。

16、采用上述技术方案所产生的有益效果在于:本发明提供的一种基于对抗学习的庞氏骗局智能合约检测方法,对预处理之后的庞氏骗局合约操作码序列进行分析,提出根据操作码的控制流建立控制流图,并得到包含操作码最大语义信息的操作码行为序列,将其作为textcnn模型的输入进行训练,能最大程度的保留智能合约操作码的语义信息,因此提高了模型的分类效果。随后深度分析模型分类结果,得到最优的操作码行为序列。其次,将对抗学习机制引入神经网络模型,生成一个扰动因子对输入的文本向量进行扰动,模仿攻击者对庞氏合约的改动,然后在模型的训练过程中通过调节网络参数让神经网络逐渐适应网络,从而提高模型的有效性和鲁棒性。



技术特征:

1.一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:

2.根据权利要求1所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述方法包括以下步骤:

3.根据权利要求2所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤2将智能合约操作码序列构建为包含逻辑语义信息的控制流图的具体方法为:基于操作码的停止指令与跳转指令将操作码进行基本块的划分,将基本块看作为控制流图的节点;其次,根据基本块的跳转地址,给基本块与基本块之间添加有向边;针对存在的未连通子图和孤立结点,采用顺序链接的方法,将地址连续的节点之间添加从高到低的有向边,进而建立包含逻辑语义信息的控制流图g<n,e>,其中,n是控制流图中所有基本块的集合,e是控制流图中所有基本块之间边的集合。

4.根据权利要求3所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤2采用两种方法遍历控制流图,第一种是从第一个基本块开始纵深遍历,将图的每一个分支作为一条路径,然后将得到的所有路径整合起来,得到操作码的全路径序列;第二种是以第一个基本块为起点,采用深度优先遍历的方法,得到操作码的深度优先路径序列。

5.根据权利要求2所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤4的具体方法为:

6.根据权利要求2所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤4的具体方法为:

7.根据权利要求6所述的一种基于对抗学习的庞氏骗局智能合约检测方法,其特征在于:所述步骤4采用快速梯度法、投影梯度下降法和freeat三种对抗学习算法分别进行textcnn模型训练。


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

技术研发人员:王兴伟,宁小勇,叶楚涵,高睿杰,张建忠,季娜
受保护的技术使用者:东北大学
技术研发日:
技术公布日:2024/1/13
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1