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

  • IdleCompound, IdleFulcrum, IdleAave, IdleDyDx, 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 (IdleCompound, 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.