From 71e8349a2ad8e22ed0e87f900f97a87c786382b2 Mon Sep 17 00:00:00 2001 From: Devin Black <82221522+devin-black@users.noreply.github.com> Date: Wed, 26 Feb 2025 17:56:27 -0500 Subject: [PATCH 1/9] Init commit for docs q1 update --- docs/concepts/faq.md | 74 +++++++++++++++++++ docs/concepts/loopscale/_category_.json | 6 +- docs/concepts/loopscale/asset-parameters.md | 4 - docs/concepts/loopscale/borrowing.md | 14 +--- docs/concepts/product/_category_.json | 6 ++ .../concepts/product/advanced/_category_.json | 6 ++ .../product/advanced/custom-lend-positions.md | 23 ++++++ .../advanced/lp-collateral-management.md | 7 ++ docs/concepts/product/borrow/_category_.json | 6 ++ .../product/borrow/borrowing-assets.md | 19 +++++ .../concepts/product/borrow/managing-loans.md | 49 ++++++++++++ .../product/global-asset-parameters.md | 7 ++ docs/concepts/product/lend/_category_.json | 6 ++ docs/concepts/product/lend/lending-assets.md | 43 +++++++++++ .../product/lend/managing-position.md | 22 ++++++ docs/concepts/product/loop.md | 67 +++++++++++++++++ docs/concepts/product/portfolio.md | 40 ++++++++++ docs/concepts/product/rewards.md | 5 ++ docs/concepts/product/risk-management.md | 33 +++++++++ .../protocol-concepts/_category_.json | 4 +- .../protocol-concepts/credit-order-book.md | 32 ++++++++ .../concepts/protocol-concepts/lend-vaults.md | 12 +++ .../protocol-concepts/limit-creditbook.md | 17 ----- docs/concepts/protocol-concepts/loans.md | 19 +++++ docs/concepts/protocol-concepts/loans.mdx | 41 ---------- docs/concepts/protocol-concepts/lockboxes.md | 23 ------ docs/concepts/protocol-concepts/loops.md | 5 ++ .../protocol-concepts/offers_and_positions.md | 42 ----------- .../protocol-concepts/virtual-orderbooks.md | 13 ---- 29 files changed, 487 insertions(+), 158 deletions(-) create mode 100644 docs/concepts/faq.md create mode 100644 docs/concepts/product/_category_.json create mode 100644 docs/concepts/product/advanced/_category_.json create mode 100644 docs/concepts/product/advanced/custom-lend-positions.md create mode 100644 docs/concepts/product/advanced/lp-collateral-management.md create mode 100644 docs/concepts/product/borrow/_category_.json create mode 100644 docs/concepts/product/borrow/borrowing-assets.md create mode 100644 docs/concepts/product/borrow/managing-loans.md create mode 100644 docs/concepts/product/global-asset-parameters.md create mode 100644 docs/concepts/product/lend/_category_.json create mode 100644 docs/concepts/product/lend/lending-assets.md create mode 100644 docs/concepts/product/lend/managing-position.md create mode 100644 docs/concepts/product/loop.md create mode 100644 docs/concepts/product/portfolio.md create mode 100644 docs/concepts/product/rewards.md create mode 100644 docs/concepts/product/risk-management.md create mode 100644 docs/concepts/protocol-concepts/credit-order-book.md create mode 100644 docs/concepts/protocol-concepts/lend-vaults.md delete mode 100644 docs/concepts/protocol-concepts/limit-creditbook.md create mode 100644 docs/concepts/protocol-concepts/loans.md delete mode 100644 docs/concepts/protocol-concepts/loans.mdx delete mode 100644 docs/concepts/protocol-concepts/lockboxes.md create mode 100644 docs/concepts/protocol-concepts/loops.md delete mode 100644 docs/concepts/protocol-concepts/offers_and_positions.md delete mode 100644 docs/concepts/protocol-concepts/virtual-orderbooks.md diff --git a/docs/concepts/faq.md b/docs/concepts/faq.md new file mode 100644 index 0000000..8fe96a1 --- /dev/null +++ b/docs/concepts/faq.md @@ -0,0 +1,74 @@ +--- +sidebar_position: 11 +draft: false +--- + +# FAQ + +## About Loopscale + +### What is Loopscale? How is it different from other lending protocols? +Loopscale is a lending protocol built on Solana that uses order books instead of lending pools. Via Atomic Markets, lenders and borrowers match directly based on their preferred terms, rates, and collateral types. + +This approach eliminates the inefficiency of traditional lending pools, provides better rates, and supports any asset type without commingling risks across markets. + +Learn more about how Loopscale is different: [Why Loopscale](/concepts/why-loopscale). + +### What types of assets can be used on Loopscale? +Loopscale's architecture supports any token primitive, including those traditionally underserved by pool-based lending protocols. Loopscale allows for new assets to find lending markets without extensive governance processes or minimum liquidity requirements. + +See a full list of currently supported collateral on the [Loopscale App](https://app.loopscale.com/markets). + +### What is the history of Loopscale? +Loopscale evolved from Bridgesplit, which originally focused on building credit primitives for real-world assets. The team, upon seeing the same need for sophisticated lending primitives in crypto-native markets, pivoted and launched Loopscale in August 2024. + +### Has Loopscale raised funds? +Yes. In 2021, when Loopscale was known as Bridgesplit, the company raised $4.25M from CoinFund, Jump, Coinbase Ventures, Solana Ventures, and Room40. More information about this funding round is available in this [press release](https://www.businesswire.com/news/home/20211216005113/en/NFT-Financialization-Platform-Bridgesplit-Announces-4.25M-Raise-Led-by-CoinFund-and-Jump-Capital). + +### Has Loopscale been audited? +The core protocol underwent an audit in 2024, and a newer, more comprehensive audit is currently in progress. This new report will be published when Loopscale exits closed beta. + +### Is there a token or airdrop planned? +No token or airdrop plans have been announced. Users should be vigilant against scams. **Anyone claiming to offer a Loopscale token or airdrop is not legitimate**. + +## Using Loopscale + +### How do fixed-rate loans work on Loopscale? +Fixed-rate loans on Loopscale maintain the same interest rate through a fixed term (e.g. 1 day, 1 week, 1 month, or 3 months). Unlike variable rate options common in traditional DeFi lending pools, there is no variable rate volatility for loans on Loopscale. + +### What occurs at the end of a fixed-duration loan term? +Upon reaching maturity, loans are automatically refinanced (re-opened at the same terms) at current market rates unless auto-refinancing has been disabled. Auto-refinancing can be disabled (or re-enabled) for any position via the Portfolio page. + +### Can I withdraw lent liquidity before the term ends? +Early withdrawals are available through the Portfolio page. When withdrawing early, the loan is sold at fair market value to the best available offer. The fair value calculation accounts for: +- Remaining interest on the loan +- Current market rates +- The new lender's target APY + +Interest earned up to that point is retained, with a small adjustment if the rate differs from current market rates. + +### How do I get support? +Support is available through the [Loopscale Discord](https://discord.gg/loopscale) by opening a support ticket. For issues related to using the platform, including a wallet address in the initial message allows the team to provide assistance more quickly. + +### How do points work? +Points are earned through active participation in the protocol, including: +- Lending assets +- Borrowing assets +- Yield Loops +- Referring new users (you will receive a portion of referred users' points) +- Participating in select promotions (see the [Rewards page of the app](https://app.loopscale.com/rewards). + +### How many points do users get? +Users earn 0.0002 points per dollar value lent, borrowed, or looped per day, before multipliers. + +Different assets and actions (i.e. borrowing vs. lending) may have different multipliers. On the Loopscale App, hovering over the blue icon next to Lend or Borrow APYs in the asset list displays the specific multipliers. + +### Do users earn points on idle liquidity? +Yes, points are earned on supplied assets even when they aren't actively being borrowed. This rewards providing market depth and supporting overall liquidity. + +### How do points from other protocols function within Loopscale? +Points can also be earned from other integrated protocols, indicated by the protocol's logo displayed alongside the blue points icon in the assets list on looping and borrowing pages. + +The Optimized Yield functionality automatically allocates unutilized lent capital to marginfi pools until matched with a borrower, providing marginfi points in this instance. + +These external protocols maintain responsibility for offering and managing their own points systems. Loopscale does not hold or disburse points from these external protocols. \ No newline at end of file diff --git a/docs/concepts/loopscale/_category_.json b/docs/concepts/loopscale/_category_.json index 40537e0..8a0e2de 100644 --- a/docs/concepts/loopscale/_category_.json +++ b/docs/concepts/loopscale/_category_.json @@ -1,6 +1,6 @@ { - "label": "Loopscale", - "position": 4, + "label": "Loopscale (old)", + "position": 50, "link": null, - "collapsed": false + "collapsed": true } \ No newline at end of file diff --git a/docs/concepts/loopscale/asset-parameters.md b/docs/concepts/loopscale/asset-parameters.md index b25ed4c..49fe92f 100644 --- a/docs/concepts/loopscale/asset-parameters.md +++ b/docs/concepts/loopscale/asset-parameters.md @@ -10,10 +10,6 @@ Borrowers and lenders on Loopscale interact via virtualized Limit Creditbooks wi - 1 month - 3 months -### Fees -To compensate lenders for an unused portion of a loan duration, borrowers are partial interest on any early repaid principal, expressed as a percentage of the original interest expected for the repaid principal. - -**Early Repayment Penalty**: 50% of forgone interest ## Principal The following assets are eligible to be used as principal on Loopscale's vLCBs. diff --git a/docs/concepts/loopscale/borrowing.md b/docs/concepts/loopscale/borrowing.md index 3b4122f..ed6335d 100644 --- a/docs/concepts/loopscale/borrowing.md +++ b/docs/concepts/loopscale/borrowing.md @@ -24,20 +24,8 @@ A borrower may deposit additional collateral for a loan, increasing the collater You can partially or fully repay a loan at any point. You only owe interest on loan value you have outstanding. So if you repay early, you won’t owe interest for the remaining time on the principal repaid. If you repay early, you will incur a fee that is proportional to the interest saved. This is to compensate the lender for locking their capital up and discourage long capital reservations without reason. ### Early Repayment -A borrower may repay a loan in full before the loan due date. Upon repayment, the loan will end and the collateral will be returned to the borrower. +A borrower may repay a loan in full before the loan due date. Upon repayment, the loan will end and the collateral will be returned to the borrower. A borrower may also partially repay a loan early, decreasing the loan value and increasing the health factor. Upon early repayment, interest accrued up until that point is paid. -A borrower may also partially repay a loan early, decreasing the loan value and increasing the health factor. - -#### Prepayment Penalty -Borrowers must pay 40% of the original interest for the unused time of a loan. In other words, interest is reduced by 60% for any early repaid loan amount. - -To illustrate the prepayment penalty, consider the following example: -1. The total interest due for 1-day, 40,000 USDC loan is 20 USDC (18.25% APY) -2. A borrower repays 10,000 USDC after 12 hours -3. After the full day has passed, borrower's total *interest* owed has three parts, for a total of 18.5 USDC (vs. 20 USDC): - 1. 18.25% APY on 40,000 USDC for the first 12 hours -> 10 USDC - 2. 18.25% APY on 30,000 USDC for the second 12 hours -> 7.5 USDC - 3. 40% of 18.25% APY on 10,000 USDC for the second 12 hours -> 1 USDC ## Refinancing One of the more powerful concepts for borrowers on Loopscale is the refinance. Refinancing is the process of repaying one outstanding loan by atomically starting another. The original lender is paid off and a new loan is started. diff --git a/docs/concepts/product/_category_.json b/docs/concepts/product/_category_.json new file mode 100644 index 0000000..cd4452c --- /dev/null +++ b/docs/concepts/product/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Product", + "position": 3, + "link": null, + "collapsed": true +} \ No newline at end of file diff --git a/docs/concepts/product/advanced/_category_.json b/docs/concepts/product/advanced/_category_.json new file mode 100644 index 0000000..26123a7 --- /dev/null +++ b/docs/concepts/product/advanced/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Advanced", + "position": 4, + "link": null, + "collapsed": true +} \ No newline at end of file diff --git a/docs/concepts/product/advanced/custom-lend-positions.md b/docs/concepts/product/advanced/custom-lend-positions.md new file mode 100644 index 0000000..ceaa793 --- /dev/null +++ b/docs/concepts/product/advanced/custom-lend-positions.md @@ -0,0 +1,23 @@ +--- +sidebar_position: 2 +--- + +# Custom Lend Positions + + + +## Smart orders +Lenders may also create **Smart Orders (Virtual Orders)**, which enhance capital efficiency by enabling the same capital to be displayed across multiple **Lend Limit Orders** according to a term ruleset: + +- Eligible Collateral and maximum LTVs +- Rate on a per-collateral-duration pair basis +- Eligible Durations + + + +To create a more familiar experience for DeFi users, the **Loopscale App** exposes only a subset of order creation flows. + +1. For immediacy: To provide instant liquidity, lenders place **Limit Orders** (in the form of **Smart Orders**) and borrowers place **Market Orders** matching to the available capital. + + + For liquidity: To concentrate liquidity in the most popular markets, Smart Orders are restricted to Virtual Markets (Virtual Limit Creditbook, Virtual Creditbook), standardized subsets of terms with fixed oracles, fees, and zero-coupon repayment schedules. These Virtual Markets offer a preset selection of duration, collateral, and principal options. \ No newline at end of file diff --git a/docs/concepts/product/advanced/lp-collateral-management.md b/docs/concepts/product/advanced/lp-collateral-management.md new file mode 100644 index 0000000..9cc0467 --- /dev/null +++ b/docs/concepts/product/advanced/lp-collateral-management.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 1 +--- + +# LP Collateral Management + +https://x.com/TruittLuke/status/1852424740650262821 diff --git a/docs/concepts/product/borrow/_category_.json b/docs/concepts/product/borrow/_category_.json new file mode 100644 index 0000000..36037c8 --- /dev/null +++ b/docs/concepts/product/borrow/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Borrow", + "position": 2, + "link": null, + "collapsed": true +} \ No newline at end of file diff --git a/docs/concepts/product/borrow/borrowing-assets.md b/docs/concepts/product/borrow/borrowing-assets.md new file mode 100644 index 0000000..71c77ae --- /dev/null +++ b/docs/concepts/product/borrow/borrowing-assets.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 1 +--- + +# Borrowing Assets +When borrowing on Loopscale, a user selects: + +- An asset and amount to borrow +- How long they wish to borrow for +- An asset its amount to use as collateral + +The list of available borrow assets, collateral assets, and loan duration options are available on the Loopscale App. Each collateral asset has a loan-to-value ratio that determines the maximum borrowable amount. + +The borrower receives funds at the lowest rate on the market and the collateral is escrowed. The collateral is returned to the borrower once the borrowed funds and accrued interest have been fully repaid. + +A borrower will default, losing their collateral the loan's health factor falls below 0%. To learn more about defaults and how health factor is calculated, see Loan Health & Defaults. TODO: add link here +## Quick borrow + +## Advanced borrow \ No newline at end of file diff --git a/docs/concepts/product/borrow/managing-loans.md b/docs/concepts/product/borrow/managing-loans.md new file mode 100644 index 0000000..98db87d --- /dev/null +++ b/docs/concepts/product/borrow/managing-loans.md @@ -0,0 +1,49 @@ +--- +sidebar_position: 2 +--- + +# Managing Loans +You can partially or fully repay a loan at any point. You only owe interest on loan value you have outstanding. So if you repay early, you won’t owe interest for the remaining time on the principal repaid. If you repay early, you will incur a fee that is proportional to the interest saved. This is to compensate the lender for locking their capital up and discourage long capital reservations without reason. + +A borrower has two ways to improve a loan's health factor: (1) topping up collateral (2) repaying a loan or portion of a loan early. + +A borrower may repay a loan in full before the loan due date. Upon repayment, the loan will end and the collateral will be returned to the borrower. A borrower may also partially repay a loan early, decreasing the loan value and increasing the health factor. Upon early repayment, interest accrued up until that point is paid. + + +## Monitoring loan health +loan's health factor helps a borrower easily understand a loan's real-time risk of a price-based. The health factor has a maximum value of 100%. A health factor of 0% signals a loan is at risk of liquidation, meaning its collateralization ratio no longer meets the liquidation threshold. + +The health factor is calculated with the following formula: + +$\text{Health Factor} = 1 - \displaystyle\frac{\text{Collateralization Ratio}}{\text{Liquidation Ratio}}$, where + + +$\text{Collateralization Ratio} = 1 - \displaystyle\frac{\text{Debt Value in USD}}{\text{Collateral Value in USD}}$ + + +and the $\text{Liquidation Ratio}$ is a per-collateral, protocol-determined value. ${\text{Debt Value}}$ includes the total interest as calculated at the loan due date. +The liquidation ratio is fixed for the lifetime of the loan whereas the collateralization ratio may fluctuate over the course of a loan as the value of the collateral or debt changes. + +Platform-wide liquidation ratio values can be found [here](./risk-management.md). + +## Borrow more + +## Withdraw collateral + +## Top up loan +A borrower may deposit additional collateral for a loan, increasing the collateral value and increasing the health factor. The additional collateral must be of the same asset. Excess collateral may not be withdrawn until the loan conclusion with the rest of the collateral. + +## Refinancing +TODO: See how much of this section is accurate. rewrite to be easier understood. +Borrowers on Loopscale are able to refinance their loans. Refinancing is the process of repaying one outstanding loan by atomically starting another. The original lender is paid off and a new loan is started. + +Refinancing only works if there is an offer at a greater than or equal to size of the amount owed on a loan and for the corresponding term and collateral. The new loan is started at an amount equal to the original principal plus any accrued interest and fees for the new length. + +If the amount of collateral in the existing loan is insufficient to start aa new loan (e.g. Loan Balance > (LTV * Collateral)), the refinance will fail. + +Borrowers can opt-in to auto-refinancing which is an off-chain matching engine to find available offers automatically to renew loans instead of a payment based default. There is a 15 minute grace period post loan failure where the loan will attempt to be matched. + +# Defaults +If a loan defaults, the loan ends and the borrower loses ownership of the collateral, including excess collateral and early repayments. Loans on Loopscale have two default mechanisms, price-based and payment-based. + +Similar to liquidations on existing DeFi lending protocols, price-based defaults occur when a loan's health factor reaches 0. In other words, a price-based default occurs when the value of loan's collateral relative to the value of the debt falls below the liquidation threshold. This can happen at any point during the loan, and borrowers should monitor their health factor to avoid a price-based default. Borrowers can increase their health factor by repaying principal and topping up collateral amounts. \ No newline at end of file diff --git a/docs/concepts/product/global-asset-parameters.md b/docs/concepts/product/global-asset-parameters.md new file mode 100644 index 0000000..9ae8b7d --- /dev/null +++ b/docs/concepts/product/global-asset-parameters.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 8 +--- + +# Global Asset Parameters +hey +--> \ No newline at end of file diff --git a/docs/concepts/product/lend/_category_.json b/docs/concepts/product/lend/_category_.json new file mode 100644 index 0000000..5ed937b --- /dev/null +++ b/docs/concepts/product/lend/_category_.json @@ -0,0 +1,6 @@ +{ + "label": "Lend", + "position": 3, + "link": null, + "collapsed": true +} \ No newline at end of file diff --git a/docs/concepts/product/lend/lending-assets.md b/docs/concepts/product/lend/lending-assets.md new file mode 100644 index 0000000..826c291 --- /dev/null +++ b/docs/concepts/product/lend/lending-assets.md @@ -0,0 +1,43 @@ +--- +sidebar_position: 1 +--- + +# Lending Assets +Lending on Loopscale allows users to earn interest on their digital assets. Unlike pool-based protocols where assets are supplied to a liquidity pool, lending on Loopscale operates on the order book model. Users effectively create a limit order on the Loopscale Credit Order Book; this order + +There are two ways to lend on Loopscale: + +1. Lend through Loopscale's Earn Vaults, where lending positions are managed by a third party vault custodian +2. Create custom lend orders specifying rates and eligible collateral. + +Most users elect to use the vaults to earn yield without having to consider lending strategies; in the rest of this article, custom lending strategies will be discussed. + +Lending on Loopscale is done through _strategies_. A strategy is where a lender deposits funds into a pool, selecting: + +1. Term Lengths you’re willing to lend for (1 day, 1 week, 1 month, 3 months) +2. Interest Rate you are willing to accept +3. Collateral you’re willing to lend against + +## Setting an interest rate +Interest rates on Loopscale are market-driven, meaning they're set by lenders and accepted by borrowers directly. This creates more efficient pricing compared to pool-based models where rates are determined by utilization. + +When setting rates, consider current interest rates on the order book. More competitive rates will be utilized sooner. Longer term lengths typically command higher interest rates. + +Term length (longer terms typically command higher rates) +Current market conditions +Asset liquidity + +## Collateral selection +Users can choose which collateral is eligible to be offered in exchange for borrowing their lent liquidity. For more information, see global asset parameters. + +Loopscale has a number of preset strategies to make the lending process even faster for quick borrowers. All presets set the max loan length to 1 month: +- Global: All Available Assets +- Core: Large Cap Solana tokens, LSTs, and other L1s +- DeFi: DeFi Governance tokens, LP positions, and vaults +- Memecoin: Large Cap Memecoins on Solana + +## After Creation +Once a strategy is created, an order will sit on the Credit Order Book equal to the amount un-utilized balance of the strategy. Capital can be removed from the strategy if its unused and additional capital can be deployed to strategies. + +From here, see: [Manage Position](/concepts/product/lend/lending-assets). + diff --git a/docs/concepts/product/lend/managing-position.md b/docs/concepts/product/lend/managing-position.md new file mode 100644 index 0000000..11ac88e --- /dev/null +++ b/docs/concepts/product/lend/managing-position.md @@ -0,0 +1,22 @@ +--- +sidebar_position: 2 +--- + +# Managing Positions + +## Deposit + +## Withdraw + +## Capital Management +Capital will be taken from the strategy to start new loans. Once capital is deployed to a loan, it is locked up for the length of the loan unless the borrower repays it early. + +## Withdrawing early +Users can withdraw from the loan early, collecting partial interest, by selling the loan back to the market before the due date. + +## Defaults +In the event of a default, liquidators will be able to purchase the collateral automatically at a value equal to the loan amount you’re owed and the funds will automatically be recycled into your strategy. If you you prefer to seize the collateral directly, you can turn off auto-liquidations in your strategy settings and take possession of the collateral directly. + +## Halting New Loans +If a lender wishes to stop new loans from being originated from their strategy, they can turn off new origination in strategy settings. + diff --git a/docs/concepts/product/loop.md b/docs/concepts/product/loop.md new file mode 100644 index 0000000..35a5957 --- /dev/null +++ b/docs/concepts/product/loop.md @@ -0,0 +1,67 @@ +--- +sidebar_position: 1 +--- + + +# Loop + +Yield Loops are Loopscale structured product that offers users access to leveraged yield strategies. They enable users to multiply returns from yield-bearing assets through an automated, single-transaction process. + +## How Yield Loops Work +A Yield Loop uses deposited tokens as collateral to borrow more of the same yield-bearing asset. This creates a loop where both the initial deposit and the borrowed tokens earn yield, amplifying returns. + +Loopscale's order book model provides fixed-rate loans that protect against rate spikes that could turn profitable positions negative. This structure also offers more competitive rates compared to pool-based models, as lenders set rates based on specific collateral rather than a pool of mixed assets. Additionally, each loan is directly matched with a lender, reducing systemic risks and preventing contagion across markets. + +Yield Loops work as follows, using the JupSOL-SOL loop as an example. +1. Loopscale borrows SOL with no collateral via a flash loan +2. SOL is swapped for more JupSOL +3. JupSOL is deposited as collateral in Loopscale +4. SOL is borrowed against the JupSOL collateral +5. Borrowed SOL repays the initial flash loan + +Loopscale executes these steps atomically. This means that all the above actions occur within a single transaction and revert if any step fails. + +The end result: a levered JupSOL position earning more yield as long as borrow rates are lower than the base JupSOL yield. + +## Creating a Yield Loop + +To create a Yield Loop: + +1. Navigate to the [Loops page](https://app.loopscale.com/loops) on the Loopscale App +2. Select an asset from the available categories (Long/short, leveraged staking, LPs, etc.) +3. Choose your leverage amount +4. Optionally, select slippage limits and a custom fixed rate duration (higher durations protect from rate volatility, but typically command higher borrow rates) +5. Approve and execute the transaction + +## Managing Your Position + +It's important to monitor your Yield Loop position's health to avoid liquidation. The Loopscale interface provides key metrics to help you track your position: + +- Current leverage +- Liquidation threshold +- Projected returns based on current yield rates + +Remember that your position remains profitable as long as the yield from your leveraged asset exceeds the borrowing costs. + +## Closing a Position + +When you're ready to close your Yield Loop: + +1. Navigate to your active positions in the Loops section of the [Portfolio](https://app.loopscale.com/portfolio) page. +2. Select the position you wish to close and close it. + +Loopscale will then: +1. Flash loan the amount needed to repay your loan +2. Repay the long-term loan to free up your collateral +3. Sell enough of your yield-bearing asset to repay the flash loan +4. Return the remaining assets to your wallet + + +## Yield Loop Risk Considerations + +When using Yield Loops, be aware of these risk factors: + +1. **Yield volatility**: If the yield of your asset drops below your borrowing rate, your position may become unprofitable. Choosing longer fixed rate durations can help address this (but will typically require a higher borrow rate) +2. **Asset price volatility**: Significant price drops can lead to liquidation + +Loopscale mitigates these risks through isolated positions, fixed-rate loans, and atomic execution, but users should still approach leveraged strategies with appropriate caution. \ No newline at end of file diff --git a/docs/concepts/product/portfolio.md b/docs/concepts/product/portfolio.md new file mode 100644 index 0000000..a3034be --- /dev/null +++ b/docs/concepts/product/portfolio.md @@ -0,0 +1,40 @@ +--- +sidebar_position: 5 +--- + +# Portfolio + +The Portfolio page is a central place to view your ongoing and past positions across loops, lending, and loans. + +## Borrow View +1. The portfolio statistics include — +* **Minimum Health**: The lowest health factor of your ongoing loans +* **Borrow APY**: A weighted average borrow APY for your ongoing loans +* **Next Payment**: The soonest due date of your own going loans +* **Total Debt**: The total debt due (includes interest) + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/c0e0a835-0611-4668-9317-ea74e99fe021/1/50/23.577235772358?0) +2. View and manage in the "Ongoing loans" tab. Clicking a loan will take you to the Loan Detail page. + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/62fe4e38-8202-4758-a50b-ab98ac32fd95/1/50/65.108401084011?0) + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/3fac2a8e-c68f-4594-a803-f5a2721e9f03/2.5/23.725043402778/77.642276422764?0) + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/ff2c8550-dc45-45af-8587-00e7877d4df6/2.5/16.458333333333/77.642276422764?0) +3. Click on "Requests" to view and manage outstanding borrow requests + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/2e4c7625-38a8-4b46-abcc-bd3a42edc4bd/2.5/20.085177951389/39.837398373984?0) + +## Lend View +1. The portfolio statistics include — +* **APY**: A weighted average borrow APY for your ongoing loans and strategies +* **Outstanding Debt**: The total amount due at this point across how many loans +* **Outstanding Interest**: Total interest earned as a lender and the amount of loans originated +* **Positions balance**: The total amount of capital active in positions + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/8f57813e-dad7-4590-9c74-c9ee2870bdfa/1/50/23.577235772358?0) +1. Switch to the lending view + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/7c21fec2-5431-4c42-9c20-d824ba8134a4/2.5/84.722222222222/13.821138211382?0) +2. View your existing deposits + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/e11c54af-4798-4ae8-9762-90ac157e40de/1/50/64.49864498645?0) + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/a3763f4b-f6b5-4ca5-8bdd-19603d8f5cec/2.5/27.329644097222/77.032520325203?0) + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/f7884720-ce58-41b8-a9ee-f37c42fe6de0/2.5/27.430555555556/97.69647696477?0) +3. Check out your current and past loans + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/9ce91d60-081f-4610-8373-a884d99cfeb3/2.5/21.9140625/39.837398373984?0) + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/5263034e-b18f-4171-8cc8-fb7d1e2e56ae/1/50/65.108401084011?0) +4. View custom offers you've made + ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/4f117def-d000-422f-8c98-f9374b04c5c2/2.5/27.832573784722/39.837398373984?0) diff --git a/docs/concepts/product/rewards.md b/docs/concepts/product/rewards.md new file mode 100644 index 0000000..e57088c --- /dev/null +++ b/docs/concepts/product/rewards.md @@ -0,0 +1,5 @@ +--- +sidebar_position: 6 +--- + +# Rewards \ No newline at end of file diff --git a/docs/concepts/product/risk-management.md b/docs/concepts/product/risk-management.md new file mode 100644 index 0000000..377633b --- /dev/null +++ b/docs/concepts/product/risk-management.md @@ -0,0 +1,33 @@ +--- +sidebar_position: 7 +--- +# Risk Management +When using Loopscale, it's important to understand and manage the financial and operational risks involved. This page outlines key risks to consider and provides guidance on mitigating them. Some of these risks apply only to borrowers or only to lenders. +## Financial Risks +### Interest Rate Risk +Interest rate risk arises from the potential for market rates to diverge from the fixed rate of your loan over time. Borrowing or lending at a fixed rate for a specific duration may result in your loan being more expensive or cheaper than the prevailing market rate. The sensitivity to interest rate changes increases with loan duration. + +### Liquidity Risk +The diverse range of collateral accepted by Loopscale can expose users to liquidity risk. Different tokens have varying levels of underlying liquidity and availability across trading venues. This risk of illiquidity of collateral should be considered when lending. + +### Liquidation Risk +Loans on Loopscale are subject to both price and payment-based liquidations. If the collateral value relative to the principal plus accrued interest falls below the liquidation threshold, the collateral may be seized. In such cases, repayments made will be forfeited, and the collateral will be transferred to the liquidator. Borrowers should closely monitor their loan's health ratio, as a ratio of 0% indicates eligibility for liquidation. To avoid liquidation, borrowers can repay a portion of the loan or add more collateral. + +### Refinancing Risk +Refinancing on Loopscale is the process of paying off an existing loan with an order from the books. There are several reasons a refinance may fail including lack of liquidity on the orderbooks, chain congestion, or technical failure. If the refinance fails and the loan is past the grace period, the loan will be liquidated. Another risk to refinancing is ending up with higher rate loans. The matching engine attempts to find the lowest cost loan however that may be significantly higher than the rate at which you started the loan at. + +### Time Risk +Loans that are not set up to refinance automatically or if there are issues refinancing may be subject to liquidation early. This will result in the loss of collateral and is unrecoverable. + +### Asset Counterparty Risks +Assets you are borrowing or using as collateral have underlying risks such as depegs, team risks, market risks, and concentration risks. Pick the assets you transact in wisely and understand that Loopscale does not control many of the factors that impact most of these assets. If a specific asset issuer blacklists you or the Loopscale Protocol there may be disruption of service. + +Assets used for borrowing or collateral are subject to various risks, including depegs, team risks, market risks, and concentration risks. For example, Stablecoins used in Loopscale, such as USDC, may experience price deviations from their intended peg (usually 1 USD). As tokens are priced in USD, a depeg can lead to a devaluation of cash or present value of assets. This, in turn, may reduce a borrower's health factor and increase liquidation risk. It's essential to carefully select assets and understand that Loopscale does not control many of the factors impacting these assets. If an asset issuer blacklists a user or the Loopscale Protocol, service disruptions may occur. + + +## Operational Risks +### Smart Contract Risk +Contracts inherently risk containing vulnerabilities that can be exploited by attackers, including compromised or manipulated external dependencies and economic incentive. All Loopscale Protocol contracts are currently under audit. Upon completion of these audits and the open-sourcing of the protocol, a bug bounty program will be established. + +### Oracle Price Risk +Any Loopscale loan may be connected to an oracle, as established by the borrower or lender in the initial order. For all loans on Loopscale, [the connected oracles](/concepts/markets/asset-parameters" have been determined by the Loopscale team. All oracles are subject to price manipulation or incorrect inputs, falsely reducing or increasing asset values, leading to premature liquidations or bad debt. Oracle quality, including safety, liveness, centralized control, and precision and frequency of price updates, should be considered in assessing risk. \ No newline at end of file diff --git a/docs/concepts/protocol-concepts/_category_.json b/docs/concepts/protocol-concepts/_category_.json index c978307..8f9820c 100644 --- a/docs/concepts/protocol-concepts/_category_.json +++ b/docs/concepts/protocol-concepts/_category_.json @@ -1,6 +1,6 @@ { "label": "Protocol Concepts", - "position": 3, + "position": 4, "link": null, - "collapsed": false + "collapsed": true } \ No newline at end of file diff --git a/docs/concepts/protocol-concepts/credit-order-book.md b/docs/concepts/protocol-concepts/credit-order-book.md new file mode 100644 index 0000000..4bcbee9 --- /dev/null +++ b/docs/concepts/protocol-concepts/credit-order-book.md @@ -0,0 +1,32 @@ +--- +sidebar_position: 3 +--- + +# Credit Order Book + +TODO: Fix all of this. in particular, figure out how to get the names to be similar + +The Credit Order Book (COB) serves as the central venue where lenders and borrowers interact via offers and requests. It is designed to facilitate efficient order matching, price discovery, and liquidity concentration. The Limit Creditbook (LCB) catalogs all borrower and lender orders and the virtualized Limit Creditbooks (vLCB) represents an abstraction designed to concentrate liquidity for a subset of markets. + +## Smart Orders +Lenders may create Smart Orders, which enhance capital efficiency by enabling the same capital to be displayed as multiple different Lend Limit Orders according to a term ruleset: +- Eligible collateral and maximum LTVs +- Rate on a per-collateral-duration pair basis +- Eligible durations + + +## Virtual Markets +Virtual Markets are standardized subsets of terms with fixed oracles, fees, and zero-coupon repayment schedules. These Virtual Markets offer a preset selection of duration, collateral, and principal options. + +![](../../../static/img/docs/concepts/limit-creditbook-1.png) +On the Credit Order Book, borrowers and lenders can place orders for by defining individual [loan structures](/concepts/protocol-concepts/loans) offering maximal configurability. On Loopscale, borrowers and lenders primarily interact with the Credit Order Book via virtualized Credit Order Books. A virtualized Credit Order Book represents a collection of orders standardized on a subset of terms. +The initial virtualized credit books on Loopscale standardize orders such that borrowers and lenders specify only principal, collateral, amount, rate, and duration and principal, collateral, and duration have a predefined set of options. This provides a streamlined experience and concentrates liquidity within unique combinations of principal, collateral, and duration. +![](../../../static/img/docs/concepts/limit-creditbook-2.png) +![](../../../static/img/docs/concepts/limit-creditbook-3.png) +As liquidity grows, more vLCBs will be introduced with finer parameterization, balancing the trade-off between liquidity concentration and flexibility. + +## Order Matching +The Creditbook employs an on-chain matching engine to pair loan offers with loan requests. If an offer and request match across loan terms, the borrower may fill the lender offer, initialized the loan. + +Borrowers may also fill lender offers directly with matching collateral without creating a request. In this case, the borrower will fill the best-available order on the LCB as determined by the interest rate. + diff --git a/docs/concepts/protocol-concepts/lend-vaults.md b/docs/concepts/protocol-concepts/lend-vaults.md new file mode 100644 index 0000000..1eeccac --- /dev/null +++ b/docs/concepts/protocol-concepts/lend-vaults.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 4 +--- + +# Lend Vaults + +For a more passive lending experience, lenders can deposit into **Lend Vaults**, which function similarly to **Smart Orders** but pool capital from multiple lenders. These vaults are managed by external third parties who handle term decisions for the pooled capital. + +Vaults allocate deposits to curator-approved markets. Major strategy updates take effect after a time delay. Vaults generate returns from interest paid by borrowers borrowing from underlying markets. + +If the vault has low liquidity, choose between an instant withdrawal with a small fee or join a withdrawal queue. + diff --git a/docs/concepts/protocol-concepts/limit-creditbook.md b/docs/concepts/protocol-concepts/limit-creditbook.md deleted file mode 100644 index 2c83cf4..0000000 --- a/docs/concepts/protocol-concepts/limit-creditbook.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -sidebar_position: 1 ---- -# Limit Creditbook (LCB) - -The Creditbook serves as the as the central venue where lenders and borrowers interact via offers and requests. It is designed to facilitate efficient order matching, price discovery, and liquidity concentration. The Limit Creditbook (LCB) catalogs all borrower and lender orders and the virtualized Limit Creditbooks (vLCB) represents an abstraction designed to concentrate liquidity for a subset of markets. -![](../../../static/img/docs/concepts/limit-creditbook-1.png) -On the Limit Creditbook, borrowers and lenders can place orders for by defining individual [loan structures](/concepts/protocol-concepts/loans) offering maximal configurability. On Loopscale, borrowers and lenders primarily interact with the LCB via virtualized Limit Creditbooks. A vLCB represents a collection of orders standardized on a subset of terms. -The initial vLCBs on Loopscale standardize orders such that borrowers and lenders specify only principal, collateral, amount, rate, and duration and principal, collateral, and duration have a predefined set of options. This provides a streamlined experience and concentrates liquidity within unique combinations of principal, collateral, and duration. -![](../../../static/img/docs/concepts/limit-creditbook-2.png) -![](../../../static/img/docs/concepts/limit-creditbook-3.png) -As liquidity grows, more vLCBs will be introduced with finer parameterization, balancing the trade-off between liquidity concentration and flexibility. - -## Order Matching -The Creditbook employs an on-chain matching engine to pair loan offers with loan requests. If an offer and request match across loan terms, the borrower may fill the lender offer, initialized the loan. - -Borrowers may also fill lender offers directly with matching collateral without creating a request. In this case, the borrower will fill the best-available order on the LCB as determined by the interest rate. \ No newline at end of file diff --git a/docs/concepts/protocol-concepts/loans.md b/docs/concepts/protocol-concepts/loans.md new file mode 100644 index 0000000..46a6a2c --- /dev/null +++ b/docs/concepts/protocol-concepts/loans.md @@ -0,0 +1,19 @@ +--- +sidebar_position: 2 +--- + +# Loans +A loan is created when a Lend Order matches with a compatible Borrow Order on the Credit Order Book. These orders specify terms of the requested loan, including: +- Principal (Asset, Max Amount) +- Collateral (Asset, Amount) +- Terms (Interest Rate, Repayment Schedule) +- Default Condition (Principal Oracle, Collateral Oracle, or Liquidiation LTV) + + +## Orders +To create a more familiar experience for DeFi users, the Loopscale App exposes only a subset of user creation flows. +1. To allow for instant liquidity, lenders place Lend Limit Orders (in the form of Smart Orders) and borrowers place Market Orders that match to the best priced Lending Limit Order. +2. To concentrate liquidity in the most popular markets, Smart Orders are restricted to Virtual Markets + +## Segregated Collateral +Collateral is held in Segregated Accounts, allowing users to actively manage their assets while they're being used as collateral (assuming the collateral remains eligible and healthy). For example, users can modify a liquidity position that's being used as collateral. diff --git a/docs/concepts/protocol-concepts/loans.mdx b/docs/concepts/protocol-concepts/loans.mdx deleted file mode 100644 index e75217b..0000000 --- a/docs/concepts/protocol-concepts/loans.mdx +++ /dev/null @@ -1,41 +0,0 @@ ---- -sidebar_position: 3 ---- -import { FixedTblCol } from "@site/src/js-components/inline"; - -# Loans -## Introduction -Direct loans form the foundation of the Loopscale Protocol, enabling direct lending and borrowing between users. Lenders can create loan offers and borrowers can create loan requests with specific parameters such as interest rate, duration, and collateral requirements. When a matching counterparty accepts the offer or request, a bilateral loan is initialized, and funds are transferred between the parties. The collateral remains non-transferrable until the loan concludes, at which point it is returned to the borrower upon repayment or transferred to the lender in the event of a default. - -## Offers and Requests -Loans are initiated when a loan offer and loan request, collectively known as orders, are matched. Orders define the terms of a loan, including payment frequency, interest rate, principal, duration, and fees. Once created, orders are listed on the Limit Creditbook (LCB) and matched by an on-chain matching engine. Borrowers and lenders can also directly accept active orders on the LCB. - -When a suitable offer and request are matched, or when a borrower or lender finds an acceptable order, the borrower can initiate the loan. The protocol automatically transfers the principal to the borrower and escrows the collateral. - -### Terms -| | Description | -|:---|:---| -| **Repayment type** | Simple-Interest loans have periodic interest payments with a final principal payment at maturity and Zero-Coupon loans have a single repayment that includes all interest and principal at maturity. | -| **Principal** | The amount of principal being lent to the borrower. | -| **Principal asset** | The currency of principal | -| **Collateral** | The minimum amounts and mints of the collateral. | -| **APY** | The annualized cost of funds over the loan term, expressed as a percentage. | -| **Duration** | The length of time of the loan contract. | -| **Repayment frequency** | The frequency at which the borrower is required to make interest payments in a simple-interest loan. | -| **Default type** | A loan's terms may include price-based defaults (defaulting when the loan's collateralization ratio reaches the liquidation threshold) and/or payment-based defaults (defaulting when a borrower misses a specified number of repayments). | -| **Auto-liquidation enabled** | For particular collateral types, lenders can elect to enable third-party liquidators who transfer the principal to the lender in exchange for the collateral in a default. | -| **Liquidation threshold** | The minimum ratio of collateral to debt that must be maintained by the borrower to avoid defaulting (defined only if price-based defaults are enabled). | -| **Max outstanding payments** | The number of outstanding interest payments allowed prior to a payment-based default (defined only if payment-based defaults are enabled). | -| **Early payment penalty** | The interest a borrower is required to pay on early principal repayments, expressed as a percentage of the original interest expected for the repaid principal. | -| **Late payment penalty** | The fee a borrower is required to pay on late payments, expressed as a percentage of the late repayment. | -| **Grace period** | The amount of time after a missed payment at which it is considered late. | -| **Principal pricing oracle** | An optionally defined custom pricing oracle to calculate principal value | -|**Collateral pricing oracle** | An optionally defined custom pricing oracle to calculate collateral value | - -## Ledgers -Initiating a loan automatically generates a repayment ledger based on the terms specified in the matched order. The ledger defines the repayment schedule and tracks repayments as they are made. The Loopscale Protocol uses this ledger to determine the current state of a loan. -## Defaults -**Price-based defaults**: Similar to existing liquidation mechanics, a price-based default occurs when the value of collateral relative to the value of the principal falls below the liquidation threshold. This can happen at any point during the loan, and borrowers should monitor their health factor to ensure it doesn't get too close to zero. Borrowers can avoid liquidations by repaying principal and topping up collateral amounts. -**Payment-based defaults**: Payment-based defaults result from a borrower missing scheduled payments in excess of the pre-determined max outstanding payments, including the maturity payment. -### Oracle Agnostic Pricing - Borrowers can set up loans that price their collateral or principal using custom or arbitrary oracles, enabling pricing for assets that may be illiquid or lack third-party oracle support. Loans may also be oracle-less, with borrowers proposing terms that solely default based on missed payments or loan expiry. \ No newline at end of file diff --git a/docs/concepts/protocol-concepts/lockboxes.md b/docs/concepts/protocol-concepts/lockboxes.md deleted file mode 100644 index 821617a..0000000 --- a/docs/concepts/protocol-concepts/lockboxes.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 2 ---- -# Lockboxes -A Lockbox escrows collateral for an individual loan for the duration of the loan. Lockboxes represent another significant difference between the Loopscale Protocol and other lending protocols. Unlike pool-based models where collateral is pooled and rehypothecated, collateral is deposited to the Lockbox, a loan-specific, programmatically-controlled account . Collateral on Loopscale is not rehypothecated and remains non-transferable for the duration of the loan. This approach offers two key benefits. - -## Collateral Eligibility -The absence of collateral segregation on other lending protocols limits the diversity of eligible collateral. - -Segregated collateral ensures the collateral risk for a particular loan is isolated to the lender, who may set collateral eligibility criteria and collateral-specific rates. In the event of a default, the collateral (or principal if liquidated) is returned to the lender. - -This means that any asset can be used as collateral so long as there is a willing lender. The Loopscale protocol supports complex collateral types including yield-bearing tokens such as natively staked SOL, liquidity provider positions such as Orca LP positions, and "real-world" assets such as tokenized funds or physical goods. - -## Minimized Risk -Pool-based models blend risk across all assets, making it more challenging to accurately price the risk associated with individual collateral assets. This approach has led to some of the most significant exploits in DeFi and results in substantial inefficiencies in pricing, as lenders must account for the risk of a diverse collateral base uniformly. An issue with one asset can have cascading effects across all assets, driving up the cost of borrowing against less volatile assets. - -Because collateral is segregated, liquidation risk is constrained to a single loan and non-rehypothecation eliminates the risk of liquidity mismatches. - -## Multi-Asset and Complex Asset Loans -Lockboxes also enable more complex collateral management including loans collateralized by multiple assets. Multi-asset collateral pricing is made possible because loans on are associated to a Lockbox and not any particular asset. - -Additionally, because the Lockbox is an on-chain account, it can also be delegated authority over other accounts. This means it can "store" assets such as exchange accounts or stake accounts. - diff --git a/docs/concepts/protocol-concepts/loops.md b/docs/concepts/protocol-concepts/loops.md new file mode 100644 index 0000000..7cff9a8 --- /dev/null +++ b/docs/concepts/protocol-concepts/loops.md @@ -0,0 +1,5 @@ +--- +sidebar_position: 5 +--- + +# Loops diff --git a/docs/concepts/protocol-concepts/offers_and_positions.md b/docs/concepts/protocol-concepts/offers_and_positions.md deleted file mode 100644 index 959ac64..0000000 --- a/docs/concepts/protocol-concepts/offers_and_positions.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -sidebar_position: 4 -draft: true ---- -# Offers & Positions -## Offers -Loan offers (lend) and loan requests (borrow), collectively known as orders, are matched by the Creditbook matching engine. - -To improve the user experience for borrowers and lenders, t - - -Orders define the terms of a loan, in -Borrowers may create requests to be filled by a lender and lende - - -Borrowers place market orders (requests) via Virtual Creditbooks (vLCBs) which concentrate liquidity by standardizing terms across parameters like duration and collateral. Instead of placing individual limit orders (offers) on each vLCB, Positions enable lenders to reuse funds across orders on multiple vLCBs. - -## Positions -A Position is a principal balance deposited by a lender that fills market borrow orders according to parameters decided by the lender. - - -### Position Composition - - - -Loan to values are set application wide in the current version of Loopscale along with liquidation ratios, this is to standardize UX. Each asset has a preset maximum loan-to-value that borrows will be able to use and a preset liquidation ratio that loans will be subject to. - -## Strategy Composition -A strategy is composed of an escrow balance of idle principal which is waiting to be deployed and active loans. Active loan interest gets compounded into the strategy and after a loan is repaid, the funds are automatically made available for new loans. Strategies can be adjusted at any time. Funds can be added or removed from strategies as well. - -### Parameters -| Parameter | Description | -|:--|--:| -| Collateral | Multiple Selection, Opt In. Please see [link to params page] collateral page for a full list.| -| Duration |The maximum length of time a lender is willing to lock their funds| -| Rate |The interest rate you’re offering your funds at| - -## Strategies -Strategies are a tool for lenders to create lending positions with predefined terms. Each strategy uniquely defines a list of eligible collateral and a maximum duration. The current market rate is used for orders placed using a Strategy. - -By selecting a particular strategy, lenders only have to specify the amount of capital to deposit into the order. -y \ No newline at end of file diff --git a/docs/concepts/protocol-concepts/virtual-orderbooks.md b/docs/concepts/protocol-concepts/virtual-orderbooks.md deleted file mode 100644 index f2c0882..0000000 --- a/docs/concepts/protocol-concepts/virtual-orderbooks.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -sidebar_position: 1 -draft: true ---- -# Virtual Orderbooks - -While there have been lending protocols supporting direct loans, many have failed to reach critical mass due to the fragmentation of liquidity inherent to one-to-one relationships. At launch, Loopscale abstracts the parameterization of loans, concentrating liquidity for direc loans across a series of standardized terms. Over time, more orderbooks will be introduced across more granular parameters. This approach enables short-term liquidity growth while preserving long-term flexibility. - -Yield Curve - Each market displays the minimum interest rate for each term length, this approximates a DeFi native “yield curve”. Although it is not a yield curve in the traditional sense, as loans maybe be repaid early with a fee, it gives borrowers a sense of how lenders value the principal asset over time. - -Market Specificity - Each market is defined by it’s Principal asset. Available borrowing term lengths are set across the platform per collateral. Collateral asset eligibility is determined by a lender on a per order basis. -Order Matching - If placed on the Creditbook, orders are set up by lenders and specify an APY, collateral they want to accept for the order, and term lengths they are willing to lend for. -Yield Curve - Each market displays the minimum interest rate for each term length, this approximates a DeFi native “yield curve”. Although it is not a yield curve in the traditional sense, as loans maybe be repaid early with a fee, it gives borrowers a sense of how lenders value the principal asset over time. \ No newline at end of file From e64f29ed4f62ab73848e47cfa20e6013ef640a45 Mon Sep 17 00:00:00 2001 From: Devin Black <82221522+devin-black@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:13:12 -0500 Subject: [PATCH 2/9] Further docs work --- docs/concepts/faq.md | 23 +------ docs/concepts/index.mdx | 13 ++-- .../product/borrow/borrowing-assets.md | 2 + .../product/global-asset-parameters.md | 50 +++++++++++++- docs/concepts/product/lend/lending-assets.md | 8 +++ .../product/lend/managing-position.md | 2 +- docs/concepts/product/loop.md | 43 +++++------- docs/concepts/product/portfolio.md | 69 ++++++++++--------- docs/concepts/product/rewards.md | 24 ++++++- .../protocol-concepts/credit-order-book.md | 15 ++-- docs/concepts/protocol-concepts/loops.md | 25 +++++++ docs/concepts/why-loopscale.md | 2 +- 12 files changed, 178 insertions(+), 98 deletions(-) diff --git a/docs/concepts/faq.md b/docs/concepts/faq.md index 8fe96a1..4647c2b 100644 --- a/docs/concepts/faq.md +++ b/docs/concepts/faq.md @@ -50,25 +50,4 @@ Interest earned up to that point is retained, with a small adjustment if the rat ### How do I get support? Support is available through the [Loopscale Discord](https://discord.gg/loopscale) by opening a support ticket. For issues related to using the platform, including a wallet address in the initial message allows the team to provide assistance more quickly. -### How do points work? -Points are earned through active participation in the protocol, including: -- Lending assets -- Borrowing assets -- Yield Loops -- Referring new users (you will receive a portion of referred users' points) -- Participating in select promotions (see the [Rewards page of the app](https://app.loopscale.com/rewards). - -### How many points do users get? -Users earn 0.0002 points per dollar value lent, borrowed, or looped per day, before multipliers. - -Different assets and actions (i.e. borrowing vs. lending) may have different multipliers. On the Loopscale App, hovering over the blue icon next to Lend or Borrow APYs in the asset list displays the specific multipliers. - -### Do users earn points on idle liquidity? -Yes, points are earned on supplied assets even when they aren't actively being borrowed. This rewards providing market depth and supporting overall liquidity. - -### How do points from other protocols function within Loopscale? -Points can also be earned from other integrated protocols, indicated by the protocol's logo displayed alongside the blue points icon in the assets list on looping and borrowing pages. - -The Optimized Yield functionality automatically allocates unutilized lent capital to marginfi pools until matched with a borrower, providing marginfi points in this instance. - -These external protocols maintain responsibility for offering and managing their own points systems. Loopscale does not hold or disburse points from these external protocols. \ No newline at end of file +y for offering and managing their own points systems. Loopscale does not hold or disburse points from these external protocols. \ No newline at end of file diff --git a/docs/concepts/index.mdx b/docs/concepts/index.mdx index de723dc..51ed828 100644 --- a/docs/concepts/index.mdx +++ b/docs/concepts/index.mdx @@ -6,33 +6,34 @@ title: "Introduction" import {Products } from '@site/src/js-components'; # What is Loopscale? -Loopscale is a new way to lend and borrow onchain with the best rates, any asset, and less risk. +Loopscale introduces a new standard for borrowing and lending onchain. Markets for any asset, at the best rate, with less risk. DeFi lending has long been defined by the capital-inefficient pool model. Market maturity is exposing the limitations of this model, which emerged from Ethereum's architectural constraints. -Built on Solana, Loopscale uses order book-based architecture to combine the efficiency of direct market matching with the familiar user experience of traditional lending pools—without sacrificing scalability and flexibility. +Built on Solana, Loopscale uses order book-based architecture to combine the efficiency of direct market matching with the simplicity of traditional lending pools—without sacrificing scalability and flexibility. Rates are determined by markets, not algorithms, and any asset can be supported for principal and/or collateral, creating new liquidity for novel and emerging assets while deepening liquidity for existing assets. + ## On Loopscale, users can: - **Lend**: Supply capital to specific markets at preferred terms and rates while maintaining full control over collateral requirements. - **Borrow**: Access fixed-rate loans using any collateral with superior rates and LTVs via market-based pricing. - **Loop**: Enter into leveraged yield strategies, borrowing at low, fixed rates to lever up on yield-bearing tokens such as liquidity positions and liquid-staked SOL. ## The advantages of using Loopscale over traditional lending protocols -1. **Best Rates**: Get the lowest borrowing rate and highest lending yields, made possible by unprecedented capital efficiency. +1. **Best Rates**: Get the lowest borrowing rate and highest lending yields, made possible by the capital efficiency of order books. 2. **More Collateral**: Use new collateral assets including native-staked SOL, NFT-based LP positions, memecoins, and real-world assets. 3. **Custom Risk Profiles**: Have custom risk exposure by controlling the assets you lend against. 4. **Fixed Rates**: Volatile rates can make strategies unprofitable. Fixed rates enable predictable returns for lenders and borrowers. ## The foundation for the next era of onchain finance While Loopscale begins with today’s DeFi-native markets, our infrastructure is purpose-built to power the next generation of onchain financial products. Loopscale enables use cases such as: +- Structured credit products utilizing the programmability of DeFi, from tranched pools to credit default swaps. - Receivables financing and undercollateralized lending that reflect real-world credit relationships, moving beyond algorithmic overcollateralization. +- Repurchase agreements for institutions to manage short-term, fixed-rate liquidity needs. - Cross-protocol margin infrastructure for asset management across multiple venues. - Credit facilities with parameters like custom repayment schedules. -- Structured credit products utilizing the programmability of DeFi, from tranched pools to credit default swaps. -- Repurchase agreements for institutions to manage short-term, fixed-rate liquidity needs. -The evolution of onchain lending—from overcollateralized DeFi loans to institutional credit markets—will demand infrastructure that scales. Loopscale is that infrastructure. +The evolution of onchain lending from overcollateralized DeFi loans to institutional credit markets—will demand infrastructure that scales. Loopscale is that infrastructure. ## Keep up with Loopscale - Follow us on [X](https://x.com/LoopscaleLabs) diff --git a/docs/concepts/product/borrow/borrowing-assets.md b/docs/concepts/product/borrow/borrowing-assets.md index 71c77ae..6c1e694 100644 --- a/docs/concepts/product/borrow/borrowing-assets.md +++ b/docs/concepts/product/borrow/borrowing-assets.md @@ -14,6 +14,8 @@ The list of available borrow assets, collateral assets, and loan duration option The borrower receives funds at the lowest rate on the market and the collateral is escrowed. The collateral is returned to the borrower once the borrowed funds and accrued interest have been fully repaid. A borrower will default, losing their collateral the loan's health factor falls below 0%. To learn more about defaults and how health factor is calculated, see Loan Health & Defaults. TODO: add link here + ## Quick borrow + ## Advanced borrow \ No newline at end of file diff --git a/docs/concepts/product/global-asset-parameters.md b/docs/concepts/product/global-asset-parameters.md index 9ae8b7d..41aca3a 100644 --- a/docs/concepts/product/global-asset-parameters.md +++ b/docs/concepts/product/global-asset-parameters.md @@ -3,5 +3,51 @@ sidebar_position: 8 --- # Global Asset Parameters -hey ---> \ No newline at end of file + +Borrowers and lenders on Loopscale interact via virtualized [Credit Order Book](/concepts/protocol-concepts/credit-order-book) with standardized terms including principal and collateral options, principal and collateral oracles, and loan terms. These standardized terms are available below. + +## Duration + +Duration is how long a loan lasts (and its corresponding fixed rate). Available duration options for Loans on Loopscale are: +- 1 day +- 1 week +- 1 month +- 3 months + +## LTV + +Loan-to-Value (LTV) is the ratio of a loan amount to the value of the collateral. Loopscale can offer better LTVs because collateral is isolated and not pooled with other assets. Generally, riskier assets have lower max LTV ratios. + +## Fees + + + +## Oracle + + + + + +## Payments + + + + + +## Principal +The following assets are eligible to be used as principal (the borrowed asset) on Loopscale. + + +| Asset | Oracle | +|:--|--:| +|[USDC](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v) |Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD | +|[USDT](https://solscan.io/token/Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB) |3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL | +|[SOL](https://solscan.io/token/So11111111111111111111111111111111111111112) |H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG | +|[EURC](https://solscan.io/token/HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr) |91Sfpm86H7ZgngdGfAiVJTNbg42CXBPiurruf29kinMh | +|[BONK](https://solscan.io/token/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263) |8ihFLu5FimgTQ1Unh4dVyEHUGodJ5gJQCrQf4KUVB9bN | +|[WEN](https://solscan.io/token/WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk)|6Uo93N83iF5U9KwC8eQpogx4XptMT4wSKfje7hB1Ufko | + +## Collateral +Loopscale technically supports any Solana token as collateral. Currently supported collateral options are always increasing, so refer to the app for the most up to date list of collateral options. + + \ No newline at end of file diff --git a/docs/concepts/product/lend/lending-assets.md b/docs/concepts/product/lend/lending-assets.md index 826c291..5240b14 100644 --- a/docs/concepts/product/lend/lending-assets.md +++ b/docs/concepts/product/lend/lending-assets.md @@ -2,7 +2,15 @@ sidebar_position: 1 --- + + + # Lending Assets + + + +## hi + Lending on Loopscale allows users to earn interest on their digital assets. Unlike pool-based protocols where assets are supplied to a liquidity pool, lending on Loopscale operates on the order book model. Users effectively create a limit order on the Loopscale Credit Order Book; this order There are two ways to lend on Loopscale: diff --git a/docs/concepts/product/lend/managing-position.md b/docs/concepts/product/lend/managing-position.md index 11ac88e..b85f4cd 100644 --- a/docs/concepts/product/lend/managing-position.md +++ b/docs/concepts/product/lend/managing-position.md @@ -2,7 +2,7 @@ sidebar_position: 2 --- -# Managing Positions +# Lend Position Management ## Deposit diff --git a/docs/concepts/product/loop.md b/docs/concepts/product/loop.md index 35a5957..e9d9bd3 100644 --- a/docs/concepts/product/loop.md +++ b/docs/concepts/product/loop.md @@ -5,51 +5,44 @@ sidebar_position: 1 # Loop -Yield Loops are Loopscale structured product that offers users access to leveraged yield strategies. They enable users to multiply returns from yield-bearing assets through an automated, single-transaction process. +Yield Loops are a structured product offering access to leveraged yield strategies. They enable users to multiply returns from yield-bearing assets. -## How Yield Loops Work A Yield Loop uses deposited tokens as collateral to borrow more of the same yield-bearing asset. This creates a loop where both the initial deposit and the borrowed tokens earn yield, amplifying returns. Loopscale's order book model provides fixed-rate loans that protect against rate spikes that could turn profitable positions negative. This structure also offers more competitive rates compared to pool-based models, as lenders set rates based on specific collateral rather than a pool of mixed assets. Additionally, each loan is directly matched with a lender, reducing systemic risks and preventing contagion across markets. -Yield Loops work as follows, using the JupSOL-SOL loop as an example. -1. Loopscale borrows SOL with no collateral via a flash loan -2. SOL is swapped for more JupSOL -3. JupSOL is deposited as collateral in Loopscale -4. SOL is borrowed against the JupSOL collateral -5. Borrowed SOL repays the initial flash loan +[Learn more about the underlying concepts of Yield Loops here.](/concepts/protocol-concepts/loops). -Loopscale executes these steps atomically. This means that all the above actions occur within a single transaction and revert if any step fails. +## Create a position -The end result: a levered JupSOL position earning more yield as long as borrow rates are lower than the base JupSOL yield. - -## Creating a Yield Loop - -To create a Yield Loop: +To create a Yield Loop position: 1. Navigate to the [Loops page](https://app.loopscale.com/loops) on the Loopscale App -2. Select an asset from the available categories (Long/short, leveraged staking, LPs, etc.) +2. Select a Yield Loop from the available categories (Long/short, leveraged staking, LPs, etc.). Note whether the position is long, short, or neutral. 3. Choose your leverage amount -4. Optionally, select slippage limits and a custom fixed rate duration (higher durations protect from rate volatility, but typically command higher borrow rates) +4. Optionally, select slippage limits and a custom fixed rate duration (higher durations protect from rate volatility, but typically command higher borrow rates) 5. Approve and execute the transaction -## Managing Your Position - -It's important to monitor your Yield Loop position's health to avoid liquidation. The Loopscale interface provides key metrics to help you track your position: +## Managing a position +It's important to monitor a Yield Loop position's health to avoid liquidation. The Loopscale interface provides metrics to help you track a position: + - Current leverage - Liquidation threshold - Projected returns based on current yield rates -Remember that your position remains profitable as long as the yield from your leveraged asset exceeds the borrowing costs. +Remember that a position remains profitable as long as the yield from your leveraged asset exceeds the borrowing costs. -## Closing a Position +## Closing a position -When you're ready to close your Yield Loop: +When you're ready to close a Yield Loop: -1. Navigate to your active positions in the Loops section of the [Portfolio](https://app.loopscale.com/portfolio) page. +1. Navigate to the active positions in the Loops section of the [Portfolio](https://app.loopscale.com/portfolio) page. 2. Select the position you wish to close and close it. +Alternatively, + + Loopscale will then: 1. Flash loan the amount needed to repay your loan 2. Repay the long-term loan to free up your collateral @@ -61,7 +54,7 @@ Loopscale will then: When using Yield Loops, be aware of these risk factors: -1. **Yield volatility**: If the yield of your asset drops below your borrowing rate, your position may become unprofitable. Choosing longer fixed rate durations can help address this (but will typically require a higher borrow rate) +1. **Rate volatility**: If the yield of your asset drops below your borrowing rate, your position may become unprofitable. Choosing longer fixed rate durations can help address this (but will typically require a higher borrow rate). Loopscale mitigates rate volatility risk through fixed-rate loans, but users should still approach leveraged strategies with appropriate caution. 2. **Asset price volatility**: Significant price drops can lead to liquidation +3. Additional risks outlined on the [Risk Management](concepts/product/risk-management) page. -Loopscale mitigates these risks through isolated positions, fixed-rate loans, and atomic execution, but users should still approach leveraged strategies with appropriate caution. \ No newline at end of file diff --git a/docs/concepts/product/portfolio.md b/docs/concepts/product/portfolio.md index a3034be..dd04c3f 100644 --- a/docs/concepts/product/portfolio.md +++ b/docs/concepts/product/portfolio.md @@ -4,37 +4,38 @@ sidebar_position: 5 # Portfolio -The Portfolio page is a central place to view your ongoing and past positions across loops, lending, and loans. - -## Borrow View -1. The portfolio statistics include — -* **Minimum Health**: The lowest health factor of your ongoing loans -* **Borrow APY**: A weighted average borrow APY for your ongoing loans -* **Next Payment**: The soonest due date of your own going loans -* **Total Debt**: The total debt due (includes interest) - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/c0e0a835-0611-4668-9317-ea74e99fe021/1/50/23.577235772358?0) -2. View and manage in the "Ongoing loans" tab. Clicking a loan will take you to the Loan Detail page. - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/62fe4e38-8202-4758-a50b-ab98ac32fd95/1/50/65.108401084011?0) - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/3fac2a8e-c68f-4594-a803-f5a2721e9f03/2.5/23.725043402778/77.642276422764?0) - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/ff2c8550-dc45-45af-8587-00e7877d4df6/2.5/16.458333333333/77.642276422764?0) -3. Click on "Requests" to view and manage outstanding borrow requests - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/2e4c7625-38a8-4b46-abcc-bd3a42edc4bd/2.5/20.085177951389/39.837398373984?0) - -## Lend View -1. The portfolio statistics include — -* **APY**: A weighted average borrow APY for your ongoing loans and strategies -* **Outstanding Debt**: The total amount due at this point across how many loans -* **Outstanding Interest**: Total interest earned as a lender and the amount of loans originated -* **Positions balance**: The total amount of capital active in positions - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/8f57813e-dad7-4590-9c74-c9ee2870bdfa/1/50/23.577235772358?0) -1. Switch to the lending view - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/7c21fec2-5431-4c42-9c20-d824ba8134a4/2.5/84.722222222222/13.821138211382?0) -2. View your existing deposits - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/e11c54af-4798-4ae8-9762-90ac157e40de/1/50/64.49864498645?0) - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/a3763f4b-f6b5-4ca5-8bdd-19603d8f5cec/2.5/27.329644097222/77.032520325203?0) - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/f7884720-ce58-41b8-a9ee-f37c42fe6de0/2.5/27.430555555556/97.69647696477?0) -3. Check out your current and past loans - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/9ce91d60-081f-4610-8373-a884d99cfeb3/2.5/21.9140625/39.837398373984?0) - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/5263034e-b18f-4171-8cc8-fb7d1e2e56ae/1/50/65.108401084011?0) -4. View custom offers you've made - ![](https://d3q7ie80jbiqey.cloudfront.net/media/image/zoom/4f117def-d000-422f-8c98-f9374b04c5c2/2.5/27.832573784722/39.837398373984?0) + + +The Portfolio page is a central place to view ongoing and past positions across borrows, lends, and Yield Loops. It also serves as a place to close or modify current positions. While this page gives an overview of position management capabilities from this page, we recommend reading the lend position management and borrow position management articles for a deeper understanding of position management. + + + +## Yield Loops + +This section of the Portfolio page lists ongoing and past Yield Loops. Stats of each Yield Loop are in this section, most notably the health of the positions. + +The following actions for managing Yield Loop positions are available (note: these are the same set of actions as are possible with borrows, as Yield Loops are leveraged borrow positions). + +- Repay: Repay some or all of the debt of a Loop (repaying all will close the Loop). +- Refinance: choose a different fixed-rate period and refinance your loop. +- Borrow more: Increase the position size +- Top-up collateral: Add more collateral for the Loop. This is useful for if a long/short biased loop (like long JLP) is low on health and potentially approaching liquidation. + +## Borrow positions + +This section of the Portfolio page lists all ongoing and past borrowing positions. + +The following actions for managing Yield Loop positions are available: + +- Repay: Repay some or all of the debt of a Loop (repaying all will close the Loop). +- Refinance: choose a different fixed-rate period and refinance your loop. +- Borrow more: Increase the position size +- Top-up collateral: Add more collateral for the Loop. This is useful for if a long/short biased loop (like long JLP) is low on health and potentially approaching liquidation. + +## Lend positions + +This section of the Portfolio page lists all ongoing lend positions. + +The following actions for managing lend positions are available: +- Deposit/Withdraw: — Add or remove liquidity from your lend position. Note that currently utilized capital cannot be withdrawn unless withdrawn early. +- + +## Order Matching +The Credit Order Book employs an onchain matching engine to pair loan offers with loan requests. If an offer and request match across loan terms, the borrower may fill the lender offer, initialized the loan. + +Borrowers may also fill lender offers directly with matching collateral without creating a request. In this case, the borrower will fill the best-available order on the Credit Order Book as determined by the interest rate. ## Smart Orders Lenders may create Smart Orders, which enhance capital efficiency by enabling the same capital to be displayed as multiple different Lend Limit Orders according to a term ruleset: @@ -14,7 +21,6 @@ Lenders may create Smart Orders, which enhance capital efficiency by enabling th - Rate on a per-collateral-duration pair basis - Eligible durations - ## Virtual Markets Virtual Markets are standardized subsets of terms with fixed oracles, fees, and zero-coupon repayment schedules. These Virtual Markets offer a preset selection of duration, collateral, and principal options. @@ -25,8 +31,5 @@ The initial virtualized credit books on Loopscale standardize orders such that b ![](../../../static/img/docs/concepts/limit-creditbook-3.png) As liquidity grows, more vLCBs will be introduced with finer parameterization, balancing the trade-off between liquidity concentration and flexibility. -## Order Matching -The Creditbook employs an on-chain matching engine to pair loan offers with loan requests. If an offer and request match across loan terms, the borrower may fill the lender offer, initialized the loan. -Borrowers may also fill lender offers directly with matching collateral without creating a request. In this case, the borrower will fill the best-available order on the LCB as determined by the interest rate. diff --git a/docs/concepts/protocol-concepts/loops.md b/docs/concepts/protocol-concepts/loops.md index 7cff9a8..878ae80 100644 --- a/docs/concepts/protocol-concepts/loops.md +++ b/docs/concepts/protocol-concepts/loops.md @@ -3,3 +3,28 @@ sidebar_position: 5 --- # Loops + +## How Yield Loops work +Yield Loops work as follows, using the JupSOL-SOL loop as an example. +1. Loopscale borrows SOL with no collateral via a flash loan +2. SOL is swapped for more JupSOL +3. JupSOL is deposited as collateral in Loopscale +4. SOL is borrowed against the JupSOL collateral +5. Borrowed SOL repays the initial flash loan + +Loopscale executes these steps atomically. This means that all the above actions occur within a single transaction and revert if any step fails. + +The end result: a levered JupSOL position earning more yield as long as borrow rates are lower than the base JupSOL yield. + +## Yield Loops compared to similar products + +While leveraged yield strategies have existed in DeFi before, Loopscale's order book architecture provides several key advantages over looping from traditional yield-based protocols. + +### Fixed rates rather than variable rates +Yield Loops use Loopscale's fixed-rate loans, protecting users from rate volatility that could turn profitable positions negative. Traditional pool-based protocols use variable rates that can spike during market stress, potentially forcing liquidations or making positions unprofitable when the borrow rate exceeds the yield from the underlying token. + +### Collateral-specific pricing +On Loopscale, lenders can set rates based on specific collateral quality rather than a uniform rate for an entire pool of different assets. This means borrowing against high-quality collateral like USDC is cheaper than borrowing against more volatile assets, resulting in more efficient pricing and better terms for safer positions. + +### Isolation prevents contagion +When using traditional pools for looping, volatility in one asset in a multi-asset pool can affect the entire protocol. Loopscale's Atomic Markets operate in complete isolation, so issues with one asset class don't impact others. This makes Yield Loops more resilient during market stress. \ No newline at end of file diff --git a/docs/concepts/why-loopscale.md b/docs/concepts/why-loopscale.md index 301b932..f258b3d 100644 --- a/docs/concepts/why-loopscale.md +++ b/docs/concepts/why-loopscale.md @@ -4,7 +4,7 @@ sidebar_position: 2 # Why Loopscale? -Before exploring Loopscale's new primitives and advantages, let's understand how traditional, pool-based lending protocols work and their limitations. +Before exploring Loopscale's advantages and new primitives, let's understand how traditional, pool-based lending protocols work as well as their limitations. ## The problem with pool-based lending In the first generation of DeFi lending protocols, the borrowing interest rate is determined by the utilization of the asset. This model is known as a pool- or utilization-based model. As illustrated in the chart below, when utilization increases, borrowing is discouraged and supplying is encouraged. This design decision was made to maintain excess liquidity for withdrawals. From 97c49ced7e404686c0e01728efdf9722f46b9bd7 Mon Sep 17 00:00:00 2001 From: Devin Black <82221522+devin-black@users.noreply.github.com> Date: Tue, 4 Mar 2025 15:33:51 -0500 Subject: [PATCH 3/9] More docz --- docs/concepts/audits.md | 6 ++ docs/concepts/faq.md | 5 +- docs/concepts/loopscale/_category_.json | 6 -- docs/concepts/loopscale/asset-parameters.md | 95 ------------------- docs/concepts/loopscale/borrowing.md | 39 -------- docs/concepts/loopscale/lending.md | 27 ------ .../loopscale/loan-health-management.md | 30 ------ docs/concepts/loopscale/risk-management.md | 33 ------- .../{product/rewards.md => points.md} | 2 +- docs/concepts/product/_category_.json | 6 -- .../product/advanced/custom-lend-positions.md | 23 ----- docs/concepts/product/lend/lending-assets.md | 51 ---------- docs/concepts/product/portfolio.md | 41 -------- .../global-asset-parameters.md | 6 +- .../concepts/{product => }/risk-management.md | 2 +- docs/concepts/using-loopscale/_category_.json | 6 ++ .../advanced/_category_.json | 2 +- .../advanced/lp-collateral-management.md | 0 .../borrow/_category_.json | 2 +- .../borrow/borrowing-assets.md | 0 .../borrow/managing-loans.md | 0 docs/concepts/using-loopscale/earn.md | 6 ++ .../lend/_category_.json | 2 +- .../using-loopscale/lend/lending-assets.md | 51 ++++++++++ .../lend/managing-position.md | 3 +- .../{product => using-loopscale}/loop.md | 2 +- 26 files changed, 84 insertions(+), 362 deletions(-) create mode 100644 docs/concepts/audits.md delete mode 100644 docs/concepts/loopscale/_category_.json delete mode 100644 docs/concepts/loopscale/asset-parameters.md delete mode 100644 docs/concepts/loopscale/borrowing.md delete mode 100644 docs/concepts/loopscale/lending.md delete mode 100644 docs/concepts/loopscale/loan-health-management.md delete mode 100644 docs/concepts/loopscale/risk-management.md rename docs/concepts/{product/rewards.md => points.md} (99%) delete mode 100644 docs/concepts/product/_category_.json delete mode 100644 docs/concepts/product/advanced/custom-lend-positions.md delete mode 100644 docs/concepts/product/lend/lending-assets.md delete mode 100644 docs/concepts/product/portfolio.md rename docs/concepts/{product => protocol-concepts}/global-asset-parameters.md (98%) rename docs/concepts/{product => }/risk-management.md (99%) create mode 100644 docs/concepts/using-loopscale/_category_.json rename docs/concepts/{product => using-loopscale}/advanced/_category_.json (78%) rename docs/concepts/{product => using-loopscale}/advanced/lp-collateral-management.md (100%) rename docs/concepts/{product => using-loopscale}/borrow/_category_.json (77%) rename docs/concepts/{product => using-loopscale}/borrow/borrowing-assets.md (100%) rename docs/concepts/{product => using-loopscale}/borrow/managing-loans.md (100%) create mode 100644 docs/concepts/using-loopscale/earn.md rename docs/concepts/{product => using-loopscale}/lend/_category_.json (77%) create mode 100644 docs/concepts/using-loopscale/lend/lending-assets.md rename docs/concepts/{product => using-loopscale}/lend/managing-position.md (93%) rename docs/concepts/{product => using-loopscale}/loop.md (99%) diff --git a/docs/concepts/audits.md b/docs/concepts/audits.md new file mode 100644 index 0000000..f5b2f93 --- /dev/null +++ b/docs/concepts/audits.md @@ -0,0 +1,6 @@ +--- +sidebar_position: 8 +draft: false +--- + +# Audits \ No newline at end of file diff --git a/docs/concepts/faq.md b/docs/concepts/faq.md index 4647c2b..0c02736 100644 --- a/docs/concepts/faq.md +++ b/docs/concepts/faq.md @@ -1,5 +1,5 @@ --- -sidebar_position: 11 +sidebar_position: 8 draft: false --- @@ -33,6 +33,9 @@ No token or airdrop plans have been announced. Users should be vigilant against ## Using Loopscale +### Why do I need to spend extra SOL to open a lending position or loop? + + ### How do fixed-rate loans work on Loopscale? Fixed-rate loans on Loopscale maintain the same interest rate through a fixed term (e.g. 1 day, 1 week, 1 month, or 3 months). Unlike variable rate options common in traditional DeFi lending pools, there is no variable rate volatility for loans on Loopscale. diff --git a/docs/concepts/loopscale/_category_.json b/docs/concepts/loopscale/_category_.json deleted file mode 100644 index 8a0e2de..0000000 --- a/docs/concepts/loopscale/_category_.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "label": "Loopscale (old)", - "position": 50, - "link": null, - "collapsed": true -} \ No newline at end of file diff --git a/docs/concepts/loopscale/asset-parameters.md b/docs/concepts/loopscale/asset-parameters.md deleted file mode 100644 index 49fe92f..0000000 --- a/docs/concepts/loopscale/asset-parameters.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -sidebar_position: 4 ---- -# Asset Parameters -Borrowers and lenders on Loopscale interact via virtualized Limit Creditbooks with standardized terms including principal and collateral options, principal and collateral oracles, and loan terms. These standardized terms are available below. More information on terms and how they affect a loan is available in [Protocol Concepts](/concepts/loopscale/asset-parameters). - -### Available Durations -- 1 day -- 1 week -- 1 month -- 3 months - - -## Principal -The following assets are eligible to be used as principal on Loopscale's vLCBs. -| Asset | Oracle | -|:--|--:| -|[USDC](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v) |Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD | -|[USDT](https://solscan.io/token/Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB) |3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL | -|[SOL](https://solscan.io/token/So11111111111111111111111111111111111111112) |H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG | -|[EURC](https://solscan.io/token/HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr) |91Sfpm86H7ZgngdGfAiVJTNbg42CXBPiurruf29kinMh | -|[BONK](https://solscan.io/token/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263) |8ihFLu5FimgTQ1Unh4dVyEHUGodJ5gJQCrQf4KUVB9bN | -|[WEN](https://solscan.io/token/WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk)|6Uo93N83iF5U9KwC8eQpogx4XptMT4wSKfje7hB1Ufko | - -## Collateral - -| Asset | LTV (%) | Liq. Ratio (%) | Oracle | -|:--|--:|--:|--:| -|[Solana](https://solscan.io/token/So11111111111111111111111111111111111111112)| 80|90|7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE| -|[USDC](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v)| 95|98|Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX| -|[WEN](https://solscan.io/token/WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk)| 25|40|CsG7wXoqZKNxx4UnFtvozfwXQ9RgpKe7zSJa4LWh5MT9| -|[JitoSol](https://solscan.io/token/J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn)| 75|85|AxaxyeDT8JnWERSaTKvFXvPKkEdxnamKSqpWbsSjYg1g| -|[Jito](https://solscan.io/token/jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL)| 70|80|7ajR2zA4MGMMTqRAVjghTKqPPn4kbrj3pYkAVRVwTGzP| -|[Staked Sol](https://solscan.io/token/sTSoN7tYft63PJjHw2NcgJ43saq3NiE3XCdfvXXcTrD)| 60|75|7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE| -|[mSol](https://solscan.io/token/mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So)| 75|85|5CKzb9j4ChgLUt8Gfm5CNGLN6khXKiqMbnGAW4cgXgxK| -|[bSol](https://solscan.io/token/bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1)| 75|85|5cN76Xm2Dtx9MnrQqBDeZZRsWruTTcw37UruznAdSvvE| -|[Jupiter](https://solscan.io/token/JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN)| 70|80|7dbob1psH1iZBS7qPsm3Kwbf5DzSXK8Jyg31CTgTnxH5| -|[wEth](https://solscan.io/token/7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs)| 70|85|4TQ1VVWkrYUvyQ6hMmjepwr7swvqsyvLi75BiJi13Tf3| -|[wBTC](https://solscan.io/token/3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh)| 70|85|4cSM2e6rvbGQUFiJbqytoVMi5GgghSMr8LwVrT9VPSPo| -|[USDT](https://solscan.io/token/Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB)| 95|98|HT2PLQBcG5EiCcNSaMHAjSgd9F98ecpATbk4Sk5oYuM| -|[Pyth](https://solscan.io/token/HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3)| 60|70|8vjchtMuJNY4oFQdTi8yCe6mhCaNBFaUbktT482TpLPS| -|[W](https://solscan.io/token/85VBFQZC9TZkfaptBWjvUw7YbZjy52A6mjtPGjstQAmQ)| 60|70|BEMsCSQEGi2kwPA4mKnGjxnreijhMki7L4eeb96ypzF9| -|[HNT](https://solscan.io/token/hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux)| 70|80|FERjPVNEa7Udq8CEv68h6tPL46Tq7ieE49HrE2wea3XT| -|[WIF](https://solscan.io/token/EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm)|40|60|6B23K3tkb51vLZA14jcEQVCA1pfHptzEHFA93V5dYwbT| -|[RLB](https://solscan.io/token/RLBxxFkseAZ4RgJH3Sqn8jXxhmGoz9jWxDNJMh8pL7a)|30|50|FKhA7f11fMokfi3c7J8R9M3TSJ3E26aeUuSm9bADgPF3| -|[BONK](https://solscan.io/token/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263)|45|65|DBE3N8uNjhKPRHfANdwGvCZghWXyLPdqdSbEW2XFwBiX| -|[wstETH](https://solscan.io/token/ZScHuTtqZukUrtZS43teTKGs2VqkKL8k4QCouR2n6Uo)|70|85|HyoTrHkmhM8YETBagUFqtT95JpkFWtLDtL3uQHsLVT5j| -|[Orca](https://solscan.io/token/orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE)|30|50|4CBshVeNBEXz24GZpoj8SrqP5L7VGG3qjGd6tCST1pND| -|[EURC](https://solscan.io/token/HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr)|85|95|HyBsZY1UiGttbQ3ppBmnFVss9rmDAEvEbtYxdfjNAqBZ| -|[RAY](https://solscan.io/token/4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R)|30|50|Hhipna3EoWR7u8pDruUg8RxhP5F6XLh6SEHMVDmZhWi8| -|[IOT](https://solscan.io/token/iotEVVZLEywoTn1QdwNPddxPWszn3zFhEot3MfL9fns)|10|20|8UYEn5Weq7toHwgcmctvcAxaNJo3SJxXEayM57rpoXr9| -|[Marinade](https://solscan.io/token/MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey)|50|65|GHKcxocPyzSjy7tWApQjKRkDNuVXd4Kk624zhuaR7xhC| -|[Mobile](https://solscan.io/token/mb1eu7TzEc71KxDpsmsKoucSSuuoGLv1drys1oP2jh6)|10|20|DQ4C1tzvu28cwo1roN1Wm6TW35sfJEjLh517k3ZeWevx| -|[Render](https://solscan.io/token/rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof)|45|60|HAm5DZhrgrWa12heKSxocQRyJWGCtXegC77hFQ8F5QTH| -|[cgntSOL](https://solscan.io/token/CgnTSoL3DgY9SFHxcLj6CgCgKKoTBr6tp4CPAEWy25DE)|40|55|CgntPoLka5pD5fesJYhGmUCF8KU1QS1ZmZiuAuMZr2az| -|[phaseSOL](https://solscan.io/token/phaseZSfPxTDBpiVb96H4XFSD8xHeHxZre5HerehBJG)|45|60|phasejkG1akKgqkLvfWzWY17evnH6mSWznnUspmpyeG| -|[superSOL](https://solscan.io/token/suPer8CPwxoJPQ7zksGMwFvjBQhjAHwUMmPV4FVatBw)|45|60|4dZDUL3BFJUFeqS3Y3cwkc84Rs6mgVHRYGt1LJvhooW4| -|[lanternSOL](https://solscan.io/token/LnTRntk2kTfWEY6cVB8K9649pgJbt6dJLS1Ns1GZCWg)| 45|60|LW3qEdGWdVrxNgxSXW8vZri7Jifg4HuKEQ1UABLxs3C| -|[pwrSOL](https://solscan.io/token/pWrSoLAhue6jUxUkbWgmEy5rD9VJzkFmvfTDV5KgNuu)| 45|60|DfiQgSvpW3Dy4gKfhtdHnWGHwFUrE8exvaxqjtMtAVxk| -|[pathSol](https://solscan.io/token/pathdXw4He1Xk3eX84pDdDZnGKEme3GivBamGCVPZ5a)| 50|65|GM7TwD34n8HmDP9XcT6bD3JJuNniKJkrKQinHqmqHarz| -|[clockSol](https://solscan.io/token/GRJQtWwdJmp5LLpy8JWjPgn5FnLyqSJGNhn5ZnCTFUwM)| 50|65|6e2LpgytfG3RqMdYuPr3dnedv6bmHQUk9hH9h2fzVk9o| -|[hubSol](https://solscan.io/token/HUBsveNpjo5pWqNkH57QzxjQASdTVXcSK7bVKTSZtcSX)| 50|65|ECRqn7gaNASuvTyC5xfCUjehWZCSowMXstZiM5DNweyB| -|[stakeSol](https://solscan.io/token/st8QujHLPsX3d6HG9uQg9kJ91jFxUgruwsb1hyYXSNd)| 50|65|2jjK1MsLgsPgVjnp97HUJeovNj3jp4XgyQ3nuiWMwiS8| -|[pumpkinSol](https://solscan.io/token/pumpkinsEq8xENVZE6QgTS93EN4r9iKvNxNALS1ooyp)| 50|65|8WHCJsUduwDBhPL9uVADQSdWkUi2LPZNFAMyX1n2HGMD| -|[strongSol](https://solscan.io/token/strng7mqqc1MBJJV6vMzYbEqnwVGvKKGKedeCvtktWA)| 50|65|GZDX5JYXDzCEDL3kybhjN7PSixL4ams3M2G4CvWmMmm5| -|[edgeSol](https://solscan.io/token/edge86g9cVz87xcpKpy3J77vbp4wYd9idEV562CCntt)| 55|70|edgejNWAqkePLpi5sHRxT9vHi7u3kSHP9cocABPKiWZ| -|[fpSol](https://solscan.io/token/fpSoL8EJ7UA5yJxFKWk1MFiWi35w8CbH36G5B9d7DsV)| 40|55|GutG5bcmEZw15WmPHNVMWHU77c6t8CEinUEdPLYz3doa| -|[JSol](https://solscan.io/token/7Q2afV64in6N6SeZsAAB81TJzwDoD6zpqmHkzi9Dcavn)| 55|70|CtMyWsrUtAwXWiGr9WjHT5fC3p3fgV8cyGpLTo2LJzG1| -|[vSol](https://solscan.io/token/vSoLxydx6akxyMD9XEcPvGYNGq6Nn66oqVb3UkGkei7)| 60|75|Fu9BYC6tWBo1KMKaP3CFoKfRhqv9akmy3DuYwnCyWiyC| -|[WenSol](https://solscan.io/token/WensoLXxZJnev2YvihHFchn1dVVFnFLYvgomXWvvwRu)| 50|65|CWM1VcNPd2A5WF2x2mmEUCgA1PGSKNZCGAH5GsoQw7h8| -|[bonkSol](https://solscan.io/token/BonK1YhkXEGLZzwtcvRTip3gAL9nCeQD7ppZBLXhtTs)| 60|75|ArAQfbzsdotoKB5jJcZa3ajQrrPcWr2YQoDAEAiFxJAC| -|[hSol](https://solscan.io/token/he1iusmfkpAdwvxLNGV8Y1iSbj4rUy6yMhEA3foJYDW)| 70|80|FERjPVNEa7Udq8CEv68h6tPL46Tq7ieE49HrE2wea3XT| -|[jupSol](https://solscan.io/token/jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v)|70|80|8VpRhuxa7sUUepdY3kQiTmX9rS5vx4WgaXiAnXq4KCtr| -|[compassSol](https://solscan.io/token/Comp4ssDzXcLeu2MnLuGNNFC4cmLPMng8qWHPvzAMU1h)|60|75|AwDeTcW6BovNYR34Df1TPm4bFwswa4CJY4YPye2LXtPS| -|[jucySol](https://solscan.io/token/jucy5XJ76pHVvtPZb5TKRcGQExkwit2P5s4vY8UzmpC)|60|75|AZGSr2fUyKkPLMhAW6WUEKEsQiRMAFKf8Fjnt4MFFaGv| -|[laineSol](https://solscan.io/token/LAinEtNLgpmCP9Rvsf5Hn8W6EhNiKLZQti1xfWMLy6X)|60|75|2qyEeSAWKfU18AFthrF7JA8z8ZCi1yt76Tqs917vwQTV| -|[picoSol](https://solscan.io/token/picobAEvs6w7QEknPce34wAE4gknZA9v5tTonnmHYdX)|60|75|8Dv3hNYcEWEaa4qVx9BTN1Wfvtha1z8cWDUXb7KVACVe| -|[dSol](https://solscan.io/token/Dso1bDeDjCQxTrWHqUUi63oBvV7Mdm6WaobLbQ7gnPQ)|60|75|9mhGNSPArRMHpLDMSmxAvuoizBqtBGqYdT8WGuqgxNdn| -|[metmSOL](https://solscan.io/token/21bR3D4QR4GzopVco44PVMBXwHFpSYrbrdeNwdKk7umb)|65|75|8p1VKP45hhqq5iZG5fNGoi7ucme8nFLeChoDWNy7rWFm| -|[metUSDC](https://solscan.io/token/3RpEekjLE5cdcG15YcXJUpxSepemvq2FpmMcgo342BwC)|80|90|3ESUFCnRNgZ7Mn2mPPUMmXYaKU8jpnV9VtA17M7t2mHQ| -|[metUSDT](https://solscan.io/token/EZun6G5514FeqYtUv26cBHWLqXjAEdjGuoX6ThBpBtKj)|80|90|5XCP3oD3JAuQyDpfBFFVUxsBxNjPQojpKuL4aVhHsDok| -|[metSOL](https://solscan.io/token/FZN7QZ8ZUUAxMPfxYEYkH3cXUASzH8EqA6B4tyCL8f1j)|70|80|FERjPVNEa7Udq8CEv68h6tPL46Tq7ieE49HrE2wea3XT| -|[USDY](https://solscan.io/token/A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6)| 85|95|234oAERsti3gMYH8DNXxawKm7jGLwqgSsGB5Cz72KeXU| -|[JLP](https://solscan.io/token/27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4)| 65|80|pmHEXBam7kbmCCg5ED5V7RNMN8e34sKu338KeuFAGof| -|[orcaBONKSOL](https://solscan.io/token/3ne4mWqdYuNiYrYZC9TrA3FcfuFdErghH97vNPbjicr1)| 40|60|3ne4mWqdYuNiYrYZC9TrA3FcfuFdErghH97vNPbjicr1| -|[orcaUSDTUSDC](https://solscan.io/token/4fuUiYxTQ6QCrdSq9ouBYcTM7bqSwYTSyLueGZLTy4T4)| 80|90|4fuUiYxTQ6QCrdSq9ouBYcTM7bqSwYTSyLueGZLTy4T4| -|[orcaJLPSOL](https://solscan.io/token/4Z1A4Wy4Qj1GDC98YXYCuEkibVsHXoB1pMsn2crqEgDF)| 55|75|4Z1A4Wy4Qj1GDC98YXYCuEkibVsHXoB1pMsn2crqEgDF| -|[orcaJLPUSDC](https://solscan.io/token/6NUiVmsNjsi4AfsMsEiaezsaV9N4N1ZrD4jEnuWNRvyb)| 55|75|6NUiVmsNjsi4AfsMsEiaezsaV9N4N1ZrD4jEnuWNRvyb| -|[orcaWIFSOL](https://solscan.io/token/D6NdKrKNQPmRZCCnG1GqXtF7MMoHB7qR6GU5TkG59Qz1)| 40|60|D6NdKrKNQPmRZCCnG1GqXtF7MMoHB7qR6GU5TkG59Qz1| -|[orcaSolUSDC](https://solscan.io/token/FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q)| 70|85|FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q| -|[wAvax](https://solscan.io/token/KgV1GvrHQmRBY8sHQQeUKwTm2r2h8t4C8qt12Cw1HVE)| 65|80|HUBqpBf3aGJdVQndFHmMUd1eMcixt7S4swYPCx8A93K1| -|[wArb](https://solscan.io/token/8LH3QMo7xkMJx85Kg4pfiQY1g1ZgiVEe1KktSpaT89mP)| 60|75|36XiLSLUq1trLrK5ApwWs6LvozCjyTVgpr2uSAF3trF1| -|[wSui](https://solscan.io/token/G1vJEgzepqhnVu35BN4jrkv3wVwkujYWFFCxhbEZ1CZr)| 50|70|GgV3a7YeVRga9prjNGEDBG9NwatSaD8rwjZ4GNjPiXTq| -|[wOP](https://solscan.io/token/S62gBPpvCxzE5a7T39QGXPMxVP2fTgequtsgm9jGhaq)| 60|75|DgbEZkKzsRCQgbpdwiM5XcNZ4KzR5hsQZabtHGemf3Cc| -|[wInj](https://solscan.io/token/Hgtvu9gsDTzUpBn69WjrhMyzaQhrAM9piTsezmZVQP6Z)| 50|70|GwXYEfmPdgHcowF9GZwbb1WiTGTn1fuT3hbSLneoBKK6| -|[wMatic](https://solscan.io/token/Gz7VkD4MacbEB6yC5XD3HcumEiYx2EtDYYrfikGsvopG)| 50|70|5JQ3vHYR38aPUu1L1qHRhYXZWYFCCzox2HavyGypwVWP| \ No newline at end of file diff --git a/docs/concepts/loopscale/borrowing.md b/docs/concepts/loopscale/borrowing.md deleted file mode 100644 index ed6335d..0000000 --- a/docs/concepts/loopscale/borrowing.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -sidebar_position: 2 ---- -# Borrowing -When borrowing on Loopscale, a user selects: -1. An asset and amount to borrow -2. How long they wish to borrow for -3. An asset and amount to use as collateral - -The list of available borrow assets, collateral assets, and loan duration options are available here. Each collateral asset has a loan-to-value ratio that determines the maximum borrowable amount. - -The borrower's receives funds at the lowest rate on the market and the collateral is escrowed. The collateral is returned to the borrower once the borrowed funds and accrued interest have been fully repaid. A borrower will default, losing their collateral, if: -1. The loan has not been fully repaid by the due date (Payment-Based Default) -2. The loan's health factor falls below 0% (Price-Based Default) - -To learn more about defaults and how health factor is calculated, see [Loan Health & Defaults](/concepts/loopscale/loan-health-management). - -A borrower has two ways to improve a loan's health factor: (1) topping up collateral (2) repaying a loan or portion of a loan early. - -## Topping-up Collateral -A borrower may deposit additional collateral for a loan, increasing the collateral value and increasing the health factor. The additional collateral must be of the same asset. Excess collateral may not be withdrawn until the loan conclusion with the rest of the collateral. - -## Repaying a loan -You can partially or fully repay a loan at any point. You only owe interest on loan value you have outstanding. So if you repay early, you won’t owe interest for the remaining time on the principal repaid. If you repay early, you will incur a fee that is proportional to the interest saved. This is to compensate the lender for locking their capital up and discourage long capital reservations without reason. - -### Early Repayment -A borrower may repay a loan in full before the loan due date. Upon repayment, the loan will end and the collateral will be returned to the borrower. A borrower may also partially repay a loan early, decreasing the loan value and increasing the health factor. Upon early repayment, interest accrued up until that point is paid. - - -## Refinancing -One of the more powerful concepts for borrowers on Loopscale is the refinance. Refinancing is the process of repaying one outstanding loan by atomically starting another. The original lender is paid off and a new loan is started. - - - -Refinancing only works if there is an offer at a greater than or equal to size of the amount owed on a loan and for the corresponding term and collateral. The new loan is started at an amount equal to the original principal plus any accrued interest and fees for the new length. - -If the amount of collateral in the existing loan is insufficient to start aa new loan (e.g. Loan Balance > (LTV * Collateral)), the refinance will fail. - -Borrowers can opt-in to auto-refinancing which is an off-chain matching engine to find available offers automatically to renew loans instead of a payment based default. There is a 15 minute grace period post loan failure where the loan will attempt to be matched. \ No newline at end of file diff --git a/docs/concepts/loopscale/lending.md b/docs/concepts/loopscale/lending.md deleted file mode 100644 index c8c282c..0000000 --- a/docs/concepts/loopscale/lending.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -sidebar_position: 3 ---- -# Lending -Lending on Loopscale is done through strategies, a lender deposits funds into a pool selecting: -1. Term Lengths you’re willing to lend for (1 day, 1 week, 1 month, 3 months) -2. Interest Rate you are willing to accept -3. Collateral you’re willing to lend against - -## Presets -Loopscale has a number of preset strategies to make the lending process even faster for quick borrowers. All presets set the max loan length to 1 month : -- Global: All Available Assets -- Core: Large Cap Solana tokens, LSTs, and other L1s -- DeFi: DeFi Governance tokens, LP positions, and vaults -- Memecoin: Large Cap Memecoins on Solana - -## After Creation -Once a strategy is created, an order will sit on the creditbook equal to the amount un-utilized balance of the strategy. Capital can be removed from the strategy if its unused and additional capital can be deployed to strategies. - -### Capital Management -Capital will be taken from the strategy to start new loans, once capital is deployed to a loan it is locked up for the length of the loan unless the borrower repays it early. - -### Defaults -In the event of a default (either due to late payment or price-based), liquidators will be able to purchase the collateral automatically at a value equal to the loan amount you’re owed and the funds will automatically be recycled into your strategy. If you would prefer to seize the collateral directly, you can turn off auto-liquidations in your strategy settings and take possession of the collateral directly. - -### Halting New Loans -If a lender wishes to stop new loans from being originated from their strategy, they can turn off new origination in strategy settings. \ No newline at end of file diff --git a/docs/concepts/loopscale/loan-health-management.md b/docs/concepts/loopscale/loan-health-management.md deleted file mode 100644 index e780945..0000000 --- a/docs/concepts/loopscale/loan-health-management.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -sidebar_position: 4 -title: Health Factor & Defaults ---- - -# Defaults -If a loan defaults, the loan ends and the borrower loses ownership of the collateral, including excess collateral and early repayments. Loans on Loopscale have two default mechanisms, price-based and payment-based. - -## Price-Based Defaults -Similar to liquidations on existing DeFi lending protocols, price-based defaults occur when a loan's health factor reaches 0. In other words, a price-based default occurs when the value of loan's collateral relative to the value of the debt falls below the liquidation threshold. This can happen at any point during the loan, and borrowers should monitor their health factor to avoid a price-based default. Borrowers can increase their health factor by repaying principal and topping up collateral amounts. - - -### Health Factor -A loan's health factor helps a borrower easily understand a loan's real-time risk of a price-based. The health factor has a maximum value of 100%. A health factor of 0% signals a loan is at risk of liquidation, meaning its collateralization ratio no longer meets the liquidation threshold. - -The health factor is calculated with the following formula: - -$\text{Health Factor} = 1 - \displaystyle\frac{\text{Collateralization Ratio}}{\text{Liquidation Ratio}}$, where - - -$\text{Collateralization Ratio} = 1 - \displaystyle\frac{\text{Debt Value in USD}}{\text{Collateral Value in USD}}$ - - -and the $\text{Liquidation Ratio}$ is a per-collateral, protocol-determined value. ${\text{Debt Value}}$ includes the total interest as calculated at the loan due date. -The liquidation ratio is fixed for the lifetime of the loan whereas the collateralization ratio may fluctuate over the course of a loan as the value of the collateral or debt changes. - -Platform-wide liquidation ratio values can be found [here](./risk-management.md). - -## Payment-Based Defaults -Payment-based defaults result from a borrower failing to pay off outstanding debt by a loan's due date. Borrowers should monitor upcoming due dates to avoid a payment-based default. \ No newline at end of file diff --git a/docs/concepts/loopscale/risk-management.md b/docs/concepts/loopscale/risk-management.md deleted file mode 100644 index c28aea9..0000000 --- a/docs/concepts/loopscale/risk-management.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -sidebar_position: 5 ---- -# Risk Management -When using the Loopscale Protocol, it's important to understand and manage the financial and operational risks involved. THis page outlines key risks to consider and provides guidance on mitigating them. Some of these risks apply only to borrowers or only to lenders. -## Financial Risks -### Interest Rate Risk -Interest rate risk arises from the potential for market rates to diverge from the fixed rate of your loan over time. Borrowing or lending at a fixed rate for a specific duration may result in your loan being more expensive or cheaper than the prevailing market rate. The sensitivity to interest rate changes increases with loan duration. - -### Liquidity Risk -The diverse range of collateral accepted by Loopscale can expose users to liquidity risk. Different tokens have varying levels of underlying liquidity and availability across trading venues. This risk of illiquidity of collateral should be considered when lending. - -### Liquidation Risk -Loans on Loopscale are subject to both price and payment-based liquidations. If the collateral value relative to the principal plus accrued interest falls below the liquidation threshold, the collateral may be seized. In such cases, repayments made will be forfeited, and the collateral will be transferred to the liquidator. Borrowers should closely monitor their loan's health ratio, as a ratio of 0% indicates eligibility for liquidation. To avoid liquidation, borrowers can repay a portion of the loan or add more collateral. - -### Refinancing Risk -Refinancing on Loopscale is the process of paying off an existing loan with an order from the books. There are several reasons a refinance may fail including lack of liquidity on the orderbooks, chain congestion, or technical failure. If the refinance fails and the loan is past the grace period, the loan will be liquidated. Another risk to refinancing is ending up with higher rate loans. The matching engine attempts to find the lowest cost loan however that may be significantly higher than the rate at which you started the loan at. - -### Time Risk -Loans that are not set up to refinance automatically or if there are issues refinancing may be subject to liquidation early. This will result in the loss of collateral and is unrecoverable. - -### Asset Counterparty Risks -Assets you are borrowing or using as collateral have underlying risks such as depegs, team risks, market risks, and concentration risks. Pick the assets you transact in wisely and understand that Loopscale does not control many of the factors that impact most of these assets. If a specific asset issuer blacklists you or the Loopscale Protocol there may be disruption of service. - -Assets used for borrowing or collateral are subject to various risks, including depegs, team risks, market risks, and concentration risks. For example, Stablecoins used in Loopscale, such as USDC, may experience price deviations from their intended peg (usually 1 USD). As tokens are priced in USD, a depeg can lead to a devaluation of cash or present value of assets. This, in turn, may reduce a borrower's health factor and increase liquidation risk. It's essential to carefully select assets and understand that Loopscale does not control many of the factors impacting these assets. If an asset issuer blacklists a user or the Loopscale Protocol, service disruptions may occur. - - -## Operational Risks -### Smart Contract Risk -Contracts inherently risk containing vulnerabilities that can be exploited by attackers, including compromised or manipulated external dependencies and economic incentive. All Loopscale Protocol contracts are currently under audit. Upon completion of these audits and the open-sourcing of the protocol, a bug bounty program will be established. - -### Oracle Price Risk -Any Loopscale loan may be connected to an oracle, as established by the borrower or lender in the initial order. For all loans on Loopscale, [the connected oracles](/concepts/markets/asset-parameters" have been determined by the Loopscale team. All oracles are subject to price manipulation or incorrect inputs, falsely reducing or increasing asset values, leading to premature liquidations or bad debt. Oracle quality, including safety, liveness, centralized control, and precision and frequency of price updates, should be considered in assessing risk. \ No newline at end of file diff --git a/docs/concepts/product/rewards.md b/docs/concepts/points.md similarity index 99% rename from docs/concepts/product/rewards.md rename to docs/concepts/points.md index 1b705e0..aac04ac 100644 --- a/docs/concepts/product/rewards.md +++ b/docs/concepts/points.md @@ -2,7 +2,7 @@ sidebar_position: 6 --- -# Rewards +# Points Users can earn rewards in the form of points earned through various interactions with the protocol. These points serve as a way to incentivize active participation and engagement with the Loopscale. Informationi on points and affiliated activities can be checked on the [Rewards](https://app.loopscale.com/rewards) page of the Loopscale App. diff --git a/docs/concepts/product/_category_.json b/docs/concepts/product/_category_.json deleted file mode 100644 index cd4452c..0000000 --- a/docs/concepts/product/_category_.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "label": "Product", - "position": 3, - "link": null, - "collapsed": true -} \ No newline at end of file diff --git a/docs/concepts/product/advanced/custom-lend-positions.md b/docs/concepts/product/advanced/custom-lend-positions.md deleted file mode 100644 index ceaa793..0000000 --- a/docs/concepts/product/advanced/custom-lend-positions.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Custom Lend Positions - - - -## Smart orders -Lenders may also create **Smart Orders (Virtual Orders)**, which enhance capital efficiency by enabling the same capital to be displayed across multiple **Lend Limit Orders** according to a term ruleset: - -- Eligible Collateral and maximum LTVs -- Rate on a per-collateral-duration pair basis -- Eligible Durations - - - -To create a more familiar experience for DeFi users, the **Loopscale App** exposes only a subset of order creation flows. - -1. For immediacy: To provide instant liquidity, lenders place **Limit Orders** (in the form of **Smart Orders**) and borrowers place **Market Orders** matching to the available capital. - - - For liquidity: To concentrate liquidity in the most popular markets, Smart Orders are restricted to Virtual Markets (Virtual Limit Creditbook, Virtual Creditbook), standardized subsets of terms with fixed oracles, fees, and zero-coupon repayment schedules. These Virtual Markets offer a preset selection of duration, collateral, and principal options. \ No newline at end of file diff --git a/docs/concepts/product/lend/lending-assets.md b/docs/concepts/product/lend/lending-assets.md deleted file mode 100644 index 5240b14..0000000 --- a/docs/concepts/product/lend/lending-assets.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -sidebar_position: 1 ---- - - - - -# Lending Assets - - - -## hi - -Lending on Loopscale allows users to earn interest on their digital assets. Unlike pool-based protocols where assets are supplied to a liquidity pool, lending on Loopscale operates on the order book model. Users effectively create a limit order on the Loopscale Credit Order Book; this order - -There are two ways to lend on Loopscale: - -1. Lend through Loopscale's Earn Vaults, where lending positions are managed by a third party vault custodian -2. Create custom lend orders specifying rates and eligible collateral. - -Most users elect to use the vaults to earn yield without having to consider lending strategies; in the rest of this article, custom lending strategies will be discussed. - -Lending on Loopscale is done through _strategies_. A strategy is where a lender deposits funds into a pool, selecting: - -1. Term Lengths you’re willing to lend for (1 day, 1 week, 1 month, 3 months) -2. Interest Rate you are willing to accept -3. Collateral you’re willing to lend against - -## Setting an interest rate -Interest rates on Loopscale are market-driven, meaning they're set by lenders and accepted by borrowers directly. This creates more efficient pricing compared to pool-based models where rates are determined by utilization. - -When setting rates, consider current interest rates on the order book. More competitive rates will be utilized sooner. Longer term lengths typically command higher interest rates. - -Term length (longer terms typically command higher rates) -Current market conditions -Asset liquidity - -## Collateral selection -Users can choose which collateral is eligible to be offered in exchange for borrowing their lent liquidity. For more information, see global asset parameters. - -Loopscale has a number of preset strategies to make the lending process even faster for quick borrowers. All presets set the max loan length to 1 month: -- Global: All Available Assets -- Core: Large Cap Solana tokens, LSTs, and other L1s -- DeFi: DeFi Governance tokens, LP positions, and vaults -- Memecoin: Large Cap Memecoins on Solana - -## After Creation -Once a strategy is created, an order will sit on the Credit Order Book equal to the amount un-utilized balance of the strategy. Capital can be removed from the strategy if its unused and additional capital can be deployed to strategies. - -From here, see: [Manage Position](/concepts/product/lend/lending-assets). - diff --git a/docs/concepts/product/portfolio.md b/docs/concepts/product/portfolio.md deleted file mode 100644 index dd04c3f..0000000 --- a/docs/concepts/product/portfolio.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Portfolio - - - -The Portfolio page is a central place to view ongoing and past positions across borrows, lends, and Yield Loops. It also serves as a place to close or modify current positions. While this page gives an overview of position management capabilities from this page, we recommend reading the lend position management and borrow position management articles for a deeper understanding of position management. - - - -## Yield Loops - -This section of the Portfolio page lists ongoing and past Yield Loops. Stats of each Yield Loop are in this section, most notably the health of the positions. - -The following actions for managing Yield Loop positions are available (note: these are the same set of actions as are possible with borrows, as Yield Loops are leveraged borrow positions). - -- Repay: Repay some or all of the debt of a Loop (repaying all will close the Loop). -- Refinance: choose a different fixed-rate period and refinance your loop. -- Borrow more: Increase the position size -- Top-up collateral: Add more collateral for the Loop. This is useful for if a long/short biased loop (like long JLP) is low on health and potentially approaching liquidation. - -## Borrow positions - -This section of the Portfolio page lists all ongoing and past borrowing positions. - -The following actions for managing Yield Loop positions are available: - -- Repay: Repay some or all of the debt of a Loop (repaying all will close the Loop). -- Refinance: choose a different fixed-rate period and refinance your loop. -- Borrow more: Increase the position size -- Top-up collateral: Add more collateral for the Loop. This is useful for if a long/short biased loop (like long JLP) is low on health and potentially approaching liquidation. - -## Lend positions - -This section of the Portfolio page lists all ongoing lend positions. - -The following actions for managing lend positions are available: -- Deposit/Withdraw: — Add or remove liquidity from your lend position. Note that currently utilized capital cannot be withdrawn unless withdrawn early. -- +Opening a lending position or a loop effectively opens a new Solana account, which requires a "rent deposit." This extra amount of SOL is for this deposit. + +You will receive this "rent" back when you close your position fully. For lending positions, you may need to fully delete the position (positions can remain even after fully repaid) to reclaim the rent. See: [Managing lending positions](/concepts/using-loopscale/lend/managing-position). + +You can read more about rent and the Solana account model in the [Solana documentation](https://solana.com/docs/core/accounts). ### How do fixed-rate loans work on Loopscale? Fixed-rate loans on Loopscale maintain the same interest rate through a fixed term (e.g. 1 day, 1 week, 1 month, or 3 months). Unlike variable rate options common in traditional DeFi lending pools, there is no variable rate volatility for loans on Loopscale. diff --git a/docs/concepts/index.mdx b/docs/concepts/index.mdx index 51ed828..2e43cad 100644 --- a/docs/concepts/index.mdx +++ b/docs/concepts/index.mdx @@ -14,10 +14,11 @@ Built on Solana, Loopscale uses order book-based architecture to combine the eff Rates are determined by markets, not algorithms, and any asset can be supported for principal and/or collateral, creating new liquidity for novel and emerging assets while deepening liquidity for existing assets. -## On Loopscale, users can: -- **Lend**: Supply capital to specific markets at preferred terms and rates while maintaining full control over collateral requirements. -- **Borrow**: Access fixed-rate loans using any collateral with superior rates and LTVs via market-based pricing. -- **Loop**: Enter into leveraged yield strategies, borrowing at low, fixed rates to lever up on yield-bearing tokens such as liquidity positions and liquid-staked SOL. +## On Loopscale, users have access to the following: +- **Vaults**: Access passive lending exposure by depositing to Loopscale Vaults, each with a unique risk profile and strategy. +- **Yield Loops**: Enter into leveraged yield strategies, borrowing at low, fixed rates to lever up on yield-bearing tokens such as liquidity positions and liquid-staked SOL. +- **Borrowing**: Access fixed-rate loans using any collateral with superior rates and LTVs via market-based pricing. +- **Lending**: Supply capital to specific markets at preferred terms and rates while maintaining full control over collateral requirements. ## The advantages of using Loopscale over traditional lending protocols 1. **Best Rates**: Get the lowest borrowing rate and highest lending yields, made possible by the capital efficiency of order books. diff --git a/docs/concepts/protocol-concepts/credit-order-book.md b/docs/concepts/protocol-concepts/credit-order-book.md index 0e6ec2e..0506136 100644 --- a/docs/concepts/protocol-concepts/credit-order-book.md +++ b/docs/concepts/protocol-concepts/credit-order-book.md @@ -1,35 +1,25 @@ --- sidebar_position: 3 --- - # Credit Order Book The Credit Order Book is the central primitive of Loopscale. It connects lenders and borrowers and facilitates efficient order matching, price discovery, and liquidity concentration. -The Credit Order Book can be compared to order books found in traditional exchanges (e.g. stocks) and cryptocurrency exchanges. However, instead of price, the Credit Order Book advertises rates being offered by lenders for assets. - - - -## Order Matching -The Credit Order Book employs an onchain matching engine to pair loan offers with loan requests. If an offer and request match across loan terms, the borrower may fill the lender offer, initialized the loan. +The Credit Order Book can be compared to order books found in traditional exchanges (e.g. stocks) and cryptocurrency exchanges. However, instead of price, the Credit Order Book advertises rates being offered by lenders to borrowers. -Borrowers may also fill lender offers directly with matching collateral without creating a request. In this case, the borrower will fill the best-available order on the Credit Order Book as determined by the interest rate. +![](../../../static/img/docs/concepts/limit-creditbook-1.png) -## Smart Orders -Lenders may create Smart Orders, which enhance capital efficiency by enabling the same capital to be displayed as multiple different Lend Limit Orders according to a term ruleset: -- Eligible collateral and maximum LTVs -- Rate on a per-collateral-duration pair basis -- Eligible durations +On the Credit Order Book, borrowers and lenders can place orders for by defining individual [loan structures](/concepts/protocol-concepts/loans) offering maximal configurability. On Loopscale, borrowers and lenders primarily interact with the Order Credit Book via _virtualized_ Credit Order Books (vCOBs). A vCOB represents a collection of orders standardized on a subset of terms. -## Virtual Markets -Virtual Markets are standardized subsets of terms with fixed oracles, fees, and zero-coupon repayment schedules. These Virtual Markets offer a preset selection of duration, collateral, and principal options. +The initial vCOBs on Loopscale standardize orders such that borrowers and lenders specify only principal, collateral, amount, rate, and duration and principal, collateral, and duration have a predefined set of options. This provides a streamlined experience and concentrates liquidity within unique combinations of principal, collateral, and duration. -![](../../../static/img/docs/concepts/limit-creditbook-1.png) -On the Credit Order Book, borrowers and lenders can place orders for by defining individual [loan structures](/concepts/protocol-concepts/loans) offering maximal configurability. On Loopscale, borrowers and lenders primarily interact with the Credit Order Book via virtualized Credit Order Books. A virtualized Credit Order Book represents a collection of orders standardized on a subset of terms. -The initial virtualized credit books on Loopscale standardize orders such that borrowers and lenders specify only principal, collateral, amount, rate, and duration and principal, collateral, and duration have a predefined set of options. This provides a streamlined experience and concentrates liquidity within unique combinations of principal, collateral, and duration. ![](../../../static/img/docs/concepts/limit-creditbook-2.png) + ![](../../../static/img/docs/concepts/limit-creditbook-3.png) -As liquidity grows, more vLCBs will be introduced with finer parameterization, balancing the trade-off between liquidity concentration and flexibility. +As liquidity grows, more vCOBs will be introduced with finer parameterization, balancing the trade-off between liquidity concentration and flexibility. +## Order Matching +The Credit Order Book employs an on-chain matching engine to pair loan offers with loan requests. If an offer and request match across loan terms, the borrower may fill the lender offer, initialized the loan. +Borrowers may also fill lender offers directly with matching collateral without creating a request. In this case, the borrower will fill the best-available order on the LCB as determined by the interest rate. \ No newline at end of file diff --git a/docs/concepts/protocol-concepts/global-asset-parameters.md b/docs/concepts/protocol-concepts/global-asset-parameters.md index 1c7af56..bc32e2d 100644 --- a/docs/concepts/protocol-concepts/global-asset-parameters.md +++ b/docs/concepts/protocol-concepts/global-asset-parameters.md @@ -1,10 +1,10 @@ --- sidebar_position: 8 --- -` + # Asset Parameters -` -Borrowers and lenders on Loopscale interact via virtualized [Credit Order Book](/concepts/protocol-concepts/credit-order-book) with standardized terms including principal and collateral options, principal and collateral oracles, and loan terms. These standardized terms are available below. + +Borrowers and lenders on Loopscale interact via the virtualized [Credit Order Book](/concepts/protocol-concepts/credit-order-book) with standardized terms including principal and collateral options, principal and collateral oracles, and loan terms. These standardized terms are available below. ## Duration diff --git a/docs/concepts/protocol-concepts/lend-vaults.md b/docs/concepts/protocol-concepts/lend-vaults.md deleted file mode 100644 index 1eeccac..0000000 --- a/docs/concepts/protocol-concepts/lend-vaults.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -sidebar_position: 4 ---- - -# Lend Vaults - -For a more passive lending experience, lenders can deposit into **Lend Vaults**, which function similarly to **Smart Orders** but pool capital from multiple lenders. These vaults are managed by external third parties who handle term decisions for the pooled capital. - -Vaults allocate deposits to curator-approved markets. Major strategy updates take effect after a time delay. Vaults generate returns from interest paid by borrowers borrowing from underlying markets. - -If the vault has low liquidity, choose between an instant withdrawal with a small fee or join a withdrawal queue. - diff --git a/docs/concepts/protocol-concepts/loans.md b/docs/concepts/protocol-concepts/loans.md index 46a6a2c..edb3c38 100644 --- a/docs/concepts/protocol-concepts/loans.md +++ b/docs/concepts/protocol-concepts/loans.md @@ -1,19 +1,55 @@ --- sidebar_position: 2 --- +import { FixedTblCol } from "@site/src/js-components/inline"; # Loans -A loan is created when a Lend Order matches with a compatible Borrow Order on the Credit Order Book. These orders specify terms of the requested loan, including: + +## Introduction +Direct loans form the foundation of the Loopscale Protocol, enabling direct lending and borrowing between users. Lenders can create loan offers and borrowers can create loan requests with specific parameters such as interest rate, duration, and collateral requirements. When a matching counterparty accepts the offer or request, a bilateral loan is initialized, and funds are transferred between the parties. The collateral remains non-transferrable until the loan concludes, at which point it is returned to the borrower upon repayment or transferred to the lender in the event of a default. + +A loan is created when a Lend Order matches with a compatible Borrow Order on the [Credit Order Book](/concepts/protocol-concepts/credit-order-book). + +## Orders +To create a more familiar experience for DeFi users, lenders place Lend Limit Orders and borrowers place Market Orders that match to the best priced Lending Limit Order. An order specifies terms of the requested loan, including: - Principal (Asset, Max Amount) - Collateral (Asset, Amount) - Terms (Interest Rate, Repayment Schedule) -- Default Condition (Principal Oracle, Collateral Oracle, or Liquidiation LTV) +- Default Condition (Principal Oracle, Collateral Oracle, or Liquidation LTV) +## Offers and Requests +Loans are initiated when a loan offer and loan request, collectively known as orders, are matched. Orders define the terms of a loan, including payment frequency, interest rate, principal, duration, and fees. Once created, orders are listed on the Limit Creditbook (LCB) and matched by an on-chain matching engine. Borrowers and lenders can also directly accept active orders on the LCB. -## Orders -To create a more familiar experience for DeFi users, the Loopscale App exposes only a subset of user creation flows. -1. To allow for instant liquidity, lenders place Lend Limit Orders (in the form of Smart Orders) and borrowers place Market Orders that match to the best priced Lending Limit Order. -2. To concentrate liquidity in the most popular markets, Smart Orders are restricted to Virtual Markets +When a suitable offer and request are matched, or when a borrower or lender finds an acceptable order, the borrower can initiate the loan. The protocol automatically transfers the principal to the borrower and escrows the collateral. + +## Terms +Below are all possible terms for a Loan via the Loopscale protocol. Note that not all of these terms are currently in use with the Loopscale App; but they do all exist within the protocol for current and future use cases. + +## Ledgers +Initiating a loan automatically generates a repayment ledger based on the terms specified in the matched order. The ledger defines the repayment schedule and tracks repayments as they are made. The Loopscale Protocol uses this ledger to determine the current state of a loan. + +## Defaults +**Price-based defaults**: Similar to existing liquidation mechanics, a price-based default occurs when the value of collateral relative to the value of the principal falls below the liquidation threshold. This can happen at any point during the loan, and borrowers should monitor their health factor to ensure it doesn't get too close to zero. Borrowers can avoid liquidations by repaying principal and topping up collateral amounts. + +### Oracle Agnostic Pricing +Borrowers can set up loans that price their collateral or principal using custom or arbitrary oracles, enabling pricing for assets that may be illiquid or lack third-party oracle support. Loans may also be oracle-less, with borrowers proposing terms that solely default based on missed payments or loan expiry. + +| | Description | +|:---|:---| +| **Repayment type** | Simple-Interest loans have periodic interest payments with a final principal payment at maturity and Zero-Coupon loans have a single repayment that includes all interest and principal at maturity. | +| **Principal** | The amount of principal being lent to the borrower. | +| **Principal asset** | The currency of principal | +| **Collateral** | The minimum amounts and mints of the collateral. | +| **APY** | The annualized cost of funds over the loan term, expressed as a percentage. | +| **Duration** | The length of time of the loan contract. | +| **Repayment frequency** | The frequency at which the borrower is required to make interest payments in a simple-interest loan. | +| **Default type** | A loan's terms may include price-based defaults (defaulting when the loan's collateralization ratio reaches the liquidation threshold) and/or payment-based defaults (defaulting when a borrower misses a specified number of repayments). | +| **Auto-liquidation enabled** | For particular collateral types, lenders can elect to enable third-party liquidators who transfer the principal to the lender in exchange for the collateral in a default. | +| **Liquidation threshold** | The minimum ratio of collateral to debt that must be maintained by the borrower to avoid defaulting (defined only if price-based defaults are enabled). | +| **Max outstanding payments** | The number of outstanding interest payments allowed prior to a payment-based default (defined only if payment-based defaults are enabled). | +| **Early payment penalty** | The interest a borrower is required to pay on early principal repayments, expressed as a percentage of the original interest expected for the repaid principal. | +| **Late payment penalty** | The fee a borrower is required to pay on late payments, expressed as a percentage of the late repayment. | +| **Grace period** | The amount of time after a missed payment at which it is considered late. | +| **Principal pricing oracle** | An optionally defined custom pricing oracle to calculate principal value | +|**Collateral pricing oracle** | An optionally defined custom pricing oracle to calculate collateral value | -## Segregated Collateral -Collateral is held in Segregated Accounts, allowing users to actively manage their assets while they're being used as collateral (assuming the collateral remains eligible and healthy). For example, users can modify a liquidity position that's being used as collateral. diff --git a/docs/concepts/protocol-concepts/loops.md b/docs/concepts/protocol-concepts/loops.md index 878ae80..1b0f5c1 100644 --- a/docs/concepts/protocol-concepts/loops.md +++ b/docs/concepts/protocol-concepts/loops.md @@ -16,6 +16,12 @@ Loopscale executes these steps atomically. This means that all the above actions The end result: a levered JupSOL position earning more yield as long as borrow rates are lower than the base JupSOL yield. +Upon closing a Yield Loop, Loopscale does the following: +1. Flash loans the amount needed to repay your loan +2. Repays the long-term loan to free up your collateral +3. Sells enough of your yield-bearing asset to repay the flash loan +4. Returns the remaining assets to your wallet + ## Yield Loops compared to similar products While leveraged yield strategies have existed in DeFi before, Loopscale's order book architecture provides several key advantages over looping from traditional yield-based protocols. diff --git a/docs/concepts/using-loopscale/advanced/_category_.json b/docs/concepts/using-loopscale/advanced/_category_.json deleted file mode 100644 index 8ba5f49..0000000 --- a/docs/concepts/using-loopscale/advanced/_category_.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "label": "Advanced", - "position": 5, - "link": null, - "collapsed": true -} \ No newline at end of file diff --git a/docs/concepts/using-loopscale/advanced/lp-collateral-management.md b/docs/concepts/using-loopscale/advanced/lp-collateral-management.md deleted file mode 100644 index 9cc0467..0000000 --- a/docs/concepts/using-loopscale/advanced/lp-collateral-management.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 1 ---- - -# LP Collateral Management - -https://x.com/TruittLuke/status/1852424740650262821 diff --git a/docs/concepts/using-loopscale/borrow/borrowing-assets.md b/docs/concepts/using-loopscale/borrow/borrowing-assets.md index 1864e44..57cf07a 100644 --- a/docs/concepts/using-loopscale/borrow/borrowing-assets.md +++ b/docs/concepts/using-loopscale/borrow/borrowing-assets.md @@ -6,14 +6,14 @@ sidebar_position: 1 When borrowing on Loopscale, a user selects: - An asset and amount to borrow -- How long they wish to borrow for +- How long they wish to borrow for (locking in an interest rate for this duration) - An asset its amount to use as collateral -The list of available borrow assets, collateral assets, and loan duration options are available on the Loopscale App. Each collateral asset has a loan-to-value ratio that determines the maximum borrowable amount. +The list of available borrow assets, collateral assets, and loan duration options are available on the [Loopscale App's Borrow page](https://app.loopscale.com/borrow). Each collateral asset has a loan-to-value (LTV) ratio that determines the maximum borrowable amount as well as a liquidation LTV that determines at what LTV the position's health reaches 0%, leading to liquidation. The borrower receives funds at the lowest rate on the market and the collateral is escrowed. The collateral is returned to the borrower once the borrowed funds and accrued interest have been fully repaid. -A borrower will default, losing their collateral the loan's health factor falls below 0%. To learn more about defaults and how health factor is calculated, see Loan Health & Defaults. TODO: add link here +A borrower will default, losing their collateral the loan's health factor falls below 0%. To learn more about defaults and how health factor is calculated, see [Managing Loans](/concepts/using-loopscale/borrow/managing-loans). ## Quick borrow diff --git a/docs/concepts/using-loopscale/borrow/lp-collateral-management.md b/docs/concepts/using-loopscale/borrow/lp-collateral-management.md new file mode 100644 index 0000000..9e3b695 --- /dev/null +++ b/docs/concepts/using-loopscale/borrow/lp-collateral-management.md @@ -0,0 +1,20 @@ +--- +sidebar_position: 1 +--- + +# LP Collateral Management + +Users are able to manage their Orca Whirlpool liquidity positions directly from the Loopscale app while these positions are being used as collateral + +## How to manage LP collateral + +1. Navigate to the [Portfolio](https://app.loopscale.com/portfolio) page of the app and find your borrow position that uses Orca Whirlpool LP tokens as collateral. +2. Click "Manage "Manage whirlpool" to open up the interface for adjusting your liquidity position. +3. Here, you can adjust your liquidity range and position balances as well as harvest yield from the position to your wallet. + +## Tips on LP collateral management + +When adjusting position balances, it's important to note how it will affect your loan health. Withdrawals from the position will not succeed if they reduce health below the minimum health ratio. + +You can also modify slippage for liquidity management transactions by clicking the icon at the top right of the interface. + diff --git a/docs/concepts/using-loopscale/borrow/managing-loans.md b/docs/concepts/using-loopscale/borrow/managing-loans.md index 98db87d..6f7d58d 100644 --- a/docs/concepts/using-loopscale/borrow/managing-loans.md +++ b/docs/concepts/using-loopscale/borrow/managing-loans.md @@ -3,15 +3,17 @@ sidebar_position: 2 --- # Managing Loans -You can partially or fully repay a loan at any point. You only owe interest on loan value you have outstanding. So if you repay early, you won’t owe interest for the remaining time on the principal repaid. If you repay early, you will incur a fee that is proportional to the interest saved. This is to compensate the lender for locking their capital up and discourage long capital reservations without reason. + +A loan is created when a borrow order matches with a compatible lend order on the order book. + +You can partially or fully repay a loan at any point. You only owe interest on loan value you have outstanding. A borrower has two ways to improve a loan's health factor: (1) topping up collateral (2) repaying a loan or portion of a loan early. A borrower may repay a loan in full before the loan due date. Upon repayment, the loan will end and the collateral will be returned to the borrower. A borrower may also partially repay a loan early, decreasing the loan value and increasing the health factor. Upon early repayment, interest accrued up until that point is paid. - ## Monitoring loan health -loan's health factor helps a borrower easily understand a loan's real-time risk of a price-based. The health factor has a maximum value of 100%. A health factor of 0% signals a loan is at risk of liquidation, meaning its collateralization ratio no longer meets the liquidation threshold. +A loan's health factor helps a borrower easily understand a loan's real-time risk of a price-based liquidation. The health factor has a maximum value of 100%. A health factor of 0% signals a loan is at risk of liquidation, meaning its collateralization ratio no longer meets the liquidation threshold. The health factor is calculated with the following formula: @@ -21,10 +23,12 @@ $\text{Health Factor} = 1 - \displaystyle\frac{\text{Collateralization Ratio}} $\text{Collateralization Ratio} = 1 - \displaystyle\frac{\text{Debt Value in USD}}{\text{Collateral Value in USD}}$ -and the $\text{Liquidation Ratio}$ is a per-collateral, protocol-determined value. ${\text{Debt Value}}$ includes the total interest as calculated at the loan due date. +and the $\text{Liquidation Ratio}$ is a per-collateral, protocol-determined value. + +${\text{Debt Value}}$ includes the total interest as calculated at the loan due date. The liquidation ratio is fixed for the lifetime of the loan whereas the collateralization ratio may fluctuate over the course of a loan as the value of the collateral or debt changes. -Platform-wide liquidation ratio values can be found [here](./risk-management.md). +Platform-wide liquidation ratio values can be found at the bottom of the [Loopscale App's Borrow page](https://app.loopscale.com/borrow). ## Borrow more @@ -34,7 +38,6 @@ Platform-wide liquidation ratio values can be found [here](./risk-management.md) A borrower may deposit additional collateral for a loan, increasing the collateral value and increasing the health factor. The additional collateral must be of the same asset. Excess collateral may not be withdrawn until the loan conclusion with the rest of the collateral. ## Refinancing -TODO: See how much of this section is accurate. rewrite to be easier understood. Borrowers on Loopscale are able to refinance their loans. Refinancing is the process of repaying one outstanding loan by atomically starting another. The original lender is paid off and a new loan is started. Refinancing only works if there is an offer at a greater than or equal to size of the amount owed on a loan and for the corresponding term and collateral. The new loan is started at an amount equal to the original principal plus any accrued interest and fees for the new length. diff --git a/docs/concepts/using-loopscale/earn.md b/docs/concepts/using-loopscale/earn.md deleted file mode 100644 index a5008ee..0000000 --- a/docs/concepts/using-loopscale/earn.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Vaults - diff --git a/docs/concepts/using-loopscale/lend-vaults.md b/docs/concepts/using-loopscale/lend-vaults.md new file mode 100644 index 0000000..28e919e --- /dev/null +++ b/docs/concepts/using-loopscale/lend-vaults.md @@ -0,0 +1,53 @@ +--- +sidebar_position: 1 +--- + +# Lend Vaults + +**Lend Vaults** simplify the lending experience by delegating management of lending rates, durations, and collateral selections to dedicated **Vault Curators**. + +When lending via Lend Vaults, users don’t need to manage lending rates, durations, or collateral options. Users only need to select a Vault and deposit their funds. Each Vault's Curator actively manages these deposits by allocating them into specific lending opportunities within Loopscale. Interest earned from these lending activities is passed directly back to the users who deposited in the vault. + +In short, when you deposit into a Lend Vault: +1. Your tokens join a pool overseen by a Vault Curator. +2. The Curator supplies these tokens across Loopscale's lending markets. +3. Vaults generate returns from interest paid by borrowers borrowing from underlying markets. +3. These returns flow back to all vault depositors proportionally. + +Vaults can be found at the top of the [Lend](https://app.loopscale.com/lend) page of the Loopscale App. + +Loopscale's first Yield Vaults are managed by the Loopscale core team, but Loopscale will soon onboard third-party risk experts to manage their own vaults. + +A percentage of a Vault's liquidity is kept idle to facilitate instant withdrawals (see "Liquidity buffer" above). If the vault has low liquidity, users can choose between an instant withdrawal with a small fee or to join a withdrawal queue. + +## Vault Interface + +Each Vault's page lists its statistics, ongoing loans (i.e. allocations), and market parameters, as well as the ability for users to deposit and withdraw. + +### Loans + +In the Loans section of the vault page, tokens used as collateral for borrows of the vault's principal asset are listed. Included is the amount of principal asset borrowed for each collateral token as well as the APY being earned. + +### Market parameters + +**Liquidity buffer**: This is the percentage of Vault deposits kept idle so that they may be used for instant redemptions. No lending offers will be placed if idle liquidity is below this buffer. + +**Max loan size**: The max loan size (denominated in the Vault's deposit) allowed. + +**Collateral**: A list of collateral that the Vault accepts, and each collateral's APY, LTV, and liquidation LTV. + +## Vault security and restrictions +Lend Vaults have been reviewed in Loopscale's most recent [audits](/concepts/audits), and Vault Curators cannot withdraw user deposits from the Vault. + +The vault manager can update APYs, durations, or origination fees at any time. All other changes require a 24 hour waiting period. + +## Use cases for Lend Vaults + +Lend Vaults abstract away the complexities of fixed-rate, order book-based lending by pooling user deposits under management by Vault Curators. This provides both a simpler user experience while also allowing for Curators to provide optimize yield with appropriate risk parameters. + +Loopscale allows for each Vault to have specific strategies, risk profiles, and goals in mind. One Vault may focus solely on highly liquid and low-risk assets, aiming for steady and predictable returns. Another Vault might pursue more aggressive strategies, lending to higher-risk, higher-yield opportunities like leveraged trading positions, or liquidity positions to maximize returns. + +Deposits in Vaults can serve as collateral for further borrowing, making possible further composability and leveraged strategies. + + + diff --git a/docs/concepts/using-loopscale/lend/lending-assets.md b/docs/concepts/using-loopscale/lend/lending-assets.md index 30feb8e..3487fa4 100644 --- a/docs/concepts/using-loopscale/lend/lending-assets.md +++ b/docs/concepts/using-loopscale/lend/lending-assets.md @@ -6,18 +6,19 @@ sidebar_position: 1 Lending is one of the core primitives of Loopscale. -Lending on Loopscale is different from pool-based lending protocols. It can be compared most to limit order book-based exchanges. On Loopscale, lending effectively creates a limit order of a) amount offered and b) APY requested on that amount. Borrowers then select the best APY (in what can be compared to a market order). +Lending on Loopscale is different from pool-based lending protocols. It can be compared most to limit order book-based exchanges. On Loopscale, lending creates a limit order on the Credit Order Book of a) amount offered and b) APY requested on that amount. Borrowers then select the best APY (in what can be compared to a market order). There are two ways to lend on Loopscale: -1. Lend through Loopscale's Earn Vaults, where capital is deposited to vaults where lending positions are managed by a third party vault custodian. This is a more hands-off approach to lending; to learn more, see [Earn Vaults](/concepts/using-loopscale/earn). -2. Create custom lend positions specifying rates and eligible collateral. This is a more complex—and more powerful—way to lend. This article describes how to create these positions. +1. Lend through Loopscale's Earn Vaults, where capital is deposited to vaults where lending positions are managed by a vault custodian. This is a more hands-off approach to lending; to learn more, see [Earn Vaults](/concepts/using-loopscale/earn). + +2. Create custom lend positions specifying rates and eligible collateral. This is a more complex—and more powerful—way to lend. **This article describes how to create these positions**. ## How to create a lending position on Loopscale -First, navigate to the [Lend](https://app.loopscale.com/lend) page on the Loopscale App. Find the asset you want to lend and click "View market" for that asset. From here, you select which asset you wish to supply (lend), collateral you accept, and your APYs. +First, navigate to the [Lend page on the Loopscale App](https://app.loopscale.com/lend).Find the asset you want to lend and click "View market" for that asset. From here, you select which asset you wish to supply (lend), collateral you accept, and the APYs you request for each fixed rate duration. -### Eligible Collateral +### Eligible collateral selection Loopscale allows for lenders to specify which collaterals they'll accept. This helps lenders price risk better. @@ -35,7 +36,7 @@ Interest rates on Loopscale are market-driven, meaning they're set by lenders an When setting rates, consider current interest rates on the order book. More competitive rates will be utilized sooner. Longer term lengths typically command higher interest rates. -### Lend Idle Capital +### Lend idle capital Loopscale's _Optimized Yield_ deposits lent capital into partnered pool-based lending protocols (currently marginfi) so this capital can earn yield while it awaits being matched to a borrower. This feature is optional. @@ -44,7 +45,7 @@ Most users elect to use the vaults to earn yield without having to consider lend ### A note on Rent If this is your first time lending a certain asset (or you deleted a past position entirely), you will need to pay a small SOL fee for rent (in addition to the network fee). This fee will be reclaimed upon completely closing out your lending position. -## After Position Creation +## After position creation Once a strategy is created, an order will sit on the Credit Order Book equal to the amount un-utilized balance of the position. Capital can be removed from the strategy if its unused and additional capital can be deployed as well. From here, see: [Manage Position](/concepts/product/lend/lending-assets). diff --git a/docs/concepts/using-loopscale/lend/managing-position.md b/docs/concepts/using-loopscale/lend/managing-position.md index fd4f39a..5b76b55 100644 --- a/docs/concepts/using-loopscale/lend/managing-position.md +++ b/docs/concepts/using-loopscale/lend/managing-position.md @@ -23,14 +23,14 @@ Users can withdraw from the loan early, collecting partial interest, by selling This can be accomplished by going to the position, clicking "More," selecting "View Loans", and withdrawing early from the active loan or loans on this page. -## Capital Management +## Capital management Capital will be taken from the strategy to start new loans. Once capital is deployed to a loan, it is locked up for the length of the loan unless the borrower repays it early ## Defaults -In the event of a default, liquidators will be able to purchase the collateral automatically at a value equal to the loan amount you’re owed and the funds will automatically be recycled into your strategy. If you you prefer to seize the collateral directly, you can turn off auto-liquidations in your strategy settings and take possession of the collateral directly. +In the event of a default, liquidators will be able to purchase the collateral automatically at a value equal to the loan amount you’re owed and the funds will automatically be returned to your lending position. If you prefer to seize the collateral directly, you can turn off auto-liquidations in your strategy settings and take possession of the collateral instead in the event of a liquidation. -## Halting New Loans -If a lender wishes to stop new loans from being originated from their strategy, they can turn off new origination in strategy settings. +## Halting new loans +If a lender wishes to stop new loans from being originated from their lending position, they can turn off new origination in strategy settings. This will result in funds remaining within the lending position, but they will not continue to be utilized after the current loan period ends. ## Closing a position and reclaiming rent Even after withdrawing all funds, a _position_ remains open so that rent does not need to be repaid if the position is reopened. You can close this position fully and receive back your rent SOL by clicking "More" and selecting "Delete position." \ No newline at end of file diff --git a/docs/concepts/using-loopscale/loop.md b/docs/concepts/using-loopscale/loop.md index e3f8322..48ee337 100644 --- a/docs/concepts/using-loopscale/loop.md +++ b/docs/concepts/using-loopscale/loop.md @@ -9,52 +9,43 @@ Yield Loops are a structured product offering access to leveraged yield strategi A Yield Loop uses deposited tokens as collateral to borrow more of the same yield-bearing asset. This creates a loop where both the initial deposit and the borrowed tokens earn yield, amplifying returns. -Loopscale's order book model provides fixed-rate loans that protect against rate spikes that could turn profitable positions negative. This structure also offers more competitive rates compared to pool-based models, as lenders set rates based on specific collateral rather than a pool of mixed assets. Additionally, each loan is directly matched with a lender, reducing systemic risks and preventing contagion across markets. +Loopscale's fixed-rate loans are used for Yield Loops. These fixed rates protect against rate spikes that could turn profitable positions negative, particularly when these positions are leveraged. -[Learn more about the underlying concepts of Yield Loops here.](/concepts/protocol-concepts/loops). +Learn more about the underlying mechanics of Yield Loops [here](/concepts/protocol-concepts/loops). ## Create a position To create a Yield Loop position: 1. Navigate to the [Loops page](https://app.loopscale.com/loops) on the Loopscale App -2. Select a Yield Loop from the available categories (Long/short, leveraged staking, LPs, etc.). Note whether the position is long, short, or neutral. -3. Choose your leverage amount -4. Optionally, select slippage limits and a custom fixed rate duration (higher durations protect from rate volatility, but typically command higher borrow rates) -5. Approve and execute the transaction +2. Select a Yield Loop from the available categories (Long/short, leveraged staking, LPs, etc.). Note whether the position is biased long or short, or if it leverages staking or stablecoin yields instead (and thus is neutral to market price movements). +3. Choose your leverage amount, noting how it affects both yields as well as health and liquidation price. +4. Optionally, select slippage limits and a custom fixed rate duration (higher durations protect from rate volatility, but typically command higher borrow rates). +5. Approve and execute the transaction. ## Managing a position -It's important to monitor a Yield Loop position's health to avoid liquidation. The Loopscale interface provides metrics to help you track a position: - +It's important to monitor a Yield Loop position's health to avoid liquidation, particularly for positions with a long or short bias. The Loopscale interface provides metrics to help you track a position: - Current leverage - Liquidation threshold - Projected returns based on current yield rates -Remember that a position remains profitable as long as the yield from your leveraged asset exceeds the borrowing costs. +You can see your current positions either on an individual Yield Loop's page or in the [Portfolio](https://app.loopscale.com/portfolio) page of the app. + +Users have the option of topping up collateral on a Yield Loop. This effectively deleverages the position and improves the health of the Yield Loop. This can be useful to do if a Yield Loop is approaching liquidation. ## Closing a position When you're ready to close a Yield Loop: -1. Navigate to the active positions in the Loops section of the [Portfolio](https://app.loopscale.com/portfolio) page. +1. Find your Yield Loop position: Go to the [Loops page](https://app.loopscale.com/loops), select your loop, and find your position—or, go to the active positions in the Loops section of the [Portfolio](https://app.loopscale.com/portfolio) page. 2. Select the position you wish to close and close it. -Alternatively, - - -Loopscale will then: -1. Flash loan the amount needed to repay your loan -2. Repay the long-term loan to free up your collateral -3. Sell enough of your yield-bearing asset to repay the flash loan -4. Return the remaining assets to your wallet - - ## Yield Loop Risk Considerations When using Yield Loops, be aware of these risk factors: -1. **Rate volatility**: If the yield of your asset drops below your borrowing rate, your position may become unprofitable. Choosing longer fixed rate durations can help address this (but will typically require a higher borrow rate). Loopscale mitigates rate volatility risk through fixed-rate loans, but users should still approach leveraged strategies with appropriate caution. -2. **Asset price volatility**: Significant price drops can lead to liquidation +1. **Asset price volatility**: Significant price drops can lead to liquidation, notably when in long or short-biased Yield Loops. +2. **Rate volatility**: If the yield of your asset drops below your borrowing rate, your position may become unprofitable. Choosing longer fixed rate durations can help address this (but will typically require a higher borrow rate). Loopscale mitigates rate volatility risk through fixed-rate loans, but users should still approach leveraged strategies with appropriate caution. 3. Additional risks outlined on the [Risk Management](concepts/product/risk-management) page. diff --git a/docs/concepts/why-loopscale.md b/docs/concepts/why-loopscale.md index f258b3d..fb8c953 100644 --- a/docs/concepts/why-loopscale.md +++ b/docs/concepts/why-loopscale.md @@ -24,7 +24,7 @@ This design creates several fundamental inefficiencies: 4. **Limited asset support**: New assets need deep pool liquidity to launch, leaving many novel and emerging assets (like yield-bearing tokens) underserved. ## A better solution: The Credit Order Book -Loopscale's order book model—featuring the Credit Order Book—matches individual lenders and borrowers based on flexible criteria such as asset type, amount, duration, and interest rate. This creates Atomic Markets where: +Loopscale's order book model—the Credit Order Book—matches individual lenders and borrowers based on flexible criteria such as asset type, amount, duration, and interest rate. We call our order book-based markets **Atomic Markets**, where: - Lenders and borrowers define the terms - Each market has specific parameters and risk pricing - Any asset can be used as collateral, unlocking potentially trillions in novel and emerging assets diff --git a/static/files/Loopscale_Brand_PNG.zip b/static/files/Loopscale_Brand_PNG.zip new file mode 100644 index 0000000000000000000000000000000000000000..972fdaa416064bb68994ebcc8700609d5d559086 GIT binary patch literal 63351 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 QJ?tB$1g^>^jsK>7_Y0 z%L5v(!M*_D&Q<+KOB{Ka^-_f#CIjq`nwr{MM@L7~!nCBn|1YZ=V$A3Ap@I0z z$}5KQ38SsIb_9UqQu=N{+bB8)8t^?vXo^nA$`B@0{%JFVgZK zGCSfM2NC49SGv{P#(*QXno^9pU7V_|ptyt;6Mx&3+jLZc4AKpuzyH=tzP@(!>Coqx)AS=-Y>+}SbSt<#9&+}0hv=!z ztP%}f9kVPAF-b)1Ji6$Dd0NlQOOrL zQ<-I}vpgp}Pb-O2c;{uI*Zv(uV@-yphU`~&j^V@W9+*_&5{wyD`;E1KqefxEAl zJ#dDG>45QLL=n0YUsh~#DFv_4i8;Add-$J}oPV}QtP*I*Ip7pX?6>p!xn;me$^U}p zTXg`3yHQEPED`x*lB2k%@(ED#@l>I|QkKd|VekB?uOM19G0M2e&Z0BRFLFk)Up$72 z7S*gqYKI24wb0?c;~MS4ynDh%!no4kK*#->^WAKZ&&m&a$&E8{M`+~R(0o@~LFx#G zCSE-drNR0WCa2BlOGXez0ClR?hm%J7V8d9zxMjne+_5Nwn0qmr)j`>%2amnx^&>8? z1E3O<9jq=CMM#oDAb6 zz`9)hy{VrpRa85!dp9*#h17_;O7D_rjdvDC$KB1^-cr{?p)&<5e{21MS;_B-1xS=- zulEBOw#h#!R?%>6>5+Bcnq1>e@cLkv5YRuAR@-p^zVITruH*w+tVna3!nAr`$f#kG zt?pNPVEQafpS-#oCnpYqVxC!foLq%1Zwi85+luRsTVfOc)M145D;O$|+gn-4=euFv z)CrT7IRzar4(|*&bKileu7%x(XAd&<0{6dm&SIZGXHQo@Q7^G^Ed`y1sO-b|O*pl6 zpQA)wdiG#+W`ifn2IbV$rr?U#IsNNjYzFsgTqjV;96dhu1Ben7IMHSeYHril%*5%Y zzfGYd);$ECkx4uQC)FwL)Jfu>Q(AdBfv$N{emAuyr@B4IZ>BRaavMyD@uH8wVL!%A z>9=$gl4ZJ2H?s~x(xk-A$t1~2Sed3#SUo(xY+#WU4Cu(k;g zD#&EP5X?G*B#-D2q6Wp8;`S$1#ixRGPobqX z<(}edL0fXcN4nr!KtEfztJFJu6X$NeTAwF<<+U5fF?Z{lf5h1_ox-NPTf(b|35wqG z&8Ak7&Le(O{iy)#hb4);{EVCIL}^-;-^pn*!=(=mt2AXJdIe^;-Y28yT(rmLi%CVd zvAGJ8DIKMk_T`(`S^*Lw2J*)**ALHpXqr_`nL;g%9fxSEd$aRZRWRcoxq(5s@jJ96 zv-qPMx&NZIYgVLU@x+fih^n91?gGnGUrOj-s-Qol40S%|HmCXED zQMqX

#gr4>Xd4a=>;Z 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 Bh9Lj| literal 0 HcmV?d00001 From 38f2d96e09b2ae264ad844ca544ebc0aeae35946 Mon Sep 17 00:00:00 2001 From: Devin Black <82221522+devin-black@users.noreply.github.com> Date: Thu, 13 Mar 2025 15:49:18 -0400 Subject: [PATCH 6/9] Add points, tweak faqs --- docs/concepts/audits.md | 7 ------- docs/concepts/faq.md | 2 -- docs/concepts/index.mdx | 4 ++-- docs/concepts/points.md | 15 ++++++++++----- 4 files changed, 12 insertions(+), 16 deletions(-) delete mode 100644 docs/concepts/audits.md diff --git a/docs/concepts/audits.md b/docs/concepts/audits.md deleted file mode 100644 index 39c0ea9..0000000 --- a/docs/concepts/audits.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -sidebar_position: 8 -draft: false ---- - -# Audits - diff --git a/docs/concepts/faq.md b/docs/concepts/faq.md index 8b64abb..8aba0de 100644 --- a/docs/concepts/faq.md +++ b/docs/concepts/faq.md @@ -56,5 +56,3 @@ Interest earned up to that point is retained, with a small adjustment if the rat ### How do I get support? Support is available through the [Loopscale Discord](https://discord.gg/loopscale) by opening a support ticket. For issues related to using the platform, including a wallet address in the initial message allows the team to provide assistance more quickly. - -y for offering and managing their own points systems. Loopscale does not hold or disburse points from these external protocols. \ No newline at end of file diff --git a/docs/concepts/index.mdx b/docs/concepts/index.mdx index 2e43cad..9b84094 100644 --- a/docs/concepts/index.mdx +++ b/docs/concepts/index.mdx @@ -5,8 +5,8 @@ title: "Introduction" --- import {Products } from '@site/src/js-components'; -# What is Loopscale? -Loopscale introduces a new standard for borrowing and lending onchain. Markets for any asset, at the best rate, with less risk. +# Introduction +**Loopscale** introduces a new standard for borrowing and lending onchain. Markets for any asset, at the best rate, with less risk. DeFi lending has long been defined by the capital-inefficient pool model. Market maturity is exposing the limitations of this model, which emerged from Ethereum's architectural constraints. diff --git a/docs/concepts/points.md b/docs/concepts/points.md index d74443e..0daf3df 100644 --- a/docs/concepts/points.md +++ b/docs/concepts/points.md @@ -4,15 +4,20 @@ sidebar_position: 6 # Points -Users can earn rewards in the form of points earned through various interactions with the protocol. These points serve as a way to incentivize active participation and engagement with the Loopscale. Informationi on points and affiliated activities can be checked on the [Rewards](https://app.loopscale.com/rewards) page of the Loopscale App. +Users can earn rewards in the form of points earned through various interactions with the protocol. These points serve as a way to incentivize active participation and engagement with the Loopscale. Information on points and affiliated activities can be checked on the [Rewards](https://app.loopscale.com/rewards) page of the Loopscale App. Points have no present -### How do points work? +## How do points work? Points are earned through active participation in the protocol, including: - Lending assets - Borrowing assets - Yield Loops - Referring new users (you will receive a portion of referred users' points) -- Participating in select promotions (see the [Rewards page of the app](https://app.loopscale.com/rewards). +- Participating in select activities (see the [Rewards page of the app](https://app.loopscale.com/rewards). + +### How many points are earned through these activities? +Users can see how many points a position would give per day via the Lend, Borrow, and Looping interfaces, below where users input the amount of an asset they are depositing, borrowing, or looping. + +Certain features have points multipliers. Mouse over the yellow or blue stars next to APYs on the Lend, Borrow, and Loop pages to see multipliers. ### Do users earn points on idle liquidity? Yes, points are earned on supplied assets even when they aren't actively being borrowed. This rewards providing market depth and supporting overall liquidity. @@ -22,7 +27,7 @@ Points can also be earned from other integrated protocols, indicated by the prot The Optimized Yield functionality automatically allocates unutilized lent capital to marginfi pools until matched with a borrower, providing marginfi points in this instance. -These external protocols maintain responsibilit +These external protocols maintain responsibility for rewarding these points (e.g. users do not claim points from external protocols through Loopscale). -### Referrals +## Referrals Share your referral link (found on the app's [Rewards](https://app.loopscale.com/rewards) page) with others to earn additional points equal to 5% of how many points your referred user(s) earn. \ No newline at end of file From fefcf3c4d889f0d0299ebaf232906d45fbe9d09d Mon Sep 17 00:00:00 2001 From: Devin Black <82221522+devin-black@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:05:34 -0400 Subject: [PATCH 7/9] Cleaning up copy --- docs/concepts/faq.md | 4 ++ docs/concepts/index.mdx | 6 +- docs/concepts/protocol-concepts/loans.md | 9 +-- .../borrow/borrowing-assets.md | 9 ++- .../borrow/lp-collateral-management.md | 4 +- .../using-loopscale/borrow/managing-loans.md | 61 +++++++++++-------- docs/concepts/using-loopscale/lend-vaults.md | 53 ---------------- .../using-loopscale/lend/lending-assets.md | 13 ++-- .../using-loopscale/lend/managing-position.md | 45 +++++++++----- docs/concepts/using-loopscale/vaults.md | 53 ++++++++++++++++ .../{loop.md => yield-loops.md} | 17 +++++- docs/concepts/why-loopscale.md | 2 +- 12 files changed, 157 insertions(+), 119 deletions(-) delete mode 100644 docs/concepts/using-loopscale/lend-vaults.md create mode 100644 docs/concepts/using-loopscale/vaults.md rename docs/concepts/using-loopscale/{loop.md => yield-loops.md} (78%) diff --git a/docs/concepts/faq.md b/docs/concepts/faq.md index 8aba0de..136f45f 100644 --- a/docs/concepts/faq.md +++ b/docs/concepts/faq.md @@ -33,6 +33,10 @@ No token or airdrop plans have been announced. Users should be vigilant against ## Using Loopscale +### I'm having trouoble opening or closing a Yield Loop + +See the [Yield Loops](/concepts/using-loopscale/yield-loops#common-questions) article for answers to common questions and issues. + ### Why do I need to spend extra SOL to open a lending position or loop? Opening a lending position or a loop effectively opens a new Solana account, which requires a "rent deposit." This extra amount of SOL is for this deposit. diff --git a/docs/concepts/index.mdx b/docs/concepts/index.mdx index 9b84094..5e3c532 100644 --- a/docs/concepts/index.mdx +++ b/docs/concepts/index.mdx @@ -6,7 +6,7 @@ title: "Introduction" import {Products } from '@site/src/js-components'; # Introduction -**Loopscale** introduces a new standard for borrowing and lending onchain. Markets for any asset, at the best rate, with less risk. +**Loopscale** introduces a new standard for borrowing and lending onchain. DeFi lending has long been defined by the capital-inefficient pool model. Market maturity is exposing the limitations of this model, which emerged from Ethereum's architectural constraints. @@ -18,7 +18,7 @@ Rates are determined by markets, not algorithms, and any asset can be supported - **Vaults**: Access passive lending exposure by depositing to Loopscale Vaults, each with a unique risk profile and strategy. - **Yield Loops**: Enter into leveraged yield strategies, borrowing at low, fixed rates to lever up on yield-bearing tokens such as liquidity positions and liquid-staked SOL. - **Borrowing**: Access fixed-rate loans using any collateral with superior rates and LTVs via market-based pricing. -- **Lending**: Supply capital to specific markets at preferred terms and rates while maintaining full control over collateral requirements. +- **Advanced Lending**: Supply capital to specific markets at preferred terms and rates while maintaining full control over collateral requirements. ## The advantages of using Loopscale over traditional lending protocols 1. **Best Rates**: Get the lowest borrowing rate and highest lending yields, made possible by the capital efficiency of order books. @@ -34,7 +34,7 @@ While Loopscale begins with today’s DeFi-native markets, our infrastructure is - Cross-protocol margin infrastructure for asset management across multiple venues. - Credit facilities with parameters like custom repayment schedules. -The evolution of onchain lending from overcollateralized DeFi loans to institutional credit markets—will demand infrastructure that scales. Loopscale is that infrastructure. +The evolution of onchain lending from overcollateralized DeFi loans to institutional credit markets will demand infrastructure that scales. Loopscale is that infrastructure. ## Keep up with Loopscale - Follow us on [X](https://x.com/LoopscaleLabs) diff --git a/docs/concepts/protocol-concepts/loans.md b/docs/concepts/protocol-concepts/loans.md index edb3c38..e484d1a 100644 --- a/docs/concepts/protocol-concepts/loans.md +++ b/docs/concepts/protocol-concepts/loans.md @@ -6,7 +6,7 @@ import { FixedTblCol } from "@site/src/js-components/inline"; # Loans ## Introduction -Direct loans form the foundation of the Loopscale Protocol, enabling direct lending and borrowing between users. Lenders can create loan offers and borrowers can create loan requests with specific parameters such as interest rate, duration, and collateral requirements. When a matching counterparty accepts the offer or request, a bilateral loan is initialized, and funds are transferred between the parties. The collateral remains non-transferrable until the loan concludes, at which point it is returned to the borrower upon repayment or transferred to the lender in the event of a default. +Loans form the foundation of Loopscale, enabling direct lending and borrowing between users. Lenders can create loan offers and borrowers can create loan requests with specific parameters such as interest rate, duration, and collateral requirements. When a matching counterparty accepts the offer or request, a bilateral loan is initialized, and funds are transferred between the parties. The collateral remains non-transferrable until the loan concludes, at which point it is returned to the borrower upon repayment or transferred to the lender in the event of a default. A loan is created when a Lend Order matches with a compatible Borrow Order on the [Credit Order Book](/concepts/protocol-concepts/credit-order-book). @@ -22,9 +22,6 @@ Loans are initiated when a loan offer and loan request, collectively known as or When a suitable offer and request are matched, or when a borrower or lender finds an acceptable order, the borrower can initiate the loan. The protocol automatically transfers the principal to the borrower and escrows the collateral. -## Terms -Below are all possible terms for a Loan via the Loopscale protocol. Note that not all of these terms are currently in use with the Loopscale App; but they do all exist within the protocol for current and future use cases. - ## Ledgers Initiating a loan automatically generates a repayment ledger based on the terms specified in the matched order. The ledger defines the repayment schedule and tracks repayments as they are made. The Loopscale Protocol uses this ledger to determine the current state of a loan. @@ -34,6 +31,10 @@ Initiating a loan automatically generates a repayment ledger based on the terms ### Oracle Agnostic Pricing Borrowers can set up loans that price their collateral or principal using custom or arbitrary oracles, enabling pricing for assets that may be illiquid or lack third-party oracle support. Loans may also be oracle-less, with borrowers proposing terms that solely default based on missed payments or loan expiry. +## Terms +Below are all possible terms for a Loan via the Loopscale protocol. Note that not all of these terms are currently in use with the Loopscale App; but they do all exist within the protocol for current and future use cases. + + | | Description | |:---|:---| | **Repayment type** | Simple-Interest loans have periodic interest payments with a final principal payment at maturity and Zero-Coupon loans have a single repayment that includes all interest and principal at maturity. | diff --git a/docs/concepts/using-loopscale/borrow/borrowing-assets.md b/docs/concepts/using-loopscale/borrow/borrowing-assets.md index 57cf07a..3e680db 100644 --- a/docs/concepts/using-loopscale/borrow/borrowing-assets.md +++ b/docs/concepts/using-loopscale/borrow/borrowing-assets.md @@ -3,17 +3,20 @@ sidebar_position: 1 --- # Borrowing Assets + +Users can borrow tokens from Loopscale at superior fixed rates. The list of available tokens, collateral assets, and loan duration options are available on the [Loopscale App's Borrow page](https://app.loopscale.com/borrow). + When borrowing on Loopscale, a user selects: - An asset and amount to borrow - How long they wish to borrow for (locking in an interest rate for this duration) - An asset its amount to use as collateral -The list of available borrow assets, collateral assets, and loan duration options are available on the [Loopscale App's Borrow page](https://app.loopscale.com/borrow). Each collateral asset has a loan-to-value (LTV) ratio that determines the maximum borrowable amount as well as a liquidation LTV that determines at what LTV the position's health reaches 0%, leading to liquidation. +Each collateral asset has a loan-to-value (LTV) ratio that determines the maximum borrowable amount as well as a liquidation LTV that determines at what LTV the position's health reaches 0%, leading to liquidation. The borrower receives funds at the lowest rate on the market and the collateral is escrowed. The collateral is returned to the borrower once the borrowed funds and accrued interest have been fully repaid. -A borrower will default, losing their collateral the loan's health factor falls below 0%. To learn more about defaults and how health factor is calculated, see [Managing Loans](/concepts/using-loopscale/borrow/managing-loans). +A borrower will default, losing their collateral the loan's health factor falls below 0%. To learn more about health factor, see [Managing Loans](/concepts/using-loopscale/borrow/managing-loans). ## Quick borrow @@ -27,5 +30,5 @@ The easiest way to borrow on Loopscale is to go to the [Borrow](https://app.loop By instead clicking "View market" next to a token on the [Borrow](https://app.loopscale.com/borrow) page, users can access a more advanced borrow interface. -In this interface, users can select their fixed rate period. Longer fixed rates mean more stability, but can command a higher rate as a result. +In this interface, users can select their fixed rate period. Longer fixed rates mean more stability, but can require a higher rate as a result (depending on offers from lenders in the order book). diff --git a/docs/concepts/using-loopscale/borrow/lp-collateral-management.md b/docs/concepts/using-loopscale/borrow/lp-collateral-management.md index 9e3b695..e34331b 100644 --- a/docs/concepts/using-loopscale/borrow/lp-collateral-management.md +++ b/docs/concepts/using-loopscale/borrow/lp-collateral-management.md @@ -1,10 +1,10 @@ --- -sidebar_position: 1 +sidebar_position: 3 --- # LP Collateral Management -Users are able to manage their Orca Whirlpool liquidity positions directly from the Loopscale app while these positions are being used as collateral +Users are able to manage their Orca Whirlpool liquidity positions directly from the Loopscale app while these positions are being used as collateral. ## How to manage LP collateral diff --git a/docs/concepts/using-loopscale/borrow/managing-loans.md b/docs/concepts/using-loopscale/borrow/managing-loans.md index 6f7d58d..63261d4 100644 --- a/docs/concepts/using-loopscale/borrow/managing-loans.md +++ b/docs/concepts/using-loopscale/borrow/managing-loans.md @@ -4,49 +4,56 @@ sidebar_position: 2 # Managing Loans -A loan is created when a borrow order matches with a compatible lend order on the order book. +A loan is created when a borrow order matches with a compatible lend order. The Loopscale App provides several features to manage your loans. Users can see their ongoing loans on the Loopscale App's [Portfolio](https://app.loopscale.com/portfolio) page, under the Borrowing section. -You can partially or fully repay a loan at any point. You only owe interest on loan value you have outstanding. +**Loan Health** indicates how far a loan is from potential liquidation. It ranges from 0% to 100%, with 0% meaning the loan is at risk of liquidation because its collateralization ratio has fallen below the required threshold. Borrowers should regularly monitor loan health, especially when collateral value fluctuates. Starting with a lower loan-to-value ratio (LTV) will give your loan a higher initial health percentage. -A borrower has two ways to improve a loan's health factor: (1) topping up collateral (2) repaying a loan or portion of a loan early. +To improve a loan's health factor, borrowers can: +1. Add more collateral +2. Repay part of the loan early -A borrower may repay a loan in full before the loan due date. Upon repayment, the loan will end and the collateral will be returned to the borrower. A borrower may also partially repay a loan early, decreasing the loan value and increasing the health factor. Upon early repayment, interest accrued up until that point is paid. +Borrowers may also repay a loan completely before its due date. Upon full repayment, the loan closes and all collateral returns to the borrower. Partial early repayments reduce the outstanding loan amount and increase the health factor. Any early repayment includes interest accrued up to that point. -## Monitoring loan health -A loan's health factor helps a borrower easily understand a loan's real-time risk of a price-based liquidation. The health factor has a maximum value of 100%. A health factor of 0% signals a loan is at risk of liquidation, meaning its collateralization ratio no longer meets the liquidation threshold. +## Loan Management Actions -The health factor is calculated with the following formula: +Users can perform the following actions on their ongoing loans from the Portfolio or Borrow pages: -$\text{Health Factor} = 1 - \displaystyle\frac{\text{Collateralization Ratio}}{\text{Liquidation Ratio}}$, where +### Borrow More +Increase your loan amount using existing collateral by finding your position in your portfolio, clicking More, and selecting "Borrow More." This does not add additional collateral and will decrease your loan health. +### Withdraw Collateral +Remove some collateral from your position by finding it in your portfolio, clicking More, and selecting "Withdraw Collateral." This action reduces loan health. -$\text{Collateralization Ratio} = 1 - \displaystyle\frac{\text{Debt Value in USD}}{\text{Collateral Value in USD}}$ +### Top Up Collateral +Add more of the same collateral asset to your loan to increase the health factor. Note that any added collateral cannot be withdrawn until the loan concludes. +### Refinancing +Borrowers can refinance their loans by repaying an outstanding loan while simultaneously starting another. This pays off the original lender and creates a new loan. -and the $\text{Liquidation Ratio}$ is a per-collateral, protocol-determined value. +Refinancing requires: +- An available offer of equal or greater size than the amount owed +- Matching term and collateral requirements +- Sufficient collateral value to meet the new loan's LTV requirements -${\text{Debt Value}}$ includes the total interest as calculated at the loan due date. -The liquidation ratio is fixed for the lifetime of the loan whereas the collateralization ratio may fluctuate over the course of a loan as the value of the collateral or debt changes. +The new loan amount will equal the original principal plus any accrued interest and fees for the new term. -Platform-wide liquidation ratio values can be found at the bottom of the [Loopscale App's Borrow page](https://app.loopscale.com/borrow). +Borrowers can opt into auto-refinancing, which uses an off-chain matching engine to find available offers automatically. There is a 15-minute grace period after loan failure during which the system attempts to find a match. -## Borrow more +## Understanding Loan Health +The health factor helps you understand your loan's real-time risk of liquidation. It is calculated using: -## Withdraw collateral +$\text{Health Factor} = 1 - \displaystyle\frac{\text{Collateralization Ratio}}{\text{Liquidation Ratio}}$ -## Top up loan -A borrower may deposit additional collateral for a loan, increasing the collateral value and increasing the health factor. The additional collateral must be of the same asset. Excess collateral may not be withdrawn until the loan conclusion with the rest of the collateral. +Where: +- $\text{Collateralization Ratio} = \displaystyle\frac{\text{Debt Value in USD}}{\text{Collateral Value in USD}}$ +- $\text{Liquidation Ratio}$ is a protocol-determined value specific to each collateral type +- $\text{Debt Value}$ includes the total interest calculated at the loan due date -## Refinancing -Borrowers on Loopscale are able to refinance their loans. Refinancing is the process of repaying one outstanding loan by atomically starting another. The original lender is paid off and a new loan is started. +The liquidation ratio remains fixed for the lifetime of the loan, while the collateralization ratio may change as collateral or debt values fluctuate. -Refinancing only works if there is an offer at a greater than or equal to size of the amount owed on a loan and for the corresponding term and collateral. The new loan is started at an amount equal to the original principal plus any accrued interest and fees for the new length. +You can find current liquidation ratio values at the bottom of the [Loopscale App's Borrow page](https://app.loopscale.com/borrow). -If the amount of collateral in the existing loan is insufficient to start aa new loan (e.g. Loan Balance > (LTV * Collateral)), the refinance will fail. +## Defaults +If a loan defaults, it ends and the borrower loses ownership of all collateral, including excess collateral and any partial repayments. -Borrowers can opt-in to auto-refinancing which is an off-chain matching engine to find available offers automatically to renew loans instead of a payment based default. There is a 15 minute grace period post loan failure where the loan will attempt to be matched. - -# Defaults -If a loan defaults, the loan ends and the borrower loses ownership of the collateral, including excess collateral and early repayments. Loans on Loopscale have two default mechanisms, price-based and payment-based. - -Similar to liquidations on existing DeFi lending protocols, price-based defaults occur when a loan's health factor reaches 0. In other words, a price-based default occurs when the value of loan's collateral relative to the value of the debt falls below the liquidation threshold. This can happen at any point during the loan, and borrowers should monitor their health factor to avoid a price-based default. Borrowers can increase their health factor by repaying principal and topping up collateral amounts. \ No newline at end of file +**Price-based defaults** occur when a loan's health factor reaches 0% - meaning the collateral value relative to the debt falls below the liquidation threshold. This can happen at any point during the loan term. Borrowers should monitor their health factor to avoid this type of default. \ No newline at end of file diff --git a/docs/concepts/using-loopscale/lend-vaults.md b/docs/concepts/using-loopscale/lend-vaults.md deleted file mode 100644 index 28e919e..0000000 --- a/docs/concepts/using-loopscale/lend-vaults.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Lend Vaults - -**Lend Vaults** simplify the lending experience by delegating management of lending rates, durations, and collateral selections to dedicated **Vault Curators**. - -When lending via Lend Vaults, users don’t need to manage lending rates, durations, or collateral options. Users only need to select a Vault and deposit their funds. Each Vault's Curator actively manages these deposits by allocating them into specific lending opportunities within Loopscale. Interest earned from these lending activities is passed directly back to the users who deposited in the vault. - -In short, when you deposit into a Lend Vault: -1. Your tokens join a pool overseen by a Vault Curator. -2. The Curator supplies these tokens across Loopscale's lending markets. -3. Vaults generate returns from interest paid by borrowers borrowing from underlying markets. -3. These returns flow back to all vault depositors proportionally. - -Vaults can be found at the top of the [Lend](https://app.loopscale.com/lend) page of the Loopscale App. - -Loopscale's first Yield Vaults are managed by the Loopscale core team, but Loopscale will soon onboard third-party risk experts to manage their own vaults. - -A percentage of a Vault's liquidity is kept idle to facilitate instant withdrawals (see "Liquidity buffer" above). If the vault has low liquidity, users can choose between an instant withdrawal with a small fee or to join a withdrawal queue. - -## Vault Interface - -Each Vault's page lists its statistics, ongoing loans (i.e. allocations), and market parameters, as well as the ability for users to deposit and withdraw. - -### Loans - -In the Loans section of the vault page, tokens used as collateral for borrows of the vault's principal asset are listed. Included is the amount of principal asset borrowed for each collateral token as well as the APY being earned. - -### Market parameters - -**Liquidity buffer**: This is the percentage of Vault deposits kept idle so that they may be used for instant redemptions. No lending offers will be placed if idle liquidity is below this buffer. - -**Max loan size**: The max loan size (denominated in the Vault's deposit) allowed. - -**Collateral**: A list of collateral that the Vault accepts, and each collateral's APY, LTV, and liquidation LTV. - -## Vault security and restrictions -Lend Vaults have been reviewed in Loopscale's most recent [audits](/concepts/audits), and Vault Curators cannot withdraw user deposits from the Vault. - -The vault manager can update APYs, durations, or origination fees at any time. All other changes require a 24 hour waiting period. - -## Use cases for Lend Vaults - -Lend Vaults abstract away the complexities of fixed-rate, order book-based lending by pooling user deposits under management by Vault Curators. This provides both a simpler user experience while also allowing for Curators to provide optimize yield with appropriate risk parameters. - -Loopscale allows for each Vault to have specific strategies, risk profiles, and goals in mind. One Vault may focus solely on highly liquid and low-risk assets, aiming for steady and predictable returns. Another Vault might pursue more aggressive strategies, lending to higher-risk, higher-yield opportunities like leveraged trading positions, or liquidity positions to maximize returns. - -Deposits in Vaults can serve as collateral for further borrowing, making possible further composability and leveraged strategies. - - - diff --git a/docs/concepts/using-loopscale/lend/lending-assets.md b/docs/concepts/using-loopscale/lend/lending-assets.md index 3487fa4..3dcf584 100644 --- a/docs/concepts/using-loopscale/lend/lending-assets.md +++ b/docs/concepts/using-loopscale/lend/lending-assets.md @@ -4,19 +4,18 @@ sidebar_position: 1 # Lending Assets -Lending is one of the core primitives of Loopscale. - Lending on Loopscale is different from pool-based lending protocols. It can be compared most to limit order book-based exchanges. On Loopscale, lending creates a limit order on the Credit Order Book of a) amount offered and b) APY requested on that amount. Borrowers then select the best APY (in what can be compared to a market order). -There are two ways to lend on Loopscale: +## How to lend on Loopscale +There are two ways to Lend on Loopscale: -1. Lend through Loopscale's Earn Vaults, where capital is deposited to vaults where lending positions are managed by a vault custodian. This is a more hands-off approach to lending; to learn more, see [Earn Vaults](/concepts/using-loopscale/earn). +1. Lend through **Loopscale Vaults**, where capital is deposited to vaults where lending positions are managed by a vault custodian. This is a more passive approach to lending; to learn more, see [Loopscale Vaults](/concepts/using-loopscale/vaults). -2. Create custom lend positions specifying rates and eligible collateral. This is a more complex—and more powerful—way to lend. **This article describes how to create these positions**. +2. Lend through **Advanced Lending**, specifying rates and eligible collateral. This is a more complex—and more powerful—way to lend. **This article describes how to create these positions**. -## How to create a lending position on Loopscale +## How to create an Advanced Lending position on Loopscale -First, navigate to the [Lend page on the Loopscale App](https://app.loopscale.com/lend).Find the asset you want to lend and click "View market" for that asset. From here, you select which asset you wish to supply (lend), collateral you accept, and the APYs you request for each fixed rate duration. +First, navigate to the [Lend page on the Loopscale App](https://app.loopscale.com/lend). Find the asset you want to lend and click "View market" for that asset. From here, you select which asset you wish to supply (lend), collateral you accept, and the APYs you request for each fixed rate duration. ### Eligible collateral selection diff --git a/docs/concepts/using-loopscale/lend/managing-position.md b/docs/concepts/using-loopscale/lend/managing-position.md index 5b76b55..7b3e23c 100644 --- a/docs/concepts/using-loopscale/lend/managing-position.md +++ b/docs/concepts/using-loopscale/lend/managing-position.md @@ -4,33 +4,46 @@ sidebar_position: 2 # Managing Lending Positions -This article explains the various ways that users can manage their advanced lending positions. +This article explains how to manage your lending positions. -## View lending positions +## View Lending Positions -You can view (and modify) your lending positions from two places on the Loopscale App. -1. On the Portfolio page, under the advanced lending positions section. +You can view and modify your lending positions in two places: +1. On the Portfolio page, under the advanced lending positions section 2. At the bottom of the [Lend](https://app.loopscale.com/market/USDC?role=lend) page ## Withdraw -Unutilized portions of a lending position can be withdrawn immediately by clicking "Deposit/Withdraw" and selecting "Withdraw". For utulized lend position withdrawals, see _withdrawing early_ below. +Unutilized portions of a lending position can be withdrawn immediately by clicking "Deposit/Withdraw" and selecting "Withdraw." -You can see how much of a position is utilized, if any, in the Utilization field. +You can see how much of a position is currently in use in the Utilization field. -## Withdrawing early -Users can withdraw from the loan early, collecting partial interest, by selling the loan back to the market before the due date. +## Withdrawing Early -This can be accomplished by going to the position, clicking "More," selecting "View Loans", and withdrawing early from the active loan or loans on this page. +To withdraw from an active loan before its due date (collecting partial interest): +1. Go to your position +2. Click "More" +3. Select "View Loans" +4. Choose "Withdraw Early" from the active loan(s) -## Capital management -Capital will be taken from the strategy to start new loans. Once capital is deployed to a loan, it is locked up for the length of the loan unless the borrower repays it early +## Capital Management + +New loans will use capital from your lending strategy. Once capital is deployed to a loan, it remains locked for the duration of the loan unless the borrower repays early. ## Defaults -In the event of a default, liquidators will be able to purchase the collateral automatically at a value equal to the loan amount you’re owed and the funds will automatically be returned to your lending position. If you prefer to seize the collateral directly, you can turn off auto-liquidations in your strategy settings and take possession of the collateral instead in the event of a liquidation. -## Halting new loans -If a lender wishes to stop new loans from being originated from their lending position, they can turn off new origination in strategy settings. This will result in funds remaining within the lending position, but they will not continue to be utilized after the current loan period ends. +If a default occurs, liquidators can purchase the collateral automatically at a value equal to the loan amount you're owed, and funds will be returned to your lending position. + +If you prefer to receive the collateral directly, you can disable auto-liquidations in your strategy settings to take possession of the collateral instead. + +## Halting New Loans + +To stop new loans from being created from your lending position: +1. Turn off new origination in strategy settings +2. Your funds will remain in the lending position but won't be used for new loans after current loans end + +## Closing a Position and Reclaiming Rent -## Closing a position and reclaiming rent -Even after withdrawing all funds, a _position_ remains open so that rent does not need to be repaid if the position is reopened. You can close this position fully and receive back your rent SOL by clicking "More" and selecting "Delete position." \ No newline at end of file +Even after withdrawing all funds, your position remains open so you don't need to pay rent again if you reopen it. To close the position completely and receive your rent SOL back: +1. Click "More" +2. Select "Delete position" \ No newline at end of file diff --git a/docs/concepts/using-loopscale/vaults.md b/docs/concepts/using-loopscale/vaults.md new file mode 100644 index 0000000..007c256 --- /dev/null +++ b/docs/concepts/using-loopscale/vaults.md @@ -0,0 +1,53 @@ +--- +sidebar_position: 1 +--- + +# Loopscale Vaults + +**Loopscale Vaults** are the easiest way to earn lending yield on Loopscale. They simplify the lending experience by delegating management of rates, durations, and collateral selections to dedicated **Vault Curators**. + +Vaults can be found at the top of the [Lend](https://app.loopscale.com/lend) page of the Loopscale App. + +When you deposit into a Vault: +1. You deposit into a managed pool overseen by a Vault Curator. +2. The Curator supplies these tokens across Loopscale's modular lending markets, managing rates, durations, and collateral sections while aligning to a yield and risk management strategy. +3. Vaults generate returns from interest paid by borrowers borrowing from underlying markets. +3. These returns flow back to all vault depositors proportionally. + +Loopscale's first Yield Vaults are managed by the Loopscale core team, but Loopscale will soon onboard third-party risk experts to manage their own vaults. + +Vaults are designed to provide for instant deposits and withdrawals; the latter is made possible by a small percentage of deposits kept idle for withdrawal liquidity. See _Liquidity Buffer_ under _Market Parameters_ below. + +Deposits in Vaults can serve as collateral for further borrowing, making possible further composability and leveraged strategies. + +## Vault Interface + +Each Vault's page lists its statistics, ongoing loans, and market parameters. + +### Loans + +The Loans section of the vault page details how the Vault's token (e.g. SOL for a SOL Vault) is being borrowed. It lists allocations of the Vault token, its APYs, and well the tokens provided by borrowers as collateral. + +### Market parameters + +**Liquidity buffer**: This is the percentage of Vault deposits kept idle so that they may be used to fill withdrawals. No lending offers will be placed if idle liquidity is below this buffer. If the vault has low liquidity for withdrawals, users can choose between an instant withdrawal with a small fee or to join a withdrawal queue. + +**Max loan size**: The max loan size (denominated in the Vault's deposit) allowed. + +**Collateral**: A list of collateral that the Vault accepts, and each collateral's APY, LTV, and liquidation LTV. This is a major aspect of a Vault's risk management strategy. + +## Vault security and restrictions +Vaults have been [audited]](/concepts/faq#has-loopscale-been-audited), and Vault Curators cannot withdraw deposits from the Vault. + +The vault manager can update APYs, durations, or origination fees at any time. All other changes, such as permitted collateral, require a 24 hour waiting period. + +## Use cases for Vaults + +Vaults abstract away the complexities of fixed-rate, order book-based lending by pooling user deposits under management by Vault Curators. This provides both a simpler user experience while also allowing for Curators to provide optimize yield with appropriate risk parameters. + +Loopscale allows for each Vault to have specific strategies, risk profiles, and goals in mind. One Vault may focus solely on highly liquid and low-risk assets, aiming for steady and predictable returns. Another Vault might pursue more aggressive strategies, lending to higher-risk, higher-yield opportunities like leveraged trading positions, or liquidity positions to maximize returns. + +## Vaults vs. advanced lending +Vaults offer simplified lending where Curators manage your deposits across markets, providing convenience at the cost of lower potential returns and less control. Users simply deposit funds and receive interest without managing rates, durations, or collateral choices. + +In contrast, [Advanced Lending](/concepts/lend/lending-assets) gives experienced users direct control with flexible collateral options, and customizable risk parameters. This approach requires active management and more capital, but can be rewarding for users who wish to pursue a more nimble or specific strategy. Your choice depends on whether you prioritize convenience or maximizing returns through hands-on management. \ No newline at end of file diff --git a/docs/concepts/using-loopscale/loop.md b/docs/concepts/using-loopscale/yield-loops.md similarity index 78% rename from docs/concepts/using-loopscale/loop.md rename to docs/concepts/using-loopscale/yield-loops.md index 48ee337..bd7eacd 100644 --- a/docs/concepts/using-loopscale/loop.md +++ b/docs/concepts/using-loopscale/yield-loops.md @@ -3,13 +3,13 @@ sidebar_position: 2 --- -# Loops +# Yield Loops Yield Loops are a structured product offering access to leveraged yield strategies. They enable users to multiply returns from yield-bearing assets. A Yield Loop uses deposited tokens as collateral to borrow more of the same yield-bearing asset. This creates a loop where both the initial deposit and the borrowed tokens earn yield, amplifying returns. -Loopscale's fixed-rate loans are used for Yield Loops. These fixed rates protect against rate spikes that could turn profitable positions negative, particularly when these positions are leveraged. +Loopscale's fixed-rate loans are used for Yield Loops. These fixed rates protect against rate spikes that could turn profitable positions negative, a notable consideration for when these positions are leveraged. Learn more about the underlying mechanics of Yield Loops [here](/concepts/protocol-concepts/loops). @@ -30,9 +30,11 @@ It's important to monitor a Yield Loop position's health to avoid liquidation, p - Liquidation threshold - Projected returns based on current yield rates +Users have the option of topping up collateral on a Yield Loop. This effectively deleverages the position and improves the health of the Yield Loop. This can be useful to do if a Yield Loop is approaching liquidation. + You can see your current positions either on an individual Yield Loop's page or in the [Portfolio](https://app.loopscale.com/portfolio) page of the app. -Users have the option of topping up collateral on a Yield Loop. This effectively deleverages the position and improves the health of the Yield Loop. This can be useful to do if a Yield Loop is approaching liquidation. +Learn more about managing loan health here: [Managing Loans](/concepts/using-loopscale/borrow/managing-loans). ## Closing a position @@ -41,6 +43,14 @@ When you're ready to close a Yield Loop: 1. Find your Yield Loop position: Go to the [Loops page](https://app.loopscale.com/loops), select your loop, and find your position—or, go to the active positions in the Loops section of the [Portfolio](https://app.loopscale.com/portfolio) page. 2. Select the position you wish to close and close it. +## Common questions + +### On trying to open a Loop, I see the error "Market does not have enough SOL supplied" +Yield Loops require a swap via AMM (e.g. Orca, Raydium) to open a position. The "not enough SOL supplied" error means that there is not enough liquidity in the AMM's liquidity pool for the amount of token being looped. Try decreasing leverage or choosing another Loop. + +### "No Route Found" error on closing a Loop +This means that there isn't enough liquidity in the Loop token's AMM pool to close the loop. You can repay the loop directly using SOL if you don't want to wait for the pool to acquire more liquidity. + ## Yield Loop Risk Considerations When using Yield Loops, be aware of these risk factors: @@ -49,3 +59,4 @@ When using Yield Loops, be aware of these risk factors: 2. **Rate volatility**: If the yield of your asset drops below your borrowing rate, your position may become unprofitable. Choosing longer fixed rate durations can help address this (but will typically require a higher borrow rate). Loopscale mitigates rate volatility risk through fixed-rate loans, but users should still approach leveraged strategies with appropriate caution. 3. Additional risks outlined on the [Risk Management](concepts/product/risk-management) page. + diff --git a/docs/concepts/why-loopscale.md b/docs/concepts/why-loopscale.md index fb8c953..8339d76 100644 --- a/docs/concepts/why-loopscale.md +++ b/docs/concepts/why-loopscale.md @@ -4,7 +4,7 @@ sidebar_position: 2 # Why Loopscale? -Before exploring Loopscale's advantages and new primitives, let's understand how traditional, pool-based lending protocols work as well as their limitations. +Before exploring Loopscale's advantages and new primitives, let's understand how traditional, pool-based lending protocols work—as well as their limitations. ## The problem with pool-based lending In the first generation of DeFi lending protocols, the borrowing interest rate is determined by the utilization of the asset. This model is known as a pool- or utilization-based model. As illustrated in the chart below, when utilization increases, borrowing is discouraged and supplying is encouraged. This design decision was made to maintain excess liquidity for withdrawals. From 31c0a0be4b7bab7b14f938d58383af4e6b877e9e Mon Sep 17 00:00:00 2001 From: Devin Black <82221522+devin-black@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:13:04 -0400 Subject: [PATCH 8/9] Add some color to Yield Loops intro --- docs/concepts/using-loopscale/yield-loops.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/concepts/using-loopscale/yield-loops.md b/docs/concepts/using-loopscale/yield-loops.md index bd7eacd..4634ec7 100644 --- a/docs/concepts/using-loopscale/yield-loops.md +++ b/docs/concepts/using-loopscale/yield-loops.md @@ -5,7 +5,7 @@ sidebar_position: 2 # Yield Loops -Yield Loops are a structured product offering access to leveraged yield strategies. They enable users to multiply returns from yield-bearing assets. +Yield Loops are a structured product offering access to leveraged yield strategies. They enable users to multiply returns from yield-bearing assets like JLP, native and liquid-staked Solana, and more. Yield Loops can either be market-neutral or short/long biased. A Yield Loop uses deposited tokens as collateral to borrow more of the same yield-bearing asset. This creates a loop where both the initial deposit and the borrowed tokens earn yield, amplifying returns. From 70a938dbb2715688679dc98e320845413c2f856e Mon Sep 17 00:00:00 2001 From: Devin Black <82221522+devin-black@users.noreply.github.com> Date: Fri, 14 Mar 2025 16:30:55 -0400 Subject: [PATCH 9/9] Add back asset parameters --- docs/concepts/asset-parameters.md | 90 +++++++++++++++++++ docs/concepts/brand-kit.md | 2 +- docs/concepts/faq.md | 2 +- docs/concepts/points.md | 2 +- .../global-asset-parameters.md | 53 ----------- docs/concepts/risk-management.md | 2 +- 6 files changed, 94 insertions(+), 57 deletions(-) create mode 100644 docs/concepts/asset-parameters.md delete mode 100644 docs/concepts/protocol-concepts/global-asset-parameters.md diff --git a/docs/concepts/asset-parameters.md b/docs/concepts/asset-parameters.md new file mode 100644 index 0000000..757d5fa --- /dev/null +++ b/docs/concepts/asset-parameters.md @@ -0,0 +1,90 @@ +--- +sidebar_position: 5 +--- + +# Asset Parameters + +## Principal +The following assets are eligible to be used as principal on Loopscale. Note that the most recent up to date list of assets can be found on the Loopscale App's [Borrow](https://app.loopscale.com/borrow) page. +| Asset | Oracle | +|:--|--:| +|[USDC](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v) |Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD | +|[USDT](https://solscan.io/token/Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB) |3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL | +|[SOL](https://solscan.io/token/So11111111111111111111111111111111111111112) |H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG | +|[EURC](https://solscan.io/token/HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr) |91Sfpm86H7ZgngdGfAiVJTNbg42CXBPiurruf29kinMh | +|[BONK](https://solscan.io/token/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263) |8ihFLu5FimgTQ1Unh4dVyEHUGodJ5gJQCrQf4KUVB9bN | +|[WEN](https://solscan.io/token/WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk)|6Uo93N83iF5U9KwC8eQpogx4XptMT4wSKfje7hB1Ufko | + +## Collateral +The following assets are eligible to be used as collateral on Loopscale. Note that the most recent up to date list of assets can be found on the Loopscale App's [Borrow](https://app.loopscale.com/borrow) page. + +| Asset | LTV (%) | Liq. Ratio (%) | Oracle | +|:--|--:|--:|--:| +|[Solana](https://solscan.io/token/So11111111111111111111111111111111111111112)| 80|90|7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE| +|[USDC](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v)| 95|98|Dpw1EAVrSB1ibxiDQyTAW6Zip3J4Btk2x4SgApQCeFbX| +|[WEN](https://solscan.io/token/WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk)| 25|40|CsG7wXoqZKNxx4UnFtvozfwXQ9RgpKe7zSJa4LWh5MT9| +|[JitoSol](https://solscan.io/token/J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn)| 75|85|AxaxyeDT8JnWERSaTKvFXvPKkEdxnamKSqpWbsSjYg1g| +|[Jito](https://solscan.io/token/jtojtomepa8beP8AuQc6eXt5FriJwfFMwQx2v2f9mCL)| 70|80|7ajR2zA4MGMMTqRAVjghTKqPPn4kbrj3pYkAVRVwTGzP| +|[Staked Sol](https://solscan.io/token/sTSoN7tYft63PJjHw2NcgJ43saq3NiE3XCdfvXXcTrD)| 60|75|7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE| +|[mSol](https://solscan.io/token/mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So)| 75|85|5CKzb9j4ChgLUt8Gfm5CNGLN6khXKiqMbnGAW4cgXgxK| +|[bSol](https://solscan.io/token/bSo13r4TkiE4KumL71LsHTPpL2euBYLFx6h9HP3piy1)| 75|85|5cN76Xm2Dtx9MnrQqBDeZZRsWruTTcw37UruznAdSvvE| +|[Jupiter](https://solscan.io/token/JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN)| 70|80|7dbob1psH1iZBS7qPsm3Kwbf5DzSXK8Jyg31CTgTnxH5| +|[wEth](https://solscan.io/token/7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs)| 70|85|4TQ1VVWkrYUvyQ6hMmjepwr7swvqsyvLi75BiJi13Tf3| +|[wBTC](https://solscan.io/token/3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh)| 70|85|4cSM2e6rvbGQUFiJbqytoVMi5GgghSMr8LwVrT9VPSPo| +|[USDT](https://solscan.io/token/Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB)| 95|98|HT2PLQBcG5EiCcNSaMHAjSgd9F98ecpATbk4Sk5oYuM| +|[Pyth](https://solscan.io/token/HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3)| 60|70|8vjchtMuJNY4oFQdTi8yCe6mhCaNBFaUbktT482TpLPS| +|[W](https://solscan.io/token/85VBFQZC9TZkfaptBWjvUw7YbZjy52A6mjtPGjstQAmQ)| 60|70|BEMsCSQEGi2kwPA4mKnGjxnreijhMki7L4eeb96ypzF9| +|[HNT](https://solscan.io/token/hntyVP6YFm1Hg25TN9WGLqM12b8TQmcknKrdu1oxWux)| 70|80|FERjPVNEa7Udq8CEv68h6tPL46Tq7ieE49HrE2wea3XT| +|[WIF](https://solscan.io/token/EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm)|40|60|6B23K3tkb51vLZA14jcEQVCA1pfHptzEHFA93V5dYwbT| +|[RLB](https://solscan.io/token/RLBxxFkseAZ4RgJH3Sqn8jXxhmGoz9jWxDNJMh8pL7a)|30|50|FKhA7f11fMokfi3c7J8R9M3TSJ3E26aeUuSm9bADgPF3| +|[BONK](https://solscan.io/token/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263)|45|65|DBE3N8uNjhKPRHfANdwGvCZghWXyLPdqdSbEW2XFwBiX| +|[wstETH](https://solscan.io/token/ZScHuTtqZukUrtZS43teTKGs2VqkKL8k4QCouR2n6Uo)|70|85|HyoTrHkmhM8YETBagUFqtT95JpkFWtLDtL3uQHsLVT5j| +|[Orca](https://solscan.io/token/orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE)|30|50|4CBshVeNBEXz24GZpoj8SrqP5L7VGG3qjGd6tCST1pND| +|[EURC](https://solscan.io/token/HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr)|85|95|HyBsZY1UiGttbQ3ppBmnFVss9rmDAEvEbtYxdfjNAqBZ| +|[RAY](https://solscan.io/token/4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R)|30|50|Hhipna3EoWR7u8pDruUg8RxhP5F6XLh6SEHMVDmZhWi8| +|[IOT](https://solscan.io/token/iotEVVZLEywoTn1QdwNPddxPWszn3zFhEot3MfL9fns)|10|20|8UYEn5Weq7toHwgcmctvcAxaNJo3SJxXEayM57rpoXr9| +|[Marinade](https://solscan.io/token/MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey)|50|65|GHKcxocPyzSjy7tWApQjKRkDNuVXd4Kk624zhuaR7xhC| +|[Mobile](https://solscan.io/token/mb1eu7TzEc71KxDpsmsKoucSSuuoGLv1drys1oP2jh6)|10|20|DQ4C1tzvu28cwo1roN1Wm6TW35sfJEjLh517k3ZeWevx| +|[Render](https://solscan.io/token/rndrizKT3MK1iimdxRdWabcF7Zg7AR5T4nud4EkHBof)|45|60|HAm5DZhrgrWa12heKSxocQRyJWGCtXegC77hFQ8F5QTH| +|[cgntSOL](https://solscan.io/token/CgnTSoL3DgY9SFHxcLj6CgCgKKoTBr6tp4CPAEWy25DE)|40|55|CgntPoLka5pD5fesJYhGmUCF8KU1QS1ZmZiuAuMZr2az| +|[phaseSOL](https://solscan.io/token/phaseZSfPxTDBpiVb96H4XFSD8xHeHxZre5HerehBJG)|45|60|phasejkG1akKgqkLvfWzWY17evnH6mSWznnUspmpyeG| +|[superSOL](https://solscan.io/token/suPer8CPwxoJPQ7zksGMwFvjBQhjAHwUMmPV4FVatBw)|45|60|4dZDUL3BFJUFeqS3Y3cwkc84Rs6mgVHRYGt1LJvhooW4| +|[lanternSOL](https://solscan.io/token/LnTRntk2kTfWEY6cVB8K9649pgJbt6dJLS1Ns1GZCWg)| 45|60|LW3qEdGWdVrxNgxSXW8vZri7Jifg4HuKEQ1UABLxs3C| +|[pwrSOL](https://solscan.io/token/pWrSoLAhue6jUxUkbWgmEy5rD9VJzkFmvfTDV5KgNuu)| 45|60|DfiQgSvpW3Dy4gKfhtdHnWGHwFUrE8exvaxqjtMtAVxk| +|[pathSol](https://solscan.io/token/pathdXw4He1Xk3eX84pDdDZnGKEme3GivBamGCVPZ5a)| 50|65|GM7TwD34n8HmDP9XcT6bD3JJuNniKJkrKQinHqmqHarz| +|[clockSol](https://solscan.io/token/GRJQtWwdJmp5LLpy8JWjPgn5FnLyqSJGNhn5ZnCTFUwM)| 50|65|6e2LpgytfG3RqMdYuPr3dnedv6bmHQUk9hH9h2fzVk9o| +|[hubSol](https://solscan.io/token/HUBsveNpjo5pWqNkH57QzxjQASdTVXcSK7bVKTSZtcSX)| 50|65|ECRqn7gaNASuvTyC5xfCUjehWZCSowMXstZiM5DNweyB| +|[stakeSol](https://solscan.io/token/st8QujHLPsX3d6HG9uQg9kJ91jFxUgruwsb1hyYXSNd)| 50|65|2jjK1MsLgsPgVjnp97HUJeovNj3jp4XgyQ3nuiWMwiS8| +|[pumpkinSol](https://solscan.io/token/pumpkinsEq8xENVZE6QgTS93EN4r9iKvNxNALS1ooyp)| 50|65|8WHCJsUduwDBhPL9uVADQSdWkUi2LPZNFAMyX1n2HGMD| +|[strongSol](https://solscan.io/token/strng7mqqc1MBJJV6vMzYbEqnwVGvKKGKedeCvtktWA)| 50|65|GZDX5JYXDzCEDL3kybhjN7PSixL4ams3M2G4CvWmMmm5| +|[edgeSol](https://solscan.io/token/edge86g9cVz87xcpKpy3J77vbp4wYd9idEV562CCntt)| 55|70|edgejNWAqkePLpi5sHRxT9vHi7u3kSHP9cocABPKiWZ| +|[fpSol](https://solscan.io/token/fpSoL8EJ7UA5yJxFKWk1MFiWi35w8CbH36G5B9d7DsV)| 40|55|GutG5bcmEZw15WmPHNVMWHU77c6t8CEinUEdPLYz3doa| +|[JSol](https://solscan.io/token/7Q2afV64in6N6SeZsAAB81TJzwDoD6zpqmHkzi9Dcavn)| 55|70|CtMyWsrUtAwXWiGr9WjHT5fC3p3fgV8cyGpLTo2LJzG1| +|[vSol](https://solscan.io/token/vSoLxydx6akxyMD9XEcPvGYNGq6Nn66oqVb3UkGkei7)| 60|75|Fu9BYC6tWBo1KMKaP3CFoKfRhqv9akmy3DuYwnCyWiyC| +|[WenSol](https://solscan.io/token/WensoLXxZJnev2YvihHFchn1dVVFnFLYvgomXWvvwRu)| 50|65|CWM1VcNPd2A5WF2x2mmEUCgA1PGSKNZCGAH5GsoQw7h8| +|[bonkSol](https://solscan.io/token/BonK1YhkXEGLZzwtcvRTip3gAL9nCeQD7ppZBLXhtTs)| 60|75|ArAQfbzsdotoKB5jJcZa3ajQrrPcWr2YQoDAEAiFxJAC| +|[hSol](https://solscan.io/token/he1iusmfkpAdwvxLNGV8Y1iSbj4rUy6yMhEA3foJYDW)| 70|80|FERjPVNEa7Udq8CEv68h6tPL46Tq7ieE49HrE2wea3XT| +|[jupSol](https://solscan.io/token/jupSoLaHXQiZZTSfEWMTRRgpnyFm8f6sZdosWBjx93v)|70|80|8VpRhuxa7sUUepdY3kQiTmX9rS5vx4WgaXiAnXq4KCtr| +|[compassSol](https://solscan.io/token/Comp4ssDzXcLeu2MnLuGNNFC4cmLPMng8qWHPvzAMU1h)|60|75|AwDeTcW6BovNYR34Df1TPm4bFwswa4CJY4YPye2LXtPS| +|[jucySol](https://solscan.io/token/jucy5XJ76pHVvtPZb5TKRcGQExkwit2P5s4vY8UzmpC)|60|75|AZGSr2fUyKkPLMhAW6WUEKEsQiRMAFKf8Fjnt4MFFaGv| +|[laineSol](https://solscan.io/token/LAinEtNLgpmCP9Rvsf5Hn8W6EhNiKLZQti1xfWMLy6X)|60|75|2qyEeSAWKfU18AFthrF7JA8z8ZCi1yt76Tqs917vwQTV| +|[picoSol](https://solscan.io/token/picobAEvs6w7QEknPce34wAE4gknZA9v5tTonnmHYdX)|60|75|8Dv3hNYcEWEaa4qVx9BTN1Wfvtha1z8cWDUXb7KVACVe| +|[dSol](https://solscan.io/token/Dso1bDeDjCQxTrWHqUUi63oBvV7Mdm6WaobLbQ7gnPQ)|60|75|9mhGNSPArRMHpLDMSmxAvuoizBqtBGqYdT8WGuqgxNdn| +|[metmSOL](https://solscan.io/token/21bR3D4QR4GzopVco44PVMBXwHFpSYrbrdeNwdKk7umb)|65|75|8p1VKP45hhqq5iZG5fNGoi7ucme8nFLeChoDWNy7rWFm| +|[metUSDC](https://solscan.io/token/3RpEekjLE5cdcG15YcXJUpxSepemvq2FpmMcgo342BwC)|80|90|3ESUFCnRNgZ7Mn2mPPUMmXYaKU8jpnV9VtA17M7t2mHQ| +|[metUSDT](https://solscan.io/token/EZun6G5514FeqYtUv26cBHWLqXjAEdjGuoX6ThBpBtKj)|80|90|5XCP3oD3JAuQyDpfBFFVUxsBxNjPQojpKuL4aVhHsDok| +|[metSOL](https://solscan.io/token/FZN7QZ8ZUUAxMPfxYEYkH3cXUASzH8EqA6B4tyCL8f1j)|70|80|FERjPVNEa7Udq8CEv68h6tPL46Tq7ieE49HrE2wea3XT| +|[USDY](https://solscan.io/token/A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6)| 85|95|234oAERsti3gMYH8DNXxawKm7jGLwqgSsGB5Cz72KeXU| +|[JLP](https://solscan.io/token/27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4)| 65|80|pmHEXBam7kbmCCg5ED5V7RNMN8e34sKu338KeuFAGof| +|[orcaBONKSOL](https://solscan.io/token/3ne4mWqdYuNiYrYZC9TrA3FcfuFdErghH97vNPbjicr1)| 40|60|3ne4mWqdYuNiYrYZC9TrA3FcfuFdErghH97vNPbjicr1| +|[orcaUSDTUSDC](https://solscan.io/token/4fuUiYxTQ6QCrdSq9ouBYcTM7bqSwYTSyLueGZLTy4T4)| 80|90|4fuUiYxTQ6QCrdSq9ouBYcTM7bqSwYTSyLueGZLTy4T4| +|[orcaJLPSOL](https://solscan.io/token/4Z1A4Wy4Qj1GDC98YXYCuEkibVsHXoB1pMsn2crqEgDF)| 55|75|4Z1A4Wy4Qj1GDC98YXYCuEkibVsHXoB1pMsn2crqEgDF| +|[orcaJLPUSDC](https://solscan.io/token/6NUiVmsNjsi4AfsMsEiaezsaV9N4N1ZrD4jEnuWNRvyb)| 55|75|6NUiVmsNjsi4AfsMsEiaezsaV9N4N1ZrD4jEnuWNRvyb| +|[orcaWIFSOL](https://solscan.io/token/D6NdKrKNQPmRZCCnG1GqXtF7MMoHB7qR6GU5TkG59Qz1)| 40|60|D6NdKrKNQPmRZCCnG1GqXtF7MMoHB7qR6GU5TkG59Qz1| +|[orcaSolUSDC](https://solscan.io/token/FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q)| 70|85|FpCMFDFGYotvufJ7HrFHsWEiiQCGbkLCtwHiDnh7o28Q| +|[wAvax](https://solscan.io/token/KgV1GvrHQmRBY8sHQQeUKwTm2r2h8t4C8qt12Cw1HVE)| 65|80|HUBqpBf3aGJdVQndFHmMUd1eMcixt7S4swYPCx8A93K1| +|[wArb](https://solscan.io/token/8LH3QMo7xkMJx85Kg4pfiQY1g1ZgiVEe1KktSpaT89mP)| 60|75|36XiLSLUq1trLrK5ApwWs6LvozCjyTVgpr2uSAF3trF1| +|[wSui](https://solscan.io/token/G1vJEgzepqhnVu35BN4jrkv3wVwkujYWFFCxhbEZ1CZr)| 50|70|GgV3a7YeVRga9prjNGEDBG9NwatSaD8rwjZ4GNjPiXTq| +|[wOP](https://solscan.io/token/S62gBPpvCxzE5a7T39QGXPMxVP2fTgequtsgm9jGhaq)| 60|75|DgbEZkKzsRCQgbpdwiM5XcNZ4KzR5hsQZabtHGemf3Cc| +|[wInj](https://solscan.io/token/Hgtvu9gsDTzUpBn69WjrhMyzaQhrAM9piTsezmZVQP6Z)| 50|70|GwXYEfmPdgHcowF9GZwbb1WiTGTn1fuT3hbSLneoBKK6| +|[wMatic](https://solscan.io/token/Gz7VkD4MacbEB6yC5XD3HcumEiYx2EtDYYrfikGsvopG)| 50|70|5JQ3vHYR38aPUu1L1qHRhYXZWYFCCzox2HavyGypwVWP| \ No newline at end of file diff --git a/docs/concepts/brand-kit.md b/docs/concepts/brand-kit.md index 2588626..012612d 100644 --- a/docs/concepts/brand-kit.md +++ b/docs/concepts/brand-kit.md @@ -1,5 +1,5 @@ --- -sidebar_position: 9 +sidebar_position: 8 draft: false --- diff --git a/docs/concepts/faq.md b/docs/concepts/faq.md index 136f45f..1197ba6 100644 --- a/docs/concepts/faq.md +++ b/docs/concepts/faq.md @@ -1,5 +1,5 @@ --- -sidebar_position: 8 +sidebar_position: 9 draft: false --- diff --git a/docs/concepts/points.md b/docs/concepts/points.md index 0daf3df..87315de 100644 --- a/docs/concepts/points.md +++ b/docs/concepts/points.md @@ -1,5 +1,5 @@ --- -sidebar_position: 6 +sidebar_position: 7 --- # Points diff --git a/docs/concepts/protocol-concepts/global-asset-parameters.md b/docs/concepts/protocol-concepts/global-asset-parameters.md deleted file mode 100644 index bc32e2d..0000000 --- a/docs/concepts/protocol-concepts/global-asset-parameters.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -sidebar_position: 8 ---- - -# Asset Parameters - -Borrowers and lenders on Loopscale interact via the virtualized [Credit Order Book](/concepts/protocol-concepts/credit-order-book) with standardized terms including principal and collateral options, principal and collateral oracles, and loan terms. These standardized terms are available below. - -## Duration - -Duration is how long a loan lasts (and its corresponding fixed rate). Available duration options for Loans on Loopscale are: -- 1 day -- 1 week -- 1 month -- 3 months - -## LTV - -Loan-to-Value (LTV) is the ratio of a loan amount to the value of the collateral. Loopscale can offer better LTVs because collateral is isolated and not pooled with other assets. Generally, riskier assets have lower max LTV ratios. - -## Fees - - - -## Oracle - - - - - -## Payments - - - - - -## Principal -The following assets are eligible to be used as principal (the borrowed asset) on Loopscale. - - -| Asset | Oracle | -|:--|--:| -|[USDC](https://solscan.io/token/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v) |Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD | -|[USDT](https://solscan.io/token/Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB) |3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL | -|[SOL](https://solscan.io/token/So11111111111111111111111111111111111111112) |H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG | -|[EURC](https://solscan.io/token/HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr) |91Sfpm86H7ZgngdGfAiVJTNbg42CXBPiurruf29kinMh | -|[BONK](https://solscan.io/token/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263) |8ihFLu5FimgTQ1Unh4dVyEHUGodJ5gJQCrQf4KUVB9bN | -|[WEN](https://solscan.io/token/WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk)|6Uo93N83iF5U9KwC8eQpogx4XptMT4wSKfje7hB1Ufko | - -## Collateral -Loopscale technically supports any Solana token as collateral. Currently supported collateral options are always increasing, so refer to the app for the most up to date list of collateral options. - - \ No newline at end of file diff --git a/docs/concepts/risk-management.md b/docs/concepts/risk-management.md index 6117511..424d719 100644 --- a/docs/concepts/risk-management.md +++ b/docs/concepts/risk-management.md @@ -1,5 +1,5 @@ --- -sidebar_position: 5 +sidebar_position: 6 --- # Risk Management When using Loopscale, it's important to understand and manage the financial and operational risks involved. This page outlines key risks to consider and provides guidance on mitigating them. Some of these risks apply only to borrowers or only to lenders.