科研快讯丨破解区块链庞氏困局:PonziHunter以“扰动”对抗代码欺诈
● 论文标题:PonziHunter: Hunting Ethereum Ponzi Contract via Static Analysis and Contrastive Learning on the Bytecode Level
● 作者单位:中山大学软件工程学院
● 研究方向:区块链、庞氏骗局、字节码、代码切片、数据增强、对比学习、控制流、数据流、可达性分析、三地址码
在以太坊生态中,隐藏着一种经典的金融陷阱——庞氏骗局,其核心机制是用新投资者的资金补偿老投资者,如果不再有新投资者加入,庞氏骗局将崩溃,从而导致未获补偿的投资者蒙受损失。
庞氏骗局对区块链生态系统构成了严重威胁,然而要精准识别以太坊庞氏骗局还面临着三个难点:
1. 多数合约闭源导致分析受限
2. 字节码语义理解困难
3. 现有方法对恶意篡改的对抗性鲁棒性差
面对这些挑战,中山大学软件工程学院吴嘉婧教授研究团队给出了他们对于识别以太坊庞氏骗局的解决方案——PonziHunter。其创新在于深入理解庞氏骗局的程序逻辑欺诈模式,并提出了基于代码基本块扰动的数据增强策略。
PonziHunter可以直接分析合约字节码,结合静态分析、代码切片、图增强与对比学习技术,有效提升了在面对对抗样本和闭源合约时的检测精度与鲁棒性,为识别隐藏的金融陷阱提供了更强大的工具。

PonziHunter如何识别庞氏骗局?
PonziHunter的创新点在于其结合了以太坊庞氏骗局在程序逻辑层面的欺诈模式,提出了一种基于代码基本块扰动的数据增强策略,能够有效应对代码篡改欺诈手法所带来的检测威胁。
它基于智能合约的字节码,利用静态分析、代码切片、图数据增强以及对比学习等技术,在面对对抗样本和闭源合约代码等难题时仍能保持高精度判断。

PonziHunter以合约字节码作为输入,并输出合约是否为庞氏骗局的检测结果。其中包含了四个步骤:
S1. 反编译;
S2. 数据建模;
S3. 庞氏逻辑定位;
S4. 对比学习。
每个步骤都对应解决了一个精准识别庞氏骗局的难点:
1. 为了解决第一个适用范围窄难题,PonziHunter在第一步中使用Gigahorse将合约字节码反编译为一种基于三地址码(Three Address Code,TAC)的代码中间表示(Intermediate Representation,IR)。
接着通过解析反编译获得的TAC、Gigahorse提供的每个基本块以及其所属函数名之间的对应关系来为智能合约构造跨函数控制流图。
在第三步中PonziHunter利用代码切片的思想从构建好的合约控制流图中提取庞氏逻辑基本块,这些操作可以通过智能合约中的Transfer API进行定位。
2. 为了对包含CALL操作指令的基本块进行控制流和数据流的可达性分析,从而提取与庞氏骗局逻辑相关的代码基本块,研究团队设计了一个算法(具体细节可从论文原文中了解):

PonziHunter通过这个算法输出的庞氏逻辑基本块集合,增强对代码语义的理解,从而提高对庞氏智能合约的识别准确率。这便解决了字节码语义理解困难的问题。
3. 为了解决最后的对抗鲁棒性差难题,PonziHunter 在第四步中采用双分支架构的图对比学习框架,通过使用庞氏逻辑基本块进行数据增强和构建正负样本对,以帮助图对比学习模型进行预训练来辅助解决该难题。
PonziHunter提出数据增强策略为合约控制流图样本生成不同的视图。数据增强是一种在机器学习和深度学习中常用的技术,其核心目的是:通过人为变换原始数据,生成“等价但不同”的新样本,以此增强模型的泛化能力,提升其鲁棒性。
最终设计出来的PonziHunter在识别庞氏智能合约时的有效性如何呢?能否用在实际生活中呢?接下来让我们一起来看看实验结果吧!
实验分析
PonziHunter从XBlock数据平台收集的以太坊智能合约账户作为评估对象,经过剔除重复合约的预处理操作后,获得了包含6,371个合约账户的数据集。在这些数据集中,每个账户都涵盖合约代码数据、交易历史记录以及欺诈标签等相关信息,其中305个合约账户被平台标记为庞氏欺诈合约。
实验选取了三种类型的检测方法作为实验基准,分别是基于操作码特征的方法、基于规则的方法和基于交易特征的方法。通过分析实验结果可以看到:
1. 在检测庞氏智能合约方面,PonziHunter的整体性能优于现有先进的基准检测方法。一方面,PonziHunter利用控制流和数据流信息,使用基于TAC的控制流图建模来充分描述合约程序在程序逻辑执行层面上的模式;另一方面,PonziHunter 采用对比学习技术,能够有效解决标签稀缺的问题,同时通过数据增强提升了对合约样本的泛化能力。
2. 在进行代码切片算法的移除、控制流图数据增强策略的修改以及对比学习机制的消除这三个模块的消融后,PonziHunter检测效果相较于完整模型而言有着不同程度的下降,说明每个重要部件都对检测的有效性有显著影响。
3. 在面对合约代码恶意篡改时PonziHunter在相同条件下表现出了更强的稳定性和鲁棒性,进一步验证了其在检测庞氏智能合约代码篡改样本方面的优越性。

4、在实际场景中,PonziHunter从26,731 份开源智能合约中成功识别到85个涉嫌庞氏欺诈的可疑合约。研究团队在原文中还给出了三个案例分析,展示了PonziHunter在真实场景中检测到智能庞氏骗局的能力。
应用前景
PonziHunter专注于防止欺诈和提高合约安全性。它可以集成到轻量级区块链浏览器扩展中,使用户能够在未知合约上执行交易前的检测,从而降低潜在风险。这对于智能合约投资者和安全审计专家将会是个强大的工具:
对于投资者,特别是那些技术经验不足的投资者来说,PonziHunter是“安全护栏”,它能提供早期预警,帮助他们在做投资决策前识别潜在的欺诈机制。
对于安全审计专家,PonziHunter是“强力补充”,它提供一种可靠的工具来检测风险模式,尤其是在传统方法可能会失效的新部署或非开源的合约中。
PonziHunter不仅是识别庞氏合约的工具,更是一种识别“恶意合约”的新思路。在智能合约逐步走向复杂与自治的今天,PonziHunter的提出为保障区块链生态系统的安全稳定起到了关键作用。
● 论文原文地址:
https://dl.acm.org/doi/abs/10.1145/3735971
● GitHub 开源地址:
https://github.com/PonziHunter/PonziHunter_repository
● 数据集地址:
https://xblock.pro/#/
● 联系方式:
吴老师,wujiajing@mail.sysu.edu.cn