MOONSEASON Honeypot

Reported loss Not disclosed
BNB Chain
Honeypot

What happened

MOONSEASON is a BNB Smart Chain token whose transfer functions refuse to send tokens to one stored address, newun. The first transferFrom call made while newun is unset saves its recipient there, and after that any transfer or transferFrom to that address reverts with "please wait". If that recipient is the liquidity pair, sells fail while buys do not.

De.Fi's REKT database lists the token as an exit scam/honeypot dated 2021-04-11 and says the contract owner could disable the transfer function, which restricted users in selling their tokens. The code has no on/off switch for transfers; the restriction is the newun check and the owner's transfernewun setter.

How it happened

  1. The source header advertises a 1% liquidity fee, a 1% holder reflection and a burn. The contract contains no fee, reflection or burn logic. The constructor mints the whole supply to the deployer, balances[owner] = _totalSupply;, and newun starts as the zero address.
  2. transfer contains require(to != newun, "please wait");, so no caller, the owner included, can send tokens to the stored newun address.
  3. transferFrom starts with if(from != address(0) && newun == address(0)) newun = to; else require(to != newun, "please wait");. The first call with a non-zero from while newun is unset skips the require, completes, and saves its to as newun. Every later transferFrom to that address reverts.
  4. A router-based sell moves tokens with transferFrom(holder, pair, amount). If newun is the pair, that call reverts, while a pair-to-buyer transfer goes to the buyer and passes. The code alone does not show which address became newun for this token. The seed blog describes the pattern as newun becoming the PancakeSwap pair during the first liquidity add, in other tokens.
  5. The owner can call transfernewun(address _newun) public onlyOwner, which assigns newun directly. Setting it to the zero address lets the next transferFrom with a non-zero from capture a new recipient, and pointing it at an address no one uses lifts the block. Ownership moves only by transferOwnership and acceptOwnership; there is no renounce function.

Protocol details

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

Build your security review skills

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