Contribute Protocol Rug Pull

Reported loss $4K
Ethereum
Rugpull

What happened

Contribute.Protocol (CTB) is a fixed-supply Ethereum token whose entire 8,000-token supply is credited to the deployer in the constructor. The deployer paired 7,440 CTB with 3.5 ETH on Uniswap V2 on 2021-01-08 and received the 161.3691 LP tokens, and the code contains nothing that locks them. On 2021-03-10 the same address called removeLiquidityWithPermit on the Uniswap V2 router, burning 170.2846 LP tokens for 4.536765 WETH and 6,682.3183 CTB. The source has no sell block, blacklist or hidden mint; what it does give the owner is uncapped fee setters and a max-transaction setter that can be turned against holders. De.Fi's REKT database lists the token as an exit scam/rug pull with a loss of 3,919 USD.

The contract deployer added initial liquidity at: Tx 0x9b42…3669

The liquidity was removed by the contract deployer at: Tx 0xb6e9…6d5c

How it happened

  1. The constructor assigns the whole supply to the deployer: _rOwned[_msgSender()] = _rTotal; with uint256 private _tTotal = 8000 * 10**18;. There is no mint function, so the deployer is the only initial holder.
  2. The deployer adds 7,440 CTB and 3.5 ETH to the CTB/WETH Uniswap V2 pair and receives 161.3691 LP tokens (add-liquidity transaction 0x9b42811e…523669). The token code does not lock or burn liquidity; LP tokens sit with whoever received them.
  3. Fees and limits stay under owner control. setTaxFeePercent(uint256 taxFee) and setLiquidityFeePercent(uint256 liquidityFee) are onlyOwner with no upper bound, and _getTValues computes tAmount.sub(tFee).sub(tLiquidity), so a combined fee above 100 makes every fee-paying transfer revert. setMaxTxPercent can set _maxTxAmount to 0, after which require(amount <= _maxTxAmount, ...) fails for any transfer where neither side is the owner. Fee-exempt addresses (_isExcludedFromFee, set for the owner and the contract in the constructor) are not charged fees. The opened transactions do not show these setters being called.
  4. On 2021-03-10 the deployer address calls removeLiquidityWithPermit on the Uniswap V2 router (transaction 0xb6e977b1…346d5c), burning 170.2846 LP tokens and receiving 4.536765 WETH and 6,682.3183 CTB. The WETH leaves the pair, so the liquidity against which other holders could sell CTB is reduced by that amount.

Protocol details

Classification Token
Protocol Type Exit Scam/Rugpull
Affected asset / contract CTB

Build your security review skills

Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.