Specter842/ChainGuard

GitHub: Specter842/ChainGuard

一个融合机器学习与以太坊智能合约的端到端反洗钱检测平台。

Stars: 0 | Forks: 0

# 基于区块链与机器学习的反洗钱系统 一个全栈 AML 检测平台,结合经过训练的机器学习欺诈分类器与以太坊智能合约,用于标记并不可变地记录可疑金融交易。构建于 Django 并集成 Web3.py 以实现链上交互。 ## 概述 本系统反映了现代金融机构如何开始利用 AI 增强合规运营。它结合了两层独立的检测机制: 1. **基于 ML 的欺诈分类器** — 在真实以太坊交易数据上训练的随机森林模型,用于评估钱包行为并预测欺诈活动 2. **链上智能合约** — 部署在以太坊网络的 Solidity 合约,用于监控实时转账并在超过可配置的 ETH 阈值时触发 `SuspiciousTransaction` 事件 两层数据共同输入 Django 后端,提供预测结果并维护本地合规记录。 ## 架构 ``` Ethereum Network │ ▼ AntiMoneyLaundering.sol ──── SuspiciousTransaction events │ ▼ Web3.py Integration (Django) │ ├── ML Inference Layer (finalized_model.sav) │ └── Random Forest Classifier │ └── Trained on Ethereum Fraud Detection Dataset │ └── Django REST API └── SQLite / PostgreSQL ``` ## 功能特性 - **随机森林欺诈分类器** — 基于 10,000+ 以太坊钱包交易训练,包含特征工程、异常值移除与相关性分析 - **Solidity 智能合约** — 包含存款、取款与转账函数;对超过可配置 ETH 阈值的交易触发链上事件 - **智能合约编译与部署流水线** — 使用 `py-solc-x` 与 Web3.py - **Django 后端** — 通过 REST API 提供 ML 预测服务 - **模型对比** — 评估了逻辑回归、SVM(带 GridSearchCV 的 RBF 核)与随机森林;基于更优的召回率与 F1 分数选择随机森林作为最终模型 - **PCA 实验** — 对降维效果与全特征集进行测试;最终保留全特征以获得更好性能 - **ROC 曲线分析** — 用于阈值调节 ## 技术栈 | 层级 | 技术 | |---|---| | ML 与数据 | Python, scikit-learn, Pandas, NumPy, Matplotlib, Seaborn, Plotly | | 区块链 | Solidity, Web3.py, py-solc-x, Infura | | 后端 | Django 4.1, Django REST Framework, Web3.py | | 数据库 | SQLite(开发),PostgreSQL(兼容) | | 模型持久化 | Pickle | ## ML 流水线 ### 数据集 - **来源:** [Ethereum Fraud Detection Dataset](https://www.kaggle.com/datasets/vagifa/ethereum-frauddetection-dataset)(Kaggle) - **目标:** `FLAG` — 指示钱包是否具有欺诈行为的二元标签 ### 预处理 - 移除零方差特征与高相关特征对(阈值 > 0.9) - 数值型空值使用均值填充;类别型空值使用众数填充 - 对 ERC20 代币类型类别特征进行标签编码 - 对训练/测试集独立应用 MinMax 归一化(0–1 范围) - 对 `Time Diff` 与 `Avg min between received tnx` 中的极端值进行异常值移除 ### 评估模型 | 模型 | 说明 | |---|---| | 逻辑回归 | 基线模型;对欺诈类召回率较低 | | SVM(RBF,C=9) | 使用 GridSearchCV 调参;速度较慢,收益有限 | | **随机森林** | **入选 — 在欺诈类上拥有最佳 F1 与召回率** | ### 最终模型 - `RandomForestClassifier(n_estimators=25, max_features=5, random_state=101)` - 通过 Pickle 持久化为 `finalized_model.sav` - 在运行时由 Django 加载用于推理 ## 智能合约 **文件:** `Anti-Money-Laundering.sol` ``` contract AntiMoneyLaundering { address public admin; uint public threshold; // Default: 100 ETH mapping(address => uint) public balances; function transfer(address to, uint amount) public { ... } event SuspiciousTransaction(address from, address to, uint amount); } ``` 该合约在发送方转账后余额超过配置阈值时触发 `SuspiciousTransaction` 事件,创建**不可篡改的链上审计轨迹**,无法被更改或删除。 使用 `py-solc-x`(Solidity 0.8.0)编译并通过 Web3.py 部署到 Infura。 ## 项目结构 ``` ├── model_training.ipynb # Full ML pipeline: EDA → preprocessing → training → evaluation ├── AML_Smart_Contract.ipynb # Smart contract compilation and Ethereum deployment ├── Anti-Money-Laundering.sol # Solidity contract source ├── compiled_code.json # ABI + bytecode output ├── finalized_model.sav # Trained Random Forest model (Pickle) ├── manage.py # Django entry point ├── requirements.txt # Python dependencies └── db.sqlite3 # Local development database ``` ## 安装与设置 ### 前提条件 - Python 3.9+ - Node.js(可选,用于本地以太坊节点) - 可访问 [Infura](https://infura.io/) 以获取以太坊 RPC 权限 ### 安装依赖 ``` pip install -r requirements.txt ``` ### 运行 Django 服务 ``` python manage.py migrate python manage.py runserver ``` ### 编译并部署智能合约 打开 `AML_Smart_Contract.ipynb` 并运行所有单元格。部署前请务必使用您自己的项目密钥更新 Infura 提供者 URL。 ### 训练模型(可选 — 已提供预训练模型) 打开 `model_training.ipynb` 并运行所有单元格。最终单元格会将 `finalized_model.sav` 保存到磁盘。 ## 关键概念演示 - **端到端 ML 流水线** — 从原始数据摄取到生产环境模型持久化 - **区块链 + AI 融合** — 两种独立欺诈检测机制协同工作 - **链上不可变性** — 可疑交易事件永久写入以太坊账本 - **智能合约开发** — Solidity 编写、编译、ABI 提取与 Python 部署 - **合规感知设计** — 基于阈值的标记机制对应现实中的 AML 监管框架(FATF、FinCEN) ## 数据集来源 Vagif A. — [Ethereum Fraud Detection Dataset](https://www.kaggle.com/datasets/vagifa/ethereum-frauddetection-dataset) 在 Kaggle 上的数据集。 ## 许可证 MIT License
标签:AML, Apex, Django, Solidity, Web3.py, 不可变审计, 事件检测, 交易分类, 以太坊, 以太坊交易, 区块链, 反洗钱, 合规平台, 异常检测, 数据分类, 智能合约, 机器学习, 模型比较, 欺诈检测, 测试用例, 特征工程, 逆向工具, 金融科技, 链上日志, 阈值监控, 随机森林