Shape one: a schedule the DAO cannot amend
Curve's CRV is issued by an inflation schedule written into the token contract itself. ERC20CRV.vy declares RATE_REDUCTION_TIME as one year and RATE_REDUCTION_COEFFICIENT as 1189207115002721024, which is 21/4 scaled by 1018. At each annual boundary the emission rate is divided by that coefficient, cutting issuance by 15.91% a year, forever.
Read live on 5 September 2026, the contract answers mining_epoch() = 6, rate() = 3080982847903985532 (3.0810 CRV per second, or 97,161,875 CRV a year) and start_epoch_time() = 1786573048, which is 22:17:28 UTC on 12 August 2026. Against a totalSupply() of 2,415,754,928 CRV, this year’s issuance is 4.02% of the float. Epoch seven begins at 22:17:28 UTC on 12 August 2027 and takes the rate to 2.5908 CRV per second, or 81,703,072 CRV a year.
The epoch turned over between this page’s two readings, and the way it did is the finding. On 12 August 2026 the contract answered mining_epoch() = 5 and rate() = 3663926723928765860 against a float of 2,409,286,293 CRV – an issuance share of 4.80% – and this page worked the coefficient forward to predict a cut to 3.0810 CRV per second that evening. The prediction was exact: the rate on chain today is 3080982847903985532, to the wei. That is precisely what makes a page like this one decay invisibly. A forecast that lands leaves prose whose arithmetic still re-derives perfectly, so the stale paragraph reads as carefully sourced rather than out of date; the only thing wrong with it is the tense. Every figure above was re-read at source rather than carried forward.
No proposal precedes that cut, and none could stop it. The only function that writes self.rate is _update_mining_parameters, and the only way in is the external update_mining_parameters(), whose entire access control is one line: assert block.timestamp >= self.start_epoch_time + RATE_REDUCTION_TIME. Its own docstring says it plainly – "callable by any address, but only once per epoch". The token's admin may set the minter once, hand over adminship and change the token's name; it has no power over the rate at all. A DAO that wanted a different CRV emission curve would have to issue a different token.
Two details reward reading the source rather than the marketing. First, the schedule is permissionless to advance but not automatic: someone has to send the transaction, and the contract warns that "total supply becomes slightly larger if this function is called late". Second, available_supply() returns 2,425,995,672 CRV against a minted totalSupply() of 2,415,754,928 – a gap of 10,240,744 CRV that the schedule has already released and no gauge has yet claimed. The schedule runs whether or not anyone collects.