The main smart contracts used by Idle are the following ones:
IdleTokenV4 - holds pooled funds of all users for a specific asset and issues ERC20 shares of the pool (IdleTokens) for each deposit. This one will be used by users
IdleDSR are all wrappers contract used by
IdleToken to interact with the lending protocols implemented
IdleRebalancerV3_1 - used by us to submit new allocations
We constantly monitor APR and risk scores of every lending protocols and when new allocations can improve the main performance metric of the specific strategy chosen, we submit new allocations to the
IdleRebalancer contract with our Rebalance Manager. Those allocations are still not enforced in the
IdleToken contract, but after new allocations are set every subsequent interaction with
IdleToken can potentially trigger a rebalance. During the rebalance
IdleToken reads new allocations from
IdleRebalancer and if those allocations are different from the current ones (in
IdleToken) then we change the pool composition accordingly, by minting and redeeming on different lending protocols via our wrappers (
IdleFulcrum, ...) . If no interaction is made after some time (currently 1h) we rebalance the pool for everyone.
Both Idle strategies use the same set of smart contracts, but each allocation use a different instance of those contracts.