Silo Finance brings borrowing and lending markets to all crypto assets. Unlike other isolated lending protocols, every asset can be used as collateral. Each Silo supports only 2 assets, ETH and a unique token. By isolating the risk of any asset to a specific Silo, new and higher-risk assets can be immediately utilized in lending markets without causing systemic risk to assets held in other Silos. The impact of an asset being hacked, exploited or manipulated is limited to the value of the 2 assets held in that specific Silo.
A user can go long any asset & short any asset. For example, a user can deposit ABC into the ABC Silo and borrow ETH. The user can then deposit the borrowed ETH as collateral into the XYZ Silo and subsequently borrow XYZ. The net result is that the user is long ABC and short XYZ, with the borrowed and lent ETH positions approximately canceling each other out. By eliminating direct interaction between Silos, depositors are only exposed to the risk they knowingly take. Silos from Silo Finance provide similar risk isolation as LP pools on AMMs such as Uniswap.
Similar to v1 Uniswap, each v1 Silo has the same parameters for Loan to Value (LTV), Liquidation Threshold, Liquidation Penalty, and oracle. A Silo can be created for any asset. Users can borrow up to 50% of the value of their collateral. Collateral will be liquidated when the debt position is 62.5% of the collateral. This high liquidation threshold reduces the risk of any Silo becoming undercollateralized during a liquidation event.
Interest rates are set dynamically based on an 80% target utilization for collateral. With dynamic rates, Silos continue to increase or decrease the borrow/lending rate of an asset until 80% of the collateral is utilized. This optimizes for utilization while also maximizing liquidity. Dynamic rates are a meaningful improvement on the linear utilization models of Aave and Curve, which have an upper bound on interest rate at 100% utilization that has occasionally left depositors unable to withdraw their deposits at will.
To maximize yield on deposited ETH and increase the liquidity of Silos, Silo Finance uses Yield Strategies, each of which enables ETH depositors to extend liquidity to multiple Silos at the same time. Similar to Yearn’s Vaults, users deposit their ETH into a Silo Yield Strategy that automatically moves ETH between Silos approved for that strategy. This allows users to generate the highest yield on their ETH deposits adjusted for their own risk tolerance.
For example, the USD Strategy will automatically move ETH between the USDC, USDT, DAI, 3CRV, Gemini, and RAI Silos to earn the highest interest rate on their ETH. Alternatively, a user may choose to deposit into the High Liquidity Strategy where ETH is automatically moved to any Silo whose non-ETH asset has more than $10M of liquidity on Uniswap and SushiSwap. This high level of liquidity further reduces the chance of a liquidation resulting in an undercollateralized Silo.
Silo Strategies are built on top of the Silo Finance money market protocol, so 3rd parties can build their own Strategies, too.
Silo UI is built in react (nextjs) from a fork of sushi-interface (to meet the timeline uni/sushi token lists, wallet loading and network switching were leveraged), a new Silo sub-graph (theGraph) feeds on chain Silo market data to the UI and smart contracts.
Smart contracts have a modular design, which means it’s easy to replace single piece of the system. There is a:
Interest Rate Model
Silo Factory is deploying lending markets. Silo contract holds liquidity for given asset and manages it’s borrowing and lending. SiloBridgePool manages our bridge asset which in this case is Matic token. SiloBridge contract is actually an unlimited set of Matic silos that store Matic liquidity and manage borrowing and lending Matic between bridge pool and each silo. SiloOracle is the the source of app prices for the protocol. It enable oracle extension which we also implemented. As of now Silo supports Chainlink Oracle (USD and ETH based prices), Uniswap V2 TWAP oracle and Uniswap V3 oracle. Router contracts allows for action batching. In example, if user wants to create 2 lending positions, router turns 4 transactions into one atomic execution. Interest Rate Model implements dynamic interest rate using PID controller. As of now, only “P” is implemented.
We used chainlink and uniswap oracles for price discovery. We user RAI as one of our first Silos ever created. We deployed on Polygon so the app is affordable and fast. We used AlchemyAPI for blockchain connection and the graph for feeding data to the UI.