The distribution for the Liquidity Mining program and the Liquidity Bootstrap program is managed by the
IdleController contract, which calculates the utility generate by each idle pool (idleDAI, idleUSDC, ...) and split the IDLE reward per block proportionally between all pools. For calculating the utility generated by each pool the IdleController uses a
PriceOracle which reads data such as WBTC or COMP price (in USD) and uses it to calculate the correct share for each pool. To update the distribution speeds for each pool according to new market data the public method
refreshIdleSpeeds should be called from time to time.