Findora Honeypot

Reported loss Not disclosed
Ethereum
Honeypot

What happened

This Ethereum token, named Findora (FRA), blocks ordinary holders from selling by default. Every transfer and transferFrom passes through the burnTokenCheck modifier. The owner, the _safeOwner address and owner-whitelisted wallets can send freely, and any holder can send to the owner.

While _sellAmount keeps its starting value of 0, every other transfer from an ordinary holder is rejected unless the recipient is the hard-coded Uniswap V2 router address. A Uniswap sale sends tokens to the pair, not the router or the owner, so it reverts with a fake ERC20: transfer amount exceeds balance error. The owner controls whitelist and blacklist setters disguised as increaseAllowance and addApprove, can reassign _safeOwner through decreaseAllowance, and can mint unlimited tokens through a public _mint.

De.Fi's REKT database lists the token as an exit scam/honeypot; no transaction evidence of losses was found.

How it happened

  1. The constructor sets both _owner and _safeOwner to the owner address passed at deployment and mints the supply to it.
  2. The first transfer the owner makes while _owner == _safeOwner reassigns _safeOwner = recipient, giving that recipient unrestricted sending rights; the owner can also set it directly with decreaseAllowance.
  3. The check if (sender == _owner || sender == _safeOwner || recipient == _owner) lets any transfer to the owner through. For other transfers from a holder who is neither whitelisted nor blacklisted, _sellAmount starts at 0, so amount < _sellAmount is false and the code falls to require((sender == _safeOwner)||(recipient == _unirouter), ...). That tests the sender, which cannot be _safeOwner at this point, so the transfer succeeds only if the recipient is the router.
  4. Selling through Uniswap moves the holder's tokens to the pair contract, which is neither the owner nor the router, so the sale reverts with a message that imitates an insufficient balance.
  5. The owner can raise _sellAmount by transferring to itself. A holder's transfer below that amount then goes to any recipient, but one sent to _safeOwner also puts the sender on the blacklist, after which it can send only to the owner or the router.
  6. Separately, the owner can whitelist wallets (including through multiTransfer, which also pre-approves the router for them), blacklist any address, and mint any amount to itself.

Protocol details

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

Build your security review skills

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