ChildDoge Honeypot

Reported loss Not disclosed
BNB Chain
Honeypot

What happened

De.Fi's REKT database lists ChildDoge (BNB Chain, contract 0x0671d181…a6d574) as an exit scam/honeypot dated 2021-06-23, stating that the contract owner could disable the transfer function and so restrict users from selling. In the verified source, a variable newun acts as a blocked address: transfer and transferFrom both revert with "please wait" when the recipient equals newun. The first transferFrom call with a non-zero sender sets newun to its recipient, and the owner can overwrite it with transfernewun.

A DEX sell sends tokens to the pool through transferFrom, so it reverts once newun holds the pool address. The contract was deployed on 2021-06-23; no loss figure is listed.

How it happened

  1. The constructor sets owner = msg.sender (via Owned) and credits the whole supply to it: balances[owner] = _totalSupply;. The deployer, 0x30EA6880…184A77, is also the current on-chain owner.
  2. transfer carries the guard require(to != newun, "please wait");, and transferFrom starts with if(from != address(0) && newun == address(0)) newun = to; else require(to != newun, "please wait");.
  3. While newun is still zero, the first transferFrom from a non-zero sender stores its recipient in newun and goes through. The source does not say who that recipient is; the linked blog describes the same pattern capturing the liquidity pool address when liquidity is first added, on other tokens.
  4. After that, every transferFrom and transfer whose recipient is newun reverts. A DEX sell has the router call transferFrom(holder, pool, amount), so with the pool address stored in newun the sell reverts; the holder's balance is not debited because the require runs first.
  5. Buys are not covered by the guard: the pool sends tokens out with transfer(buyer, amount), which only fails if the buyer is newun.
  6. The owner holds the switch: function transfernewun(address _newun) public onlyOwner { newun = _newun; }. Pointing it at an unused address lifts the block, while setting it to zero would let the next non-zero transferFrom capture a new recipient and block it.
  7. Separately, clearCNDAO() is owner-only and sends the contract's native-coin balance to the caller, and the ChildDoge contract declares a payable fallback so it can receive BNB.
  8. What happened, per the listing: De.Fi's REKT database lists the token as an exit scam/honeypot where the owner could disable transfers so users could not sell. No transaction was opened, so the value of newun, whether transfernewun was called, and any amount lost are not established.

Protocol details

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

Build your security review skills

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