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 合约代码示例

