HuskyMoon Honeypot
What happened
HuskyMoon (HuskyMoon) is a BNB Smart Chain token whose transferFrom and transfer refuse any transfer to one stored address, newun. newun is filled by the first transferFrom call and the contract owner can change it with transfernewun. If the address that first received tokens through transferFrom is a liquidity pair, every router sell into that pair reverts with "please wait".
De.Fi's REKT database lists the token as an exit scam/honeypot and says the owner could disable the transfer function, and cites an analysis of a similar contract that uses the same newun check.
How it happened
- The constructor mints the full supply, 1,000,000,000,000,000 tokens with 18 decimals, to the deployer, who is the
Ownedowner. transferFrombegins withif(from != address(0) && newun == address(0)) newun = to; else require(to != newun, "please wait");. The firsttransferFromtherefore passes and stores its recipient innewun, whoever that is. This is the call a router makes when it pulls tokens from the owner to add liquidity, so in that setupnewunends up being the pool address. The code itself does not name the pool.- From then on,
transferFrom(from, newun, amount)always reverts.transferhas the same check (require(to != newun, "please wait");). A sell through a router moves the holder's tokens to the pair withtransferFrom, so if the pair isnewunthe sell reverts. The holder's balance is not debited, because the revert happens beforebalances[from] = balances[from].sub(tokens). - Transfers out of
newunare not blocked, because the check only looks at the recipient. A pair paying a buyer withtransferpasses, so purchases can succeed while sells cannot. This is the pattern the cited analysis describes for SafeRocket, not an analysis of HuskyMoon itself. - The owner can change the block at any time with
transfernewun(address _newun). Pointing it at an unused address lifts the block, and setting it toaddress(0)re-arms capture, since the nexttransferFromwill store its recipient again. The owner can also send the contract's own BNB balance to themselves withclearCNDAO(). Neither a call to these functions nor a failed sell was shown by an opened transaction, so these are what the code allows. OwnedhastransferOwnershipandacceptOwnershipbut no renounce function. A read ofowner()on 2026-09-30 returned the deployer address 0x8ff6d6a6…c02719.
Protocol details
Evidence
- report De.Fi REKT database listing for HuskyMoon (proof link: Token Sniffer post, not retrievable) twitter.com
- address HuskyMoon verified source on BscScan bscscan.com
- analysis BSC-SCAM: Stealthy Liquidity Pool Block on PancakeSwap (cryptot3ddybear, 2021-04-11) cryptot3ddybear.gitlab.io
- analysis Sourcify match for chain 56, 0xafe20b233e7e12f533b58e622186b848a7eccf3b repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.