蜜罐(Honeypot),中文社区也叫”貔貅盘”——貔貅只进不出,就像这类代币:你能买入,但永远无法卖出。
这是加密货币最常见的骗局之一。攻击者创建一个看似正常的代币合约,通过精心设计的代码让卖出交易始终失败或到手段位极少。投资者看着价格上涨却无法变现,最终本金全部锁定在合约里。
核心要点: 蜜罐代币的核心特征是——买入正常,卖出失败或到手段位极低。识别方法包括:检查交易历史是否只有买入没有卖出、用模拟工具测试卖出、阅读合约源码中的 transfer 条件逻辑。
蜜罐的工作原理
蜜罐合约通常通过以下方式阻止卖出:
1. 白名单机制
合约在 transfer() 函数中加入条件:只有白名单地址可以转出代币。普通投资者不在白名单内,卖出交易自动 revert(回滚)。
2. 动态税率
合约管理员可以在每次卖出时将税率设为 100%。表面上买卖税是 5%,但在你点击卖出的瞬间,管理员把税率拉满,你的代币全部变成”税”,到手为零。
3. 余额条件
合约加入逻辑:当持有者余额低于某个阈值时无法转出,或者当总供应量变化时锁定所有转账。这些条件表面上保护代币经济模型,实际上锁死了普通持有者。
4. 时间锁
合约规定代币持有一定时间后才能卖出(如 30 天、90 天),或者每个地址每天只能卖出极小比例。虽然这本身不一定是骗局(合法项目也可能用时间锁做代币经济学),但如果搭配其他红旗信号就需要警惕。
6 个识别信号
信号一:交易记录只有买入没有卖出
这是最直接的信号。在 Etherscan 或 DexScreener 上查看代币的交易历史:
- 如果几百笔交易全是 Swap Buy,没有一笔 Swap Sell——蜜罐概率极高
- 偶尔有几笔卖出但金额极小——可能是动态税率蜜罐,管理员偶尔放行小额卖出制造正常假象
- 买入和卖出正常交替——健康代币
信号二:合约源码未验证或逻辑复杂
未验证源码的合约 = 你无法看到代码做了什么。即使源码已验证,如果 transfer() 函数中包含大量 if/else 条件、调用外部合约、引用状态变量控制转账权限——需要警惕。
健康的 ERC-20 代币的 transfer 函数应该简洁直接:检查余额 → 扣减发送方 → 增加接收方 → 触发事件。任何额外的条件逻辑都需要审查。
信号三:管理员可以修改税率和黑白名单
在源码中搜索 setFee、setMaxFee、setBlacklist、setWhitelist 等函数。如果:
- 最大可设税率 > 10%:危险
- 最大可设税率 = 100%:确认为潜在蜜罐
- 管理员可以拉黑任意地址:你的代币随时可能被冻结
信号四:流动性未锁定
蜜罐项目通常不会锁定流动性,因为它们不打算长期运营。撤流动性 + 卖出限制的组合是最经典的 rug pull 模式。
信号五:部署者有历史前科
查看部署者地址的历史:
- 是否部署过其他代币合约?那些代币是否还活着?
- 部署资金来源是否来自混币器?
- 地址是否已被标记为诈骗地址?
信号六:营销与链上数据不符
社交媒体上大量宣传”即将上线交易所”、“百倍币”,但链上数据却显示:持有者不到 100 人、流动性极低、交易量主要由几个地址贡献。营销热度与链上真实数据严重脱节。
实操:使用工具检测蜜罐
方法一:Honeypot 模拟器
使用 honeypot.is 或 similar tools 模拟买入和卖出交易:
- 输入代币合约地址
- 工具会在测试环境中模拟买入和卖出
- 查看结果:
- Buy: OK / Sell: OK → 代币可能正常(但不是 100% 保证)
- Buy: OK / Sell: Failed → 确认蜜罐,绝对不要买
- Buy: OK / Sell: Tax 85% → 高税蜜罐,卖出到手极少
方法二:手动检查交易记录
在 DexScreener 上找到该代币的交易对页面:
- 查看 Recent Trades(最近交易)
- 统计买入和卖出的比例
- 如果连续 100+ 笔交易全是买入,零卖出——蜜罐
- 查看卖出的地址是否都是同一个(可能是项目方的托)
方法三:阅读合约源码
在 Etherscan 上阅读已验证的合约源码,重点检查:
function transfer(address to, uint256 amount) public override returns (bool) {
// 正常合约:简单余额检查和转账
// 蜜罐合约:可能包含类似以下逻辑
// require(_msgSender() == owner, "Not allowed");
// 或 require(!isBlacklisted[_msgSender()], "Blacklisted");
// 或 require(amount <= maxTxAmount, "Exceeds limit");
}
如果你的 Solidity 阅读能力有限,至少检查 transfer 函数中是否有 require 条件引用了状态变量(而非固定的常量),这些状态变量通常可以被管理员动态修改。
高级:动态蜜罐
传统的蜜罐合约从一开始就阻止卖出,容易识别。更高级的变种是动态蜜罐——合约在初始阶段一切正常,买入卖出都顺畅。当资金池积累到一定规模后,管理员远程触发限制功能(修改税率、启动黑名单、暂停交易),一夜之间锁死所有持有者。
识别动态蜜罐的关键:
- 管理员是否保留了对关键参数的控制权(即使当前值看起来正常)
- 是否有
setFee函数且最大值 > 10% - Owner 权限是否已放弃(
renounceOwnership) - 是否使用可升级代理模式
防范策略
基本原则
- 先测后买: 永远先用模拟工具测试,再决定是否购买
- 小额试水: 即使通过初步检测,也先买入极小金额,实际尝试卖出验证
- 阅读源码: 合约代码是公开的,花 10 分钟阅读 transfer 逻辑可以避免巨大损失
- 查看历史: 检查部署者地址的历史和关联项目
- 警惕高收益承诺: 任何承诺稳定高收益的代币都应加倍审查
技术防护
- 使用独立的钱包参与新代币交易(不要用主钱包)
- 定期检查授权(Revoke),取消对不明合约的无限制授权
- 使用链上安全 API 做自动化筛查(Onchain Diary 提供代币风险 API,支持蜜罐检测)
- 关注安全社区的新蜜罐模式报告
真实案例模式
蜜罐骗局通常遵循以下模式:
- 部署阶段: 攻击者部署合约,添加初始流动性,创建看似正常的交易环境
- 吸引阶段: 通过社群营销、KOL 推荐、虚假交易量吸引买家入场
- 积累阶段: 价格持续上涨(因为只能买不能卖),更多投资者被吸引
- 收网阶段: 当资金池足够大时,攻击者执行限制功能或撤出流动性
- 消失阶段: 攻击者通过混币器或跨链桥转移资金,消失无踪
整个周期可能短至数小时(闪电式蜜罐),也可能长达数周(长期信任建立后收网)。