SAFEORACLE Honeypot
What happened
SAFEORACLE is a BEP-20 token whose transferFrom reverts unless the token holder is on an allow list that starts with only the deployer. Selling through a DEX router uses transferFrom, so non-listed holders cannot sell, while transfer carries no such check. A hard-coded address, not the stored owner, controls addAllow and mint.
The source header advertises "100% ANTI RUG SYSTEM" and "100% Liquidity Burn"; the code contains no liquidity logic. De.Fi's REKT database lists the token as an exit scam/honeypot in which the contract owner could disable the transfer function and restrict users from selling.
How it happened
- The constructor gives the whole supply to the deployer and whitelists only that address:
balances[msg.sender] = totalSupply; allow[msg.sender] = true;. transferFromincludesrequire(allow[_from] == true);, so for any holder not on the list the call reverts. A router sale pulls tokens from the holder withtransferFrom.transferhas noallowcheck, so a pair sending tokens out to a buyer withtransferis not stopped by this rule. The code does not show which address was the pair.modifier onlyOwner() {require(msg.sender == address(1080614020421183795110940285280029773222128095634));_;}hard-codes the controller, 0xbd486897…439192 in hexadecimal.transferOwnershiponly rewrites the unusedownervariable.- That address can call
addAllow(address holder, bool allowApprove)to change any holder's flag, andmint(address miner, uint256 _value), which runsbalances[miner] = _value;, overwriting a balance without changingtotalSupply. - What happened: the code does not show any call to
addAllowormint. Only De.Fi's REKT database listing supports the honeypot classification.
Protocol details
Evidence
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.