Skip to content

GaugeController

ELI5: The scoreboard for weekly votes — tracks which gauges get weight each epoch and freezes snapshots so people can't cheat with flash loans.

What you can do

Function Who
vote(gauge, weight) veTARE holder
add_gauge / admin Owner
checkpoint Anyone

Epoch boundary: Thursday 00:00 UTC — weights apply to Keep routing.

Flywheel fit

Maps voter preference → relative strategy weights read by GaugeWeightRouter.

Contract walkthrough

GaugeController.vy:

  • Up to 16 gauge types (MAX_GAUGE_TYPES)
  • Slope-weighted vote decay (veCRV-faithful)
  • Per-type weight scaling: gauge_weight = MULTIPLIER * type_weight * bias / total_weight
  • Kill switch for malicious gauges
  • _get_total() sole bookkeeper for weight sums

Vote cooldown: 10 days per (user, gauge) pair.

flowchart TD
    Vote[user vote] --> GC[GaugeController]
    GC --> Epoch[Weekly epoch snapshot]
    Epoch --> GWR[GaugeWeightRouter]

What can go wrong

Risks

  • Low participation → weights reflect few voters.
  • Gauge kill switch is owner power — operational trust.
  • Votes change allocations only within strategy max_debt.

Source: khomdev-veforge/src/GaugeController.vy