This feature allow assets with potentially manipulatable oracles (for example illiquid Uni V3 pairs) to be listed on Aave 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.
{% hint style="info" %}
Risk or Pool admin, selected by Aave Governace, can call setSiloedBorrowing
to set an asset in Siloed Borrowing mode.
{% endhint %}
A user can supply S_iloed 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.
{% hint style="danger" %} User borrowing a siloed asset will _ not_ be allowed to __ borrow __ any other asset_._ {% endhint %}
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 AaveProtocolDataProvider.sol.
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);
User automatically enters siloed borrowing state on their first successful borrow of siloed asset.
User must repay all their debt to exist siloed borrowing state.
Currently there is no asset marked siloed in any of the V3 markets. Risk or Pool admins can set already listed assets as siloed if needed as per market conditions. This feature can be used for new asset listing which may have higher risk.