目录
- Rug Pull (跑路盘) 识别与防御
-
- 1. 什么是 Rug Pull
- 2. 受害者视角:典型剧本
- 3. 常见手法 (按发生位置分类)
-
- 3.1 Liquidity Rug (抽 LP) — 最经典
- 3.2 Mint Rug (无限增发砸盘)
- 3.3 Ownership / Proxy Rug (升级合约逻辑)
- 3.4 Approval Rug (永久授权)
- 3.5 Slow Rug / Soft Rug (慢性跑路)
- 3.6 Exit Liquidation Rug (借贷型跑路)
- 4. 红旗清单 (Red Flags)
- 5. 自动化检测方案
-
- 5.1 静态合约风险扫描
- 5.2 实时链上监控 (核心,最有价值)
- 5.3 行为指标打分 (慢性 rug)
- 5.4 综合分层方案 (推荐)
- 6. 面向普通用户的现成工具
- 7. 给安全平台的实践建议
- 8. 真实案例参考
- 9. 参考资料
- 10. 一句话总结
Rug Pull (跑路盘) 识别与防御
面向新人和安全研究者。读完应该能回答:什么是 rug pull?它和貔貅币 ([[honeypot-pixiu-token]]) 有什么区别?常见手法有哪几类?我作为用户怎么避坑?我作为安全平台怎么自动检测和监控?
1. 什么是 Rug Pull
Rug pull 字面意思是 “把地毯抽走” —— 你站在地毯上,项目方猛地一抽,你直接摔到地上。在 Web3 语境里:
项目方在筹集到足够资金 / 流动性 / 持有者后,通过某种方式把池子里的真金白银 (ETH / BNB / USDT) 卷走,留给散户一堆归零的代币。
和貔貅币的关键区别:
| 用户能不能买 | 能 | 能 |
| 用户能不能卖 | 不能 / 极高税 | 一开始能,后来不能 |
| 项目方核心动作 | 让你永远卖不掉 | 自己先跑 |
| 时间窗口 | 部署即陷阱 | 通常需要等"养盘" |
| 关键合约权限 | _transfer 限制 | LP / Owner / Mint / Proxy |
实际上很多骗局是 “养盘 → 拉盘 → rug → 顺手开貔貅模式” 的组合拳。
2. 受害者视角:典型剧本
Day 0 匿名团队部署合约 + 加 LP (10 BNB) + 在 Telegram/X 建群
Day 1 "网红" / KOL 开始喊单,FOMO 进场
Day 3 K 线连续阳线,$XYZ 涨 10 倍,群里晒收益截图刷屏
Day 7 持有人破万,TVL 200 BNB,看似"基本面良好"
Day 8 凌晨 3 点 (亚洲深夜 / 美国凌晨):
① 项目方调用 removeLiquidity 抽走 LP → 币价瞬间归零
② 或 owner 调用 mint 增发 1 万亿枚砸盘 → 稀释归零
③ 或 owner 调用 setTax(99) 变成貔貅 → 谁都跑不出来
Day 8.1 群被解散 / Telegram 频道删除 / 网站关闭
Day 9 链上分析: 资金通过 Tornado Cash / 跨链桥洗走
整个链路在合约层面通常是合法的——owner 行使了合约赋予 owner 的权力,只是这种权力本来就不该给。
3. 常见手法 (按发生位置分类)
3.1 Liquidity Rug (抽 LP) — 最经典
最朴素的一种,直接调用 router:
// 项目方钱包持有 LP token (因为是它加的池子)
IUniswapV2Router02(router).removeLiquidity(
tokenA,
WETH,
lpAmount,
0, // amountAMin = 0
0, // amountBMin = 0
deployer,
block.timestamp
);
执行后:
- 池子里的 ETH / BNB 全部进入 deployer 钱包
- 池子里只剩项目方代币 (一文不值)
- 用户钱包里的代币变成纯空气
前提条件:deployer 持有 LP token (即流动性没被锁死)。
3.2 Mint Rug (无限增发砸盘)
合约里留了 owner-only 的 mint / _mint 函数:
function mint(address to, uint256 amount) external onlyOwner {
_mint(to, amount);
}
部署初期发行量 100 万,等用户买了一堆后,owner 增发 10 亿全部砸到池子里换走 ETH。用户手里的代币因为通胀稀释到接近 0。
变种:
- Hidden mint:用名字诡异的函数 (updateBalance / airdrop / claim) 偷偷做 mint
- Modifier 绕过:通过 transferFrom + 永久 allowance 给一个内部地址,等价于无限 mint
3.3 Ownership / Proxy Rug (升级合约逻辑)
合约用 EIP-1967 proxy。初期 implementation 看着很干净,等持仓上来 owner 调用 upgradeTo(newImpl),新逻辑里:
- 把 _transfer 改成貔貅
- 加一个 drain() 函数把所有余额转给 owner
- 改税率到 99%
审计陷阱:第一次审计只看了当时的 implementation,没看 proxy admin 权限,不能发现这种风险。
3.4 Approval Rug (永久授权)
不是改合约,而是利用用户给的 ERC-20 授权:
- 项目方诱导用户对一个"质押合约"或"领空投合约"做 approve(spender, MAX_UINT256)
- 等大量地址授权后,spender 调用 transferFrom 把所有授权地址的代币 / USDT 一次卷走
这类常见于:
- 假空投网站 (Connect Wallet → Sign → 实际 approve)
- 假 DEX 前端 (改了路由地址,approve 给攻击者)
- EIP-2612 Permit 钓鱼 (一个签名就授权,连 gas 都不用)
3.5 Slow Rug / Soft Rug (慢性跑路)
不是一次抽光,而是慢慢拿。常见模式:
- 持续高税进 deployer 钱包:每笔交易 5% “marketing tax” 实际进 owner,慢慢累积
- 质押 / 挖矿合约的虚假 reward:用户存 ETH 进去挖代币,实际 ETH 被转走
- “Marketing wallet” 隐性砸盘:deployer 持有 20% 初始供应,分批小额抛售
特征:链上看每天都很正常,但 90 天后回头看 LP 变小一半。
3.6 Exit Liquidation Rug (借贷型跑路)
针对借贷协议或 perp DEX:
- 项目方部署一个"高 APR"的借贷池
- 用某个垃圾代币做抵押,借出真金白银 (USDC / ETH)
- 不还款,让抵押品被清算 (但抵押品是垃圾,根本卖不出)
- 协议产生坏账,存款人 (LP) 承担损失
2022 年的 Mango Markets, Aave 上的 CRV 攻击都是类似手法的衍生。
4. 红旗清单 (Red Flags)
给散户的"投前 5 分钟必查":
| 团队完全匿名 + 没有任何过往项目 | 项目官网 / Twitter / LinkedIn | ⚠️⚠️ |
| 合约未开源 | Etherscan / BscScan 的 Contract 标签 | ⚠️⚠️⚠️ 直接 pass |
| Owner 未 renounce (owner() ≠ 0x000) | 合约 read 函数 | ⚠️⚠️ |
| LP 未锁仓 / 锁仓时间 < 6 个月 | Mudra / Unicrypt / PinkLock | ⚠️⚠️⚠️ |
| 合约里有 mint / setTax / setBlacklist | 源码搜索 | ⚠️⚠️ |
| 合约是 proxy (可升级) | 看是否是 EIP-1967 proxy 模式 | ⚠️⚠️ |
| Top 10 持仓 > 50% | BscScan Holders 标签 | ⚠️⚠️ |
| Deployer 钱包持仓 > 5% 且未锁 | 链上分析 | ⚠️⚠️ |
| 部署时间 < 7 天 | Etherscan Contract Creation | ⚠️ (新盘风险高) |
| TG / Discord 禁止讨论价格 / 频繁踢人 | 社群观察 | ⚠️ |
| APR / 收益高得离谱 (>1000%) | 文档 / DApp UI | ⚠️⚠️⚠️ |
经验法则:红旗 ≥ 2 个直接放弃,不要博侥幸。
5. 自动化检测方案
5.1 静态合约风险扫描
部署时一次性扫描合约的"危险权限"。核心要返回的字段:
risk_report = {
# Owner 风险
"owner_renounced": bool,
"is_proxy": bool, # 可升级 = 高危
"proxy_admin_renounced": bool,
# Mint / Supply 风险
"has_mint_function": bool,
"has_hidden_mint": bool, # mint 但函数名不叫 mint
"max_supply_capped": bool,
# Transfer 风险 (和貔貅币高度重叠)
"can_modify_tax": bool,
"max_buy_tax": float, # 看代码上限
"max_sell_tax": float,
"has_blacklist": bool,
"has_pause": bool, # owner 可暂停所有转账
# 流动性风险
"lp_locked": bool,
"lp_lock_until": timestamp,
"lp_lock_amount_pct": float, # 锁了多少比例 LP
# 持仓集中度
"top10_holding_pct": float,
"deployer_holding_pct": float,
}
工具栈:
- GoPlus Token Security API — 上述大部分字段可以直接拿
- Slither (有源码时) — 检测 mint / proxy / dangerous-modifier
- 自建反编译扫描 — 没源码时用 Panoramix 反编译扫 selector
5.2 实时链上监控 (核心,最有价值)
静态扫描只能告诉你"风险存在",真正止损的是实时监控触发预警。监听以下事件:
| LP token | Transfer event 中 from = locker contract,且 value 大 | 🔴 LP 解锁 (跑路前兆) |
| Pair 合约 | Burn event (即 removeLiquidity) 数额超过池子 10% | 🔴 正在抽 LP |
| Token 合约 | OwnershipTransferred 到一个全新地址 | 🟠 owner 换人 |
| Token 合约 | Upgraded event (proxy 升级) | 🔴 逻辑被改 |
| Token 合约 | Mint / Transfer(from=0x0) 大额 | 🟠 突然增发 |
| Token 合约 | owner 调用 setTax / setBlacklist | 🟠 规则突变 |
| Deployer 钱包 | 大额转账 / 提币到 CEX / Tornado | 🟠 可能在洗钱 |
技术方案:
- 节点 WebSocket 订阅 (eth_subscribe newHeads / logs),实时推送
- Tenderly Alerts / Forta Network — 托管方案
- 自建 indexer:Hive 数仓接入链上交易表,按 token 维度跑分钟级聚合
5.3 行为指标打分 (慢性 rug)
针对 slow rug,离线跑指标:
— 伪 SQL
SELECT
token_address,
— LP 流失速度
(lp_30d_ago – lp_now) / lp_30d_ago AS lp_drain_30d,
— Deployer 净流出
deployer_outflow_usd_30d AS deployer_dump_30d,
— 持有人增长是否停滞
holders_now – holders_30d_ago AS holder_growth_30d,
— 卖单是否被少数地址垄断
unique_sellers_30d / total_sells_30d AS seller_concentration
FROM token_metrics_daily
WHERE block_date = current_date
HAVING lp_drain_30d > 0.3 OR deployer_dump_30d > 50000
这类查询在 Hive 数仓 (参考 hive-data-query-guide.md) 里能跑出全市场 rug 风险榜单,反向用于交易所上币审查 / 钱包风控。
5.4 综合分层方案 (推荐)
[T-0 上币 / 部署时]
Layer 1 静态扫描 (GoPlus + Slither)
↓
[T+0 ~ T+∞ 持续监控]
Layer 2 事件订阅 (LP / Owner / Proxy / Mint)
↓
[T+1d ~ T+30d 慢性指标]
Layer 3 行为打分 (LP drain / deployer dump / 集中度)
↓
[异常触发]
Layer 4 人工 review + 用户预警 (钱包插件 / 通知)
6. 面向普通用户的现成工具
| RugDoc | 专门审 farm / vault / 收益聚合器 rug 风险,给"安全等级" | BSC / Polygon 等 |
| Token Sniffer | 综合百分制评分,覆盖 owner / LP lock / clone scam | ETH / BSC |
| De.Fi Scanner | 综合代币 + 协议 rug 风险报告 | 全链最广 |
| GoPlus Security | 底层 API,DEXTools / Dexscreener 都在用它 | 全链 |
| Mudra / Unicrypt / PinkLock | 查 LP 是否真的锁了、锁到什么时候 | 多链 |
| 钱包插件: Pocket Universe / Wallet Guard / Blockaid | 在签名前实时模拟交易后果,挡 approval rug | EVM 全链 |
实战流程:
7. 给安全平台的实践建议
如果在做"代币 / 项目跑路风险"服务,分阶段建设:
MVP (4 周)
- 接入 GoPlus + Token Sniffer API,覆盖静态风险
- 输出统一 schema 的 risk report (字段见 5.1)
- 风险等级映射:SAFE / LOW / MEDIUM / HIGH / CRITICAL
V2 (3 个月)
- 自建实时事件监控 (LP burn / Owner change / Proxy upgrade / Large mint)
- 推送通道:Webhook / Telegram / Email / 钱包插件
- 对所有"用户已持仓"的 token 自动加监控
V3 (6 个月)
- 离线行为指标打分 (Hive)
- 全市场 rug 风险榜单 (反向用于上币审查)
- 联动 SAR (Suspicious Activity Report) 与合规系统
- 资金流追踪 (deployer → mixer → CEX) 用于事后追赃
8. 真实案例参考
- AnubisDAO (2021) — 募资 13,556 ETH 后 deployer 钱包私钥被"泄露",全部资金消失 (典型 deployer rug)
- SQUID Token (2021) — 蹭《鱿鱼游戏》IP,2 周涨 23 万倍,deployer 抽 LP 跑路
- Thodex (2021) — 土耳其 CEX 跑路,CEO 卷走 20 亿美金
- Compounder Finance (2020) — proxy 升级 rug,逻辑改完直接 drain
- Magnate Finance (2023) — Base 链借贷协议 rug,deployer 与 SolFire / Kokomo 是同一团伙
9. 参考资料
- GoPlus Security Docs: https://docs.gopluslabs.io/
- Forta Network: https://forta.org/
- Tenderly Alerts: https://tenderly.co/alerts
- RugDoc Wiki: https://wiki.rugdoc.io/
- SlowMist 慢雾年报: https://www.slowmist.com/
- “Do Not Rug on Me: Leveraging Machine Learning Techniques for Automated Scam Detection” (Mazorra et al., 2022)
10. 一句话总结
Rug pull 的核心是项目方手里捏着一把"合法的开关"——抽 LP、增发、改税、升级 proxy、卷 approval。 防御的底层逻辑只有一句:把用户从信任开关持有者,迁移到信任开关被锁死本身。 工具都只是辅助,看到红旗别 FOMO,比任何检测器都管用。
