Rapid Set Dollar Rug Pull
What happened
Rapid Set Dollar (RSD) is an Ethereum token whose contract has an uncapped mint function gated only by the Minter role. On-chain, a mint came in the same transaction as a proxy upgrade: on 2020-12-23 the deployer called implement(address _contract) on its Root proxy 0x4b96392d…7e2B7D, the proxy emitted Upgraded, and in the same transaction 500 RSD was minted to each of five addresses (2,500 RSD in total), one of them the deployer 0xe11b4735…fE3Dd5. Three days later the deployer swapped 30 RSD for 6,125.16 USDC on Uniswap V2. De.Fi's REKT database lists the incident as an exit scam/rugpull with $47,505 lost and describes the mint and the sales that followed.
Mint transaction: Tx 0x4a43…26f0
De.Fi's listing names the five recipients:
- 0xe11b4735…fE3Dd5 (the contract deployer). The listing says this address sold tokens for $6,133 (tx 0xec5689a9…57ac77) and distributed tokens to other external wallets, which sold them for $40,440.
- 0x3d107BEd…452263. The listing says this address added liquidity (tx 0x178d5cee…e635e2) and removed it with a $932 profit (tx 0x536e814a…fcd055).
- 0xBb43A073…aA8369. The listing says this address transferred its tokens on, pointing to its token transfer list.
- 0xF2EE8af2…cc5349. Transaction 0xdafa5031…4ea9eb shows it sending its 500 RSD to the Root proxy 0x4b96392d…7e2B7D through a
Depositcall on 2020-12-26. - 0x228552b0…6F51b3. The listing says this address transferred its tokens on (tx 0xc0b59e27…ea90a9).
The De.Fi figures add up to the listed $47,505 ($6,133 + $40,440 + $932); the 6,133 and 40,440 sale figures and the recipients' later actions come from the De.Fi listing only, because only the deployer's swap and recipient 4's deposit were opened on Etherscan.
How it happened
- The
Dollartoken contract (0x8e1D3Ab0…658cea) lets any Minter mint an unlimited amount:function mint(address account, uint256 amount) public onlyMinter returns (bool) { _mint(account, amount);. There is no supply cap, no timelock and no vote around it, andaddMinter(address account) public onlyMinterlets any existing minter add more minters. - The Minter check is
require(isMinter(_msgSender()), "MinterRole: caller does not have the Minter role"). The mint seen on-chain happened in a transaction addressed to the Root proxy 0x4b96392d…7e2B7D, an upgradeable EIP-1967 proxy created by the same address that deployed the token. If the proxy holds the Minter role, whoever can swap its implementation controls whatever code runs as that minter; the token source alone does not show which addresses hold the role. - On 2020-12-23 (block 11511141) the deployer 0xe11b4735…fE3Dd5 sent a transaction to the proxy calling
implement(address _contract). The proxy emittedUpgradedwith the new implementation 0x3116519C…1C1e82, and the token logged five mints from the zero address of 500 RSD each, to the deployer and to 0x3d107BEd…452263, 0xBb43A073…aA8369, 0xF2EE8af2…cc5349 and 0x228552b0…6F51b3. BecausemintisonlyMinterand the mint ran in a transaction addressed to the proxy, the likely reading is that the upgraded proxy code acted as the Minter; this is an inference, since the new implementation's source was not read. - On 2020-12-26 the deployer called
swapExactTokensForTokenson Uniswap V2 Router 2 (0x7a250d56…F2488D) and swapped 30 RSD for 6,125.1645 USDC. De.Fi's REKT database lists further sales by wallets that received distributed tokens ($40,440) and a $932 profit from adding and removing liquidity, for $47,505 in total. - What the code allowed (an upgrade that mints without limit) is separate from what is documented to have happened (a single 2,500 RSD mint and the sales above).
Protocol details
Evidence
- report De.Fi REKT database listing for Rapid Set Dollar (as imported in meta.json) twitter.com
- transaction Etherscan transaction 0x4a437898c476f8a2b7f0e499e05136753c6f779707cb5348412cd8cabb2326f0 (implement + mint) etherscan.io
- transaction Etherscan transaction 0xec5689a9661690e97b1d5499dfcb620421e38da89f2b679b2d25f7fd8557ac77 (swap) etherscan.io
- transaction Etherscan transaction 0xdafa5031ba64df254320f115841bc4ee1d2733672e3ef06165fe114c364ea9eb (Deposit) etherscan.io
- transaction etherscan.io transaction 0x178d…35e2 etherscan.io
- transaction etherscan.io transaction 0x536e…d055 etherscan.io
- transaction etherscan.io transaction 0xc0b5…90a9 etherscan.io
- address Etherscan verified source: Rapid Set Dollar (RSD) 0x8e1D3Ab094c1EE517B34cb2DEfD0Ee9fE7658cea etherscan.io
- address Etherscan address 0x4b96392d597FAD663993AfC9a5E4849cfD7e2B7D (Root proxy) etherscan.io
- address etherscan.io address 0xbb43…txns etherscan.io
- analysis de.fi Analysis t.me
- analysis Web Archive archive.ph
- analysis Sourcify match: Dollar.sol repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.