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_bps → BribeDistributor 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_unclaimedescape 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