SolaSystem Honeypot
What happened
SolaSystem (SOLAM) is an Ethereum token at 0x72735a7d…39cc0f, deployed on 8 April 2021 by 0x57059AbA…946162. Its transfer rules sit in a modifier misleadingly named burnTokenCheck. An ordinary holder can send tokens only when the amount is below an owner-set threshold (_sellAmount, zero by default), when the recipient is the Uniswap router address, or when the holder is on the owner's whitelist.
A Uniswap sale sends tokens to the pair, not the router, so by default every holder's sale reverts. Even when the threshold is raised, a holder who sends less than it to the _safeOwner address is automatically blacklisted, which catches small sales if _safeOwner is the pair. The constructor also emits 15 Transfer events that show 3,000,000 SOLAM going to 8 hard-coded third-party addresses, while every token is in fact credited to the owner.
De.Fi's REKT database lists SOLAM as an exit scam/honeypot and says the owner could disable transfers so that users could not sell.
How it happened
- The constructor makes 15
_mintcalls to 8 hard-coded third-party addresses (several receive more than one), but_mintcredits_balances[_owner]while emittingTransfer(address(0), account, amount), so explorers show 15Transferevents and holdings at those addresses that do not exist. Because_mintrequiresmsg.sender == _owner, the owner must be the deployer. - Every
transferandtransferFrompasses throughburnTokenCheck. The owner, the_safeOwneraddress and transfers to the owner always pass; an owner-to-owner transfer sets_sellAmount, the sell threshold. - The first transfer out of the owner's wallet, or the owner-only
decreaseAllowance(address), sets_safeOwner. When that is the Uniswap pair, buys pass because the pair is the sender. - For any other sender, a transfer of
amount >= _sellAmountmust satisfyrequire((sender == _safeOwner)||(recipient == _unirouter), ...), which a sale into the pair fails. With_sellAmountat its default of zero, no ordinary holder can sell. - A transfer below
_sellAmountto_safeOwnersucceeds once but sets_blackAddress[sender] = true, after which that holder is blocked like everyone else. - The owner can whitelist addresses with
increaseAllowance(address[]), blacklist them withaddApprove(address[]), and airdrop throughmultiTransfer, which also whitelists the first recipients and sets their router allowance to the maximum. There is no function to change or renounce_owner. - De.Fi's REKT database lists SOLAM as an exit scam/honeypot in which users could not sell; no transaction was opened showing trades or liquidity removal.
Protocol details
Evidence
- report Token Sniffer post 1374999601485291522 (De.Fi proof link) twitter.com
- transaction SolaSystem contract creation transaction etherscan.io
- address SolaSystem (SOLAM) verified contract code on Etherscan etherscan.io
- analysis Sourcify match for 0x72735a7d1eb69f3238aee15fa07e77d5d139cc0f on Ethereum repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.