SuperMoon Token Honeypot
What happened
SuperMoon Token (SUPERMOON) is an ERC20 token on Ethereum at 0xb966dfe3…54c124. Its transfer and transferFrom functions reject any transfer whose recipient equals a stored address named newun. In transferFrom, the first call made while newun is empty stores that call's recipient as newun, and the owner can later change it with transfernewun.
A researcher's write-up of this same code pattern on BSC tokens describes newun being set to the liquidity pool address when liquidity is added, which blocks sells with a "please wait" error. De.Fi's REKT database lists SuperMoon Token as an Exit Scam/Honeypot and says the contract owner could disable the transfer function, which restricted users in selling their tokens. No transaction was opened that shows what newun held here.
How it happened
- The constructor sets
symbol = "SUPERMOON",name = "SuperMoon Token",decimals = 8and_totalSupply = 100000000000000000000000, and credits the whole supply to the deployer withbalances[owner] = _totalSupply;. transferstarts withrequire(to != newun, "please wait");, so no direct transfer can end at thenewunaddress.transferFrombegins withif(from != address(0) && newun == address(0)) newun = to; else require(to != newun, "please wait");. Whilenewunis empty, the firsttransferFromcall skips the check, goes through, and stores its own recipient innewun. Adding tokens to a DEX pool through a router usestransferFrom, so the pool address is a natural recipient of that first call; the researcher's write-up describes this for the pattern, and the code here does not show which address was stored.- After
newunis set, every latertransferFromandtransferto that address reverts with "please wait". A holder selling through a router sends tokens to the pool withtransferFrom, so the sale reverts if the pool isnewun. The owner is not exempt from this check, and transfers to other addresses still pass. - The owner can change the target at any time with
function transfernewun(address _newun) public onlyOwner { newun = _newun; }. Pointing it at an unused address lifts the block; setting it to the zero address makes the nexttransferFromrecipient becomenewunagain.Ownedhas no renounce function. clearCNDAOis owner-only and sends the contract's own ETH balance to the owner:_owner.transfer(address(this).balance);.- What happened: De.Fi's REKT database lists this token as an Exit Scam/Honeypot dated 2021-04-25. No sale, liquidity or
transfernewuntransaction was opened, so none of those events is claimed.
Protocol details
Evidence
- report @Token_Sniffer incident report twitter.com
- report Sourcify copy of the verified source repo.sourcify.dev
- report De.Fi REKT database listing (proof link, tweet not retrievable) twitter.com
- address Etherscan verified source, SuperMoon Token (SUPERMOON) etherscan.io
- analysis BSC-SCAM: Stealthy Liquidity Pool Block (cryptot3ddybear) cryptot3ddybear.gitlab.io
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.