CROT Finance Honeypot
What happened
De.Fi's REKT database lists Crot Finance ($Crot) on BNB Smart Chain as an Exit Scam/Honeypot and says the contract owner could disable the transfer function, which restricted users in selling their tokens. The code implements a block on transfers to one stored address, newun. The first transferFrom call made while newun is empty stores its destination as newun, and every later transferFrom or transfer to that address reverts with "please wait".
If that first destination is the liquidity pair, token sales through the pair stop working while purchases from it still go through. The owner can also change newun at any time with transfernewun. The code does not show which address newun ended up holding.
How it happened
- The constructor mints the whole supply of 100000000000000000 raw units (9 decimals) to the deployer, who becomes
owner.newunstarts as the zero address. transferrejects any transfer to the stored address:require(to != newun, "please wait");.transferFrombegins withif(from != address(0) && newun == address(0)) newun = to; else require(to != newun, "please wait");. The firsttransferFrommade whilenewunis empty is not checked and writes its recipient intonewun. In a normal listing, the firsttransferFromis the router pulling tokens into the pair when liquidity is added, so the pair would becomenewun; the code does not show which address it actually became.- From then on, any holder whose sell calls
transferFromwith that address as recipient reverts with "please wait", and so does a directtransferto it. A transfer out of that address, such as a purchase, is not blocked. The block applies to every sender, including the owner, untilnewunis changed. transfernewun(address _newun)isonlyOwnerand overwritesnewun. Setting it to the zero address lets the nexttransferFromcapture a new destination; pointing it at an address that is not used lifts the block.- What happened: De.Fi's REKT database lists the token as an Exit Scam/Honeypot. A write-up of this pattern (a stored address that
transferFromrefuses to send to, "please wait") explains it as a way to stop sells while allowing buys, but it does not mention this token. No transaction was opened for this contract, so the code evidence does not show the valuenewunheld or any liquidity removal.
Protocol details
Evidence
- report @Token_Sniffer incident report twitter.com
- report Crot Finance source on Sourcify repo.sourcify.dev
- address Crot Finance verified source on BscScan bscscan.com
- analysis Scam explained: BSC stealthy LP block (CryptoT3ddyBear) cryptot3ddybear.gitlab.io
- analysis De.Fi REKT database listing for $Crot (fields supplied in meta.json) de.fi
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.