The Liquidity Mining program distributes $IDLE through the IdleController
contract, which computes the utility generated by each BY strategy (idleDAI, idleUSDC, ...) and proportionally allocates the $IDLE rewards between all these pools.
To compute the utility generated by each strategy, the IdleController uses a PriceOracle
which reads data such as WBTC or COMP price (in USD) and uses it to compute the correct share of LM program distribution for each pool.
To update the distribution speeds, and effectively adjust the IDLE distribution for the strategies depending on current TVL and APYs, the public method refreshIdleSpeeds
should be called from time to time.