返回实战项目
Day 13

【实战5.1】Rug Pull预警系统设计:Token风险评分模型

分析经典Rug Pull案例,设计多维度Token风险评分模型(合约/团队/流动性/交易),构建Token扫描工具PRD

2026-03-20
实战项目Rug Pull风险评分Token安全合约分析预警系统

实战项目 5.1:Rug Pull 预警系统设计

项目信息

项目编号:5.1
所属方向:反欺诈分析
难度:⭐⭐⭐⭐ 高级
预计时间:5-6小时
前置技能:安全基础(Day 20, 55-56)、合约阅读(Day 5-6)

项目目标

识别 Rug Pull 风险信号,设计 Token 风险评分模型和扫描工具

产出清单:
├── ✅ Rug Pull 案例分析库
├── ✅ Token 风险评分模型
└── ✅ Token 扫描工具 PRD

Task 1:Rug Pull 案例分析库

五大经典 Rug Pull 类型

类型 1:流动性抽离(最常见)
═══════════════════════════════════════════════════════════
方式:项目方添加 LP → 吸引买入 → 一次性移除全部 LP
案例:2021 年大量 BSC 土狗币
损失:单个项目 $100K-$10M
检测:监控 LP 移除事件 + LP 锁定状态
难度:⭐ 最容易检测
═══════════════════════════════════════════════════════════

类型 2:无限增发(Mint 攻击)
═══════════════════════════════════════════════════════════
方式:合约中隐藏 mint 函数 → 增发巨量 Token → 砸盘
案例:Meerkat Finance ($31M, 2021)
检测:审查合约是否有 owner-only mint 函数
难度:⭐⭐ 需要读合约
═══════════════════════════════════════════════════════════

类型 3:交易税操纵
═══════════════════════════════════════════════════════════
方式:初始低税率吸引买入 → 后改为 99% 卖出税 → 无法卖出
案例:Squid Game Token ($3.3M, 2021)
检测:检查合约是否有可修改的 fee/tax 参数
难度:⭐⭐⭐ 需要理解合约逻辑
═══════════════════════════════════════════════════════════

类型 4:后门函数
═══════════════════════════════════════════════════════════
方式:合约中隐藏后门 → 可任意转移用户资金
案例:多个 DeFi 项目
检测:审查 transferFrom 权限、代理合约升级权限
难度:⭐⭐⭐⭐ 需要专业审计
═══════════════════════════════════════════════════════════

类型 5:虚假项目(Slow Rug)
═══════════════════════════════════════════════════════════
方式:团队逐步减少开发 → 慢慢卖出 Token → 最终放弃
案例:很多山寨 DeFi 协议
检测:监控团队钱包的 Token 卖出行为 + GitHub 活跃度
难度:⭐⭐⭐⭐⭐ 最难检测(看起来像正常项目)
═══════════════════════════════════════════════════════════

Task 2:Token 风险评分模型

四维度评分系统

Token 风险评分(满分 100 分,越高越危险)
═══════════════════════════════════════════════════════════

维度 A:合约风险(40 分)
├── 合约未开源                         +20 分
├── 存在 owner-only mint 函数           +10 分
├── 交易税 > 5%                        +5 分
├── 交易税可修改                        +10 分
├── 代理合约(可升级)无 Timelock       +10 分
├── 未经任何审计                        +5 分
├── 黑名单函数(可禁止特定地址交易)    +5 分
└── 合约代码与已知骗局相似度 > 80%      +15 分

维度 B:团队风险(20 分)
├── 团队完全匿名                        +10 分
├── 无可验证的历史项目                   +5 分
├── 社交媒体创建时间 < 3 个月            +5 分
├── 团队 Token 无锁仓                   +10 分
└── 团队持有 > 20% 供应量且无 Vesting    +5 分

维度 C:流动性风险(25 分)
├── LP 未锁定                           +15 分
├── LP 集中在 ≤ 3 个地址                +10 分
├── 总流动性 < $50K                     +5 分
├── LP 锁定期 < 6 个月                  +5 分
└── 流动性/市值比 < 5%                  +10 分

维度 D:交易行为风险(15 分)
├── 持有者集中度(Top10 > 50%)         +10 分
├── 买卖比极端(>5:1 或 <1:5)          +5 分
├── 大户持续卖出                         +5 分
├── 交易量突然暴涨 10x(拉盘信号)       +5 分
└── 仅在单一 DEX 有流动性               +5 分

━━━ 评级标准 ━━━
0-25 分:🟢 低风险
26-50 分:🟡 中风险(谨慎投资)
51-75 分:🟠 高风险(不建议投资)
76-100 分:🔴 极高风险(疑似骗局)
═══════════════════════════════════════════════════════════

核心 SQL — Token 持有者集中度分析

-- 项目5.1 Task 2: Token 持有者集中度分析
-- 高集中度 = 项目方/内部人控制大量 Token = 砸盘风险

WITH token_balances AS (
  SELECT
    "to" as holder,
    contract_address as token,
    SUM(CASE WHEN "to" = holder THEN value ELSE 0 END)
    - SUM(CASE WHEN "from" = holder THEN value ELSE 0 END) as balance
  FROM erc20_ethereum.evt_Transfer
  WHERE contract_address = 0x... -- 目标 Token 地址
  GROUP BY "to", contract_address
  HAVING SUM(CASE WHEN "to" = "to" THEN value ELSE 0 END)
       - SUM(CASE WHEN "from" = "to" THEN value ELSE 0 END) > 0
),

ranked AS (
  SELECT
    holder,
    balance,
    balance * 100.0 / SUM(balance) OVER() as pct_supply,
    ROW_NUMBER() OVER (ORDER BY balance DESC) as rank
  FROM token_balances
  WHERE holder NOT IN (
    0x0000000000000000000000000000000000000000,  -- 黑洞
    0x000000000000000000000000000000000000dEaD   -- 销毁地址
  )
)

SELECT
  -- Top 10 持有者集中度
  SUM(CASE WHEN rank <= 10 THEN pct_supply ELSE 0 END) as top10_pct,
  SUM(CASE WHEN rank <= 20 THEN pct_supply ELSE 0 END) as top20_pct,
  COUNT(*) as total_holders,
  -- 基尼系数简化版
  CASE
    WHEN SUM(CASE WHEN rank <= 10 THEN pct_supply ELSE 0 END) > 80
      THEN '🔴 极度集中'
    WHEN SUM(CASE WHEN rank <= 10 THEN pct_supply ELSE 0 END) > 50
      THEN '🟠 高度集中'
    WHEN SUM(CASE WHEN rank <= 10 THEN pct_supply ELSE 0 END) > 30
      THEN '🟡 中度集中'
    ELSE '🟢 分散'
  END as concentration_level
FROM ranked

Task 3:Token 扫描工具 PRD

PRD:TokenGuard — Token 风险扫描器

产品定位:一键扫描 Token 安全风险,帮用户避免 Rug Pull
目标用户:DeFi 交易者、投资者、研究员
核心功能:输入 Token 地址 → 输出风险评分 + 详细报告

用户旅程

Step 1:输入 Token 地址或名称
  └── 支持 Ethereum / BSC / Arbitrum / Base

Step 2:自动扫描(5-10 秒)
  ├── 合约代码分析(开源?审计?危险函数?)
  ├── 持有者分析(集中度?大户动向?)
  ├── 流动性分析(LP 锁定?深度?)
  └── 交易行为分析(买卖比?异常模式?)

Step 3:输出风险报告
  ├── 总评分(0-100)+ 风险等级(🟢🟡🟠🔴)
  ├── 四维度分项评分
  ├── 关键风险项高亮
  ├── 类似 Token 对比
  └── "是否安全"的简明建议

Step 4:持续监控(Pro 功能)
  ├── LP 移除告警
  ├── 大户卖出告警
  ├── 合约升级告警
  └── 推送到 Telegram/Discord

竞品对比

功能TokenGuardToken SnifferGoPlusDe.Fi
合约扫描
持有者分析✅ 深度基础基础
行为监控✅ 实时部分
多链支持4 链2 链多链多链
差异化行为+实时告警简单评分API 服务授权管理

MVP 范围

Phase 1 MVP(4 周):
├── 合约风险扫描(开源/mint/税率/代理)
├── 持有者集中度分析
├── LP 锁定状态查询
├── 风险评分展示
└── 支持 Ethereum 主网

Phase 2(+4 周):
├── 多链支持(BSC/Arbitrum/Base)
├── 交易行为分析
├── 历史风险趋势
└── Telegram Bot 告警

Phase 3(+4 周):
├── ML 模型(相似骗局检测)
├── 实时监控 Dashboard
├── API 接口(B2B)
└── 社区举报 + 评价

面试题准备

Q: 作为 PM,如何设计一个 Token 安全检测产品?

30 秒版本: 四层检测 — (1) 合约层:扫描代码是否开源、有无危险函数(mint/blacklist/可改税率);(2) 持有者层:分析 Top10 集中度和团队锁仓状态;(3) 流动性层:LP 是否锁定、深度是否足够;(4) 行为层:大户卖出趋势、买卖比是否异常。输出一个 0-100 的风险分加简明建议。核心差异化在实时监控告警 — 不只告诉你"现在安不安全",还告诉你"什么时候变危险了"。


下一步

完成本项目后,推荐继续:

  • 项目 5.2:钓鱼攻击监控与防护
  • 项目 5.3:异常交易监控系统