蜜罐、增发、可暂停转账:新币合约的 8 个致命权限

买进去卖不出来,是最贵的一种教训。

这类合约风险有个共同特征:在买入时完全看不出来。K 线正常,成交量正常,社区活跃。问题只在你想卖出的那一刻才暴露。

这篇把常见的致命权限逐条拆开,说清后果和识别方法。

一、蜜罐(Honeypot)

后果:能买,不能卖。或者只能卖一部分。

实现方式:合约在 transfer 函数里加了判断——如果收款地址是流动性池,直接回滚交易。你发起卖出,链上显示失败,gas 照扣。

变种

识别:静态看代码很难,因为判断条件可以写得很隐蔽。实用方法是模拟交易——用工具在链上模拟一次卖出,看是否成功。GoPlus、Honeypot.is 这类服务做的就是这件事。

重要提醒:蜜罐检测不是 100% 可靠。有些合约设置了触发条件(比如"流动性撤走后才启用"),模拟时看不出来。

二、可暂停转账(Transfer Pausable)

后果:项目方一键冻结所有转账,你的币卡在钱包里。

实现方式:合约里有 paused 状态变量,owner 可以切换。暂停后所有 transfer 直接失败。

为什么危险:这比蜜罐更隐蔽。上线初期 paused = false,一切正常。等项目方收够了,一键暂停。

识别:查合约是否有 pause / paused 相关函数或修饰符。有的话,看 owner 是谁、是否已放弃权限。

三、可增发(Mintable)

后果:项目方可以无限印币,你的持仓被稀释到接近零。

实现方式mint 函数未移除,且 mintAuthority 未放弃。

典型剧本:拉盘 → 增发 → 砸盘 → 跑路。

识别

11111111111111111111111111111111 表示已放弃)

四、黑名单(Blacklist)

后果:项目方可以把你的地址拉黑,你的币直接变废纸。

实现方式:合约维护一个地址黑名单,transfer 时检查。在黑名单里的地址既不能买也不能卖。

与"可暂停转账"的区别:暂停是全冻结,黑名单是精准打击。后者更常用于针对性地收拾某些持有者。

识别:查合约是否有 blacklist / isBlacklisted 相关逻辑。

五、owner 可改余额(Owner Change Balance)

后果:项目方可以直接修改任意地址的持币数量。

实现方式:合约里有直接写 balanceOf 映射的函数。

为什么这条最恶劣:蜜罐、增发至少还有规则。这条是纯粹的无规则——项目方可以给你账户加币,也可以清零。

识别:查合约是否有绕过 transfer 直接修改余额的函数。

六、高买卖税(High Tax)

后果:每一笔交易被抽走 10%–50%。

实现方式transfer 时把一部分代币转给项目方地址。

变种

识别

税率超过 10% 就该警惕。可修改的税率,即使当前是 0%,也等于给了项目方一把随时能用的刀。

七、隐藏 owner(Hidden Owner)

后果:看起来已放弃权限,实际还有个后门地址控制着合约。

实现方式:owner 检查逻辑里塞了额外的地址,或者通过代理合约间接控制。

识别:需要读代码。有经验的人会去找 onlyOwner 修饰符的实际实现,看是否有多个地址可通过。

八、代理合约(Proxy Contract)

后果:合约逻辑可以随时被替换。

机制本身是中性的——升级代理是正规做法。但在新币场景下,它意味着项目方可以在你买入后,把整个合约逻辑换成任意内容。

识别:查合约是否有 delegatecall / 代理模式。


优先级排序

把上面八条按危险程度排个序,实际使用时按这个顺序查:

优先级 风险 处理
1 蜜罐 检测到直接放弃
2 可暂停转账 检测到直接放弃
3 owner 可改余额 检测到直接放弃
4 黑名单 检测到直接放弃
5 可增发 看是否已放弃权限
6 高税率 / 可改税率 看当前值 + 是否可改
7 隐藏 owner 难度高,作为加分项
8 代理合约 中性,记录即可

前四条是一票否决。后面四条根据具体情况判断。


自动化检测怎么做的

ChainSentry 的流程是这样的:

新池子出现
   ↓
提取 base token 地址
   ↓
Solana → RugCheck    EVM → GoPlus
   ↓
命中致命项? ── 是 ──→ 直接丢弃,不推送
   │
   否
   ↓
附加风险标签 → 推送

具体检测项:

Solana(RugCheck)

EVM(GoPlus)

检测到致命项,信号直接被丢掉。不推送,不是标注后推送。


一个必须说明的局限

查询失败不等于安全。

新上线的代币,第三方检测服务往往还没建立索引。RugCheck 对新币经常返回「无法生成报告」。这时正确的做法是标注「风险未检测」,而不是默认「低风险」。

这个区别很重要。有些工具在查不到数据时显示绿色,那是严重的误导。

ChainSentry 的处理是:查不到就明确写「风险未检测」。宁可让用户知道信息缺失,也不给一个虚假的安全感。


最后

这些检测能过滤掉大部分明显的骗局,但不能替代你自己的判断

任何第三方检测都有滞后性和盲区。合约可以通过代理升级,检测服务的规则也在被动跟随。

把风险检测当作过滤网,不是许可证