RAIDEN GOD Thunder Rug Pull
What happened
RAIDEN GOD Thunder (RAIDEN) was deployed on Ethereum on 29 July 2023 at 0x13e9E616…c66bC9 by 0x4Dcf852C…d6DF0C. Its Ownable constructor sets the owner to the zero address, so the token looks ownerless from the start, but the real control sits with a hidden address passed in the constructor as token_ (0x0Db52F49…F7b10F). That address can mark any holder so that every transfer out of their wallet reverts, and anyone can call the misleadingly named increaseAllowance to credit that hidden address with any amount of RAIDEN without changing the total supply.
Separately, about 15 hours after deployment the deployer withdrew its Uniswap V3 position, receiving 50.98 WETH and about 93.93 billion RAIDEN in one transaction. Cyvers flagged the withdrawal and reported that 54 ETH went to Tornado Cash through 0xEBada7c9…247DD5; the live record puts the scammer's profit at 20.44 ETH, about 37,977 USD.
How it happened
- The
Ownableconstructor calls_setOwner(address(0)), soowner()returns the zero address from deployment and the token appears renounced. The contract has noonlyOwnerfunctions that matter; its control is keyed to_descri.addr, which the constructor sets from thetoken_argument (0x0Db52F49…F7b10F). Approve(address _spender, uint256 _amount)(capital A, separate from the standardapprove) only takes effect when the caller is_descri.addr. With a non-zero amount it sets_dex[_spender] = _spender, which marks that holder.- Every
transferandtransferFromfirst calls_cheBalan(sender, ...). For a marked sender it setsnum = _totalSupand calls_decre(_from, num), which subtracts the whole total supply from the sender's balance under Solidity 0.8 checked arithmetic. That underflows and reverts, so a marked holder can no longer sell or move tokens. The check is on the sender, so it blocks the holder whether the transfer is sent directly or pulled by the router. increaseAllowance(address spender, uint256 allowAmount, bool hasApproved)does not touch allowances. Whenspenderis_descri.addr, it setsamount = _total(0, allowAmount)and runs_balances[spender] += amount, crediting the hidden address with any amount of RAIDEN while_totalSupstays unchanged. Those tokens could be sold into the pool.- What the record documents on-chain is a liquidity withdrawal: on 29 July 2023 at 16:25:47 UTC the deployer called
multicallon the Uniswap V3 Positions NFT contract and received 50.98 WETH and about 93.93 billion RAIDEN (0x1f2759b0…a38b45). Cyvers reported that 54 ETH was then deposited to Tornado Cash via 0xEBada7c9…247DD5; the live record cites 0xc1105a94…239f8a as the Tornado Cash transfer.
Protocol details
Evidence
- report @cyversalerts incident report twitter.com
- report Cyvers Alerts post on the RAIDEN liquidity removal twitter.com
- transaction RAIDEN Uniswap V3 liquidity removal transaction etherscan.io
- transaction RAIDEN contract creation transaction etherscan.io
- transaction etherscan.io transaction 0xc110…9f8a etherscan.io
- address RAIDEN GOD Thunder (RAIDEN) verified source code and constructor arguments etherscan.io
- address etherscan.io address 0x4Dcf…DF0C etherscan.io
- address etherscan.io address 0xEBad…7DD5 etherscan.io
- analysis Sourcify exact match for 0x13e9E6160B3E48cFC07B6B8c0aeED2EF3cc66bC9 on Ethereum repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.