Misa Inu Honeypot
What happened
Misa Inu (MISA) is an Ethereum token deployed on 6 June 2021 at 0x6723164e…39a56c by 0x9fA03C9b…F656C8. Every transfer and transferFrom runs a burnTokenCheck modifier that lets the owner, a stored _safeOwner address and whitelisted wallets move tokens freely, but makes any other holder's transfer revert unless it is sent to the Uniswap V2 router address. A Uniswap sale moves the seller's tokens into the pair, not the router, so ordinary holders can buy but not sell, and the revert shows the misleading message "ERC20: transfer amount exceeds balance".
The whitelist and blacklist setters are disguised as increaseAllowance, addApprove and decreaseAllowance, and a public owner-only _mint lets the owner add unlimited supply to its own balance at any time. De.Fi's REKT database lists MISA as an exit scam/honeypot.
How it happened
- The constructor sets
_ownerand_safeOwnerto itsownerargument and mintsinitialSupply*(10**18)to it. No other code writes_owner. - In
burnTokenCheck, while_owner == _safeOwner, the owner's first outgoing transfer runs_safeOwner = recipient. If that transfer is the liquidity deposit into the Uniswap pair, the pair becomes_safeOwner; the owner can also set it directly withdecreaseAllowance(address safeOwner). - Transfers from
_owneror_safeOwner, or to_owner, always pass, so buys out of a pair set as_safeOwnerwork. Wallets whitelisted throughincreaseAllowance(address[])or the firstapprovecountrecipients of the owner'smultiTransferalso pass. - Every other sender hits
require((sender == _safeOwner)||(recipient == _unirouter), "ERC20: transfer amount exceeds balance"), where_unirouteris 0x7a250d56…F2488D, the Uniswap V2 router. A sale sends tokens to the pair, so it reverts. Wallets marked byaddApprove(address[])are always held to this check. - An unlisted sender passes only if
amount < _sellAmount._sellAmountstarts at 0 and the owner sets it by transferring tokens to itself; a transfer under that limit into_safeOwnerthen blacklists the seller. _mint(address,uint256)is public, restricted to_owner, and always credits_balances[_owner], whatever account is passed. The owner can call it at any time to create new tokens and sell them into the pool, since the owner's own transfers are never blocked.
Protocol details
Evidence
- report Token Sniffer post 1374999601485291522 (seed link) twitter.com
- transaction Misa Inu contract creation transaction etherscan.io
- address Misa Inu (MISA) verified contract code on Etherscan etherscan.io
- analysis Sourcify exact match for 0x6723164e42b0fddf10a572c4cc8d7c5ee639a56c on Ethereum repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.