DRAGON INU Honeypot

Reported loss Not disclosed
BNB Chain
Honeypot

What happened

DRAGON INU (DRAGON INU, BNB Chain, contract 0x6b5d65dc…f47acb) combines a sell block with an owner pause switch. Once an owner-sent transferFrom has stored a recipient in newun, every transfer to that address from anyone but the owner reverts with "please wait"; if that recipient is the trading pair, holders cannot sell through it while buying still works. Separately, rewardbnb() sets a paused flag that makes _transfer revert unless the owner is the sender or recipient, and burn(address,uint256) is an owner-only function that raises the total supply with no cap.

De.Fi's REKT database lists the token as an Exit Scam/Honeypot dated 2021-06-16 and says the owner could disable the transfer function, which restricted users in selling their tokens; the listing gives no loss amount.

How it happened

  1. The constructor gives the whole supply to the deployer, who becomes owner(): _balances[_msgSender()] = _totalSupply; with _totalSupply = 100000000 * 10**9.
  2. transferFrom starts with if(sender != address(0) && newun == address(0)) newun = recipient;, and _transfer then runs if(newun != address(0)) require(recipient != newun || sender == owner(), "please wait");. Because that second check runs after newun is set, only a call whose sender is owner() survives; a non-owner's first call reverts and the assignment is rolled back. So newun is stored when the owner is the sender, for example if the router pulls the owner's tokens into a new pair during the liquidity add.
  3. After that, any transfer or transferFrom whose recipient is newun reverts unless the sender is owner(). A sale through the router is a transferFrom from the holder to the pair, so it reverts. A buy sends tokens from the pair to the buyer, and ordinary wallet-to-wallet transfers pass, so buying works while selling does not. The owner is exempt and can still send tokens to newun.
  4. transfernewun(address _newun) public onlyOwner overwrites newun. Pointing it at an unused address lifts the block; setting it to the zero address removes it until the next transferFrom with owner() as sender stores a recipient again.
  5. A second switch: rewardbnb() onlyOwner whenNotPaused sets paused = true, and _transfer contains require(!paused || sender == owner() || recipient == owner(), "paused");. While paused, every transfer that does not involve the owner reverts, buys as well as sells. bnbpool() clears the flag.
  6. burn(address _to, uint256 _amount) onlyOwner runs _totalSupply = _totalSupply.add(_amount); _balances[_to] = _balances[_to].add(_amount);. Despite its name it mints without a cap, and because the owner is exempt from both the newun and paused checks, the code lets minted tokens be sent to the pair.
  7. These powers stay with the owner unless renounceOwnership() is called. A current-state owner() read on 2026-09-30 still returned the deployer address.

Protocol details

Classification Token
Protocol Type Exit Scam/Honeypot
Affected asset / contract DRAGON INU

Build your security review skills

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