Gauge Controller - Voting ANGLE inflation
Contract allowing veANGLE holders to vote for the gauges of their choice

1. Introduction

The GaugeController contract corresponds to the contract allowing veANGLE holders to vote for the gauge of their choice. It is at the level of this contract that new gauges can be added and that different gauge types are defined. This contract is closely linked to the veANGLE contract which is queried anytime someone votes.
The contract is a full fork from Curve implementation available here. The only change that was made is a change from the original Vyper compiler version which was increased to 0.2.16.

2. Contract Details

Gauges in the GaugeController contract have different types, each type having its own weight. While governance can decide in this contract to change the weights for a given gauge type, it is at the level of the AngleDistributor contract that each gauge is treated according to its type: each gauge type has its own way of being routed ANGLE rewards too and this happens in the AngleDistributor.

3. Key Mechanisms & Concepts

For more detailed explanations about Curve smart contracts, you can look at their docs here​