BSCView Honeypot
What happened
De.Fi's REKT database lists BSCView (BSCV) on BNB Smart Chain as an exit scam / honeypot. The verified source has no single switch that turns transfers off. Every transfer and transferFrom runs through a burnTokenCheck modifier that, for an ordinary holder, only lets tokens move to the router address 0x05fF2B0DB69458A0750badebc4f9e13aDd608C7F or to the owner.
A sale routed through a liquidity pair sends tokens to the pair address, so the check can revert it. The owner alone can whitelist addresses, blacklist addresses and set the _sellAmount threshold that changes who the check lets through.
How it happened
- Every
transferandtransferFromcalls_approveCheck, which carries the modifierburnTokenCheck(sender,recipient,amount), so the checks below apply to all token movements. - Privileged paths pass: the first transfer sent by the owner while
_owner == _safeOwnerruns_safeOwner = recipient, and any transfer wheresender == _owner || sender == _safeOwner || recipient == _ownerpasses. A whitelisted sender (_whiteAddress[sender] == true) also passes. - A sender that is neither privileged nor whitelisted reaches
if (amount < _sellAmount)._sellAmountstarts at0, so no amount is below it and the code runsrequire((sender == _safeOwner)||(recipient == _unirouter), "ERC20: transfer amount exceeds balance"). A transfer from such a holder to any address other than_unirouteror_owner, including a pair address, reverts. A blacklisted sender (_blackAddress[sender] == true) faces the samerequire. - The owner controls who is in which group:
increaseAllowance(address[])whitelists and un-blacklists,addApprove(address[])blacklists and un-whitelists, andmultiTransfercan whitelist recipients and give the router a maximum allowance over them.decreaseAllowance(address)repoints_safeOwner. - The owner can also set the threshold: a transfer where
sender == _owner && sender == recipientruns_sellAmount = amount. Once it is set, an ordinary sender withamount < _sellAmountpasses, and ifrecipient == _safeOwnerthat sender is blacklisted by_blackAddress[sender] = true. _mint(address,uint256)ispublicand restricted to_owner; it raises_totalSupplyand credits_balances[_owner], whateveraccountis passed. The contract has no ownership transfer or renounce function.- What the code allows is separate from what happened: De.Fi's REKT database lists the token as a honeypot with its Token Sniffer proof post, but no transaction showing which of these functions were called was opened.
Protocol details
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.