F*ck The Merge Rug Pull
What happened
Fuck The Merge (FUCKMERGE) was an Ethereum token traded on Uniswap V2, deployed on September 15, 2022, the day of the Ethereum Merge. Its contract gives a hard-coded owner, the deployer 0x0c41D309…4AC32e, an unlimited _mint function, functions that burn or move any holder's entire balance, and a function that emits fake Transfer events from the Uniswap pool; there is no working way to renounce these powers. According to De.Fi's listing, the deployer created the F*CKMERGE/WETH pair 0x76aaaa34…623814 with 100 WETH of initial liquidity and, after users bought the token, drained the remaining 178 WETH.
On-chain, the deployer sold FUCKMERGE through the Uniswap V2 router in three swaps that same day (0x364ad812…062815, 0xb7da9882…cd9c22 and 0xf27aa3a0…132342) that returned about 175 ETH in total. The tokens sold far exceeded the 1 trillion minted at deployment. De.Fi's listing puts the deployer's profit at $110,383.
How it happened
- The owner is a hard-coded address with no setter:
address public _owner = 0x0c41D309E970b4F4Dc368Af5072c0251494AC32e;. TherenounceOwnershipfunction sits inside a comment block and is not compiled. _mintispublicand gated only byrequire(msg.sender == _owner, ...). It adds any amount to the owner's balance,_balances[_owner] = _balances[_owner].add(amount);, while the event names a differentaccount, so the owner can create unlimited tokens.bridge(address account)burns a holder's entire balance andstake(address account, address staker)moves a holder's entire balance to any address, both owner-only.tokenDropDirectemitsTransferevents from a chosen pool address without moving any balances, which can make fake buys appear in explorers and trackers.- The
_positiveReceiverand_negativeReceiverlists set byapprovalIncreaseandaddApproveare never read, because theoddsmodifier on transfers is empty (_;). Holders could sell normally; the trap was the owner's supply and balance powers. - On September 15, 2022 the deployer sold 508.67 billion, 4,142.98 billion and 119,595.91 billion FUCKMERGE through the Uniswap V2 router for 80.8, 79.65 and 15 ETH (tx 0x364ad812…062815, 0xb7da9882…cd9c22 and 0xf27aa3a0…132342). These amounts exceed the 1 trillion constructor supply, and
_mintis the only function that raises_totalSupply; the contract's current total supply is about 10^36 tokens.
Protocol details
Evidence
- transaction Etherscan transaction 0x364ad812...8c062815 etherscan.io
- transaction Etherscan transaction 0xb7da9882...fb6cd9c22 etherscan.io
- transaction Etherscan transaction 0xf27aa3a0...0c132342 etherscan.io
- address Fuck The Merge (FUCKMERGE) verified contract source, Etherscan etherscan.io
- address etherscan.io address 0x0c41…c32e etherscan.io
- address etherscan.io address 0x76aa…3814 etherscan.io
- analysis Sourcify match for 0x3f2807f783c394641a9fd1bbb568b5fcbec25575 repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.