TESLA Honeypot
What happened
TESLA (TESLA) is a 9-decimal BEP20 token on BNB Smart Chain whose transfer and transferFrom functions refuse any move whose recipient equals a stored address called newun. The contract fills newun itself from the recipient of the first transferFrom call, and the owner can overwrite it at any time with transfernewun. If newun ends up holding the liquidity pair, a holder's sell into the pair reverts with "please wait", while transfers out of the pair are not touched by this check.
De.Fi's REKT database lists TESLA as an Exit Scam/Honeypot dated 2021-05-13 and says the contract owner could disable the transfer function, which restricted users in selling their tokens. The contract was deployed on 2021-05-13 at 04:52:42 UTC by 0x9dF83049…713f14 in transaction 0x5de10134…7e55d5.
How it happened
- The constructor gives the whole supply to the deployer:
owner = msg.senderandbalances[owner] = _totalSupply;with_totalSupply = 100000000000000000raw units, which is 100,000,000 tokens at 9 decimals. The source header also saysSales automatically activated after first 100 holders!, but the code contains no holder counter or activation switch. - The first
transferFromcall sets the blocked address without any check:if(from != address(0) && newun == address(0)) newun = to;. A router liquidity deposit pulls tokens withtransferFrom, so in that flow the pair would becomenewun; a write-up of this code pattern describes the pair being captured this way. The contract itself never names the pair. - Once
newunis set, every latertransferFromrunselse require(to != newun, "please wait");and everytransferrunsrequire(to != newun, "please wait");. A router sell callstransferFrom(holder, pair, amount), so ifnewunis the pair the call reverts beforebalances[from]is debited. The owner is not exempt from the check. - The owner controls the block:
function transfernewun(address _newun) public onlyOwner { newun = _newun; }. Pointing it at an unused address lifts the block for the pair; setting it to the zero address re-arms the capture in step 2 for the nexttransferFromrecipient. The contract has no timelock of its own and no cap on how often this can be called. TESLAalso definesclearCNDAO(), which sends the contract's whole BNB balance to the owner, and a payable fallbackfunction() external payable {}that lets the contract receive BNB.
Protocol details
Evidence
- report @Token_Sniffer incident report twitter.com
- address BscScan verified source for TESLA bscscan.com
- analysis Scam explained: BSC stealthy LP block cryptot3ddybear.gitlab.io
- analysis Sourcify match for TESLA on chain 56 repo.sourcify.dev
- analysis De.Fi REKT database listing for TESLA (Exit Scam/Honeypot, 2021-05-13) de.fi
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.