ECOMI Honeypot
What happened
This OMI token on BNB Smart Chain gates transferFrom behind a per-address allow flag that only the deployer holds at creation. Any holder who is not on the list has every transferFrom revert, which is the call a DEX router makes when selling, while plain transfer stays open. The onlyOwner modifier compares the caller to a hard-coded address instead of the stored owner, and that address controls addAllow and mint.
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 assigns the supply to the deployer and whitelists only the deployer:
balances[msg.sender] = totalSupply; allow[msg.sender] = true;. transferFromrequiresrequire(allow[_from] == true);. A holder who was never added hasallow[_from] == false, so a router pulling the holder's tokens withtransferFromreverts.transferhas noallowcheck, so moving tokens withtransferand buying (the pair sending tokens out withtransfer) are not blocked by this rule. The code does not show which address was the pair.modifier onlyOwner() {require(msg.sender == address(1080614020421183795110940285280029773222128095634));_;}hard-codes the controller, which is 0xbd486897…439192 in hexadecimal. It differs from the deployer shown in the deployment record, andtransferOwnershiponly rewrites the unusedownervariable, so it cannot move this control.- That address can call
addAllow(address holder, bool allowApprove)to setallowfor any holder, andmint(address miner, uint256 _value)which runsbalances[miner] = _value;.mintoverwrites 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, and it gives no proof link.
Protocol details
Evidence
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.