蜜罐(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 函数应该简洁直接:检查余额 → 扣减发送方 → 增加接收方 → 触发事件。任何额外的条件逻辑都需要审查。

信号三:管理员可以修改税率和黑白名单

在源码中搜索 setFeesetMaxFeesetBlacklistsetWhitelist 等函数。如果:

  • 最大可设税率 > 10%:危险
  • 最大可设税率 = 100%:确认为潜在蜜罐
  • 管理员可以拉黑任意地址:你的代币随时可能被冻结

信号四:流动性未锁定

蜜罐项目通常不会锁定流动性,因为它们不打算长期运营。撤流动性 + 卖出限制的组合是最经典的 rug pull 模式。

信号五:部署者有历史前科

查看部署者地址的历史:

  • 是否部署过其他代币合约?那些代币是否还活着?
  • 部署资金来源是否来自混币器?
  • 地址是否已被标记为诈骗地址?

信号六:营销与链上数据不符

社交媒体上大量宣传”即将上线交易所”、“百倍币”,但链上数据却显示:持有者不到 100 人、流动性极低、交易量主要由几个地址贡献。营销热度与链上真实数据严重脱节。

实操:使用工具检测蜜罐

方法一:Honeypot 模拟器

使用 honeypot.is 或 similar tools 模拟买入和卖出交易:

  1. 输入代币合约地址
  2. 工具会在测试环境中模拟买入和卖出
  3. 查看结果:
    • Buy: OK / Sell: OK → 代币可能正常(但不是 100% 保证)
    • Buy: OK / Sell: Failed → 确认蜜罐,绝对不要买
    • Buy: OK / Sell: Tax 85% → 高税蜜罐,卖出到手极少

方法二:手动检查交易记录

在 DexScreener 上找到该代币的交易对页面:

  1. 查看 Recent Trades(最近交易)
  2. 统计买入和卖出的比例
  3. 如果连续 100+ 笔交易全是买入,零卖出——蜜罐
  4. 查看卖出的地址是否都是同一个(可能是项目方的托)

方法三:阅读合约源码

在 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
  • 是否使用可升级代理模式

防范策略

基本原则

  1. 先测后买: 永远先用模拟工具测试,再决定是否购买
  2. 小额试水: 即使通过初步检测,也先买入极小金额,实际尝试卖出验证
  3. 阅读源码: 合约代码是公开的,花 10 分钟阅读 transfer 逻辑可以避免巨大损失
  4. 查看历史: 检查部署者地址的历史和关联项目
  5. 警惕高收益承诺: 任何承诺稳定高收益的代币都应加倍审查

技术防护

  • 使用独立的钱包参与新代币交易(不要用主钱包)
  • 定期检查授权(Revoke),取消对不明合约的无限制授权
  • 使用链上安全 API 做自动化筛查(Onchain Diary 提供代币风险 API,支持蜜罐检测)
  • 关注安全社区的新蜜罐模式报告

真实案例模式

蜜罐骗局通常遵循以下模式:

  1. 部署阶段: 攻击者部署合约,添加初始流动性,创建看似正常的交易环境
  2. 吸引阶段: 通过社群营销、KOL 推荐、虚假交易量吸引买家入场
  3. 积累阶段: 价格持续上涨(因为只能买不能卖),更多投资者被吸引
  4. 收网阶段: 当资金池足够大时,攻击者执行限制功能或撤出流动性
  5. 消失阶段: 攻击者通过混币器或跨链桥转移资金,消失无踪

整个周期可能短至数小时(闪电式蜜罐),也可能长达数周(长期信任建立后收网)。

延伸阅读