Voltage Honeypot
What happened
Voltage's transferFrom requires allow[_from] == true, and the only address that gets that flag in the constructor is the deployer. A holder who buys the token has allow unset, so a sale that pulls tokens with transferFrom reverts, while plain transfer has no such check. The contract also exposes addAllow and mint, both restricted to a hard-coded address, that can switch the flag for any holder and overwrite any balance.
De.Fi's REKT database lists Voltage (VOLTG) as an exit scam/honeypot on BNB Chain dated 2021-04-07 and describes the owner as able to disable transfers so users could not sell.
How it happened
- The constructor sets
balances[msg.sender] = totalSupply;andallow[msg.sender] = true;, so only the deployer is flagged as allowed. transferFromcontainsrequire(allow[_from] == true);. Every other address hasallowfalse by default, so anytransferFromthat moves their tokens reverts. A router sale pulls the seller's tokens withtransferFrom.transferhas onlyrequire(_to != address(0));andrequire(balances[msg.sender] >= _value);, with noallowcheck, so direct wallet-to-wallet moves still work.addAllow(address holder, bool allowApprove)isonlyOwnerand can set the flag for any address, in either direction.mint(address miner, uint256 _value)isonlyOwnerand runsbalances[miner] = _value;, which overwrites the balance of any address without touchingtotalSupply.onlyOwnerisrequire(msg.sender == address(1080614020421183795110940285280029773222128095634)), a hard-coded address equal to 0xbd486897…439192. It differs from the deployer 0x5925aC8B…91F9aA, and theownervariable set in the constructor is not whatonlyOwnerchecks.- What the code allows is separate from what happened: no transaction was opened showing
addAllowormintbeing called. De.Fi's REKT database lists the token as an exit scam/honeypot.
Protocol details
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.