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

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


                 利用多层感知机      (multilayer perceptron, MLP) 对合约样本进行分类, 以实现对庞氏骗局合约的检测和识别.


                  智能合约特征提取                                                                        合约分类

                                                       Word2Vec                    Multilayer perceptron  Ponzi


                                                                                              Non-

                       合约代码             控制流图                                                  Ponzi

                                                                             Transformer + GCN


                                                                               Multi-head attention  Transition function  GCN











                  特征对齐                                                                            特征学习
                                                    图 2 模型总体结构图

                  2.1   控制流图构建
                    智能合约是一个由       Solidity  代码编写的程序, 不同代码块之间可能会存在调用与被调用的关系, 由此带来数
                 据流的转移. 如图     3 所示, 这是一个合约代码的片段, 该合约片段通过调用不同的函数实现了以太币的存入、撤回、
                 回退等一系列功能. 当智能合约执行时, 会自动自上而下地运行, 这意味着每次交易只有一个调用入口. 但是函数
                 功能的调用会发生控制流的改变. 本文考虑到合约代码数据流转移的这一特性, 将合约源代码划分成多个基本块,
                 然后根据控制流的方向, 在不同基本块之间添加边, 以图形的方式还原合约的运行细节.










                                                 ③ 函数调用       ② 函数调用     ① 函数调用
                                         ④ 函数调用










                                                     图 3 合约代码示例
   231   232   233   234   235   236   237   238   239   240   241