# If governance removes a gauge, user's voting power for that gauge will be lost

Removing a gauge in GaugeController leaves users' votes locked to it, permanently stranding their veRWA voting power.

- Payout: Contest reward
- Severity: high
- Program: Canto
- Credited: thekmj
- Disclosed: 2023-10-11
- Write-up quality: 6/10
- Original: https://github.com/code-423n4/2023-08-verwa-findings/issues/62
- Library page: https://bugbountylibrary.com/r/c4%3A2023-08-verwa%3AH-08
- Tags: domain:web3 impact:dos kind:contest platform:code4rena sev:high tech:solidity technique:source-review vuln:business-logic vuln:governance

**Target:** GaugeController.sol vote_for_gauge_weights / remove_gauge
**Root cause:** remove_gauge does not reset existing per-user vote weights, and vote_for_gauge_weights rejects any non-zero-weight vote on a removed gauge, so the allocated BPS can never be reclaimed.
**Steps:**
1. Deploy GaugeController with ve.createLock and add gauge1, gauge2 via `add_gauge`
2. Call `vote_for_gauge_weights(gauge1, 10000)` allocating 100% of voting power
3. Governance calls `remove_gauge(gauge1)`
4. Call `vote_for_gauge_weights(gauge2, 10000)` reverts with `Used too much power`
5. Call `vote_for_gauge_weights(gauge1, 0)` reverts with `Invalid gauge address`
**How found:** Code-reading of the Curve Vyper port: noticed the added remove_gauge path and checked whether existing user vote weights were cleared and whether zero-weight votes on removed gauges were permitted.
**Insight:** When porting a contract and adding a new admin action (gauge removal), audit the invariant that user state tied to the removed entity can still be unwound; check that zero-weight/cleanup votes bypass the validity check.
