Page 234 - 《软件学报》2025年第10期
P. 234

黄静 等: 基于代码控制流图的庞氏骗局合约检测                                                         4631


                  1.1   庞氏骗局合约检测
                    结合庞氏骗局和智能合约的特点, 本文从以下两个维度对庞氏骗局合约进行剖析: 一是通过对合约的代码进
                 行分析, 挖掘合约的控制逻辑; 二是通过对合约的交易记录进行分析, 挖掘合约的交易特点. 目前, 对庞氏骗局合约
                 检测的相关研究可以分为         3  类: 第  1  类是基于源代码检查的庞氏骗局检测方法, 该方法主要是通过手动检查合约
                 源代码来检查识别庞氏骗局; 第          2  类是基于特征工程的庞氏骗局检测方法, 该方法主要是通过设计一组特征来对
                 智能合约进行表示, 然后将其输入到机器学习模型中, 进而实现对庞氏骗局的检测, 不同的基于特征的方法之间的
                 主要区别在于如何选取有效特征; 第           3  类是基于网络嵌入的庞氏骗局检测方法, 该方法主要是通过节点嵌入技术,
                 将交易网络的形成过程、智能合约的操作码等信息整合为一个低维连续向量, 然后将庞氏骗局合约的检测问题建
                 模为一个节点分类任务. 下面对这          3  类方法分别进行介绍.
                    (1) 基于源代码检查的庞氏骗局合约检测方法
                    基于源代码检查的庞氏骗局合约检测方法主要是通过人工检查合约源代码来分析合约的控制逻辑. Chen                                  等
                 人  [18] 通过分析庞氏骗局合约源代码的逻辑, 对         4  种类型的庞氏骗局合约字节码级别模式进行了分析. Bartoletti 等
                 人  [19] 建立了一套将合约归类为庞氏骗局的标准, 通过手动分析开源代码来检索庞氏骗局合约, 并提出使用归一化
                 的  Levenshtein  距离  (normalized Levenshtein distance, NLD) [20] 比较合约相似性, 从而进一步挖掘出隐藏在非开源合
                 约中的庞氏骗局.
                    这种方法的弊端在于只能找到与已知庞氏骗局合约字节码相似的庞氏骗局合约, 代码检查需要大量人力资
                 源, 效率低下.
                    (2) 基于特征工程的庞氏骗局合约检测方法
                    随着机器学习技术和数据挖掘方法在该领域的应用, 提取合约特征用于机器学习模型的特征工程思路成为研
                 究主流. Chen  等人  [21] 首先从智能合约的交易数据和操作码中提取账户特征和单个操作码的频率特征, 然后构建基
                 于机器学习分类模型, 检测智能合约中潜在的庞氏骗局. Zhang                等人  [22] 创新性地增加了合约字节码特征, 然后使用
                 改进的   LightGBM  识别庞氏骗局合约. Shen    等人  [23] 将合约字节码转换成高维矩阵, 并将庞氏骗局合约检测转换为
                 异常检测问题. Zhang    等人  [24] 提出使用操作码的   2-gram  来更客观的反映相邻操作指令的关联. Wang           等人  [25] 同时
                 考虑账户特征和代码特征, 提出一种将合成少数过采样技术                    (synthetic minority over-sampling technique, SMOTE)
                 和长短期记忆网络       (long short-term memory, LSTM) 相结合的智能合约庞氏骗局检测方法       PSD-OL, 以解决庞氏骗
                 局智能合约检测中存在的类不平衡问题. Sun             等人  [26] 通过行为森林来捕获智能合约在其交互过程中的动态特征,
                 可以实现对刚部署的庞氏骗局合约的检测. Jung             等人  [27] 应用数据挖掘技术来提取账户特征以及代码特征, 进而挖
                 掘与庞氏骗局相关的比特币地址. Ibba 等人           [28] 将合约代码解析为抽象语法树        (abstract syntax tree, AST), 通过对
                 AST  进行解析来提取代码特征, 进而实现对庞氏骗局合约的检测. Huynh                 等人  [29] 考虑到庞氏骗局合约的交易特点,
                 提出了仅依赖交易的新型检测模型, 并创新了与时间相关的特征提取方法, 提升了检测模型的鲁棒性. Wang 等人                               [30]
                 也考虑了智能合约交易的时间序列信息, 并使用                LSTM  从庞氏骗局合约中学习时间特征进行模型训练. Zheng              等
                 人  [31] 提出了多视图级联集成模型, 从多个视图提取庞氏骗局合约的特征, 包括字节码、语义以及开发人员特征,
                 提升了模型的性能和鲁棒性.
                    基于特征工程的庞氏骗局检测方法虽然可以较好地实现庞氏骗局合约自动检测, 但是仍存在数据集不平衡、
                 选定的训练特征并未考虑到合约源代码的逻辑关系和模型的可移植性差等问题.
                    (3) 基于网络嵌入的庞氏骗局合约检测方法
                    基于交易网络嵌入的庞氏骗局检测方法主要是通过动态节点嵌入技术, 将交易的形成过程, 智能合约的操作
                 码等整合为一个低维连续向量, 然后使用二元分类器来检测是否为庞氏骗局合约. Liang                          等人  [32] 首次提出通过动
                 态图嵌入实现智能合约庞氏骗局检测的工作, 提出了一种基于数据驱动的智能庞氏骗局检测系统                                DSPSD, 根据账
                 户的操作码和交易数据直接预测合约账户是否实现了庞氏骗局. Jin                    等人  [33] 提出了一个通用异构特征增强模块来
                 捕获账户行为模式的异构特征, 提高了庞氏骗局检测方法的性能. Cai 等人                     [34] 针对特征工程方法中存在的语义特
   229   230   231   232   233   234   235   236   237   238   239