EUROTRIP Honeypot

Reported loss Not disclosed
BNB Chain
Honeypot

What happened

EUROTRIP (EURO) is a BNB Smart Chain token that blocks transfers to one stored address, newun. The first transferFrom call sets newun to its recipient, and from then on transfer and transferFrom both revert with "please wait" for any recipient equal to newun, with no exemption for the owner or any other sender. The owner can change newun with transfernewun.

De.Fi's REKT database lists the token as an exit scam/honeypot and says the contract owner could disable the transfer function, which restricted users in selling their tokens.

How it happened

  1. The constructor sets name EUROTRIP, symbol EURO, 8 decimals and gives the whole supply to the deployer: balances[owner] = _totalSupply;. newun starts as the zero address.
  2. The first transferFrom call with a non-zero from runs if(from != address(0) && newun == address(0)) newun = to;. That call sets newun to its to address and skips the check in the else branch. The code does not require the caller to be the owner.
  3. From then on every transfer runs require(to != newun, "please wait"); and every other transferFrom runs else require(to != newun, "please wait");. No sender is exempt, so no holder (including the owner) can send tokens to newun. Sending to any other address still works, so a recipient chosen as the first transferFrom target would be unreachable for sales. The contract does not say which address that is, and none is established here.
  4. A researcher write-up of the same transferFrom code describes the first newun assignment as happening when liquidity is first added on the DEX, which makes the liquidity pool the blocked address and stops holders swapping back to BNB.
  5. The owner can move or lift the block with transfernewun(address _newun). Pointing newun at an unused address lets transfers to the former target succeed, while setting it to the zero address re-arms capture: the next transferFrom with a non-zero from stores its to as the new newun.
  6. Separately, clearCNDAO() lets the owner send any BNB the contract holds to itself with _owner.transfer(address(this).balance);.

Protocol details

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

Build your security review skills

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