Chubby Akita Honeypot

Reported loss Not disclosed
BNB Chain
Honeypot

What happened

Chubby Akita (CAKITA) is a BNB Chain token deployed on 14 May 2021 at 0x6aadebd7…9b4b9f. The header of its verified source advertises a fair launch on PancakeSwap with 5% redistribution, 5% auto-liquidity, 50% of supply burned, liquidity locked until 2099 and renounced ownership, but the code has no fees at all and no way to renounce or change its _owner. Its transfer check, a modifier named burnTokenCheck, lets the owner, one hidden _safeOwner address and whitelisted wallets move tokens freely, while every other holder's transfer reverts with a fake "transfer amount exceeds balance" error unless it goes to one hard-coded router address.

A sell sends tokens to the trading pair, not the router, so ordinary holders can buy but cannot sell. De.Fi's REKT database lists Chubby Akita as an exit scam and honeypot, describing it as a contract where the owner could stop holders from selling.

How it happened

  1. The constructor sets _owner = owner; and _safeOwner = owner;, then mints the initial supply through _mint, which always credits _balances[_owner].
  2. The owner's first outgoing transfer, while both slots are equal, moves _safeOwner to the recipient: if (_owner == _safeOwner && sender == _owner){_safeOwner = recipient;_;}. If that first transfer is the liquidity deposit, the pair becomes _safeOwner, and transfers out of the pair (buys) always pass.
  3. Other senders that are not whitelisted hit require((sender == _safeOwner)||(recipient == _unirouter), "ERC20: transfer amount exceeds balance");, where _unirouter is hard-coded to 0x05fF2B0D…608C7F. A sell moves tokens from the holder to the pair, so it reverts with a misleading message.
  4. The only other path, if (amount < _sellAmount), starts closed because _sellAmount is 0. The owner can open it by sending tokens to itself (_sellAmount = amount;), and a holder who then sells to _safeOwner is blacklisted: if(recipient == _safeOwner){_blackAddress[sender] = true; _whiteAddress[sender] = false;}.
  5. The owner controls the lists and supply: increaseAllowance(address[]) whitelists, addApprove(address[]) blacklists, decreaseAllowance(address) sets _safeOwner, and _mint is a public owner-only function that adds any amount to the owner's balance. multiTransfer whitelists chosen recipients and sets an unlimited router allowance on their behalf.

Protocol details

Classification Token
Protocol Type Exit Scam/Honeypot
Affected asset / contract CAKITA

Build your security review skills

Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.