Stanley - Assets Management
I am always amazed how much a certain facility with a special and apparently narrow technique can accomplish.Stanisław Ulam
Stanley's responsibility is to put funds kept on Milton to work so that they can earn additional interest on money markets. When they arrive, as delegated by Milton are assigned via its "strategies" to lending platforms as collateral.
Stanley issues ivTokens to Milton to account for the funds in stablecoins. The below graphs show how the funds flow between IPOR components with regard to Stanley:

Depositing funds from Milton to Stanley

Withdrawing funds from Stanley to Milton
Both deposit and withdrawal from Stanley can only be made by an appointed entity. At inception, only Joseph is authorized to perform those actions. At the moment of deposit, the finds are piped to AAVE or Compound, depending on the algorithm currently used in Stanley.
ivDAI, ivUSDC, and ivUSDT are special types of ERC20 tokens minted and issued to the entity depositing to Stanley and are meant to be fungible tokens representing addresses stake in the holdings of the Stanley contract. ivTokens are not upgradable ERC20 tokens and can be redeemed for an underlying token, namely DAI, USDC, or USDT by Stanley.
When delegating liquidity via Asset Management, it may happen that platforms, where the liquidity is delegated will issue governance tokens. Those tokens are kept in Stanley's balance and can only be moved by a designated administrator to an appointed DAO's address, where the community can manage them.
Stanley has logic on how to allocate the funds to various different protocols (AAVE and Compound at its inception). Since different contracts have different APIs some form of middleware is needed. This middleware is called strategy. It allows interacting with external protocols in a standard way.
Stanley, like many other contracts in IPOR Protocol, is issued on a per-asset basis. So at inception, we have DAI Stanley, USDC Stanley, and USDT Stanley.
For detailed developer comments refer directly to deployed contracts.
Function | Notes |
---|---|
totalBalance | It returns the total value of assets held by a given address. The value is denominated in the underlying tokens |
calculateExchangeRate | As interest is accrued by the ivToken, the exchange rate between it and the underlying asset changes. This function calculates what the current ratio is. |
deposit | Allows for transferring stablecoin to asset management. ivTokens are issued to the depositary.
At its inception only available to Milton. |
withdraw | Redeems ivTokens for the underlying asset. At its inception only available to Milton. |
withdrawAll | Redeems all ivTokens and transfers all the underlying assets back to the depositary. At its inception only available to Milton. |
migrateAssetToStrategyWithMaxApr | Allows for moving of all assets to a strategy with higher APR. This function is limited to the administrator of the contract. |
setStrategyAave | Sets the address of AAVE strategy implementation |
setStrategyCompound | Sets the address of Compound strategy implementation |
setMilton | Sets the address of Milton. |
Last modified 7mo ago