SteadyGainz Honeypot

Reported loss Not disclosed
BNB Chain
Honeypot

What happened

SteadyGainz (SgainZ) is a BNB Chain token deployed on 2 March 2021 at 0x2d2a9604…c459c6, which minted 1,000,000,000 tokens to the deployer 0xa55e7C1e…18A6Ae. Every transfer runs calculateFeesBeforeSend, which reverts with "Error: Can not sell this token" when the recipient is flagged in PanCakeSwapReciever. The owner can flag any address, including the PancakeSwap pair, with setPanCakeSwapReciever, and that setter is not limited by the renounceWhitelist switch.

Once the pair is flagged, buys still work but every sale into the pair reverts. The deployer is still the owner, and De.Fi's REKT database lists SteadyGainz as an exit scam/honeypot.

How it happened

  1. The constructor calls _transferTO(msg.sender, 1000000000e9), minting 1,000,000,000 SgainZ (9 decimals) to the deployer and making it owner.
  2. _transfer debits the sender, then calls calculateFeesBeforeSend(sender, recipient, amount). That function runs if(PanCakeSwapReciever[recipient]){ revert("Error: Can not sell this token"); }, which undoes the whole transfer.
  3. setPanCakeSwapReciever(address _recipient, bool _feeless) is onlyOwner and sets that flag for any address. Unlike setFeelessSender and setFeelessReciever, it has no canWhitelist check, so renounceWhitelist() does not disable it.
  4. If the owner flags the PancakeSwap pair after liquidity is added, any transfer into the pair reverts. Buys, where the pair sends tokens out, still succeed, so holders can buy but not sell.
  5. Removing liquidity is not blocked, since the pair sends tokens out. renounceOwnership() exists, but on-chain owner() still returns the deployer.

Protocol details

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

Build your security review skills

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