Skip to content

Bribes

ELI5: Coil shares part of trading fees in USDC with voters who backed the fee gauge — pay-to-steer without touching anyone's collateral.

What you can do

Function Effect
deposit_bribe Protocol deposits USDC for epoch
claim Voter claims pro-rata USDC

Coil gauge_bpsBribeDistributor via CoilFeeRouter.

Flywheel fit

Aligns voter incentives with Coil fee generation — voters want gauges that keep fee flow healthy.

flowchart LR
    CFR[CoilFeeRouter gauge_bps] --> BD[BribeDistributor]
    GC[GaugeController snapshots] --> BD
    BD --> Claim[USDC to voters]

Contract walkthrough

BribeDistributor.vy:

  • Claims use frozen per-epoch vote snapshots — not live vote state (anti flash-loan)
  • Per-bucket solvency cap (audit A-series fix)
  • sweep_unclaimed escape valve for stuck funds

BribeDistributorMerkle.vy — merkle proofs at scale + ROOT_DELAY timelock.

Sepolia

Contract Address
BribeDistributor 0xE123E1bB4cdAa3175107402144Fb627cab15b43A
EmissionRouter USDC 0xf28A9E305BD4631442b89a73a58387B4d66b511F

What can go wrong

Risks

  • Bribe UX depends on correct epoch indexing.
  • Merkle root disputes during ROOT_DELAY window.
  • USDC-only bribes — not TARE emission in FLYWHEEL 2.0 surplus path.

Source: khomdev-veforge/src/BribeDistributor.vy