Siloed Borrowing

This feature allow assets with potentially manipulatable oracles (for example illiquid Uni V3 pairs) to be listed on Spark Protocol as single borrow asset i.e. if user borrows siloed asset, they cannot borrow any other asset. This helps mitigating the risk associated with such assets from impacting the overall solvency of the protocol.

Risk or Pool admin, selected by Maker Governance, can call setSiloedBorrowing to set an asset in Siloed Borrowing mode.

Supply Siloed Assets

A user can supply _Siloed Asset_ just like any other asset using supply() method in pool.sol, though, the asset will not be enabled to use as collateral i.e. supplied amount will not add to total collateral balance of the user.

Borrow Siloed Assets

User borrowing a siloed asset will _ not_ be allowed to __ borrow __ any other asset_._

User can borrow Siloed Assets using borrow() method in pool.sol , only if:

  • It is first borrow onBehalf of the address

OR

  • Existing user debt is of the same siloed asset.

To check if user is in Siloed Borrowing state, you can see if underlying asset borrowed by user is s_iloed_ using getSiloedBorrowing() method on SparkProtocolDataProvider.sol.

Check if Reserved for Siloed Borrowing

import {AaveProtocolDataProvider} from '@aave/core-v3/contracts/misc/AaveProtocolDataProvider.sol';
AaveProtocolDataProvider poolDataProvider = AaveProtocolDataProvider(provider.getPoolDataProvider());
// address of the underlying asset
address asset = "0x...";

protocolDataProvider.getSiloedBorrowing(asset);

FAQ

How can user enter siloed borrowing state?

User automatically enters siloed borrowing state on their first successful borrow of siloed asset.

How does user exit siloed borrowing state?

User must repay all their debt to exist siloed borrowing state.

Last updated