速度是矛,安全是盾
在 Solana 的土狗战场上,活下来比赚大钱更重要。 很多新手写出的机器人,速度极快,能在第 0 区块买入,但一天下来亏光了所有 SOL。原因很简单:他们买入的代币中,有 80% 是貔貅盘(无法卖出)或瞬间撤池子(Rug Pull)。
本章将深入解剖骗子的常用手段,并教你如何用代码构建防御系统。
4.1 硬编码风险:合约层面的陷阱
这些风险直接写在代币的 Mint 账户数据中,通过 RPC 的 getAccountInfo 即可查出。
1. 无限印钞权 (Mint Authority)
- 原理:代币的
Mint Authority字段如果不为null,说明管理员有权随时凭空铸造新代币。 - 骗局:代币价格上涨 10 倍后,管理员直接给自己铸造 10 亿枚代币,然后一次性抛售,池子瞬间归零。
- 代码检测:
typescript
const mintInfo = await getMint(connection, mintAddress); if (mintInfo.mintAuthority !== null) { return "RISK: 尚未放弃增发权"; }
2. 冻结黑名单 (Freeze Authority) —— 貔貅的核心
- 原理:如果
Freeze Authority存在,管理员可以冻结任意持有者的账户。 - 骗局:你买入后,机器人检测到你是一条"大鱼",立即冻结你的账户。你只能看着 K 线涨,但点卖出时永远报错。
- 代码检测:
typescript
if (mintInfo.freezeAuthority !== null) { return "DANGER: 存在冻结权限 (极高貔貅风险)"; }
4.2 流动性陷阱:LP 锁定与撤池子
这是最令人困惑的概念,但必须理解。
什么是 LP Token?
当项目方在 Raydium 创建池子时,他们存入 Token + SOL。作为回报,Raydium 会给他们一张"存款凭证",这就是 LP Token。 谁持有 LP Token,谁就有权把池子里的钱取出来。
什么是 Rug Pull (撤池子)?
如果 LP Token 还在项目方手里,他随时可以调用 remove_liquidity,把池子里的 SOL 全部拿走,留下毫无价值的代币。
什么是"已锁池子" (Burnt / Locked)?
为了自证清白,项目方必须处理掉这些 LP Token:
- 销毁 (Burn):把 LP Token 发送到
11111111111111111111111111111111或 Dead 地址。这是最安全的,意味着永远没人能撤池子。 - 锁定 (Lock):把 LP Token 发送到第三方锁定合约(如 Streamflow, PinkSale),锁定一定时间。
狙击机器人必须检查 Raydium 的 LP Token 账户余额是否为 0,或者 LP Token 是否被大量销毁。
4.3 筹码分布:老鼠仓与捆绑包
捆绑买入 (Bundled Supply)
现在的骗子很聪明,他们使用工具(如 Jito Bundle)在部署代币的同一笔交易中,用 10 个不同的新钱包买入 80% 的代币。
- 表面看:Mint 权限放弃了,LP 烧了,好像很安全。
- 实际上:前 10 个持币地址全是项目方自己人。
- 结局:他们会分批砸盘出货。
检测策略:
- 检查前 10 持币地址的 SOL 余额来源(是否来自同一个分发账户)。
- 计算前 10 持币占比。如果 > 30% ~ 50%,风险极高。
4.4 终极防御:交易模拟 (Simulation)
有些貔貅盘非常隐蔽,它们修改了合约逻辑(Token-2022 标准支持 Transfer Hook),或者在代码里写了 if (buyer == bot) revert。静态检查很难发现。
最有效的办法是:在买入前,先模拟一遍。
Solana 提供了 simulateTransaction API。你的机器人应该构建一笔"买入"交易,发给 RPC 进行模拟执行。
- 模拟买入:如果报错,说明合约有问题。
- 模拟卖出:更进阶的做法是,模拟买入后,立即在同一个模拟会话中模拟卖出。如果买入成功但卖出失败,100% 是貔貅。
- 检查滑点:如果模拟结果显示,你买入 1 SOL,立刻卖出只能拿回 0.1 SOL(扣除 Gas 后),说明该代币有极高的转账税 (Transfer Fee)。
typescript// 伪代码:模拟交易防御 const simulation = await connection.simulateTransaction(transaction); if (simulation.value.err) { console.log("❌ 模拟执行失败,放弃买入"); return; } const logs = simulation.value.logs; if (checkLogsForHoneypot(logs)) { console.log("❌ 日志显示异常,可能是貔貅"); return; }
总结:安全评分卡
在右侧的交互式审计器中,我们模拟了一个简化的评分系统。一个合格的"金狗" (Gem) 应该满足:
- ✅ Mint Authority = null
- ✅ Freeze Authority = null
- ✅ LP Token 已销毁 (Burned > 95%)
- ✅ 前 10 持仓 < 30%