Foxi.finance Rug Pull
What happened
FOXI is an Ethereum ERC-20 whose owner can call addPhase(address account, uint256 amount), a mint that credits any balance without limit and, unlike the constructor's _mint, never updates _totalSupply. The contract also lets the owner add addresses to a gov list with addGov, and _transfer rejects any transfer whose sender is on that list.
Etherscan shows both steps on 2020-11-17. At 02:32:06 UTC the deployer address 0xbC9A17F1…D80D39 called addPhase and 500 quintillion FOXI (raw value 500000000000000000000000000000000000000) were credited to itself (transaction 0x1218cd9a…19209d). At 02:33:43 UTC, 97 seconds later, the same address sold 500 billion FOXI on Uniswap V2 with swapExactTokensForETH for about 32.12 ETH (transaction 0x82f7533a…0335c2).
How it happened
- The constructor of
FOXImints the initial supply once with_mint(msg.sender, totalSupply);, and_mintraises_totalSupply. A current-state read on 2026-09-30 returned 60,000,000 FOXI (60000000000000000000000000 raw) fromtotalSupply(). - A second minting path exists:
function addPhase(address account, uint256 amount) public onlyOwner returns (bool) { _phase(account, amount);._phaseruns_balances[account] = _balances[account].add(amount);andemit Transfer(address(0), account, amount);but never touches_totalSupply, so tokens created this way do not appear in the supply figure thattotalSupply()returns. There is no cap, cooldown or recipient restriction. - The owner can also freeze senders:
addGov(address[] memory account)setsgov[account[i]] = true;and_transferstarts withrequire(!gov[sender]. A listed holder cannot send or sell. Listing the pair address would stop it from sending tokens to buyers. No opened transaction shows this list being used. - The owner role is transferable and can be given up (
transferOwnership,renounceOwnership). A current-state read on 2026-09-30 returned the deployer address asowner(). - What happened, per Etherscan: transaction 0x1218cd9a…19209d called
addPhasefrom the deployer address and credited 500000000000000000000000000000000000000 raw FOXI (500 quintillion FOXI at 18 decimals) to that same address at 02:32:06 UTC on 2020-11-17. At 02:33:43 UTC transaction 0x82f7533a…0335c2 swapped 500 billion FOXI for about 32.12 ETH. At the historical price of $482.71 per ETH shown on the Etherscan page, that is roughly 15.5k USD.
Protocol details
Evidence
- report @CaptainJackAPE incident report twitter.com
- report FOXI source on Sourcify repo.sourcify.dev
- transaction Etherscan transaction 0x1218cd9a... (addPhase) etherscan.io
- transaction Etherscan transaction 0x82f7533a... (swapExactTokensForETH) etherscan.io
- address FOXI verified source on Etherscan etherscan.io
- analysis Web Archive web.archive.org
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.