From 84c0f3374f2e25987ad7d19b4c8d195a9bf8cc93 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Thu, 18 Dec 2025 15:09:14 -0600 Subject: [PATCH 01/13] Add comprehensive Flow Credit Market (FCM) documentation This commit introduces complete documentation for Flow Credit Market (FCM), a DeFi yield platform that combines automated lending, yield farming strategies, and a synthetic stablecoin. ## Documentation Structure ### ALP (Automated Lending Platform) - 8 documents - Overview and architecture - Credit market mechanics with health factor calculations - Position lifecycle management - Automated rebalancing system - Liquidation mechanisms and safety features - MOET integration and role - DeFi Actions composability framework ### FCM (Flow Credit Market) - 4 documents - Product overview and component integration - Basics tutorial progressing from traditional lending to FCM - Technical architecture with data flow diagrams - Mathematical foundations with formulas and proofs ## Key Features - Visual mermaid diagrams throughout for clarity - Progressive learning path from basics to advanced topics - Cross-referenced sections linking related concepts - Practical examples with real-world scenarios - Mathematical formulas with step-by-step derivations - Professional narrative flow with minimal bullet points ## Content Highlights - Yield-powered liquidation prevention mechanism - Automated capital efficiency through rebalancing - Multi-component architecture (ALP + FYV + MOET) - Complete position lifecycle documentation - Security features and risk management - Integration patterns and best practices This documentation provides comprehensive coverage for users, developers, and DeFi builders looking to understand or integrate with FCM. --- docs/defi/alp/architecture.md | 440 ++++++++++++++ docs/defi/alp/credit-market-mechanics.md | 477 +++++++++++++++ docs/defi/alp/defi-actions.md | 362 ++++++++++++ docs/defi/alp/index.md | 95 +++ docs/defi/alp/liquidation-system.md | 683 ++++++++++++++++++++++ docs/defi/alp/moet-role.md | 437 ++++++++++++++ docs/defi/alp/position-lifecycle.md | 533 +++++++++++++++++ docs/defi/alp/rebalancing.md | 679 ++++++++++++++++++++++ docs/defi/fcm/architecture.md | 510 ++++++++++++++++ docs/defi/fcm/basics.md | 444 ++++++++++++++ docs/defi/fcm/index.md | 184 ++++++ docs/defi/fcm/math.md | 705 +++++++++++++++++++++++ 12 files changed, 5549 insertions(+) create mode 100644 docs/defi/alp/architecture.md create mode 100644 docs/defi/alp/credit-market-mechanics.md create mode 100644 docs/defi/alp/defi-actions.md create mode 100644 docs/defi/alp/index.md create mode 100644 docs/defi/alp/liquidation-system.md create mode 100644 docs/defi/alp/moet-role.md create mode 100644 docs/defi/alp/position-lifecycle.md create mode 100644 docs/defi/alp/rebalancing.md create mode 100644 docs/defi/fcm/architecture.md create mode 100644 docs/defi/fcm/basics.md create mode 100644 docs/defi/fcm/index.md create mode 100644 docs/defi/fcm/math.md diff --git a/docs/defi/alp/architecture.md b/docs/defi/alp/architecture.md new file mode 100644 index 0000000000..8c762db2ec --- /dev/null +++ b/docs/defi/alp/architecture.md @@ -0,0 +1,440 @@ +--- +title: Architecture Overview +sidebar_position: 2 +--- + +# Architecture Overview + +ALP is built on a modular architecture with several core components that work together to provide a secure and efficient lending protocol. + +## Core Components + +```mermaid +graph TB + subgraph "ALP Core" + Pool[Pool
Central Logic Hub] + Position[Position
User Accounts] + TokenState[TokenState
Per-Token Metrics] + Oracle[Price Oracle
Price Feeds] + end + + User[User Wallet] -->|Creates/Manages| Position + Position -->|Operations| Pool + Pool -->|Tracks| TokenState + Pool -->|Queries Prices| Oracle + Pool -->|Stores| Reserves[Token Reserves] + + Position -->|Auto-Push| Sink[DrawDownSink
Automated Flows] + Position -->|Auto-Pull| Source[TopUpSource
Automated Flows] + + style Pool fill:#f9f,stroke:#333,stroke-width:4px + style Position fill:#bbf,stroke:#333,stroke-width:2px +``` + +### Pool + +The **Pool** is the central smart contract that manages all protocol operations. It serves as the primary logic hub for: + +```mermaid +graph LR + subgraph "Pool Responsibilities" + R1[Track All
Positions] + R2[Manage Token
Balances] + R3[Store
Reserves] + R4[Calculate
Interest] + R5[Execute
Liquidations] + end + + R1 --> Pool[Pool Contract] + R2 --> Pool + R3 --> Pool + R4 --> Pool + R5 --> Pool + + style Pool fill:#f9f,stroke:#333,stroke-width:3px +``` + +The Pool tracks global state for all positions, manages credit and debit balances for each supported token, stores reserves as they are deposited, coordinates interest rate calculations, and executes liquidations and rebalancing operations. It maintains a global ledger that tracks the state of each token type, including interest indices, total deposits, total borrows, and reserve factors. + +### Position + +A **Position** represents a user's credit account within the protocol. Each position tracks: + +```mermaid +graph TD + subgraph "Position Components" + C[Collateral
Deposits] + D[Debt
Obligations] + H[Health
Factor] + A[DeFi Actions
Connectors] + end + + C --> Position[Your Position] + D --> Position + H --> Position + A --> Position + + Position --> Operations[Operations:
Deposit, Borrow
Repay, Withdraw] + + style Position fill:#bbf,stroke:#333,stroke-width:3px +``` + +- **Collateral deposits**: Assets deposited to back borrowing +- **Debt obligations**: Amount borrowed against collateral +- **Health factor**: Ratio of collateral value to debt (must stay above 1.0) +- **DeFi Actions connectors**: Optional Sink and Source for automated flows + +Positions are external objects representing ownership of deposited value, with each position capable of holding multiple token balances (both deposits and borrows). They can be configured with different min/max health targets and support composability through DeFi Actions interfaces. + +### TokenState + +Each supported token in the protocol has an associated **TokenState** that tracks per-token metrics: + +```mermaid +graph LR + Token[Token
e.g., FLOW] --> State[TokenState] + + State --> I[Interest
Indices] + State --> TD[Total
Deposits] + State --> TB[Total
Borrows] + State --> CF[Collateral
Factor 0.8] + State --> IR[Interest Rate
Parameters] + + style State fill:#bfb,stroke:#333,stroke-width:2px +``` + +TokenState maintains interest indices for scaled balance calculations, tracks total deposits and borrows for each token, stores the collateral factor (percentage of token value usable as collateral, e.g., 0.8 = 80%), applies borrow factors as multipliers to borrowed amounts, and configures interest rate parameters for rate curves. + +### Scaled Balance System + +ALP uses a **scaled balance** system to track user balances efficiently: + +```mermaid +sequenceDiagram + participant User + participant Position + participant Pool + participant Index + + User->>Position: Borrow 1000 MOET + Position->>Pool: Record balance + Note over Pool: Index = 1.0
Scaled = 1000 / 1.0 = 1000 + + Note over Index: Time passes...
Interest accrues + + Index->>Index: Index grows to 1.05 + + User->>Position: Check balance + Position->>Pool: Query + Pool->>Pool: Calculate: 1000 Γ— 1.05 + Pool-->>User: Balance = 1050 MOET + + Note over User,Index: No transaction needed
for interest to accrue! +``` + +Instead of updating every user's balance when interest accrues, the protocol: + +1. Tracks each user's "scaled balance" (actual balance / interest index) +2. Updates the global interest index as time passes +3. Calculates true balance on-demand as: scaled balance Γ— current interest index + +This means balances grow automatically without requiring transactions, as the interest index increases over time. + +This system is highly gas efficient since it eliminates per-user balance updates, enables automatic compounding for all users simultaneously, provides precise calculations using UFix128 precision, and scales to unlimited users without additional overhead. See [FCM Mathematical Foundations](../fcm/math.md#interest-mathematics) for detailed formulas. + +### Price Oracle + +The **Price Oracle** provides token prices in terms of the default token (MOET): + +```mermaid +graph TB + subgraph "Oracle Safety Features" + S1[Staleness Checks
Price not too old] + S2[Deviation Guards
Prevent extreme moves] + S3[TWAP Support
Time-weighted prices] + S4[Fallback Sources
Redundancy] + end + + Oracle[Price Oracle] --> S1 + Oracle --> S2 + Oracle --> S3 + Oracle --> S4 + + Oracle --> Prices[Token Prices
in MOET terms] + + Prices --> HF[Health Factor
Calculations] + Prices --> Liq[Liquidation
Triggers] + + style Oracle fill:#bfb,stroke:#333,stroke-width:3px +``` + +The oracle implements the DeFi Actions PriceOracle interface, enabling standardized price queries across the protocol. + +The oracle includes multiple safety features: configurable staleness thresholds per token (typically 5 minutes), maximum deviation checks against the last price snapshot, additional DEX price deviation checks during liquidations, and TWAP (Time-Weighted Average Price) support for manipulation resistance. + +## Key Interfaces + +### FungibleToken.Vault + +```mermaid +graph LR + Vault[FungibleToken.Vault
Standard Interface] --> Op1[Deposit
Tokens] + Vault --> Op2[Withdraw
Tokens] + Vault --> Op3[Balance
Queries] + Vault --> Op4[Transfer
Tokens] + + Op1 --> Compat[Flow Ecosystem
Compatibility] + Op2 --> Compat + Op3 --> Compat + Op4 --> Compat + + style Compat fill:#bfb,stroke:#333,stroke-width:2px +``` + +ALP integrates with Flow's standard `FungibleToken.Vault` interface for token operations, ensuring compatibility with all Flow fungible tokens and wallets. + +### DeFi Actions Framework + +ALP implements the **DeFi Actions** framework for protocol composability: + +```mermaid +graph TB + subgraph "Sink Pattern (Push)" + S1[Position
Overcollateralized] --> S2[Auto-Borrow
MOET] + S2 --> S3[Push to
DrawDownSink] + S3 --> S4[User Wallet
or DeFi Protocol] + end + + subgraph "Source Pattern (Pull)" + P1[Position
Undercollateralized] --> P2[Need to
Repay Debt] + P2 --> P3[Pull from
TopUpSource] + P3 --> P4[User Wallet
or DeFi Protocol] + end + + style S1 fill:#bbf + style P1 fill:#fbb +``` + +The **Sink Interface** receives tokens when positions are overcollateralized, automatically pushing borrowed funds to user wallets or other protocols through the `drawDownSink` configuration on positions, enabling automated value flows out of positions. The **Source Interface** provides tokens when positions need rebalancing, automatically pulling funds to repay debt when undercollateralized through the `topUpSource` configuration, enabling automated value flows into positions. + +Learn more: [DeFi Actions Integration](./defi-actions.md) + +### ViewResolver + +The **ViewResolver** interface provides metadata for wallet integration, including position details and balance sheets, supported token types, protocol parameters and configuration, and user-friendly data formatting. This enables wallets and dApps to display ALP positions with rich, contextual information. + +## System Architecture Diagram + +```mermaid +graph TB + User[User Wallet] -->|Deposit/Withdraw| Position[Position] + Position -->|Manages| Pool[Pool Contract] + Pool -->|Stores| Reserves[Token Reserves] + Pool -->|Queries| Oracle[Price Oracle] + Pool -->|Updates| TokenState[TokenState per Token] + Position -->|Auto-Push| Sink[DrawDown Sink] + Position -->|Auto-Pull| Source[TopUp Source] + Pool -->|Liquidates| Liquidator[Liquidators/Keepers] + + style Pool fill:#f9f,stroke:#333,stroke-width:4px + style Position fill:#bbf,stroke:#333,stroke-width:2px + style Oracle fill:#bfb,stroke:#333,stroke-width:2px +``` + +## Data Flow + +### Deposit Flow + +```mermaid +sequenceDiagram + participant User + participant Position + participant Pool + participant TokenState + participant Sink + + User->>Position: deposit() + Position->>Pool: Transfer tokens to reserves + Pool->>Pool: Update scaled balance + Pool->>TokenState: Update totals + Pool->>Pool: Check if overcollateralized + alt Overcollateralized & DrawDownSink enabled + Pool->>Pool: Auto-borrow + Pool->>Sink: Push borrowed tokens + end +``` + +**Steps**: +1. User calls `deposit()` on their Position +2. Position transfers tokens to Pool reserves +3. Pool updates user's scaled balance +4. Pool updates global TokenState +5. If `drawDownSink` enabled and overcollateralized β†’ auto-borrow + +### Borrow Flow + +```mermaid +sequenceDiagram + participant User + participant Position + participant Pool + participant Reserves + + User->>Position: withdraw(debt token) + Position->>Pool: Check health factor + alt Health would remain safe + Pool->>Pool: Update debt scaled balance + Pool->>Reserves: Transfer tokens + Reserves-->>User: Receive tokens + Pool->>Position: Update health + else Health would drop too low + Pool-->>User: Revert: Insufficient health + end +``` + +**Steps**: +1. User calls `withdraw()` for debt token +2. Pool checks health factor would remain above minimum +3. Pool updates user's debt scaled balance +4. Pool transfers tokens from reserves to user +5. Position health is recalculated + +### Interest Accrual + +```mermaid +graph LR + Time[Time Passes] --> Touch[Any Position
Touched] + Touch --> Update[Pool Updates
Interest Index] + Update --> Index[Index Increases
Based on Utilization] + Index --> All[All Positions'
Balances Grow
Automatically] + + style All fill:#bfb,stroke:#333,stroke-width:2px +``` + +**Process**: +1. Time passes, interest accumulates +2. When any position is touched, Pool updates interest indices +3. Interest index increases based on utilization and rates +4. All positions' true balances grow automatically via scaled balance math + +## Security Architecture + +ALP includes multiple layers of security: + +```mermaid +graph TB + subgraph "Security Layers" + L1[Health Factor
Monitoring] + L2[Oracle
Safety] + L3[Liquidation
Mechanisms] + L4[Circuit
Breakers] + L5[Access
Controls] + end + + Protocol[Protocol
Operations] --> L1 + L1 -->|Pass| L2 + L2 -->|Pass| L3 + L3 -->|Pass| L4 + L4 -->|Pass| L5 + L5 -->|Pass| Execute[Execute
Operation] + + style Execute fill:#bfb +``` + +1. **Health factor monitoring**: Continuous tracking of position solvency +2. **Oracle safety**: Staleness and deviation checks +3. **Liquidation mechanisms**: Multiple paths to resolve undercollateralized positions +4. **Circuit breakers**: Ability to pause operations in emergencies +5. **Access controls**: Permissioned functions for admin operations + +## Gas Optimization + +The architecture is optimized for gas efficiency: + +```mermaid +graph LR + subgraph "Gas Optimizations" + O1[Scaled Balances
No per-user updates] + O2[Batch Operations
Multiple in one tx] + O3[Efficient Storage
Compact structures] + O4[Lazy Updates
Calculate on-demand] + end + + O1 --> Result[Minimal
Gas Costs] + O2 --> Result + O3 --> Result + O4 --> Result + + style Result fill:#bfb,stroke:#333,stroke-width:3px +``` + +The architecture is optimized for gas efficiency through scaled balances that eliminate per-user interest updates, batch operations that allow single transactions to update multiple positions, efficient storage using compact data structures for on-chain state, and lazy updates that only calculate interest when needed. + +## Upgradability + +The protocol includes mechanisms for upgrades and parameter adjustments: + +```mermaid +graph TD + Admin[Protocol Admin] --> Functions[Admin Functions] + + Functions --> Rate[Adjust Interest
Rates] + Functions --> Factor[Update Collateral
Factors] + Functions --> Token[Add New
Tokens] + Functions --> Oracle[Switch Price
Feeds] + Functions --> Feature[Enable/Disable
Features] + + Rate --> Protocol[Protocol
Configuration] + Factor --> Protocol + Token --> Protocol + Oracle --> Protocol + Feature --> Protocol + + style Protocol fill:#f9f,stroke:#333,stroke-width:2px +``` + +The protocol supports admin functions to adjust interest rates and collateral factors, dynamic token addition to support new tokens, oracle updates to switch price feed sources, and feature flags to enable or disable features like liquidations. + +## Summary + +**Core Architecture**: +- πŸ—οΈ Modular design with Pool, Position, TokenState, and Oracle +- πŸ”— DeFi Actions framework for composability +- πŸ“Š Scaled balance system for efficiency +- πŸ›‘οΈ Multiple security layers + +**Key Benefits**: +- βœ… Gas efficient scaled balance system +- βœ… Automated flows via Sink/Source interfaces +- βœ… Robust oracle safety features +- βœ… Multi-layer security architecture +- βœ… Flexible and upgradable design + +**Integration Points**: +- Flow FungibleToken standard +- DeFi Actions Sink/Source +- ViewResolver for wallets +- Price Oracle interface + +## Mathematical Foundation + +The architecture implements these mathematical principles: +- **Scaled Balances**: [Interest Mathematics](../fcm/math.md#scaled-balance-system) +- **Health Calculations**: [Health Factor Formula](../fcm/math.md#health-factor) +- **Effective Collateral**: [Collateral Calculation](../fcm/math.md#effective-collateral) +- **Multi-Token Support**: [Multi-Collateral Math](../fcm/math.md#multi-collateral-mathematics) + +See [FCM Mathematical Foundations](../fcm/math.md) for complete formulas and proofs. + +## Next Steps + +- **Understand operations**: [Credit Market Mechanics](./credit-market-mechanics.md) +- **Learn about safety**: [Liquidation System](./liquidation-system.md) +- **Explore automation**: [Position Lifecycle](./position-lifecycle.md) +- **See the big picture**: [FCM Architecture](../fcm/architecture.md) + +--- + +:::tip Key Takeaway +ALP's modular architecture combines efficiency with security. The scaled balance system eliminates gas overhead, DeFi Actions enable composability, and multiple security layers protect users. This design makes ALP both powerful for developers and accessible for users. +::: diff --git a/docs/defi/alp/credit-market-mechanics.md b/docs/defi/alp/credit-market-mechanics.md new file mode 100644 index 0000000000..3f62c435fc --- /dev/null +++ b/docs/defi/alp/credit-market-mechanics.md @@ -0,0 +1,477 @@ +--- +title: Credit Market Mechanics +sidebar_position: 3 +--- + +# Credit Market Mechanics + +ALP operates as a decentralized lending protocol where users can deposit collateral and borrow assets. Understanding the core mechanics is essential for effectively managing positions and maximizing capital efficiency. + +## Basic Lending Mechanics + +### Collateral Deposits + +When you deposit tokens into ALP, they become **collateral** that backs your borrowing capacity. However, not all collateral value is usable for borrowing. + +```mermaid +graph LR + Deposit[Deposit
1000 FLOW
@ $1 each] --> Factor[Apply
Collateral Factor
0.8] + Factor --> Effective[Effective Collateral
$800] + + Effective --> Borrow[Can Borrow
$615 @ HF 1.3] + + style Effective fill:#bfb,stroke:#333,stroke-width:2px +``` + +Each token has a **collateral factor** that determines what percentage of its value can be used. For example, depositing 1,000 FLOW worth $1,000 with a collateral factor of 0.8 results in $800 of effective collateral. This safety buffer protects the protocol against price volatility and ensures positions remain solvent even with market fluctuations. + +### Borrowing Limits + +Your borrowing capacity depends on two key factors: + +1. **Effective Collateral**: Total collateral value Γ— collateral factor +2. **Target Health Ratio**: Minimum ratio of collateral to debt + +**Formula**: +``` +Maximum Borrow = Effective Collateral / Target Health Ratio +``` + +See [FCM Mathematical Foundations](../fcm/math.md#auto-borrowing-mathematics) for detailed formulas and derivations. + +**Example with target health of 1.3**: +- Effective collateral: $800 (from 1,000 FLOW at 0.8 factor) +- Target health: 1.3 +- Maximum borrow: $800 / 1.3 β‰ˆ $615.38 + +### Health Factor + +The **health factor** is the most important metric for your position: + +``` +Health Factor = Effective Collateral Value / Effective Debt Value +``` + +```mermaid +graph TD + subgraph "Health Factor States" + HF1[HF > 1.5
Overcollateralized] + HF2[HF: 1.3 - 1.5
Healthy] + HF3[HF: 1.1 - 1.3
Below Target] + HF4[HF: 1.0 - 1.1
At Risk] + HF5[HF < 1.0
Liquidatable] + end + + HF1 --> Action1[Can borrow more] + HF2 --> Action2[Optimal state] + HF3 --> Action3[Should repay
or add collateral] + HF4 --> Action4[Urgent action
needed] + HF5 --> Action5[Liquidation
imminent] + + style HF1 fill:#bbf + style HF2 fill:#bfb + style HF3 fill:#ffa + style HF4 fill:#fbb + style HF5 fill:#f00,color:#fff +``` + +Your position's health can be understood across a spectrum: when HF > 1.5 you're overcollateralized and can borrow more; HF between 1.3 and 1.5 represents the healthy range; HF between 1.1 and 1.3 means you're below target and should repay or add collateral; HF between 1.0 and 1.1 puts you at risk of liquidation; and HF < 1.0 means your position is liquidatable and requires immediate action. + +## Auto-Borrowing Feature + +ALP includes an innovative **auto-borrowing** feature that automatically manages your position to maintain optimal health ratios. + +### How Auto-Borrowing Works + +```mermaid +sequenceDiagram + participant User + participant ALP + participant DrawDownSink + + User->>ALP: Deposit 1000 FLOW
pushToDrawDownSink=true + ALP->>ALP: Calculate effective
collateral: $800 + ALP->>ALP: Calculate max borrow
at HF 1.3: $615.38 + ALP->>ALP: Auto-borrow 615.38 MOET + ALP->>DrawDownSink: Push MOET + DrawDownSink->>User: Funds deployed + ALP->>User: Position created
HF = 1.3 βœ“ + + Note over User,DrawDownSink: Automatic optimization! +``` + +When you create a position with `pushToDrawDownSink=true`, you deposit collateral (e.g., 1,000 FLOW), the system calculates your maximum safe borrowing capacity, automatically borrows MOET to reach target health (1.3), and sends the borrowed MOET to your DrawDown Sink. + +**Example**: +``` +Deposit 1000 Flow with collateralFactor=0.8 +Target health = 1.3 + +Effective collateral = 1000 * 1.0 (price) * 0.8 = 800 +Auto-borrow amount = 800 / 1.3 β‰ˆ 615.38 MOET + +Result: +- Position health: 1.3 (at target) +- User receives: ~615.38 MOET via DrawDownSink +- Collateral locked: 1000 FLOW +``` + +### Opting Out of Auto-Borrowing + +You can disable auto-borrowing by setting `pushToDrawDownSink=false` when creating your position. With auto-borrowing disabled, your collateral is deposited without any automatic borrowing occurring, your health factor starts very high (>1.5), and you manually borrow when needed. + +### Benefits of Auto-Borrowing + +```mermaid +graph LR + subgraph "Auto-Borrowing Benefits" + B1[Maximized
Capital Efficiency] + B2[Simplified
Management] + B3[Immediate
Liquidity] + B4[Automated
Rebalancing] + end + + B1 --> Result[Optimal
Position] + B2 --> Result + B3 --> Result + B4 --> Result + + style Result fill:#bfb,stroke:#333,stroke-width:3px +``` + +1. **Maximized Capital Efficiency**: Automatically uses available borrowing capacity +2. **Simplified Position Management**: No need to manually calculate safe borrow amounts +3. **Immediate Liquidity**: Receive borrowed funds instantly upon deposit +4. **Automated Rebalancing**: System maintains optimal health as market conditions change + +### When to Use Auto-Borrowing + +**Use auto-borrowing when**: +- You want to maximize capital efficiency +- You're comfortable with leveraged positions +- You trust automated position management +- You want immediate access to borrowed funds + +**Don't use auto-borrowing when**: +- You want conservative collateralization +- You prefer manual position control +- You're testing or learning the protocol +- You don't need immediate borrowing + +## Interest System + +ALP uses a sophisticated interest system based on **scaled balances** and **interest indices**. + +### How Interest Accrues + +```mermaid +graph TD + User[User Borrows
1000 MOET] --> Scaled[Record Scaled Balance
1000 / 1.0 = 1000] + Scaled --> Time[Time Passes] + Time --> Index[Interest Index
Grows to 1.05] + Index --> Current[Current Debt
1000 Γ— 1.05 = 1050] + + Note1[No transaction
needed!] + Time -.-> Note1 + + style Current fill:#fbb +``` + +Instead of updating every user's balance constantly, ALP: + +1. Tracks your **scaled balance**: `actual balance / interest index at deposit` +2. Updates a global **interest index** as time passes +3. Calculates your current balance: `scaled balance Γ— current interest index` + +This means your debt and deposits grow automatically without requiring transactions. + +See [FCM Mathematical Foundations](../fcm/math.md#interest-mathematics) for detailed formulas. + +### Interest Rates + +Interest rates in ALP are determined by the utilization rate (percentage of available capital currently borrowed), a base rate (minimum interest rate when utilization is low), slope rates (how quickly rates increase as utilization rises), and optimal utilization (target utilization for balanced rates). + +```mermaid +graph LR + subgraph "Utilization vs Interest Rate" + Low[0-80%
Low Utilization
Gradual increase] + Opt[80%
Optimal
Target balance] + High[80-100%
High Utilization
Steep increase] + end + + Low --> Opt + Opt --> High + + style Opt fill:#bfb + style High fill:#fbb +``` + +**Typical Rate Curve**: +``` +Low Utilization (0-80%): Gradual rate increase +Optimal Zone (80%): Target balance point +High Utilization (80-100%): Steep rate increase to encourage repayment +``` + +### Compound Interest + +Interest in ALP compounds continuously as the interest index grows, with borrowers paying compound interest on debt, lenders earning compound interest on deposits, and interest index updates reflecting accumulated compounding. + +**Example**: +``` +Initial borrow: 1000 MOET +Interest index at borrow: 1.0 +After 1 year at 10% APY: +- New interest index: ~1.105 (continuous compounding) +- Debt owed: 1000 * 1.105 = 1,105 MOET +``` + +## Price Oracle System + +Accurate pricing is critical for maintaining protocol solvency. ALP uses a price oracle with multiple safety features. + +### Price Feeds + +All token prices are quoted in terms of the **default token** (MOET): + +```mermaid +graph TD + MOET[MOET
Unit of Account] --> P1[FLOW/MOET
Price] + MOET --> P2[USDC/MOET
Price] + MOET --> P3[stFLOW/MOET
Price] + MOET --> P4[Other Tokens
Prices] + + P1 --> Calc[Health Factor
Calculations] + P2 --> Calc + P3 --> Calc + P4 --> Calc + + style MOET fill:#fbb,stroke:#333,stroke-width:3px +``` + +All token prices are quoted in terms of MOET (FLOW/MOET, USDC/MOET, and other token prices), which simplifies calculations and ensures consistency across the protocol. + +### Oracle Safety Features + +```mermaid +graph LR + subgraph "Oracle Protections" + S1[Staleness Checks
<5 min old] + S2[Deviation Guards
Large jumps flagged] + S3[Fallback Sources
Alternative feeds] + S4[TWAP Support
Manipulation resistant] + end + + S1 --> Safe[Safe Price
Feed] + S2 --> Safe + S3 --> Safe + S4 --> Safe + + style Safe fill:#bfb,stroke:#333,stroke-width:3px +``` + +The oracle employs staleness checks to ensure prices are recent (typically < 5 minutes old), deviation guards that reject or flag large price jumps, fallback mechanisms providing alternative price sources if the primary fails, and TWAP support using time-weighted average prices to reduce manipulation risk. + +### How Prices Affect Positions + +Price changes directly impact your health factor: + +```mermaid +graph TD + Initial[Initial State
1000 FLOW @ $1
Debt: $600
HF: 1.67] + + Initial --> Up[Price Increase
FLOW β†’ $1.20] + Initial --> Down[Price Decrease
FLOW β†’ $0.80] + + Up --> UpResult[New HF: 2.0
Can borrow more!] + Down --> DownResult[New HF: 1.33
May trigger rebalancing] + + style UpResult fill:#bfb + style DownResult fill:#ffa +``` + +**Collateral price increases**: Health improves, can borrow more +``` +Before: 1000 FLOW @ $1 = $1000, Debt = $600, HF = 1.67 +After: 1000 FLOW @ $1.20 = $1200, Debt = $600, HF = 2.0 +β†’ Can borrow additional ~$108 MOET +``` + +**Collateral price decreases**: Health worsens, may need to repay +``` +Before: 1000 FLOW @ $1 = $1000, Debt = $600, HF = 1.67 +After: 1000 FLOW @ $0.80 = $800, Debt = $600, HF = 1.33 +β†’ Close to target health, rebalancing may trigger +``` + +## Multi-Token Support + +ALP supports multiple token types as both collateral and debt. + +### Token Configuration + +```mermaid +graph TB + subgraph Collateral + C1[FLOW
Factor: 0.8] + C2[stFLOW
Factor: 0.75] + C3[USDC
Factor: 0.9] + end + + subgraph Debt + D1[MOET
Primary] + D2[FLOW
Alternative] + D3[USDC
Alternative] + end + + C1 --> Health[Single Health
Factor Calculation] + C2 --> Health + C3 --> Health + + D1 --> Health + D2 --> Health + D3 --> Health + + style Health fill:#f9f,stroke:#333,stroke-width:3px +``` + +### Collateral Tokens + +Any supported token can be used as collateral, including Flow, stFlow, USDC, and other allowlisted tokens. Each token has its own collateral factor, price feed, and interest rate parameters. + +### Debt Tokens + +You can borrow multiple token types including MOET (the primary borrowed asset), Flow, USDC, and other allowlisted tokens. Each position can have multiple simultaneous borrows, with health calculated across all assets. + +### Cross-Token Calculations + +When you have multiple tokens, ALP converts all collateral and debt to the default token (MOET) value, calculates a single health factor across all positions, and ensures the total position remains solvent. + +**Example**: +``` +Collateral: +- 1000 FLOW @ $1 each, factor 0.8 = $800 effective +- 500 USDC @ $1 each, factor 0.9 = $450 effective +Total effective collateral: $1,250 + +Debt: +- 800 MOET @ $1 each = $800 debt +Health Factor = 1,250 / 800 = 1.56 βœ“ Healthy +``` + +## Utilization and Protocol Dynamics + +### Utilization Rate + +```mermaid +graph LR + Total[Total Available
Capital] --> Borrowed[Amount
Borrowed] + Total --> Available[Amount
Available] + + Borrowed --> Util[Utilization Rate
Borrowed / Total] + + Util --> Low[Low <80%
Lower rates] + Util --> High[High >80%
Higher rates] + + style Util fill:#bbf,stroke:#333,stroke-width:2px +``` + +The protocol tracks **utilization** for each token: + +``` +Utilization = Total Borrowed / (Total Deposited + Reserves) +``` + +Higher utilization leads to higher interest rates for borrowers, higher yields for lenders, and incentives to add liquidity or repay loans. + +### Reserve Factor + +A portion of interest goes to protocol reserves: + +``` +Lender Interest = Borrower Interest Γ— (1 - Reserve Factor) +``` + +```mermaid +graph LR + Borrower[Borrower Pays
100 Interest] --> Protocol[Protocol
Reserve Factor] + Protocol --> Reserve[20 to
Reserves] + Protocol --> Lender[80 to
Lenders] + + Reserve --> Uses[Insurance Fund
Development
Emergency
Treasury] + + style Reserve fill:#ffa + style Lender fill:#bfb +``` + +Reserves are used for the protocol insurance fund, development and maintenance, emergency situations, and the governance-controlled treasury. + +## Risk Management + +### For Borrowers + +```mermaid +graph TD + subgraph "Borrower Risk Management" + R1[Monitor Health
Factor Daily] + R2[Set Alerts
HF < 1.5] + R3[Diversify
Collateral] + R4[Use Stable
Assets] + R5[Watch Price
Volatility] + end + + R1 --> Safety[Reduced
Liquidation Risk] + R2 --> Safety + R3 --> Safety + R4 --> Safety + R5 --> Safety + + style Safety fill:#bfb,stroke:#333,stroke-width:3px +``` + +Borrowers should monitor their health factor by setting up alerts for HF < 1.5, keeping a buffer above the minimum (1.1), and watching for price volatility. Manage collateral wisely by diversifying across multiple tokens, using stable assets for lower risk, and considering collateral factors when depositing. + +### For Lenders + +Lenders should understand the risks including smart contract risk, liquidation risk (if the protocol becomes undercollateralized), and interest rate volatility. To maximize returns, monitor utilization rates, deposit when rates are high, and consider different tokens for better yields. + +## Summary + +**Core Mechanics**: +- πŸ’° Collateral with safety factors (e.g., 0.8 = 80% usable) +- πŸ“Š Health factor = Effective Collateral / Debt +- πŸ€– Auto-borrowing optimizes capital efficiency +- πŸ“ˆ Scaled balance system for efficient interest + +**Key Formulas**: +- Max Borrow = Effective Collateral / Target Health +- Health Factor = Effective Collateral / Effective Debt +- Utilization = Total Borrowed / Total Available + +**Safety Features**: +- βœ… Oracle staleness checks and deviation guards +- βœ… Multi-token support with unified health calculation +- βœ… Reserve factor for protocol insurance +- βœ… Continuous interest compounding + +## Mathematical Foundation + +For detailed formulas underlying credit market mechanics: +- **Effective Collateral**: [Collateral Calculation](../fcm/math.md#effective-collateral) +- **Health Factor**: [Health Factor Formula](../fcm/math.md#health-factor) +- **Maximum Borrowing**: [Max Borrow Capacity](../fcm/math.md#maximum-borrowing-capacity) +- **Interest Calculations**: [Interest Mathematics](../fcm/math.md#interest-mathematics) +- **Multi-Collateral**: [Multi-Collateral Mathematics](../fcm/math.md#multi-collateral-mathematics) + +## Next Steps + +- **Learn about protection**: [Liquidation System](./liquidation-system.md) +- **Understand the lifecycle**: [Position Lifecycle](./position-lifecycle.md) +- **Explore automation**: [Rebalancing Mechanics](./rebalancing.md) +- **See complete formulas**: [FCM Mathematical Foundations](../fcm/math.md) + +--- + +:::tip Key Takeaway +ALP's credit market mechanics combine automated efficiency with robust safety features. The auto-borrowing feature, scaled interest system, and multi-token support create a powerful yet accessible lending platform. Understanding these mechanics helps you manage positions effectively and maximize your DeFi strategy. +::: diff --git a/docs/defi/alp/defi-actions.md b/docs/defi/alp/defi-actions.md new file mode 100644 index 0000000000..1901feda3c --- /dev/null +++ b/docs/defi/alp/defi-actions.md @@ -0,0 +1,362 @@ +--- +title: DeFi Actions Integration +sidebar_position: 7 +--- + +# DeFi Actions Integration + +DeFi Actions is a composability framework that enables ALP to integrate seamlessly with other DeFi protocols like [Flow Yield Vaults (FYV)](../flow-yield-vaults/index.md). This powerful abstraction allows for automated value flows and complex strategy compositions. + +## Understanding DeFi Actions + +### What are DeFi Actions? + +**DeFi Actions** is a composability framework that provides standardized interfaces for DeFi protocols to interact. Think of it as "LEGO blocks" for DeFi - each protocol provides compatible pieces that snap together. + +**Key concepts**: +- **Source**: An interface for withdrawing/pulling funds (like a faucet) +- **Sink**: An interface for depositing/pushing funds (like a drain) +- **Composability**: Ability to combine protocols seamlessly + +### Why DeFi Actions Matter + +**Without DeFi Actions**, integrating protocols is complex: +1. Withdraw from position manually +2. Check balance +3. Calculate amounts +4. Approve tokens +5. Call other protocol +6. Handle errors +7. Return funds + +**With DeFi Actions**, it's simple and automated: +``` +Position (Source) β†’ Auto-flow β†’ Yield Farm (Sink) +``` + +**Benefits**: DeFi Actions provides simplified integrations through standard interfaces for all protocols, automated flows for set-and-forget value movements, composable strategies that chain multiple protocols together, reduced errors via standardized error handling, and gas efficiency through optimized execution paths. + +## Core Concepts + +### The Sink Pattern (Push) + +A **Sink** receives tokens - it's where funds flow TO. + +**How it works**: +```mermaid +graph LR + ALP[ALP Position] -->|Pushes funds| Sink[Sink Interface] + Sink -->|Deposits to| External[External Protocol] + + style Sink fill:#bbf,stroke:#333,stroke-width:2px +``` + +**Common Sink examples**: Common sink destinations include a user's wallet (simple, default), yield farming protocols (earn returns), liquidity pools (provide liquidity), and other ALP positions (leverage strategies). + +**What ALP's PositionSink does**: The PositionSink receives tokens from external protocols, deposits them into your ALP position as collateral, updates your position balances, and may trigger rebalancing if the position becomes overcollateralized. + +:::info For Developers +ALP implements the Sink interface via `PositionSink`: + +```cadence +// Create a sink that deposits into your position +let sink = position.createSink(type: Type<@MOET.Vault>()) + +// Any MOET sent to this sink goes to your position +externalProtocol.send(to: sink, amount: 100.0) +``` + +See [GitHub](https://github.com/onflow/FlowCreditMarket) for full API documentation. +::: + +### The Source Pattern (Pull) + +A **Source** provides tokens - it's where funds flow FROM. + +**How it works**: +```mermaid +graph LR + External[External Protocol] -->|Requests funds| Source[Source Interface] + Source -->|Pulls from| ALP[ALP Position] + + style Source fill:#bfb,stroke:#333,stroke-width:2px +``` + +**Common Source examples**: Common source origins include a user's wallet (manual funding), yield farming protocols (auto-withdrawal), liquidity pools (exit liquidity), and other ALP positions (cross-position management). + +**What ALP's PositionSource does**: The PositionSource provides tokens to external protocols, may borrow from ALP if withdrawing debt tokens, can pull from TopUpSource if configured, and updates your position balances accordingly. + +**Advanced: TopUpSource Integration** + +A PositionSource can be configured to pull from an external TopUpSource for automatic liquidation prevention: + +1. External protocol requests funds from PositionSource +2. If position has insufficient funds, pulls from TopUpSource +3. TopUpSource might be FYV (yield from your farming) +4. Funds used to repay debt and restore health +5. **Result**: Automatic liquidation protection using your yield! + +:::info For Developers +Create a Source with TopUpSource integration: + +```cadence +// Create source that can pull from TopUpSource for rebalancing +let source = position.createSourceWithOptions( + type: Type<@MOET.Vault>(), + pullFromTopUpSource: true // Enable auto-pull +) +``` + +This enables the yield-powered liquidation prevention that makes [FCM unique](../fcm/basics.md#yield-powered-liquidation-prevention). +::: + +## How ALP Uses DeFi Actions + +### DrawDownSink (When Overcollateralized) + +When your position has **excess borrowing capacity** (health > 1.5), ALP can automatically push funds to a DrawDownSink. + +**The flow**: +```mermaid +sequenceDiagram + participant Position + participant DrawDownSink + participant FYV + + Position->>Position: Health = 1.8 (too high) + Position->>Position: Calculate excess: $200 MOET + Position->>Position: Auto-borrow $200 MOET + Position->>DrawDownSink: Push $200 MOET + DrawDownSink->>FYV: Deploy to yield strategy + FYV->>FYV: Generate returns +``` + +**Common DrawDownSink configurations**: Borrowed funds can flow to your wallet for manual control, be automatically deployed to FYV strategies for yield farming, be added as liquidity to LP pools, or be sent to another position to create leveraged strategies. + +### TopUpSource (When Undercollateralized) + +When your position's health drops **below minimum** (health < 1.1), ALP can automatically pull funds from a TopUpSource. + +**The flow**: +```mermaid +sequenceDiagram + participant FYV + participant TopUpSource + participant Position + + Position->>Position: Price drops! Health = 1.05 + Position->>Position: Calculate needed: $150 MOET + Position->>TopUpSource: Request $150 MOET + TopUpSource->>FYV: Withdraw from yield + FYV->>TopUpSource: Return $150 MOET + TopUpSource->>Position: Provide $150 MOET + Position->>Position: Repay debt, Health = 1.3 βœ“ +``` + +**Common TopUpSource configurations**: Funds can be pulled from your wallet for manual liquidation protection, from FYV strategies for automatic liquidation protection using yield, from LP pools to exit liquidity when needed, or from another position for cross-position risk management. + +:::tip Key Innovation +The **TopUpSource from FYV** is what enables FCM's unique yield-powered liquidation prevention. Your yield automatically protects your position without manual intervention! + +Learn more: [FCM Basics - Yield-Powered Liquidation Prevention](../fcm/basics.md#1-yield-powered-liquidation-prevention) +::: + +## Integration Patterns + +### Pattern 1: Simple Auto-Borrowing + +**Use case**: Borrow against collateral, receive funds in wallet. + +**Setup**: +- DrawDownSink: Your wallet +- TopUpSource: None (manual management) + +**Flow**: +``` +Deposit FLOW β†’ ALP auto-borrows MOET β†’ Funds to your wallet +``` + +**Best for**: Users who want manual control over borrowed funds. + +### Pattern 2: Full FCM Integration + +**Use case**: Maximum automation with yield-powered liquidation prevention. + +**Setup**: +- DrawDownSink: FYV yield strategy +- TopUpSource: FYV yield strategy + +**Flow**: +``` +Deposit FLOW β†’ Auto-borrow MOET β†’ Deploy to FYV β†’ Generate yield +Price drops β†’ FYV provides funds β†’ Repay debt β†’ Health restored +``` + +**Best for**: Users who want set-and-forget yield generation with automatic protection. + +### Pattern 3: Liquidity Provision + +**Use case**: Automatically provide liquidity with borrowed funds. + +**Setup**: +- DrawDownSink: DEX liquidity pool +- TopUpSource: DEX liquidity pool + +**Flow**: +``` +Deposit collateral β†’ Borrow MOET β†’ Add to LP β†’ Earn trading fees +Needs rebalancing β†’ Exit LP position β†’ Repay debt +``` + +**Best for**: Users wanting to earn trading fees on borrowed capital. + +### Pattern 4: Cross-Position Leverage + +**Use case**: Lever position across multiple accounts. + +**Setup**: +- Position 1 DrawDownSink: Position 2 Sink +- Position 2 TopUpSource: Position 1 Source + +**Flow**: +``` +Position 1 borrows β†’ Flows to Position 2 β†’ Position 2 borrows β†’ Repeat +Creates leveraged exposure with automatic risk management +``` + +**Best for**: Advanced users creating complex strategies. + +## Real-World Example: FCM with FYV + +Let's see how a complete FCM setup works with DeFi Actions: + +### Initial Setup + +**You deposit**: 1000 FLOW into ALP position + +**Configuration**: +``` +Position.DrawDownSink = FYV Strategy Sink +Position.TopUpSource = FYV Strategy Source +``` + +### Auto-Borrowing (Overcollateralized) + +``` +1. ALP calculates: Can safely borrow 615 MOET +2. ALP auto-borrows: 615 MOET +3. ALP pushes via DrawDownSink: 615 MOET β†’ FYV +4. FYV swaps: 615 MOET β†’ 615 YieldToken +5. FYV holds: YieldToken, generating yield +``` + +### Price Drop Response (Undercollateralized) + +``` +1. FLOW price drops 20% +2. ALP detects: Health = 1.04 (below 1.1 minimum) +3. ALP calculates: Need to repay 123 MOET +4. ALP pulls via TopUpSource: Request 123 MOET from FYV +5. FYV swaps: 123 YieldToken β†’ 123 MOET +6. FYV provides: 123 MOET to ALP +7. ALP repays: 123 MOET debt +8. Health restored: 1.3 βœ“ +``` + +**Result**: Your yield automatically prevented liquidation! + +## Safety & Best Practices + +### Built-in Safety Features + +1. **Access Control**: Only position owner can create Sources/Sinks +2. **Type Validation**: Ensures token types match +3. **Balance Checks**: Validates sufficient funds before operations +4. **Error Handling**: Graceful failures with clear messages + +### Best Practices + +**Do**: +- βœ… Always configure both DrawDownSink AND TopUpSource for full automation +- βœ… Ensure TopUpSource has sufficient liquidity +- βœ… Monitor your position health regularly +- βœ… Test with small amounts first +- βœ… Understand the external protocol you're integrating with + +**Don't**: +- ❌ Leave TopUpSource empty if you want liquidation protection +- ❌ Assume TopUpSource has unlimited funds +- ❌ Create circular dependencies between positions +- ❌ Ignore gas costs of complex strategies + +### Common Pitfalls + +1. **Insufficient TopUpSource Liquidity** + - **Problem**: TopUpSource runs dry during rebalancing + - **Solution**: Monitor TopUpSource balance, add buffer funds + +2. **Token Type Mismatches** + - **Problem**: Sink expects MOET but receives FLOW + - **Solution**: Always verify token types match + +3. **Gas Limitations** + - **Problem**: Complex DeFi Actions chains hit gas limits + - **Solution**: Simplify strategies or split into multiple transactions + +## Advanced Topics + +:::info For Developers +Looking to build complex strategies? Here are advanced patterns: + +### Multi-Protocol Stacks +Chain multiple protocols together for sophisticated strategies: +``` +ALP β†’ Swap β†’ Farm β†’ Stake β†’ Compound +``` + +### Yield Optimization +Automatically rebalance between multiple positions based on yield: +``` +Monitor yields β†’ Move funds from low-yield β†’ Deploy to high-yield +``` + +### Flash Loan Integration +Use ALP with flash loans for arbitrage opportunities (advanced). + +See [GitHub examples](https://github.com/onflow/FlowCreditMarket/tree/main/examples) for code samples. +::: + +## Summary + +**DeFi Actions enables**: +- πŸ”— Seamless protocol integration +- πŸ€– Automated value flows +- πŸ›‘οΈ Liquidation protection via yield +- 🎯 Complex strategy composition + +**Key patterns**: +- **Sink**: Where funds go (DrawDownSink) +- **Source**: Where funds come from (TopUpSource) +- **Integration**: Connect ALP with FYV, DEXs, farms, etc. + +**FCM's innovation**: Using FYV as both DrawDownSink AND TopUpSource creates yield-powered liquidation prevention - the yield you earn automatically protects your position! + +## Mathematical Foundation + +DeFi Actions enable automated position management based on mathematical rules: +- **Auto-Borrowing Triggers**: [Auto-Borrowing Mathematics](../fcm/math.md#auto-borrowing-mathematics) +- **Rebalancing Calculations**: [Rebalancing Mathematics](../fcm/math.md#rebalancing-mathematics) +- **Health Factor Monitoring**: [Health Factor Formula](../fcm/math.md#health-factor) + +## Next Steps + +- **Learn about MOET**: [MOET's Role](./moet-role.md) +- **Explore rebalancing**: [Rebalancing Mechanics](./rebalancing.md) +- **See the big picture**: [FCM Architecture](../fcm/architecture.md) +- **Understand position lifecycle**: [Position Lifecycle](./position-lifecycle.md) + +--- + +:::tip Key Takeaway +DeFi Actions is the "glue" that makes FCM work. It connects ALP's automated lending with FYV's yield strategies, enabling the unique liquidation prevention mechanism that sets FCM apart from traditional lending protocols. +::: diff --git a/docs/defi/alp/index.md b/docs/defi/alp/index.md new file mode 100644 index 0000000000..9f5a2899ca --- /dev/null +++ b/docs/defi/alp/index.md @@ -0,0 +1,95 @@ +--- +title: Automated Lending Platform (ALP) +sidebar_label: Overview +sidebar_position: 1 +--- + +# Automated Lending Platform (ALP) + +The Automated Lending Platform (ALP) is the core lending protocol component of [Flow Credit Market (FCM)](../fcm/index.md). ALP provides the foundational lending and borrowing infrastructure with automated position management and liquidation protection. + +:::info +ALP is one of three core components that make up FCM: ALP (Automated Lending Platform) provides the lending/borrowing engine, [Flow Yield Vaults (FYV)](../flow-yield-vaults/index.md) handles yield aggregation strategies, and [MOET](../moet/index.md) serves as the synthetic stablecoin and unit of account. +::: + +## What is ALP? + +ALP is a decentralized lending protocol that enables users to deposit collateral to create lending positions, borrow assets against their collateral up to their borrowing limit, earn interest on deposits, and maintain positions through automated rebalancing. + +The protocol uses MOET as its primary unit of account and default borrowed asset, with all prices quoted in MOET terms. + +## Key Innovation: Automated Rebalancing + +ALP's standout feature is its **automated rebalancing** system that uses DeFi Actions to maintain optimal position health. When overcollateralized (health > 1.5), the system automatically borrows more to maximize capital efficiency. When undercollateralized (health < 1.1), it automatically repays debt using yield from FYV. The protocol targets a health range of 1.1 to 1.5 for balanced risk/reward, and prevents liquidations by pulling from TopUpSource (often FYV strategies) when needed. + +### Integration with FYV + +ALP's unique liquidation prevention mechanism leverages yield from Flow Yield Vaults: + +1. User deposits collateral into ALP position +2. ALP auto-borrows MOET to reach target health +3. Borrowed MOET flows into FYV strategy (via DrawDownSink) +4. FYV generates yield on the borrowed MOET +5. If collateral price drops, ALP pulls from FYV (via TopUpSource) to prevent liquidation +6. **Result**: Yield helps maintain position health automatically + +## Core Components + +The protocol consists of four key components: the **Pool** serves as the central contract managing all positions and reserves; each **Position** represents a user's credit account tracking collateral and debt; **TokenState** maintains per-token state including interest indices; and the **Health Factor** measures the ratio of collateral to debt (which must stay above 1.0). + +Learn more in [Architecture Overview](./architecture.md). + +## Documentation Sections + +### Core Concepts +- [Architecture Overview](./architecture.md) - Core components and system design +- [Credit Market Mechanics](./credit-market-mechanics.md) - How lending and borrowing works +- [Position Lifecycle](./position-lifecycle.md) - Creating, managing, and closing positions + +### Advanced Features +- [Rebalancing](./rebalancing.md) - Automated position management +- [Liquidation System](./liquidation-system.md) - Liquidation triggers and mechanisms +- [DeFi Actions](./defi-actions.md) - Protocol composability framework +- [MOET's Role](./moet-role.md) - The unit of account in ALP + +## How ALP Fits into FCM + +```mermaid +graph TB + User[User] -->|Deposits Collateral| ALP[ALP Position] + ALP -->|Auto-borrows MOET| MOET[MOET Token] + MOET -->|Via DrawDownSink| FYV[FYV Strategy] + FYV -->|Generates Yield| Yield[Yield Tokens] + + Price[Price Drop] -.->|Triggers Rebalancing| ALP + ALP -->|Pulls Funds| FYV + FYV -->|Via TopUpSource| ALP + ALP -->|Repays Debt| MOET + + style ALP fill:#f9f,stroke:#333,stroke-width:4px + style FYV fill:#bbf,stroke:#333,stroke-width:2px + style MOET fill:#bfb,stroke:#333,stroke-width:2px +``` + +## Getting Started with ALP + +To use ALP directly: + +1. Ensure you have Flow tokens or other supported collateral +2. Connect your wallet to the Flow blockchain +3. Create a position by depositing collateral +4. Configure DrawDownSink and TopUpSource for automation +5. Monitor your position health + +For most users, we recommend using **[Flow Credit Market (FCM)](../fcm/index.md)** which provides a complete solution combining ALP, FYV, and MOET. + +## Resources + +- [ALP GitHub Repository](https://github.com/onflow/FlowCreditMarket) (FlowCreditMarket contract) +- [Flow Credit Market (FCM)](../fcm/index.md) - The complete product +- [MOET Token Documentation](../moet/index.md) +- [Flow Documentation](https://developers.flow.com) + +## Security Considerations + +ALP includes multiple safety features to protect users and the protocol. The system implements oracle staleness checks and deviation guards to ensure price accuracy, enforces warm-up periods after unpausing liquidations to prevent immediate exploits, provides slippage protection for DEX routes during trades, and continuously monitors health factors with alerts. Always monitor your position health and ensure sufficient collateral to avoid liquidation. diff --git a/docs/defi/alp/liquidation-system.md b/docs/defi/alp/liquidation-system.md new file mode 100644 index 0000000000..4466f7a804 --- /dev/null +++ b/docs/defi/alp/liquidation-system.md @@ -0,0 +1,683 @@ +--- +title: Liquidation System +sidebar_position: 4 +--- + +# Liquidation System + +Liquidations are a critical safety mechanism in ALP that protect the protocol from insolvency. When a position becomes undercollateralized, it can be liquidated to restore the protocol's health and protect lenders. + +## Understanding Liquidations + +### What is Liquidation? + +Liquidation is the process of forcibly closing or partially closing an undercollateralized position by: + +1. Seizing some of the borrower's collateral +2. Using it to repay outstanding debt +3. Returning the position to a healthy state +4. Incentivizing the liquidator with a bonus + +```mermaid +graph LR + A[Position
HF < 1.0] --> B[Liquidator
Detected] + B --> C[Seize
Collateral] + C --> D[Repay
Debt] + D --> E[Position
HF = 1.05 βœ“] + D --> F[Liquidator
Gets Bonus] + + style A fill:#fbb + style E fill:#bfb + style F fill:#bfb +``` + +### Why Liquidations are Necessary + +Liquidations protect the protocol by preventing insolvency through ensuring debt is always backed by sufficient collateral, protecting lenders by guaranteeing depositors can withdraw their funds, maintaining stability by keeping the system solvent during market volatility, and incentivizing monitoring by rewarding participants who help maintain protocol health. + +## Liquidation Triggers + +### Health Factor Threshold + +A position becomes **liquidatable** when its health factor falls below the trigger threshold: + +``` +Liquidation Trigger: Health Factor < 1.0 +``` + +```mermaid +graph TD + subgraph "Health Factor Zones" + Safe[HF β‰₯ 1.1
Safe Zone] + Risk[HF: 1.0 - 1.1
At Risk] + Liq[HF < 1.0
LIQUIDATABLE] + end + + Safe --> Price1[Collateral Price Drop] + Safe --> Price2[Interest Accrual] + Price1 --> Risk + Price2 --> Risk + Risk --> Price3[Further Price Drop] + Price3 --> Liq + + Liq --> Action[Liquidation
Triggered] + + style Safe fill:#bfb + style Risk fill:#ffa + style Liq fill:#fbb + style Action fill:#f00,color:#fff +``` + +**What causes health factor to drop**: + +1. **Collateral price decreases** + - Your FLOW drops from $1 to $0.80 + - Effective collateral value falls + - Health factor decreases proportionally + +2. **Debt accumulation** + - Interest accrues on borrowed amount + - Debt grows over time + - Health factor gradually decreases + +3. **Combination of factors** + - Collateral price drops while interest accrues + - Multiple collateral types move differently + - Debt token price increases relative to collateral + +### Liquidation Target Health + +When a position is liquidated, it's brought to a **target health factor**: + +``` +Liquidation Target Health: 1.05 +``` + +This means not all collateral is seizedβ€”only enough to restore the position to a health factor of 1.05. The position remains open after partial liquidation, and the borrower retains their remaining collateral. + +### Example Liquidation Scenario + +```mermaid +sequenceDiagram + participant Price + participant Position + participant Liquidator + participant Protocol + + Note over Position: Initial: HF = 1.30 βœ“
1000 FLOW @ $1
Debt: 615 MOET + + Price->>Position: FLOW drops to $0.75 + Position->>Position: HF = 0.975 βœ— + + Liquidator->>Liquidator: Detect HF < 1.0! + Liquidator->>Protocol: Liquidate position + Protocol->>Position: Seize ~$146 collateral + Protocol->>Position: Repay debt + Protocol->>Liquidator: Transfer collateral + bonus + + Note over Position: After: HF = 1.05 βœ“
Remaining collateral
Debt partially repaid +``` + +**Numeric example**: +``` +Initial State (Healthy): +- Collateral: 1000 FLOW @ $1 = $1000, factor 0.8 = $800 effective +- Debt: 615.38 MOET @ $1 = $615.38 +- Health Factor: 800 / 615.38 = 1.30 βœ“ + +After FLOW Price Drops to $0.75: +- Collateral: 1000 FLOW @ $0.75 = $750, factor 0.8 = $600 effective +- Debt: 615.38 MOET @ $1 = $615.38 +- Health Factor: 600 / 615.38 = 0.975 βœ— LIQUIDATABLE + +After Liquidation to Target HF 1.05: +- Required effective collateral: 615.38 * 1.05 = $646.15 +- Collateral seized: ~$146.15 worth at market price +- Remaining collateral: ~$453.85 effective +- Health Factor: 646.15 / 615.38 = 1.05 βœ“ +``` + +## Liquidation Mechanisms + +ALP implements three distinct liquidation paths to ensure positions can always be liquidated efficiently. + +```mermaid +graph TB + Liquidatable[Position HF < 1.0] + + Liquidatable --> Path1[Keeper
Repay-for-Seize] + Liquidatable --> Path2[Protocol
DEX Liquidation] + Liquidatable --> Path3[Auto-Liquidation] + + Path1 --> K1[Keeper repays debt] + K1 --> K2[Receives collateral
+ bonus] + + Path2 --> D1[Protocol seizes
collateral] + D1 --> D2[Swaps via DEX
for debt token] + D2 --> D3[Repays position debt] + + Path3 --> A1[Scheduled scan] + A1 --> A2[Batch liquidates
multiple positions] + A2 --> A3[Uses DEX path] + + K2 --> Result[Position HF = 1.05 βœ“] + D3 --> Result + A3 --> Result + + style Liquidatable fill:#fbb + style Result fill:#bfb +``` + +### 1. Keeper Repay-for-Seize + +**How it works**: +1. A keeper (third-party participant) detects an undercollateralized position +2. Keeper repays debt with their own funds +3. Protocol calculates collateral to seize (debt repaid + liquidation bonus) +4. Keeper receives seized collateral +5. Position is brought to target health factor (1.05) + +```mermaid +sequenceDiagram + participant Keeper + participant Protocol + participant Position + + Keeper->>Keeper: Detect position #42
HF = 0.98 + Keeper->>Protocol: Repay 100 MOET debt + Protocol->>Position: Reduce debt by 100 + Protocol->>Protocol: Calculate:
100 + 10% bonus = 110 value + Protocol->>Position: Seize equivalent collateral + Position->>Keeper: Transfer ~108 FLOW + Protocol->>Position: Update HF = 1.05 βœ“ + + Note over Keeper,Position: Keeper profits ~8 MOET value +``` + +**Key characteristics**: The system is permissionlessβ€”anyone can act as a keeperβ€”and incentivized, with keepers earning a liquidation bonus (typically 5-10%). It's precise, using only the exact amount needed, and instant, with a single transaction resolving the liquidation. + +**Benefits**: This approach enables fast response to undercollateralization, distributed monitoring through many keepers, market-driven efficiency, and eliminates protocol DEX dependency. + +### 2. Protocol DEX Liquidation + +**How it works**: +1. Protocol detects undercollateralized position +2. Protocol seizes collateral from position +3. Protocol swaps collateral via allowlisted DEX +4. Swap output is used to repay debt +5. Any remainder is returned appropriately +6. Position is brought to target health factor + +```mermaid +sequenceDiagram + participant Protocol + participant Position + participant DEX + participant Oracle + + Protocol->>Position: Detect HF = 0.98 + Protocol->>Oracle: Get FLOW price + Oracle-->>Protocol: $0.98 per FLOW + Protocol->>Position: Seize 150 FLOW + Protocol->>DEX: Swap 150 FLOW + DEX-->>Protocol: Return ~147 MOET + Protocol->>Protocol: Check slippage
vs oracle price + Protocol->>Position: Repay 147 MOET + Position->>Position: HF = 1.05 βœ“ + + Note over Protocol,Position: Slippage protection ensures
fair liquidation price +``` + +**Key characteristics**: Protocol DEX liquidation is protocol-executed (no external keeper needed), integrates with decentralized exchanges for swaps, includes slippage protection through maximum deviation checks versus oracle prices, and can be automated by either the protocol or keepers. + +**Slippage Protection**: + +The protocol ensures the DEX price doesn't deviate too much from the oracle price, preventing manipulation and unfair liquidations. + +**Example Flow**: +``` +Position #42: 1000 FLOW collateral, 650 MOET debt, HF = 0.98 +↓ +Protocol seizes 150 FLOW +↓ +Swaps via DEX: 150 FLOW β†’ ~147 MOET (with slippage check) +↓ +Repays 147 MOET to position debt +↓ +Position: 850 FLOW collateral, 503 MOET debt, HF = 1.05 βœ“ +``` + +### 3. Auto-Liquidation + +**How it works**: +1. Scheduled automation or keeper triggers scan +2. System identifies all undercollateralized positions +3. For each position, executes DEX liquidation path +4. Subject to same oracle and DEX safety checks +5. Events emitted for each liquidation + +```mermaid +graph TD + Timer[Scheduled
Trigger] --> Scan[Scan All
Positions] + Scan --> Check{HF < 1.0?} + Check -->|Yes| Batch[Add to
Liquidation Batch] + Check -->|No| Skip[Skip] + Batch --> Max{Reached
max batch?} + Max -->|No| Check + Max -->|Yes| Execute[Execute DEX
Liquidations] + Execute --> Events[Emit
Events] + + style Execute fill:#f9f,stroke:#333,stroke-width:2px +``` + +**Key characteristics**: Auto-liquidation can run on a scheduled timer (e.g., every block or every minute), handle multiple positions through batch processing, apply the same warm-up and deviation safety checks, and provide detailed event logging per position. + +**Benefits**: This mechanism provides hands-free liquidation protection, guaranteed execution that's not dependent on keeper availability, integration capability with off-chain automation, and serves as a protocol safety net. + +## Safety Features + +ALP includes multiple safety mechanisms to ensure liquidations are fair and protect against manipulation. + +```mermaid +graph TB + subgraph "Safety Layers" + S1[Oracle Staleness
Checks] + S2[Oracle Deviation
Guards] + S3[DEX Price
Deviation] + S4[Liquidation
Warm-up] + S5[Circuit
Breakers] + end + + Liquidation[Liquidation
Request] --> S1 + S1 -->|Pass| S2 + S2 -->|Pass| S3 + S3 -->|Pass| S4 + S4 -->|Pass| S5 + S5 -->|Pass| Execute[Execute
Liquidation] + + S1 -->|Fail| Revert[Revert:
Stale price] + S2 -->|Fail| Revert2[Revert:
Large deviation] + S3 -->|Fail| Revert3[Revert:
DEX manipulation] + S4 -->|Fail| Revert4[Revert:
Still warming up] + S5 -->|Fail| Revert5[Revert:
Paused] + + style Execute fill:#bfb +``` + +### Oracle Staleness Checks + +Prices must be recent and valid: + +``` +- Maximum age: staleThreshold (typically 5 minutes) +- If price is too old: liquidation reverts +- Per-token configuration: different tokens can have different thresholds +``` + +**Why this matters**: +- Prevents liquidations based on stale/incorrect prices +- Ensures fairness during oracle downtime +- Protects borrowers from false liquidations + +### Oracle Deviation Guards + +Large price movements are checked: + +``` +maxDeviationBps: Maximum change vs last price snapshot +Example: 1000 bps = 10% maximum deviation + +If price moves >10% in single update: +- Liquidation may be paused or rejected +- Additional verification required +- Protects against oracle manipulation +``` + +### DEX Price Deviation + +For DEX-based liquidations, the swap price must align with oracle: + +``` +dexOracleDeviationBps: Maximum deviation between DEX and oracle + +Example: +- Oracle price: 1 FLOW = 1 MOET +- DEX swap: 150 FLOW β†’ 145 MOET +- Deviation: ~3.3% β‰ˆ 333 bps + +If deviation > dexOracleDeviationBps: +- Liquidation reverts +- Prevents MEV exploitation +- Ensures fair liquidation prices +``` + +### Liquidation Warm-up Period + +After the protocol is unpaused, liquidations have a warm-up delay: + +```mermaid +timeline + title Protocol Unpause Timeline + Paused : Protocol offline + : No operations allowed + T+0 : Protocol unpauses + : Trading resumes + : Liquidations still disabled + T+300s : Warm-up complete + : Liquidations enabled + : Full functionality restored +``` + +**Configuration**: +``` +liquidationWarmupSec: Delay after unpause before liquidations enabled +Example: 300 seconds (5 minutes) + +Why: +- Gives borrowers time to add collateral +- Prevents immediate liquidations after downtime +- Allows prices to stabilize +``` + +### Circuit Breakers + +Protocol can pause liquidations in emergencies: + +``` +liquidationsPaused: Boolean flag + +When true: +- All liquidation functions revert +- Positions cannot be liquidated +- Borrowing may also be restricted +- Used during emergencies, upgrades, or oracle issues +``` + +## Liquidation Incentives + +### Liquidation Bonus + +Keepers earn a bonus for performing liquidations: + +```mermaid +graph LR + Keeper[Keeper Repays
100 MOET] --> Protocol[Protocol
Calculates] + Protocol --> Bonus[Seize Value:
108 MOET equivalent] + Bonus --> Profit[Keeper Profit:
8 MOET 8% bonus] + + style Profit fill:#bfb,stroke:#333,stroke-width:2px +``` + +**Example**: +``` +Typical bonus: 5-10% of repaid debt + +- Keeper repays: 100 MOET +- Collateral value at liquidation bonus: ~108 MOET equivalent +- Keeper profit: ~8 MOET (8% bonus) + +Formula: +Collateral Seized = (Debt Repaid * (1 + Liquidation Bonus)) / Collateral Price +``` + +### Economic Dynamics + +```mermaid +graph TD + subgraph "Liquidation Economics" + A[Small Position] --> A1[Low profit
after gas] + A1 --> A2[May not be liquidated
by keepers] + + B[Large Position] --> B1[High profit
covers gas easily] + B1 --> B2[Attractive to keepers] + + A2 --> Backup[Auto-liquidation
provides backup] + B2 --> Competition[Multiple keepers
compete] + end + + style Backup fill:#bfb + style Competition fill:#bbf +``` + +**Considerations**: +- **Gas Costs**: Profitability = Liquidation Bonus - Gas Costs +- **Position Size**: Small positions may not be profitable to liquidate +- **Competition**: Multiple keepers compete for liquidations (first come, first served) +- **MEV**: Sophisticated keepers may use advanced techniques +- **Safety Net**: Auto-liquidation provides backup for unprofitable liquidations + +## Liquidation Events and Monitoring + +### Monitoring Your Position + +```mermaid +graph TD + Monitor[Monitor Health Factor] --> Check{HF Status?} + + Check -->|HF > 1.3| Safe[Safe
Continue monitoring] + Check -->|HF: 1.1-1.3| Warning[Early Warning
Consider adding collateral] + Check -->|HF: 1.0-1.1| Urgent[Urgent!
Immediate action needed] + Check -->|HF < 1.0| Critical[CRITICAL
Position liquidatable!] + + Warning --> Actions1[Add collateral
or repay debt] + Urgent --> Actions2[Add substantial collateral
or repay significant debt] + Critical --> Actions3[Emergency measures
May be too late] + + style Safe fill:#bfb + style Warning fill:#ffa + style Urgent fill:#fbb + style Critical fill:#f00,color:#fff +``` + +To avoid liquidation, you should set up alerts to monitor when health factor drops below 1.3, watch collateral token prices closely, monitor interest accrual since debt grows over time, use automation through auto-rebalancing or auto-repayment, and maintain a safety buffer by keeping your health factor well above 1.1. + +### Liquidation Warning Signs + +**Early warnings** (HF = 1.3 β†’ 1.1): +- Time to add collateral or repay debt +- Rebalancing may trigger automatically +- Still safe but approaching risk zone + +**Urgent warnings** (HF = 1.1 β†’ 1.0): +- Immediate action required +- Liquidation imminent if health continues to drop +- Add substantial collateral or repay significant debt + +**Critical** (HF < 1.0): +- Position is liquidatable +- May be liquidated at any moment +- Severe consequences (loss of collateral with liquidation penalty) + +## Protecting Against Liquidation + +### Protection Strategies + +```mermaid +graph LR + subgraph "Prevention Strategies" + S1[Conservative
Collateralization
HF > 1.5] + S2[Diversified
Collateral
Multiple tokens] + S3[Regular
Monitoring
Daily checks] + S4[Quick Response
TopUpSource
configured] + S5[Stable
Collateral
Lower volatility] + end + + S1 --> Protection[Liquidation
Protection] + S2 --> Protection + S3 --> Protection + S4 --> Protection + S5 --> Protection + + style Protection fill:#bfb,stroke:#333,stroke-width:3px +``` + +1. **Conservative collateralization**: + - Target health factor > 1.5 + - Provides buffer against price drops + - Reduces liquidation risk + +2. **Diversified collateral**: + - Use multiple token types + - Reduces impact of single token price drop + - Improves overall stability + +3. **Regular monitoring**: + - Check health factor daily + - Set up alerts and notifications + - Use automation tools + +4. **Quick response capability**: + - Keep liquid funds available + - Set up TopUpSource for auto-repayment + - Have repayment transactions ready + +5. **Use stable collateral**: + - Stablecoins have lower volatility + - Higher collateral factors + - More predictable liquidation risk + +### Recovery from Near-Liquidation + +If your health factor is approaching 1.0, you have three options: + +```mermaid +graph TD + Crisis[Health Factor < 1.1
Approaching Liquidation] --> Option1[Option 1:
Add Collateral] + Crisis --> Option2[Option 2:
Repay Debt] + Crisis --> Option3[Option 3:
Trigger Rebalancing] + + Option1 --> Deposit[Deposit more tokens] + Deposit --> Result1[Increases effective collateral
Improves HF] + + Option2 --> Repay[Repay MOET debt] + Repay --> Result2[Decreases debt
Improves HF] + + Option3 --> AutoPull[Auto-pulls from TopUpSource] + AutoPull --> Result3[Automatically repays debt
Improves HF] + + Result1 --> Safe[Health Factor > 1.1 βœ“] + Result2 --> Safe + Result3 --> Safe + + style Crisis fill:#fbb + style Safe fill:#bfb +``` + +:::info For Developers +```cadence +// Option 1: Add collateral +position.deposit(collateralVault: <-additionalFLOW) + +// Option 2: Repay debt +position.repay(repaymentVault: <-moetRepayment) + +// Option 3: Trigger rebalancing (if TopUpSource configured) +pool.rebalancePosition(pid: yourPositionID, force: true) +``` + +See [GitHub](https://github.com/onflow/FlowCreditMarket) for complete API documentation. +::: + +## Advanced Topics + +### Partial vs Full Liquidation + +```mermaid +graph LR + Position[Liquidatable
Position] --> Check{Sufficient
collateral?} + + Check -->|Yes| Partial[Partial Liquidation] + Partial --> P1[Seize portion
of collateral] + P1 --> P2[Repay portion
of debt] + P2 --> P3[HF = 1.05
Position remains open] + + Check -->|No| Full[Full Liquidation
Rare case] + Full --> F1[Seize all
collateral] + F1 --> F2[Repay maximum
possible debt] + F2 --> F3[Position closed
Protocol may take loss] + + style Partial fill:#bbf + style Full fill:#fbb +``` + +- **Partial liquidation**: Position brought to target health (1.05), remains open (most common) +- **Full liquidation**: Rare; only if position value can't cover debt + bonus + +### Multi-Collateral Liquidations + +When position has multiple collateral types: +- Liquidation logic prioritizes based on configuration +- May seize from multiple collateral types +- Calculation ensures fair distribution + +### Flash Loan Liquidations + +Advanced keepers may use flash loans for zero-capital liquidations: + +```mermaid +sequenceDiagram + participant Keeper + participant FlashLoan + participant Protocol + participant DEX + + Keeper->>FlashLoan: Flash borrow MOET + FlashLoan-->>Keeper: 100 MOET (+ fee) + Keeper->>Protocol: Liquidate with borrowed MOET + Protocol-->>Keeper: Receive collateral + Keeper->>DEX: Swap collateral β†’ MOET + DEX-->>Keeper: ~108 MOET + Keeper->>FlashLoan: Repay 100 MOET + fee + Keeper->>Keeper: Keep profit! + + Note over Keeper: No upfront capital needed! +``` + +This allows liquidations without upfront capital. + +## Summary + +**Liquidation Triggers**: +- 🚨 Health Factor < 1.0 (undercollateralized) +- πŸ“‰ Collateral price drops or interest accrual +- 🎯 Target: Restore HF to 1.05 after liquidation + +**Three Liquidation Paths**: +1. **Keeper Repay-for-Seize**: Third parties repay debt, earn bonus +2. **Protocol DEX Liquidation**: Automated swap and repayment +3. **Auto-Liquidation**: Scheduled batch processing + +**Safety Features**: +- βœ… Oracle staleness checks +- βœ… Oracle deviation guards +- βœ… DEX price deviation limits +- βœ… Liquidation warm-up periods +- βœ… Circuit breakers for emergencies + +**Protection Strategies**: +- Maintain HF > 1.5 for safety buffer +- Set up TopUpSource for auto-protection +- Monitor positions regularly +- Use stable collateral when possible +- Diversify collateral types + +## Mathematical Foundation + +For detailed liquidation formulas and calculations: +- **Liquidation Trigger Math**: [Liquidation Mathematics](../fcm/math.md#liquidation-mathematics) +- **Collateral Seized Calculation**: [Collateral Seized Formula](../fcm/math.md#collateral-seized-calculation) +- **Health Factor Formulas**: [Health Factor Definition](../fcm/math.md#health-factor) +- **Maximum Price Drop**: [Safe Price Drop Calculations](../fcm/math.md#maximum-safe-price-drop) + +## Next Steps + +- **Understand automation**: [Rebalancing Mechanics](./rebalancing.md) +- **See the big picture**: [Position Lifecycle](./position-lifecycle.md) +- **Explore credit mechanics**: [Credit Market Mechanics](./credit-market-mechanics.md) +- **Learn prevention strategies**: [FCM Yield-Powered Protection](../fcm/basics.md#yield-powered-liquidation-prevention) + +--- + +:::tip Key Takeaway +Liquidations are a last resort safety mechanism. With proper monitoring, conservative collateralization, and automation (especially [FCM's yield-powered protection](../fcm/basics.md#yield-powered-liquidation-prevention)), you can avoid liquidation entirely. The system is designed to give you ample warning and multiple recovery options before liquidation occurs. +::: diff --git a/docs/defi/alp/moet-role.md b/docs/defi/alp/moet-role.md new file mode 100644 index 0000000000..870ee234ca --- /dev/null +++ b/docs/defi/alp/moet-role.md @@ -0,0 +1,437 @@ +--- +title: MOET's Role in ALP +sidebar_position: 8 +--- + +# MOET's Role in ALP + +MOET plays a central role in ALP as the default token and primary unit of account. Understanding MOET's function is essential for effectively using ALP and [Flow Credit Market (FCM)](../fcm/index.md). + +## What is MOET? + +**MOET** is a fungible token on Flow that serves as: +- πŸ’° **The primary borrowed asset** - What you borrow from ALP +- πŸ“Š **The unit of account** - All prices quoted in MOET terms +- πŸ”„ **The rebalancing medium** - Used for all automated operations +- πŸŒ‰ **The value bridge** - Flows between ALP and FYV + +For more about MOET tokenomics, see the [MOET documentation](../moet/index.md). + +## MOET as Unit of Account + +Think of MOET as the "common language" for all value in ALP - like how everything in a store is priced in dollars. + +### All Prices in MOET Terms + +```mermaid +graph TD + MOET[MOET
Unit of Account] + MOET --> FLOW[FLOW = 1.0 MOET] + MOET --> USDC[USDC = 1.0 MOET] + MOET --> stFLOW[stFLOW = 1.05 MOET] + MOET --> Other[Other tokens...] + + style MOET fill:#fbb,stroke:#333,stroke-width:4px +``` + +**Why this matters**: Using MOET as the unit of account simplifies calculations by expressing all values in one currency, standardizes pricing consistently across all tokens, enables multi-collateral positions by making it easy to compare different assets, and provides unified risk management through a single health metric. + +**Health factor calculation example**: +``` +Collateral: 1000 FLOW @ 1.0 MOET each Γ— 0.8 factor = 800 MOET value +Debt: 615.38 MOET +Health Factor = 800 / 615.38 = 1.30 + +All in MOET terms = Simple and consistent! +``` + +:::tip Why Not Just Use USD? +MOET is designed specifically for Flow DeFi, ensuring deep on-chain liquidity, native protocol integration, optimized performance for Flow operations, and better composability with FYV and other protocols. +::: + +## MOET in the Auto-Borrowing Flow + +When you deposit collateral with auto-borrowing enabled, MOET is what you borrow: + +```mermaid +sequenceDiagram + participant User + participant ALP + participant MOET + + User->>ALP: Deposit 1000 FLOW + ALP->>ALP: Calculate: 1000 Γ— 0.8 = 800 effective + ALP->>ALP: Target health: 1.3 + ALP->>ALP: Can borrow: 800 / 1.3 = 615.38 + ALP->>MOET: Auto-borrow 615.38 MOET + MOET->>User: Receive 615.38 MOET + ALP->>ALP: Health = 1.3 βœ“ + + Note over User,MOET: All automatic, no manual steps! +``` + +**Why MOET?** +1. **Standardization**: One primary asset simplifies everything +2. **Liquidity**: MOET designed for high liquidity +3. **Predictability**: You always know what you'll receive +4. **Efficiency**: No token choice complexity + +## MOET in Rebalancing + +### Overcollateralized: Borrow More MOET + +When health rises above 1.5 (too safe), ALP automatically borrows more MOET: + +```mermaid +graph LR + A[Health > 1.5
Too Safe] --> B[Calculate Excess] + B --> C[Auto-borrow MOET] + C --> D[Push to DrawDownSink] + D --> E[Health = 1.3 βœ“] + + style A fill:#bfb + style E fill:#bfb +``` + +**Example**: +``` +State: $1000 effective collateral, $400 MOET debt +Health: 1000 / 400 = 2.5 (way too high!) + +Action: Borrow 769.23 - 400 = 369.23 more MOET +Result: $1000 / $769.23 = 1.3 (perfect!) +``` + +### Undercollateralized: Repay MOET + +When health drops below 1.1 (risky), ALP automatically repays MOET debt: + +```mermaid +graph LR + A[Health < 1.1
Risky!] --> B[Calculate Shortfall] + B --> C[Pull from TopUpSource] + C --> D[Repay MOET debt] + D --> E[Health = 1.3 βœ“] + + style A fill:#fbb + style E fill:#bfb +``` + +**Example**: +``` +State: $640 effective collateral (price dropped!), $615.38 MOET debt +Health: 640 / 615.38 = 1.04 (danger zone!) + +Action: Repay 615.38 - 492.31 = 123.07 MOET +Result: $640 / $492.31 = 1.3 (safe again!) +``` + +**Math reference**: See [FCM Mathematical Foundations](../fcm/math.md#auto-borrowing-mathematics) for auto-borrowing formulas and [Rebalancing Mathematics](../fcm/math.md#rebalancing-mathematics) for rebalancing calculations. + +## MOET Flow Patterns + +### Pattern 1: Simple Borrowing + +**Use case**: Borrow MOET, use it yourself + +```mermaid +graph LR + User[Deposit FLOW] --> ALP[ALP Position] + ALP --> Auto[Auto-borrow MOET] + Auto --> Wallet[Your Wallet] + Wallet --> Use[Use MOET
Yield/Trading/etc] + + style ALP fill:#f9f,stroke:#333,stroke-width:2px +``` + +**Flow**: Collateral β†’ Borrow MOET β†’ You control it + +### Pattern 2: FCM Integration (Full Automation) + +**Use case**: Maximum automation with FYV + +```mermaid +graph TB + User[Deposit FLOW] --> ALP[ALP Position] + ALP -->|Auto-borrow| MOET[MOET] + MOET -->|DrawDownSink| FYV[FYV Strategy] + FYV -->|Generate Yield| Yield[Yield Tokens] + + Price[Price Drop] -.->|Triggers| Rebal[Rebalancing] + Rebal -->|Pull via TopUpSource| FYV + FYV -->|Provide MOET| ALP + ALP -->|Repay| MOET + ALP -->|Health Restored| Safe[Health = 1.3 βœ“] + + style ALP fill:#f9f,stroke:#333,stroke-width:3px + style FYV fill:#bfb,stroke:#333,stroke-width:3px + style MOET fill:#fbb,stroke:#333,stroke-width:2px +``` + +**Flow**: Collateral β†’ Auto-borrow MOET β†’ FYV β†’ Yield protects position! + +:::tip FCM's Innovation +This is why FCM is unique: Your MOET earnings from FYV automatically repay debt when needed. **Yield-powered liquidation prevention!** + +Learn more: [FCM Basics](../fcm/basics.md#1-yield-powered-liquidation-prevention) +::: + +### Pattern 3: Liquidity Provision + +**Use case**: Earn trading fees with borrowed MOET + +```mermaid +graph LR + Collateral[FLOW Collateral] --> ALP[ALP Position] + ALP -->|Borrow| MOET[MOET] + MOET -->|Add Liquidity| LP[LP Pool
MOET/FLOW] + LP -->|Earn| Fees[Trading Fees] + + style LP fill:#bbf,stroke:#333,stroke-width:2px +``` + +**Flow**: Collateral β†’ Borrow MOET β†’ LP Pool β†’ Earn trading fees + +### Pattern 4: Yield Arbitrage + +**Use case**: Profit from rate differentials + +```mermaid +graph LR + ALP[Borrow from ALP
5% APY] -->|MOET| Protocol[Lend to Protocol
8% APY] + Protocol -->|Earn| Spread[3% Spread
Profit!] + + style Spread fill:#bfb,stroke:#333,stroke-width:2px +``` + +**Flow**: Borrow MOET cheap β†’ Lend MOET expensive β†’ Keep spread + +## MOET in Liquidations + +### Keeper Liquidations + +Keepers repay MOET debt to seize collateral: + +```mermaid +sequenceDiagram + participant Keeper + participant ALP + participant Position + + Keeper->>Keeper: Detect HF < 1.0 + Keeper->>ALP: Repay 100 MOET + ALP->>Position: Reduce debt by 100 MOET + ALP->>Keeper: Seize collateral + bonus + Position->>Position: Health = 1.05 βœ“ + + Note over Keeper,Position: Keeper earns liquidation bonus +``` + +### Protocol DEX Liquidations + +Protocol swaps collateral to MOET automatically: + +```mermaid +graph LR + A[Liquidatable Position] --> B[Seize FLOW Collateral] + B --> C[Swap FLOW β†’ MOET
via DEX] + C --> D[Repay MOET Debt] + D --> E[Health Restored] + + style A fill:#fbb + style E fill:#bfb +``` + +**Example**: +``` +Position: 1000 FLOW, 650 MOET debt, HF = 0.98 +↓ +Seize: 150 FLOW +↓ +Swap: 150 FLOW β†’ 147 MOET (via DEX) +↓ +Repay: 147 MOET debt +↓ +Result: 850 FLOW, 503 MOET debt, HF = 1.05 βœ“ +``` + +## MOET Economics + +### Supply & Demand + +```mermaid +graph TB + subgraph Demand + D1[Users borrow for yield] + D2[Liquidators need MOET] + D3[Rebalancing operations] + D4[Protocol integrations] + end + + subgraph Supply + S1[MOET deposits as collateral] + S2[Debt repayments] + S3[Interest payments] + S4[Protocol reserves] + end + + Demand --> Market[MOET Market] + Supply --> Market + Market --> Rate[Interest Rates] + + style Market fill:#fbb,stroke:#333,stroke-width:3px +``` + +### Interest Rate Dynamics + +``` +Utilization = Total MOET Borrowed / Total MOET Available + +β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” +β”‚ Utilization β”‚ Interest Rate β”‚ Result β”‚ +β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ +β”‚ 0-80% (Low) β”‚ 2-8% APY β”‚ Cheap borrowing β”‚ +β”‚ 80-90% (Medium) β”‚ 8-20% APY β”‚ Balanced β”‚ +β”‚ 90-100% (High) β”‚ 20-50%+ APY β”‚ Discourages borrowβ”‚ +β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ +``` + +**Why it matters**: Low utilization makes MOET cheap to borrow, while high utilization makes borrowing expensive and encourages repayment. This dynamic allows the system to self-balance supply and demand. + +## Why MOET vs Other Tokens? + +### Comparison Table + +| Feature | MOET | FLOW | USDC | +|---------|------|------|------| +| Primary borrowed asset | βœ… Yes | ⚠️ Possible | ⚠️ Possible | +| Unit of account | βœ… Yes | ❌ No | ❌ No | +| Auto-borrow default | βœ… Yes | ❌ No | ❌ No | +| Rebalancing token | βœ… Yes | ❌ No | ❌ No | +| FCM integration | βœ… Deep | ⚠️ Moderate | ⚠️ Moderate | +| FYV integration | βœ… Native | ⚠️ Limited | ⚠️ Limited | + +### MOET Advantages + +1. **Designed for DeFi**: Built specifically for Flow DeFi operations +2. **High Liquidity**: Deep markets ensure efficient operations +3. **Composability**: Works seamlessly with FYV and other protocols +4. **Predictability**: Standard token across all FCM operations +5. **Efficiency**: Single token simplifies everything + +### Can I Use Other Tokens? + +Yes, but with limitations: + +:::info For Developers +You can manually borrow other tokens: +```cadence +// Borrow FLOW instead of MOET +let flowBorrowed <- position.borrow( + type: Type<@FlowToken.Vault>(), + amount: 100.0 +) +``` + +However: +- Auto-borrowing always uses MOET +- Rebalancing always uses MOET +- Health calculations still in MOET terms +- FYV integration requires MOET +::: + +## Best Practices + +### For Borrowers + +βœ… **Do**: +- Maintain MOET buffer in wallet for emergencies +- Set up TopUpSource with MOET for auto-protection +- Monitor MOET interest rates +- Diversify yield strategies with borrowed MOET + +❌ **Don't**: +- Assume MOET will always be cheap to borrow +- Put all borrowed MOET in one place +- Ignore MOET balance in TopUpSource +- Forget MOET debt accumulates interest + +### For Yield Seekers + +βœ… **Do**: +- Use full FCM integration (ALP + FYV) +- Let MOET flow automatically to FYV +- Let yield protect your position +- Monitor FYV MOET liquidity + +❌ **Don't**: +- Manually manage MOET if using FYV +- Interrupt the automated flow +- Remove MOET from FYV when position needs it + +## Real-World Example + +### Complete MOET Lifecycle + +```mermaid +graph TB + Start[User deposits
1000 FLOW] --> Calc[ALP calculates:
Can borrow 615 MOET] + Calc --> Borrow[Auto-borrow
615 MOET] + Borrow --> Deploy[MOET β†’ FYV
via DrawDownSink] + Deploy --> Earn[FYV generates
yield in MOET] + + Price[FLOW price
drops 20%] -.-> Detect[ALP detects
HF = 1.04] + Detect --> Need[Need 123 MOET
to rebalance] + Need --> Pull[Pull from FYV
via TopUpSource] + Pull --> Repay[Repay 123 MOET] + Repay --> Safe[Health = 1.3 βœ“
Liquidation avoided] + + style Start fill:#bbf + style Earn fill:#bfb + style Price fill:#fbb + style Safe fill:#bfb +``` + +**What happened**: +1. Deposited FLOW β†’ Auto-borrowed 615 MOET +2. MOET deployed to FYV β†’ Earned yield +3. Price dropped β†’ Position at risk +4. FYV provided 123 MOET β†’ Debt repaid +5. **Result**: Your MOET yield prevented liquidation! + +## Summary + +**MOET's Three Roles**: +1. πŸ’° **Borrowed Asset**: What you borrow from ALP +2. πŸ“Š **Unit of Account**: How all prices are quoted +3. πŸ”„ **Rebalancing Medium**: Flows between ALP and FYV + +**Key Points**: +- All auto-borrowing is in MOET +- All rebalancing uses MOET +- All health calculations in MOET terms +- MOET enables FCM's yield-powered liquidation prevention + +**Why MOET Matters**: +Without MOET as the standard, FCM's automation wouldn't work. MOET is the "common currency" that lets ALP and FYV communicate seamlessly, enabling the unique liquidation prevention mechanism. + +## Mathematical Foundation + +MOET is central to all FCM calculations: +- **Unit of Account**: All prices quoted in MOET terms - [Price Oracle](../fcm/math.md#core-variables) +- **Auto-Borrowing**: MOET amounts calculated from collateral - [Auto-Borrowing Math](../fcm/math.md#auto-borrowing-mathematics) +- **Rebalancing**: MOET flows restore health factor - [Rebalancing Math](../fcm/math.md#rebalancing-mathematics) +- **Health Factor**: All calculations in MOET terms - [Health Factor Formula](../fcm/math.md#health-factor) + +## Next Steps + +- **Understand automation**: [Rebalancing Mechanics](./rebalancing.md) +- **See the big picture**: [FCM Architecture](../fcm/architecture.md) +- **Deep dive on MOET**: [MOET Documentation](../moet/index.md) +- **Explore position management**: [Position Lifecycle](./position-lifecycle.md) + +--- + +:::tip Key Takeaway +MOET isn't just another token - it's the **backbone** of FCM. It standardizes pricing, enables automation, and makes yield-powered liquidation prevention possible. Think of it as the "blood" flowing through FCM's veins, carrying value between ALP and FYV. +::: diff --git a/docs/defi/alp/position-lifecycle.md b/docs/defi/alp/position-lifecycle.md new file mode 100644 index 0000000000..bbab748711 --- /dev/null +++ b/docs/defi/alp/position-lifecycle.md @@ -0,0 +1,533 @@ +--- +title: Position Lifecycle +sidebar_position: 5 +--- + +# Position Lifecycle + +A Position in ALP represents your lending account. Understanding the complete lifecycle from creation to closure helps you manage your positions effectively and maximize your DeFi strategy. + +## What is a Position? + +A **Position** tracks everything about your lending activity: + +- πŸ’° **Collateral deposits**: Assets you've deposited +- πŸ“Š **Debt obligations**: Amounts you've borrowed +- ❀️ **Health metrics**: Current safety status +- πŸ”— **DeFi connectors**: Automation via Sinks and Sources + +Think of it like a bank account, but for DeFi lending - it keeps track of what you own and what you owe. + +## Position Lifecycle Overview + +```mermaid +stateDiagram-v2 + [*] --> Created: Deposit Collateral + Created --> Healthy: Auto-borrow (optional) + Healthy --> Overcollateralized: Add Collateral / Repay Debt + Overcollateralized --> Healthy: Auto-borrow More + Healthy --> Undercollateralized: Price Drop / Interest + Undercollateralized --> Healthy: Auto-repay / Add Collateral + Undercollateralized --> AtRisk: Further Price Drop + AtRisk --> Undercollateralized: Emergency Action + AtRisk --> Liquidatable: HF < 1.0 + Liquidatable --> Undercollateralized: Partial Liquidation + Healthy --> [*]: Close Position + Overcollateralized --> [*]: Close Position + + note right of Created + Initial deposit + HF = ∞ (no debt) + end note + + note right of Healthy + HF: 1.1 - 1.5 + Target: 1.3 + end note + + note right of AtRisk + HF: 1.0 - 1.1 + Urgent action needed! + end note +``` + +## Creating a Position + +### The Creation Flow + +```mermaid +sequenceDiagram + participant User + participant ALP + participant Position + participant FYV + + User->>ALP: Deposit 1000 FLOW + ALP->>Position: Create position + Position->>Position: Calculate borrowing capacity + + alt With Auto-Borrowing + Position->>Position: Borrow 615 MOET + Position->>FYV: Push to DrawDownSink + FYV-->>User: Deploy to yield strategy + Note over Position: Health = 1.3 + else Without Auto-Borrowing + Note over Position: Health = ∞
(no debt yet) + end + + ALP-->>User: Return position reference +``` + +### Option 1: With Auto-Borrowing (Recommended for FCM) + +**Setup**: +- `pushToDrawDownSink = true` +- Automatically borrows to target health (1.3) +- Funds flow to your configured destination + +**What happens**: +``` +1. You deposit: 1000 FLOW +2. ALP calculates: 1000 Γ— 0.8 = 800 effective collateral +3. ALP auto-borrows: 800 / 1.3 = 615.38 MOET +4. Funds flow: Via DrawDownSink (to FYV, wallet, etc.) +5. Final state: Health = 1.3, fully optimized +``` + +**Best for**: FCM users who want maximum automation and capital efficiency + +### Option 2: Without Auto-Borrowing (Conservative) + +**Setup**: +- `pushToDrawDownSink = false` +- No automatic borrowing +- You control when to borrow + +**What happens**: +``` +1. You deposit: 1000 FLOW +2. Position created with collateral only +3. Health factor: Infinite (no debt) +4. You manually borrow when ready +``` + +**Best for**: Users who want full manual control + +## Health States Through Lifecycle + +### State 1: Overcollateralized (HF > 1.5) + +```mermaid +graph LR + A[HF > 1.5
Very Safe] --> B{Auto-borrow
enabled?} + B -->|Yes| C[Borrow more MOET] + B -->|No| D[Stay safe] + C --> E[Health = 1.3] + + style A fill:#bfb + style E fill:#bfb +``` + +**Characteristics**: This state is very safe from liquidation and allows you to borrow significantly more. However, it's not capital efficient if you're not using auto-borrowing. + +**Actions available**: You can borrow additional funds, withdraw excess collateral, or let the system auto-borrow to reach the target health factor. + +**Example**: +``` +Collateral: $2000 effective +Debt: $800 MOET +HF: 2000 / 800 = 2.5 + +Can borrow additional: ~$731 MOET (to reach HF 1.3) +``` + +### State 2: Healthy (HF 1.1 - 1.5) + +```mermaid +graph TD + A[HF: 1.1 - 1.5
Healthy Range] + A --> B[Optimal: 1.3] + A --> C[Upper: 1.5] + A --> D[Lower: 1.1] + + style A fill:#bbf + style B fill:#bfb +``` + +**Characteristics**: This is the target operational range with balanced risk/reward and no automatic actions triggered. + +**Actions available**: You can perform normal deposits and withdrawals, borrow within limits, and make repayments as desired. + +**Example**: +``` +Collateral: $800 effective +Debt: $615.38 MOET +HF: 800 / 615.38 = 1.30 βœ“ + +Status: Perfect! At target health +``` + +### State 3: Undercollateralized (HF < 1.1) + +```mermaid +graph LR + A[HF < 1.1
Below Target] --> B{TopUpSource
configured?} + B -->|Yes| C[Auto-repay] + B -->|No| D[Manual action
required!] + C --> E[Health = 1.3] + D --> F[Risk liquidation] + + style A fill:#ffa + style E fill:#bfb + style F fill:#fbb +``` + +**Characteristics**: This position is below target and needs attention. Auto-rebalancing may trigger, and risk increases significantly if the price continues dropping. + +**Urgent actions**: You should add more collateral, repay some debt, and ensure TopUpSource has sufficient funds available. + +**Example**: +``` +Collateral: $680 effective (price dropped!) +Debt: $615.38 MOET +HF: 680 / 615.38 = 1.10 + +Status: At minimum threshold +Action: Consider rebalancing +``` + +### State 4: At Risk (HF 1.0 - 1.1) + +```mermaid +graph LR + A[HF: 1.0 - 1.1
CRITICAL] --> B[Immediate
Action] + B --> C{Can add
collateral?} + B --> D{Can repay
debt?} + C -->|Yes| E[Add collateral NOW] + D -->|Yes| F[Repay debt NOW] + E --> G[Safety Restored] + F --> G + + style A fill:#fbb + style G fill:#bfb +``` + +**Characteristics**: +- πŸ”΄ High liquidation risk +- πŸ”΄ Immediate action required +- πŸ”΄ May be liquidated very soon + +**Immediate actions**: +1. Add substantial collateral immediately +2. Repay significant portion of debt +3. Trigger emergency rebalancing +4. Monitor constantly + +**Example**: +``` +Collateral: $640 effective +Debt: $615.38 MOET +HF: 640 / 615.38 = 1.04 + +Status: CRITICAL - 4% from liquidation! +``` + +### State 5: Liquidatable (HF < 1.0) + +```mermaid +graph LR + A[HF < 1.0
LIQUIDATABLE] --> B[Liquidation
Triggered] + B --> C[Collateral
Seized] + C --> D[Debt
Repaid] + D --> E[HF = 1.05
Partial Liquidation] + + style A fill:#f00,color:#fff + style E fill:#ffa +``` + +**What happens**: +- β›” Position can be liquidated by anyone +- β›” Collateral seized with penalty +- β›” Partial or full liquidation + +**The process**: +``` +1. Keeper/Protocol detects HF < 1.0 +2. Seizes portion of collateral +3. Repays debt (with liquidation bonus) +4. Position brought to HF = 1.05 +5. You keep remaining collateral (if any) +``` + +Learn more: [Liquidation System](./liquidation-system.md) + +## Position Operations + +### Depositing More Collateral + +```mermaid +graph LR + A[Deposit
More Collateral] --> B[Effective
Collateral ↑] + B --> C[Health
Factor ↑] + C --> D{HF > 1.5?} + D -->|Yes| E[Auto-borrow
if enabled] + D -->|No| F[Stay in range] + + style A fill:#bbf + style C fill:#bfb +``` + +**Effects**: Depositing more collateral increases your effective collateral and improves your health factor. It may trigger auto-borrowing if enabled and provides an additional safety buffer. + +### Withdrawing Collateral + +```mermaid +graph LR + A[Withdraw
Collateral] --> B[Effective
Collateral ↓] + B --> C[Health
Factor ↓] + C --> D{HF < 1.1?} + D -->|Yes| E[Blocked or
Liquidation Risk] + D -->|No| F[Withdrawal
Succeeds] + + style A fill:#ffa + style E fill:#fbb +``` + +**Conditions**: Withdrawals must maintain your health factor above the minimum threshold, cannot cause undercollateralization, and may be blocked if deemed unsafe by the protocol. + +### Borrowing Funds + +```mermaid +graph LR + A[Borrow
MOET] --> B[Debt ↑] + B --> C[Health
Factor ↓] + C --> D{HF > min?} + D -->|Yes| E[Borrow
Succeeds] + D -->|No| F[Borrow
Blocked] + E --> G[Interest
Starts] + + style A fill:#bbf + style F fill:#fbb +``` + +**Effects**: Borrowing funds increases your debt and decreases your health factor. Interest starts accruing immediately, and you must ensure your position stays above the minimum health threshold. + +### Repaying Debt + +```mermaid +graph LR + A[Repay
MOET] --> B[Debt ↓] + B --> C[Health
Factor ↑] + C --> D[More Safety
Buffer] + D --> E[Can Borrow
More if Needed] + + style A fill:#bfb + style C fill:#bfb +``` + +**Effects**: Repaying debt decreases your total debt, improves your health factor, reduces ongoing interest payments, and increases your safety margin against liquidation. + +## Closing a Position + +### Requirements + +To fully close a position: + +```mermaid +graph TD + A[Want to Close] --> B{All debt
repaid?} + B -->|No| C[Repay all debt first] + B -->|Yes| D{All collateral
withdrawn?} + D -->|No| E[Withdraw all collateral] + D -->|Yes| F[Position Closed βœ“] + C --> B + E --> D + + style F fill:#bfb +``` + +**Steps**: +1. **Repay all debt**: Zero MOET debt +2. **Withdraw all collateral**: Remove all deposited assets +3. **Clean state**: Position now empty + +**Example**: +``` +1. Check debt: 492.31 MOET +2. Repay: 492.31 MOET β†’ Debt = 0 +3. Check collateral: 1000 FLOW +4. Withdraw: 1000 FLOW β†’ Collateral = 0 +5. Position closed βœ“ +``` + +## Advanced: Multiple Positions + +You can have multiple positions for different strategies: + +```mermaid +graph TD + User[Your Account] + User --> P1[Position 1
Conservative
HF: 2.0] + User --> P2[Position 2
Balanced
HF: 1.3] + User --> P3[Position 3
Aggressive
HF: 1.1] + + P1 --> S1[Stable Strategy] + P2 --> S2[Yield Farming] + P3 --> S3[Leveraged] + + style P1 fill:#bfb + style P2 fill:#bbf + style P3 fill:#ffa +``` + +**Benefits**: Multiple positions allow you to maintain separate risk profiles, use different collateral types, isolate liquidation risk, and implement diverse strategies simultaneously. + +**Example uses**: +- **Position 1**: Conservative (HF 2.0) with stablecoin collateral +- **Position 2**: Balanced (HF 1.3) with FLOW, deployed to FYV +- **Position 3**: Aggressive (HF 1.1) with volatile assets, manual management + +## Automation with DeFi Actions + +### Full FCM Automation Setup + +```mermaid +graph TB + Position[Your Position] + Position -->|DrawDownSink| FYV[FYV Strategy] + FYV -->|TopUpSource| Position + + Auto1[Overcollateralized] -.-> Position + Position -->|Auto-borrow MOET| FYV + + Auto2[Undercollateralized] -.-> FYV + FYV -->|Provide MOET| Position + + style Position fill:#f9f,stroke:#333,stroke-width:3px + style FYV fill:#bfb,stroke:#333,stroke-width:3px +``` + +**Configuration**: +``` +Position.DrawDownSink = FYV Strategy Sink +Position.TopUpSource = FYV Strategy Source +Position.minHealth = 1.1 +Position.maxHealth = 1.5 +``` + +**Result**: +- βœ… Automatic borrowing when overcollateralized +- βœ… Automatic repayment when undercollateralized +- βœ… Yield protects your position +- βœ… True set-and-forget experience + +Learn more: [DeFi Actions Integration](./defi-actions.md) + +## Best Practices + +### Position Creation +- βœ… Start with conservative health targets (1.5+) if learning +- βœ… Test with small amounts first +- βœ… Understand auto-borrowing before enabling +- βœ… Set up monitoring from day one + +### Ongoing Management +- βœ… Check health factor daily +- βœ… Set up automated alerts for HF < 1.3 +- βœ… Keep liquid funds for emergencies +- βœ… Monitor collateral token prices + +### Risk Management +- βœ… Maintain health buffer above 1.3 +- βœ… Diversify collateral types when possible +- βœ… Use stable assets for lower risk +- βœ… Have emergency repayment plan ready + +### Before Closing +- βœ… Track total debt including accrued interest +- βœ… Plan repayment timeline +- βœ… Understand any fees or penalties +- βœ… Withdraw collateral promptly after repayment + +## Common Scenarios + +### Scenario 1: Price Drop Response + +```mermaid +sequenceDiagram + participant Price + participant Position + participant FYV + + Price->>Position: FLOW drops 20% + Position->>Position: HF: 1.3 β†’ 1.04 + Position->>Position: Below min (1.1)! + Position->>FYV: Request 123 MOET + FYV->>Position: Provide MOET + Position->>Position: Repay debt + Position->>Position: HF: 1.04 β†’ 1.3 βœ“ + + Note over Position,FYV: Automatic liquidation prevention! +``` + +### Scenario 2: Price Recovery + +```mermaid +sequenceDiagram + participant Price + participant Position + participant FYV + + Price->>Position: FLOW recovers to $1 + Position->>Position: HF: 1.3 β†’ 1.625 + Position->>Position: Above max (1.5)! + Position->>Position: Borrow 123 MOET + Position->>FYV: Push MOET + FYV->>FYV: Deploy to yield + Position->>Position: HF: 1.625 β†’ 1.3 βœ“ + + Note over Position,FYV: Automatic capital optimization! +``` + +## Summary + +**Position Lifecycle Phases**: +1. πŸ†• **Creation**: Deposit collateral, optionally auto-borrow +2. πŸ’š **Healthy Operation**: HF between 1.1-1.5 +3. ⚠️ **Rebalancing**: Automatic adjustments as needed +4. πŸ”΄ **At Risk**: HF approaching 1.0, urgent action +5. 🏁 **Closure**: Repay debt, withdraw collateral + +**Key Health Ranges**: +- **HF > 1.5**: Overcollateralized (auto-borrow if enabled) +- **HF 1.1-1.5**: Healthy range (optimal operation) +- **HF 1.0-1.1**: At risk (urgent action needed) +- **HF < 1.0**: Liquidatable (emergency!) + +**Automation Keys**: +- Configure DrawDownSink for auto-borrowing destination +- Configure TopUpSource for auto-repayment source +- Set appropriate min/max health bounds +- Monitor regularly even with automation + +## Mathematical Foundation + +For detailed mathematical formulas and proofs underlying position operations: +- **Health Factor Calculations**: [FCM Math - Health Factor](../fcm/math.md#health-factor) +- **Auto-Borrowing Math**: [Auto-Borrowing Mathematics](../fcm/math.md#auto-borrowing-mathematics) +- **Rebalancing Formulas**: [Rebalancing Mathematics](../fcm/math.md#rebalancing-mathematics) +- **Price Impact Analysis**: [Price Impact on Health](../fcm/math.md#price-impact-analysis) +- **Complete Lifecycle Example**: [Position Lifecycle Math](../fcm/math.md#complete-position-lifecycle-math) + +## Next Steps + +- **Understand rebalancing**: [Rebalancing Mechanics](./rebalancing.md) +- **Set up automation**: [DeFi Actions Integration](./defi-actions.md) +- **Protect against liquidation**: [Liquidation System](./liquidation-system.md) +- **Learn credit mechanics**: [Credit Market Mechanics](./credit-market-mechanics.md) + +--- + +:::tip Key Takeaway +A position's lifecycle is all about managing the health factor. Stay in the healthy range (1.1-1.5), use automation for hands-free management, and always have a plan for when prices move against you. +::: diff --git a/docs/defi/alp/rebalancing.md b/docs/defi/alp/rebalancing.md new file mode 100644 index 0000000000..c2b982041f --- /dev/null +++ b/docs/defi/alp/rebalancing.md @@ -0,0 +1,679 @@ +--- +title: Rebalancing Mechanics +sidebar_position: 6 +--- + +# Rebalancing Mechanics + +Rebalancing is ALP's automated position management system that maintains positions within target health ranges. This powerful feature eliminates manual management and optimizes capital efficiency. + +## Understanding Rebalancing + +### What is Rebalancing? + +**Rebalancing** is the automatic adjustment of a position's debt to maintain its health factor within a target range. When overcollateralized (HF > maxHealth), the system automatically borrows more. When undercollateralized (HF < minHealth), it automatically repays debt. When in range (minHealth ≀ HF ≀ maxHealth), no action is needed. + +The goal is to keep positions at the **target health factor** (typically 1.3), maximizing capital efficiency while maintaining safety. + +```mermaid +graph LR + subgraph "Health States" + A[HF < 1.1
Undercollateralized] + B[HF: 1.1 - 1.5
Healthy Range] + C[HF > 1.5
Overcollateralized] + end + + A -->|Auto-repay debt| Target[Target HF: 1.3] + C -->|Auto-borrow more| Target + B -.->|No action| B + + style A fill:#fbb + style B fill:#bfb + style C fill:#bbf + style Target fill:#bfb,stroke:#333,stroke-width:3px +``` + +### Target Health Range + +Each position has configurable health bounds: + +``` +minHealth: 1.1 (minimum before rebalancing up) +targetHealth: 1.3 (optimal target) +maxHealth: 1.5 (maximum before rebalancing down) +``` + +**Visual representation**: +``` +0.0 ---- 1.0 ---- 1.1 ---- 1.3 ---- 1.5 ---- 2.0+ + | | | | + Liquidation Min Target Max + (Repay zone) (Borrow zone) +``` + +## Rebalancing Decision Logic + +```mermaid +flowchart TD + Start[Check Position Health] --> GetHF[Get Current HF] + GetHF --> Check{HF vs Range?} + + Check -->|HF < minHealth
1.1| Low[Undercollateralized] + Check -->|minHealth ≀ HF ≀ maxHealth
1.1 - 1.5| Good[Healthy] + Check -->|HF > maxHealth
1.5| High[Overcollateralized] + + Low --> CalcRepay[Calculate
Required Repayment] + CalcRepay --> PullFunds[Pull from
TopUpSource] + PullFunds --> Repay[Repay Debt] + Repay --> Restored[HF = 1.3 βœ“] + + Good --> NoAction[No Action Needed] + + High --> CalcBorrow[Calculate
Additional Borrowable] + CalcBorrow --> Borrow[Borrow MOET] + Borrow --> PushFunds[Push to
DrawDownSink] + PushFunds --> Restored + + style Low fill:#fbb + style Good fill:#bfb + style High fill:#bbf + style Restored fill:#bfb,stroke:#333,stroke-width:3px +``` + +### When Rebalancing Triggers + +**Automatic triggers** occur when position health moves outside the min/max range, after deposits that cause overcollateralization, following price changes via oracle updates, and through scheduled checks by keepers or the protocol. + +**Manual triggers** include user-forced rebalancing, protocol maintenance calls, and integration with external automation. + +## Overcollateralized Rebalancing + +### When It Occurs + +Rebalancing down (borrowing more) happens when: +``` +Current Health Factor > maxHealth (1.5) +``` + +This means you have "excess" collateral that could be used to borrow more. + +### The Mathematics + +The system calculates how much additional debt can be safely taken: + +``` +Current State: +- Effective collateral: EC +- Effective debt: ED +- Current health: HF = EC / ED +- Target health: TH = 1.3 + +Additional borrowable amount: +additionalBorrow = (EC / TH) - ED + +New state after borrowing: +- New debt: ED + additionalBorrow = EC / TH +- New health: EC / (EC / TH) = TH βœ“ +``` + +See [FCM Mathematical Foundations](../fcm/math.md#rebalancing-mathematics) for detailed formulas and step-by-step derivations. + +### Overcollateralized Flow + +```mermaid +sequenceDiagram + participant Position + participant ALP + participant DrawDownSink + participant FYV + + Position->>Position: Detect HF = 2.0
(above max 1.5) + Position->>ALP: Calculate additional borrow + Note over ALP: (EC / 1.3) - ED
= additional amount + ALP->>ALP: Borrow 215.38 MOET + ALP->>DrawDownSink: Push MOET + DrawDownSink->>FYV: Deploy to yield + Position->>Position: Health = 1.3 βœ“ + + Note over Position,FYV: Automatic capital efficiency! +``` + +**Example**: +``` +Current State: +- Collateral: 1000 FLOW @ $1 = $1000, factor 0.8 = $800 effective +- Debt: 400 MOET @ $1 = $400 +- Health: 800 / 400 = 2.0 (above maxHealth of 1.5) + +Calculation: +- Target debt for HF=1.3: 800 / 1.3 β‰ˆ 615.38 MOET +- Additional borrow: 615.38 - 400 = 215.38 MOET + +After Rebalancing: +- Collateral: $800 effective (unchanged) +- Debt: 615.38 MOET +- Health: 800 / 615.38 = 1.3 βœ“ +- User receives: 215.38 MOET via DrawDownSink +``` + +### DrawDownSink Integration + +When borrowing during rebalancing, funds are pushed to the **DrawDownSink**: + +```mermaid +graph LR + Position[Position
HF > 1.5] --> Calculate[Calculate
Excess Capacity] + Calculate --> Borrow[Borrow
MOET] + Borrow --> Sink[DrawDownSink] + + Sink --> Wallet[User Wallet] + Sink --> FYV[FYV Strategy] + Sink --> LP[LP Pool] + Sink --> Other[Other DeFi] + + style Position fill:#bbf + style Sink fill:#f9f,stroke:#333,stroke-width:2px +``` + +**Benefits**: Funds are automatically deployed to the user's wallet or DeFi strategy without requiring manual claims, ensuring seamless capital efficiency. The system can integrate with yield farms, LP pools, and other DeFi protocols. + +## Undercollateralized Rebalancing + +### When It Occurs + +Rebalancing up (repaying debt) happens when: +``` +Current Health Factor < minHealth (1.1) +``` + +This means your position is approaching liquidation risk and needs debt reduction. + +### The Mathematics + +The system calculates how much debt must be repaid: + +``` +Current State: +- Effective collateral: EC +- Effective debt: ED +- Current health: HF = EC / ED +- Target health: TH = 1.3 + +Required repayment: +requiredPaydown = ED - (EC / TH) + +New state after repayment: +- New debt: EC / TH +- New health: EC / (EC / TH) = TH βœ“ +``` + +See [FCM Mathematical Foundations](../fcm/math.md#rebalancing-mathematics) for detailed formulas and proofs. + +### Undercollateralized Flow + +```mermaid +sequenceDiagram + participant Price + participant Position + participant TopUpSource + participant FYV + participant ALP + + Price->>Position: FLOW drops 20% + Position->>Position: HF = 1.04
(below min 1.1!) + Position->>ALP: Calculate repayment needed + Note over ALP: ED - (EC / 1.3)
= repayment amount + ALP->>TopUpSource: Request 123.07 MOET + TopUpSource->>FYV: Withdraw from yield + FYV->>TopUpSource: Provide MOET + TopUpSource->>ALP: Supply MOET + ALP->>ALP: Repay debt + Position->>Position: Health = 1.3 βœ“ + + Note over Price,Position: Automatic liquidation prevention! +``` + +**Example**: +``` +Initial State: +- Collateral: 1000 FLOW @ $1 = $1000, factor 0.8 = $800 effective +- Debt: 615.38 MOET +- Health: 800 / 615.38 = 1.3 + +After FLOW Price Drops 20% to $0.80: +- Collateral: 1000 FLOW @ $0.80 = $800, factor 0.8 = $640 effective +- Debt: 615.38 MOET (unchanged) +- Health: 640 / 615.38 = 1.04 (below minHealth of 1.1) + +Calculation: +- Target debt for HF=1.3: 640 / 1.3 β‰ˆ 492.31 MOET +- Required paydown: 615.38 - 492.31 = 123.07 MOET + +After Rebalancing: +- Collateral: $640 effective (unchanged) +- Debt: 492.31 MOET +- Health: 640 / 492.31 = 1.3 βœ“ +- User paid: 123.07 MOET via TopUpSource +``` + +### TopUpSource Integration + +When repaying during rebalancing, funds are pulled from the **TopUpSource**: + +```mermaid +graph LR + Position[Position
HF < 1.1] --> Calculate[Calculate
Repayment Needed] + Calculate --> Request[Request
MOET] + Request --> Source[TopUpSource] + + Wallet[User Wallet] --> Source + FYV[FYV Strategy] --> Source + LP[LP Pool] --> Source + Other[Other DeFi] --> Source + + Source --> Repay[Repay
Debt] + Repay --> Safe[HF = 1.3 βœ“] + + style Position fill:#fbb + style Source fill:#f9f,stroke:#333,stroke-width:2px + style Safe fill:#bfb +``` + +**Benefits**: The TopUpSource integration provides automatic liquidation protection without requiring manual monitoring. Funds are sourced from the user's chosen location and can integrate with yield farms to automatically exit positions when needed. + +:::tip FCM's Innovation +When TopUpSource is connected to FYV, your **yield automatically protects your position** from liquidation. This is the core innovation of [Flow Credit Market](../fcm/basics.md#yield-powered-liquidation-prevention)! +::: + +## Rebalancing Scenarios + +### Scenario 1: Initial Position with Auto-Borrow + +```mermaid +sequenceDiagram + participant User + participant ALP + participant Position + participant DrawDownSink + + User->>ALP: Deposit 1000 FLOW
pushToDrawDownSink=true + ALP->>Position: Create position + Position->>Position: Initial HF = ∞
(no debt yet) + Position->>Position: Detect HF > max (1.5) + Position->>Position: Calculate: 800/1.3 = 615.38 + Position->>Position: Auto-borrow 615.38 MOET + Position->>DrawDownSink: Push MOET + DrawDownSink->>User: Funds deployed + Position->>Position: Final HF = 1.3 βœ“ + + Note over User,DrawDownSink: Immediate auto-optimization! +``` + +**What happens**: +1. Initial health: Infinite (no debt) +2. System detects health > maxHealth +3. Calculates borrowable: 800 / 1.3 β‰ˆ 615.38 MOET +4. Auto-borrows 615.38 MOET +5. Pushes to DrawDownSink +6. Final health: 1.3 βœ“ + +### Scenario 2: Price Increase Creates Opportunity + +```mermaid +graph TD + Start[Initial State
1000 FLOW @ $1
Debt: 615 MOET
HF: 1.3] --> PriceUp[FLOW β†’ $1.25] + PriceUp --> NewState[New Collateral: $1000
Debt: 615 MOET
HF: 1.625] + NewState --> Detect[HF > maxHealth!] + Detect --> Calc[Target Debt:
1000 / 1.3 = 769 MOET] + Calc --> Borrow[Borrow Additional:
769 - 615 = 154 MOET] + Borrow --> Push[Push to DrawDownSink] + Push --> Final[Final HF: 1.3 βœ“] + + style Start fill:#bbf + style NewState fill:#bfb + style Final fill:#bfb +``` + +**Example**: +``` +Initial: 1000 FLOW @ $1, debt 615.38 MOET, health 1.3 +FLOW price increases to $1.25 + +New state: +- Collateral: 1000 FLOW @ $1.25 = $1250, factor 0.8 = $1000 effective +- Debt: 615.38 MOET +- Health: 1000 / 615.38 = 1.625 (above maxHealth) + +Rebalancing triggers: +- Target debt: 1000 / 1.3 β‰ˆ 769.23 MOET +- Additional borrow: 769.23 - 615.38 = 153.85 MOET +- User receives: 153.85 MOET via DrawDownSink +- New health: 1.3 βœ“ +``` + +### Scenario 3: Price Decrease Requires Repayment + +```mermaid +graph TD + Start[Initial State
1000 FLOW @ $1
Debt: 615 MOET
HF: 1.3] --> PriceDown[FLOW β†’ $0.80] + PriceDown --> NewState[New Collateral: $640
Debt: 615 MOET
HF: 1.04] + NewState --> Detect[HF < minHealth!] + Detect --> Calc[Target Debt:
640 / 1.3 = 492 MOET] + Calc --> Repay[Repay:
615 - 492 = 123 MOET] + Repay --> Pull[Pull from TopUpSource] + Pull --> Final[Final HF: 1.3 βœ“] + + style Start fill:#bbf + style NewState fill:#fbb + style Final fill:#bfb +``` + +**Example**: +``` +Initial: 1000 FLOW @ $1, debt 615.38 MOET, health 1.3 +FLOW price decreases to $0.80 + +New state: +- Collateral: 1000 FLOW @ $0.80 = $800, factor 0.8 = $640 effective +- Debt: 615.38 MOET +- Health: 640 / 615.38 = 1.04 (below minHealth) + +Rebalancing triggers: +- Target debt: 640 / 1.3 β‰ˆ 492.31 MOET +- Required repayment: 615.38 - 492.31 = 123.07 MOET +- System pulls: 123.07 MOET from TopUpSource +- New health: 1.3 βœ“ +``` + +### Scenario 4: Interest Accrual Over Time + +```mermaid +graph LR + Start[Initial
HF: 1.3] --> Time[6 Months
10% APY] + Time --> Interest[Interest Accrues
Debt ↑ 5%] + Interest --> Check{HF < 1.1?} + Check -->|Yes| Trigger[Trigger
Rebalancing] + Check -->|No| Monitor[Continue
Monitoring] + Trigger --> Repay[Repay from
TopUpSource] + Repay --> Restored[HF = 1.3 βœ“] + + style Interest fill:#ffa + style Restored fill:#bfb +``` + +**Example**: +``` +Initial: 1000 FLOW @ $1, debt 615.38 MOET, health 1.3 +After 6 months at 10% APY: + +New state: +- Collateral: $800 effective (unchanged) +- Debt: 615.38 * 1.05 β‰ˆ 646.15 MOET (5% accrued interest) +- Health: 800 / 646.15 = 1.238 (approaching minHealth) + +If health drops below 1.1: +- Rebalancing triggers +- Repays enough to restore health to 1.3 +- Funds pulled from TopUpSource +``` + +## Rebalancing Strategies + +### Strategy Comparison + +```mermaid +graph TD + subgraph Conservative + C1[minHealth: 1.2
target: 1.5
maxHealth: 2.0] + C2[βœ… Stable
βœ… Low gas
❌ Low efficiency] + end + + subgraph Balanced + B1[minHealth: 1.1
target: 1.3
maxHealth: 1.5] + B2[βœ… Efficient
βœ… Reasonable gas
βœ… Good safety] + end + + subgraph Aggressive + A1[minHealth: 1.1
target: 1.2
maxHealth: 1.3] + A2[βœ… Max efficiency
❌ High gas
❌ Risky] + end + + style Balanced fill:#bfb,stroke:#333,stroke-width:3px +``` + +### Conservative Strategy + +**Configuration**: +``` +minHealth: 1.2 +targetHealth: 1.5 +maxHealth: 2.0 +``` + +**Characteristics**: Conservative strategy offers less frequent rebalancing, lower gas costs, more stable positions, and a buffer against volatility. However, it results in lower capital efficiency and less borrowed funds. + +**Best for**: Risk-averse users, volatile collateral, learning the system + +### Balanced Strategy (Recommended) + +**Configuration**: +``` +minHealth: 1.1 +targetHealth: 1.3 +maxHealth: 1.5 +``` + +**Characteristics**: Balanced strategy provides good capital efficiency, reasonable rebalancing frequency, balanced risk/reward ratios, and serves as the standard configuration. + +**Best for**: Most users, general purpose lending + +**This is the default and most common configuration.** + +### Aggressive Strategy + +**Configuration**: +``` +minHealth: 1.1 +targetHealth: 1.2 +maxHealth: 1.3 +``` + +**Characteristics**: Aggressive strategy offers maximum capital efficiency, more borrowed funds, and higher yield potential. However, it requires frequent rebalancing, incurs higher gas costs, is more sensitive to volatility, and requires a reliable TopUpSource. + +**Best for**: Experienced users, stable collateral, maximum leverage + +:::warning Important +Aggressive strategy requires **reliable TopUpSource** with sufficient liquidity. If TopUpSource runs dry during a price drop, liquidation risk increases significantly! +::: + +## Helper Functions for Rebalancing + +ALP provides two key functions to check rebalancing status: + +### Checking Borrowable Amount + +**Purpose**: See how much can be borrowed without triggering rebalancing + +**Formula**: `(effectiveCollateral / targetHealth) - effectiveDebt` + +**Returns**: Amount that can be borrowed while maintaining target health (0 if already at/below target) + +### Checking Required Repayment + +**Purpose**: See how much must be repaid to restore health + +**Formula**: `effectiveDebt - (effectiveCollateral / targetHealth)` + +**Returns**: Amount that must be repaid to reach target health (0 if already at/above target) + +:::info For Developers +```cadence +// Check borrowable amount above target health +let available = position.fundsAvailableAboveTargetHealth() +if available > 0.0 { + // Can borrow 'available' amount without triggering rebalancing +} + +// Check required repayment for target health +let required = position.fundsRequiredForTargetHealth() +if required > 0.0 { + // Must repay 'required' amount to restore health +} +``` + +See [GitHub](https://github.com/onflow/FlowCreditMarket) for complete API documentation. +::: + +## Manual vs Automatic Rebalancing + +```mermaid +graph TB + subgraph Automatic + A1[DrawDownSink
Configured] --> A2[TopUpSource
Configured] + A2 --> A3[βœ… Auto-borrow
βœ… Auto-repay
βœ… Hands-free] + end + + subgraph Manual + M1[User Monitors
Health] --> M2[User Triggers
Rebalance] + M2 --> M3[❌ Manual work
βœ… Full control
⚠️ Risk if delayed] + end + + style Automatic fill:#bfb + style Manual fill:#bbf +``` + +### Automatic Rebalancing + +**Advantages**: Automatic rebalancing requires no user intervention, maintains optimal capital efficiency, provides protection against liquidation, and enables integration with DeFi strategies. + +**Requirements**: To enable automatic rebalancing, you must configure DrawDownSink for borrowing and TopUpSource for repayment, ensure sufficient funds in TopUpSource, and set up proper automation (keepers or protocol). + +### Manual Rebalancing + +**When to use**: Manual rebalancing is suitable for testing and learning, conservative management approaches, situations where manual control is preferred, and complex strategy execution. + +**Process**: +1. Monitor position health factor regularly +2. Detect when health moves outside range +3. Manually trigger rebalancing +4. Verify new health factor + +## Rebalancing Best Practices + +### Setup + +1. **Configure both Sink and Source**: Ensures full automation +2. **Test with small amounts**: Verify rebalancing works as expected +3. **Monitor initial rebalancing**: Watch first few cycles +4. **Fund TopUpSource adequately**: Ensure sufficient repayment capacity + +### Monitoring + +1. **Track rebalancing events**: Log when rebalancing occurs +2. **Monitor gas costs**: Frequent rebalancing costs gas +3. **Watch health factor trends**: Identify patterns +4. **Alert on failures**: Know if TopUpSource runs dry + +### Optimization + +1. **Adjust health ranges**: Based on volatility and strategy +2. **Choose appropriate tokens**: Stable collateral = less rebalancing +3. **Balance efficiency vs stability**: Find your risk tolerance +4. **Consider timing**: Some times have better gas prices + +### Risk Management + +1. **Ensure TopUpSource liquidity**: Always have funds available +2. **Monitor collateral prices**: Know when to add collateral manually +3. **Have backup plans**: What if automation fails? +4. **Regular health checks**: Even with automation, monitor positions + +## Troubleshooting Rebalancing + +### Rebalancing Not Triggering + +```mermaid +graph TD + Issue[Rebalancing
Not Triggering] --> Check1{Health in
range?} + Check1 -->|Yes| OK[Working as
intended] + Check1 -->|No| Check2{Sink/Source
configured?} + Check2 -->|No| Fix1[Configure
Sink/Source] + Check2 -->|Yes| Check3{Funds in
Source?} + Check3 -->|No| Fix2[Add funds to
TopUpSource] + Check3 -->|Yes| Fix3[Manual trigger
force=true] + + style Issue fill:#fbb + style OK fill:#bfb +``` + +**Possible causes**: +1. Health within min/max range (working as intended) +2. DrawDownSink not configured +3. TopUpSource not configured or empty +4. Automation not running + +**Solutions**: Verify the health factor is outside the target range, check Sink/Source configuration, ensure sufficient funds in Source, and manually trigger with `force: true` if needed. + +### Rebalancing Fails + +**Possible causes**: +1. TopUpSource has insufficient funds +2. Oracle price stale or unavailable +3. Gas limit exceeded +4. Smart contract error + +**Solutions**: Add funds to TopUpSource, wait for fresh oracle updates, increase the gas limit, and check contract logs for specific errors. + +### Excessive Rebalancing + +**Possible causes**: +1. Health range too narrow +2. Highly volatile collateral +3. Oracle price updates too frequent + +**Solutions**: Widen the health range (increase maxHealth - minHealth), use more stable collateral, adjust target health to the middle of the range, and consider switching to a conservative strategy. + +## Summary + +**Rebalancing Mechanics**: +- πŸ“Š Maintains health factor in target range (1.1 - 1.5) +- πŸ”„ Automatic borrowing when overcollateralized (HF > 1.5) +- πŸ›‘οΈ Automatic repayment when undercollateralized (HF < 1.1) +- 🎯 Targets optimal health factor (1.3) + +**Key Integrations**: +- **DrawDownSink**: Where borrowed funds go (overcollateralized) +- **TopUpSource**: Where repayment funds come from (undercollateralized) +- **DeFi Actions**: Framework enabling automated flows + +**Strategy Selection**: +- **Conservative**: Wide range (1.2-2.0), stable, low efficiency +- **Balanced**: Moderate range (1.1-1.5), recommended for most +- **Aggressive**: Narrow range (1.1-1.3), risky, max efficiency + +**Best Practices**: +- Configure both Sink and Source for full automation +- Ensure TopUpSource has sufficient liquidity +- Monitor rebalancing events and health trends +- Choose strategy based on collateral volatility + +## Mathematical Foundation + +For detailed rebalancing formulas and calculations: +- **Overcollateralized Math**: [Overcollateralized Rebalancing](../fcm/math.md#overcollateralized-rebalancing-hf--hf_max) +- **Undercollateralized Math**: [Undercollateralized Rebalancing](../fcm/math.md#undercollateralized-rebalancing-hf--hf_min) +- **Health Factor Formulas**: [Health Factor Mathematics](../fcm/math.md#health-factor) +- **Price Impact on Rebalancing**: [Price Impact Analysis](../fcm/math.md#price-impact-analysis) + +## Next Steps + +- **Understand automation**: [DeFi Actions Integration](./defi-actions.md) +- **See the big picture**: [Position Lifecycle](./position-lifecycle.md) +- **Explore liquidation protection**: [Liquidation System](./liquidation-system.md) +- **Learn credit mechanics**: [Credit Market Mechanics](./credit-market-mechanics.md) + +--- + +:::tip Key Takeaway +Rebalancing is ALP's secret weapon for capital efficiency. By automatically adjusting debt based on collateral value changes, it keeps positions optimized while protecting against liquidation. Combined with FYV as TopUpSource, you get truly hands-free DeFi lending! +::: diff --git a/docs/defi/fcm/architecture.md b/docs/defi/fcm/architecture.md new file mode 100644 index 0000000000..82e6c87b14 --- /dev/null +++ b/docs/defi/fcm/architecture.md @@ -0,0 +1,510 @@ +--- +title: FCM Architecture +sidebar_position: 3 +--- + +# FCM Architecture Overview + +This document explains how Flow Credit Market's three core components - ALP, FYV, and MOET - integrate to create a complete yield-generating system with automated liquidation prevention. + +## High-Level Architecture + +```mermaid +graph TB + subgraph "User Interface" + User[User/dApp] + end + + subgraph "FCM System" + subgraph "ALP - Lending Layer" + Pool[Pool Contract] + Position[Position] + Oracle[Price Oracle] + end + + subgraph "FYV - Yield Layer" + Strategy[Yield Strategy] + AutoBalancer[Auto Balancer] + Swapper[Token Swapper] + end + + subgraph "MOET - Currency Layer" + MOET[MOET Token] + Pricing[Price Feeds] + end + end + + subgraph "External Protocols" + DEX[DEXes/AMMs] + Farm[Yield Farms] + LP[Liquidity Pools] + end + + User -->|Deposit Collateral| Position + Position -->|Auto-borrow| MOET + MOET -->|Via DrawDownSink| Strategy + Strategy -->|Deploy| DEX + Strategy -->|Deploy| Farm + Strategy -->|Deploy| LP + + Oracle -->|MOET-denominated prices| Pool + Pricing -->|Price data| Oracle + + AutoBalancer -->|Manage exposure| Strategy + Strategy -->|Via TopUpSource| Position + + style ALP fill:#f9f,stroke:#333,stroke-width:3px + style FYV fill:#bfb,stroke:#333,stroke-width:3px + style MOET fill:#fbb,stroke:#333,stroke-width:3px +``` + +## Component Integration + +### 1. ALP ↔ MOET Integration + +**Purpose**: MOET serves as the unit of account and primary borrowed asset for ALP. + +**Integration points**: + +``` +ALP Pool +β”œβ”€β”€ defaultToken: Type<@MOET.Vault> +β”œβ”€β”€ priceOracle: Returns prices in MOET terms +β”œβ”€β”€ Auto-borrowing: Borrows MOET +└── Debt tracking: Denominated in MOET +``` + +**Key interactions**: + +1. **Price Quotation**: All token prices quoted in MOET + ``` + FLOW/MOET: 1.0 + USDC/MOET: 1.0 + stFLOW/MOET: 1.05 + ``` + +2. **Health Calculations**: All in MOET terms + ``` + Effective Collateral = FLOW amount Γ— FLOW/MOET price Γ— collateral factor + Effective Debt = MOET borrowed + Health Factor = Effective Collateral / Effective Debt + ``` + +3. **Auto-Borrowing**: Always borrows MOET + ``` + User deposits β†’ ALP calculates capacity β†’ Borrows MOET β†’ User receives MOET + ``` + +### 2. ALP ↔ FYV Integration + +**Purpose**: FYV receives borrowed funds from ALP and provides liquidity for liquidation prevention. + +**Integration via DeFi Actions**: + +``` +ALP Position +β”œβ”€β”€ DrawDownSink β†’ FYV Strategy (when overcollateralized) +└── TopUpSource ← FYV Strategy (when undercollateralized) +``` + +**Interaction flow**: + +#### Overcollateralized (HF > 1.5) + +```sequence +Position detects: HF = 1.8 (too high) +↓ +Position calculates: Can borrow $200 more MOET +↓ +Position borrows: 200 MOET from Pool +↓ +Position pushes: 200 MOET β†’ DrawDownSink +↓ +DrawDownSink = FYV Strategy +↓ +FYV Strategy swaps: 200 MOET β†’ 200 YieldToken +↓ +AutoBalancer holds: YieldToken, generates yield +``` + +#### Undercollateralized (HF < 1.1) + +```sequence +Position detects: HF = 1.05 (too low) +↓ +Position calculates: Need to repay $150 MOET +↓ +Position pulls: Request 150 MOET from TopUpSource +↓ +TopUpSource = FYV Strategy +↓ +FYV Strategy swaps: 150 YieldToken β†’ 150 MOET +↓ +Position repays: 150 MOET to Pool +↓ +New HF: 1.3 (restored to target) +``` + +**Code integration**: + +```cadence +// ALP side (simplified) +access(all) struct Position { + access(self) var drawDownSink: {DeFiActions.Sink}? + access(self) var topUpSource: {DeFiActions.Source}? + + // When overcollateralized + fun rebalanceDown() { + let borrowed <- pool.borrow(amount: excessCapacity) + self.drawDownSink?.deposit(vault: <-borrowed) + } + + // When undercollateralized + fun rebalanceUp() { + let repayment <- self.topUpSource?.withdraw(amount: shortfall) + pool.repay(vault: <-repayment) + } +} +``` + +```cadence +// FYV side (simplified) +access(all) struct TracerStrategy { + // Implements DeFi Actions interfaces + access(all) fun createSink(): {DeFiActions.Sink} { + // Returns sink that swaps MOET β†’ YieldToken + } + + access(all) fun createSource(): {DeFiActions.Source} { + // Returns source that swaps YieldToken β†’ MOET + } +} +``` + +### 3. FYV ↔ MOET Integration + +**Purpose**: MOET is the medium of exchange between FYV and external yield sources. + +**Flow**: + +``` +FYV receives MOET β†’ Swaps to target token β†’ Deploys to yield source +↓ +Time passes, yield accumulates +↓ +When needed: Exit yield source β†’ Swap to MOET β†’ Return to ALP +``` + +**Example with TracerStrategy**: + +``` +1. Receive MOET from ALP + β”œβ”€β”€ DrawDownSink.deposit(moetVault) + +2. Swap MOET β†’ YieldToken + β”œβ”€β”€ Swapper.swap(moet β†’ yieldToken) + └── AutoBalancer.hold(yieldToken) + +3. Generate yield + β”œβ”€β”€ YieldToken appreciates + β”œβ”€β”€ Farming rewards accrue + └── Trading fees accumulate + +4. Provide back to ALP (when needed) + β”œβ”€β”€ AutoBalancer.release(yieldToken) + β”œβ”€β”€ Swapper.swap(yieldToken β†’ moet) + └── TopUpSource.withdraw() returns MOET +``` + +## Data Flow Architecture + +### User Deposit Flow + +```mermaid +sequenceDiagram + participant User + participant Position + participant Pool + participant Oracle + participant DrawDownSink + participant FYV + + User->>Position: deposit(collateral) + Position->>Pool: updateCollateral(+amount) + Pool->>Pool: updateScaledBalance() + + Position->>Oracle: getPrice(collateralToken) + Oracle-->>Position: priceInMOET + + Position->>Position: calculateHealth() + alt HF > maxHealth + Position->>Pool: borrow(excessCapacity) + Pool-->>Position: MOET vault + Position->>DrawDownSink: deposit(MOET) + DrawDownSink->>FYV: swap & deploy + end + + Position-->>User: success +``` + +### Price Change & Rebalancing Flow + +```mermaid +sequenceDiagram + participant Oracle + participant Position + participant Pool + participant TopUpSource + participant FYV + + Oracle->>Oracle: Price update (collateral drops) + + Note over Position: Periodic check or triggered + + Position->>Oracle: getPrice(collateralToken) + Oracle-->>Position: newPrice (lower) + + Position->>Position: calculateHealth() + Position->>Position: health < minHealth! + + Position->>Position: calculate shortfall + Position->>TopUpSource: withdraw(shortfall) + + TopUpSource->>FYV: swap YieldToken β†’ MOET + FYV-->>TopUpSource: MOET vault + TopUpSource-->>Position: MOET vault + + Position->>Pool: repay(MOET) + Pool->>Pool: updateDebt(-amount) + + Position->>Position: calculateHealth() + Note over Position: health restored to 1.3 +``` + +## Component Responsibilities + +### ALP Responsibilities + +| Function | Description | +|----------|-------------| +| **Position Management** | Create, track, and manage user positions | +| **Collateral Tracking** | Monitor deposited collateral using scaled balances | +| **Debt Tracking** | Track borrowed amounts with interest accrual | +| **Health Monitoring** | Calculate and monitor position health factors | +| **Auto-Borrowing** | Automatically borrow MOET when overcollateralized | +| **Auto-Repayment** | Automatically repay when undercollateralized | +| **Liquidation** | Handle traditional liquidations if auto-repayment fails | +| **Interest Calculation** | Accrue interest on borrowed amounts | +| **Oracle Integration** | Query prices for health calculations | + +### FYV Responsibilities + +| Function | Description | +|----------|-------------| +| **Strategy Management** | Implement and manage yield strategies | +| **Capital Deployment** | Deploy received MOET to yield sources | +| **Yield Generation** | Generate returns through various mechanisms | +| **Token Swapping** | Swap between MOET and yield tokens | +| **Auto-Balancing** | Maintain optimal exposure to yield tokens | +| **Liquidity Provision** | Provide MOET when ALP needs rebalancing | +| **Risk Management** | Monitor and adjust strategy parameters | +| **Yield Compounding** | Reinvest returns for compound growth | + +### MOET Responsibilities + +| Function | Description | +|----------|-------------| +| **Unit of Account** | Provide standardized pricing unit | +| **Value Transfer** | Enable value flow between ALP and FYV | +| **Price Stability** | Maintain stable value (if stablecoin) | +| **Oracle Integration** | Provide price feeds for all assets | +| **Liquidity** | Ensure deep liquidity for swaps | + +## Communication Patterns + +### 1. DeFi Actions Pattern (ALP ↔ FYV) + +**Sink Pattern** (Push): +```cadence +// ALP pushes to FYV +access(all) resource interface Sink { + access(all) fun deposit(vault: @{FungibleToken.Vault}) +} + +// Usage +let sink = fyvStrategy.createSink() +sink.deposit(vault: <-moetVault) +``` + +**Source Pattern** (Pull): +```cadence +// ALP pulls from FYV +access(all) resource interface Source { + access(all) fun withdraw(amount: UFix64, type: Type): @{FungibleToken.Vault} +} + +// Usage +let source = fyvStrategy.createSource() +let moet <- source.withdraw(amount: 100.0, type: Type<@MOET.Vault>()) +``` + +### 2. Oracle Pattern (ALP ↔ MOET) + +**Price Query**: +```cadence +// ALP queries prices in MOET terms +access(all) resource interface PriceOracle { + access(all) fun getPrice(token: Type): UFix64 +} + +// Usage +let flowPrice = oracle.getPrice(Type<@FlowToken.Vault>()) +// Returns: 1.0 (1 FLOW = 1 MOET) +``` + +### 3. Event-Driven Pattern + +**Key events across components**: +```cadence +// ALP events +access(all) event PositionCreated(pid: UInt64, owner: Address) +access(all) event Borrowed(pid: UInt64, amount: UFix64) +access(all) event Repaid(pid: UInt64, amount: UFix64) +access(all) event Rebalanced(pid: UInt64, newHealth: UFix64) + +// FYV events +access(all) event StrategyDeployed(amount: UFix64, strategy: String) +access(all) event YieldGenerated(amount: UFix64) +access(all) event LiquidityProvided(amount: UFix64, toALP: Bool) + +// MOET events +access(all) event TokensMinted(amount: UFix64, recipient: Address) +access(all) event TokensBurned(amount: UFix64) +``` + +## System States + +### Normal Operation State + +``` +System State: Healthy +β”œβ”€β”€ ALP Positions: All HF between 1.1 and 1.5 +β”œβ”€β”€ FYV Strategies: Generating yield normally +β”œβ”€β”€ MOET: Stable and liquid +└── Oracles: Providing fresh prices + +Actions: +- Accept new deposits +- Allow withdrawals +- Process rebalancing +- Generate yield +``` + +### Stress State (Price Volatility) + +``` +System State: Under Stress +β”œβ”€β”€ ALP Positions: Some HF approaching 1.1 +β”œβ”€β”€ FYV Strategies: May need to provide liquidity +β”œβ”€β”€ MOET: May see increased trading volume +└── Oracles: Prices updating frequently + +Actions: +- Trigger frequent rebalancing +- FYV provides liquidity to ALP +- Some yield positions exited +- Increased monitoring +``` + +### Emergency State + +``` +System State: Emergency +β”œβ”€β”€ ALP Positions: Multiple HF < 1.0 +β”œβ”€β”€ FYV Strategies: Emergency liquidation mode +β”œβ”€β”€ MOET: Potential depeg risk +└── Oracles: Stale or unreliable + +Actions: +- Circuit breakers activated +- Liquidations triggered +- Deposits paused +- Admin intervention required +``` + +## Scalability & Performance + +### Optimizations + +1. **Scaled Balance System** (ALP): + - Avoids updating every position on interest accrual + - Single interest index update affects all positions + - Gas-efficient for large position counts + +2. **Batch Rebalancing** (ALP): + - Multiple positions can be rebalanced in one transaction + - Keepers can optimize gas costs + +3. **Lazy Evaluation** (All components): + - Prices only fetched when needed + - Health only calculated when accessed + - Interest only accrued when position touched + +4. **Event-Driven Updates** (All components): + - Off-chain indexers track state + - UI updates without constant blockchain queries + - Reduces RPC load + +### Limits & Constraints + +| Component | Limit | Reason | +|-----------|-------|--------| +| ALP Max Positions | Configurable | Gas limits for iteration | +| FYV Strategies per Vault | ~10-20 | Complexity management | +| Rebalancing Frequency | ~1 per block | Gas and Oracle freshness | +| Max Leverage | ~5x | Safety (1.0 HF = 100%, 1.1-1.5 range) | + +## Security Architecture + +### Defense in Depth + +**Layer 1: Input Validation** +- All user inputs sanitized +- Type checking enforced +- Capability-based access control + +**Layer 2: Business Logic** +- Health factor checks before operations +- Minimum/maximum limits enforced +- Oracle staleness checks + +**Layer 3: Circuit Breakers** +- Emergency pause functionality +- Liquidation warm-up periods +- Admin override capabilities + +**Layer 4: Economic Security** +- Over-collateralization requirements +- Liquidation incentives +- Oracle price deviation limits + +**Layer 5: Monitoring** +- Event emission for all critical operations +- Off-chain monitoring systems +- Automated alerts + +## Next Steps + +- **Understand the math**: [Mathematical Foundations](./math.md) +- **Explore ALP details**: [ALP Architecture](../alp/architecture.md) +- **Learn about FYV**: [FYV Documentation](../flow-yield-vaults/index.md) +- **Deep dive into MOET**: [MOET Documentation](../moet/index.md) + +--- + +:::tip Key Insight +FCM's architecture is designed for **composability** and **automation**. Each component has clear responsibilities and communicates through standardized interfaces (DeFi Actions), enabling: +- Independent development and upgrades +- Third-party strategy integrations +- System resilience through modularity +::: diff --git a/docs/defi/fcm/basics.md b/docs/defi/fcm/basics.md new file mode 100644 index 0000000000..9ea1dffb81 --- /dev/null +++ b/docs/defi/fcm/basics.md @@ -0,0 +1,444 @@ +--- +title: Understanding FCM Basics +sidebar_position: 2 +--- + +# Understanding FCM Basics + +To understand how Flow Credit Market (FCM) works, let's build up from simple lending concepts to FCM's innovative three-component architecture. + +## From Traditional Lending to FCM + +### Level 1: Traditional Lending (Aave, Compound) + +In traditional DeFi lending protocols: + +```mermaid +graph LR + User[User] -->|Deposit FLOW| Protocol[Lending Protocol] + Protocol -->|Borrow USDC| User + User -->|Repay + Interest| Protocol + + style Protocol fill:#bbf,stroke:#333,stroke-width:2px +``` + +**How it works**: +1. Deposit collateral (e.g., 1000 FLOW worth $1000) +2. Borrow up to ~75% of collateral value (e.g., $750 USDC) +3. Pay interest on borrowed amount +4. **Your responsibility**: Monitor health factor and manually manage position + +**Limitations**: Traditional lending requires you to manually monitor and rebalance positions, quickly add collateral or repay debt if collateral price drops, manually deploy borrowed funds to avoid them sitting idle, and act fast enough to prevent liquidation. + +### Level 2: Automated Lending (ALP) + +ALP adds automation to traditional lending: + +```mermaid +graph LR + User[User] -->|Deposit FLOW| ALP[ALP Position] + ALP -->|Auto-borrow MOET| User + + Price[Price Drop] -.->|Triggers| Rebalance[Auto-Rebalance] + Rebalance -->|Pulls funds| Source[TopUpSource] + Source -->|Repays debt| ALP + + style ALP fill:#f9f,stroke:#333,stroke-width:2px +``` + +**New features**: +- βœ… **Auto-borrowing**: Automatically borrows optimal amount when you deposit +- βœ… **Auto-rebalancing**: Maintains target health ratio automatically +- βœ… **TopUpSource integration**: Can pull from external sources to prevent liquidation + +**Better, but**: +- ⚠️ TopUpSource must have funds available +- ⚠️ Borrowed MOET still needs manual deployment for yield +- ⚠️ Still some manual intervention required + +### Level 3: FCM (ALP + FYV + MOET) + +FCM completes the automation by adding yield generation: + +```mermaid +graph TB + User[User] -->|1. Deposit FLOW| ALP[ALP Position] + ALP -->|2. Auto-borrow MOET| DrawDown[DrawDownSink] + DrawDown -->|3. Deploy| FYV[FYV Strategy] + FYV -->|4. Generate yield| Yield[Yield Tokens] + + Price[Price Drop] -.->|Triggers| ALP + FYV -->|5. Provide liquidity| TopUp[TopUpSource] + TopUp -->|6. Repay debt| ALP + + Yield -.->|Accumulates| FYV + + style ALP fill:#f9f,stroke:#333,stroke-width:4px + style FYV fill:#bfb,stroke:#333,stroke-width:4px + style MOET fill:#fbb,stroke:#333,stroke-width:2px +``` + +**Complete automation**: +- βœ… **Auto-borrowing**: Instantly borrow optimal amount +- βœ… **Auto-deployment**: Borrowed MOET flows directly to yield strategies +- βœ… **Auto-compounding**: FYV strategies reinvest yields +- βœ… **Auto-protection**: FYV provides liquidity to prevent liquidations +- βœ… **Auto-everything**: True set-and-forget experience + +**The breakthrough**: +- 🎯 **Yield protects your position**: Your generated yield maintains health automatically +- 🎯 **No manual intervention**: Everything happens automatically +- 🎯 **Capital efficiency**: Borrowed capital works for you immediately + +## Understanding the Three Components + +### Component 1: ALP (The Lending Engine) + +**What it does**: Manages collateral and debt positions with automated rebalancing. + +**Key concepts**: +- **Collateral**: Assets you deposit (FLOW, stFLOW, etc.) +- **Collateral Factor**: Percentage of collateral value you can borrow (e.g., 0.8 = 80%) +- **Health Factor**: Ratio of collateral to debt (must be > 1.0) +- **Target Health**: Optimal ratio the system maintains (typically 1.3) + +**Example**: +``` +Deposit: 1000 FLOW @ $1 = $1000 +Collateral Factor: 0.8 (80%) +Effective Collateral: $800 + +Target Health: 1.3 +Max Safe Borrow: $800 / 1.3 β‰ˆ $615.38 MOET + +ALP auto-borrows: 615.38 MOET +Position Health: 800 / 615.38 = 1.3 βœ“ +``` + +Learn more: [ALP Documentation](../alp/index.md) + +### Component 2: FYV (The Yield Engine) + +**What it does**: Deploys capital into yield-generating strategies and provides liquidity for liquidation prevention. + +**Key concepts**: +- **Strategies**: Predefined yield-generating approaches (TracerStrategy, etc.) +- **AutoBalancer**: Manages exposure to yield tokens and rebalancing +- **DrawDownSink**: Receives borrowed MOET from ALP +- **TopUpSource**: Provides liquidity back to ALP when needed + +**Example strategy (TracerStrategy)**: +``` +1. Receive MOET from ALP β†’ DrawDownSink +2. Swap MOET β†’ YieldToken (e.g., LP token, farm token) +3. Hold YieldToken in AutoBalancer +4. Accumulate yield over time +5. When ALP needs funds: + - Swap YieldToken β†’ MOET + - Provide via TopUpSource + - ALP repays debt +``` + +Learn more: [FYV Documentation](../flow-yield-vaults/index.md) + +### Component 3: MOET (The Unit of Account) + +**What it does**: Serves as the currency for all operations - borrowed asset, pricing unit, and value transfer medium. + +**Key concepts**: +- **Unit of Account**: All prices quoted in MOET (FLOW/MOET, USDC/MOET) +- **Primary Borrowed Asset**: What ALP auto-borrows and what FYV receives +- **Synthetic Stablecoin**: Value pegged to maintain stability +- **Medium of Exchange**: Flows between ALP and FYV + +**Why MOET?**: MOET standardizes all valuations, simplifies multi-collateral calculations, is designed specifically for DeFi operations, and provides deep integration with the Flow ecosystem. + +Learn more: [MOET Documentation](../moet/index.md) + +## The Capital Flow Cycle + +Let's follow $1000 of FLOW through the entire FCM system: + +### Phase 1: Initial Deposit and Borrowing + +``` +You deposit: 1000 FLOW worth $1000 +↓ +ALP calculates: + - Effective collateral: $1000 Γ— 0.8 = $800 + - Target health: 1.3 + - Borrow amount: $800 / 1.3 = $615.38 MOET +↓ +ALP auto-borrows: 615.38 MOET +↓ +MOET flows to: FYV strategy (via DrawDownSink) +↓ +FYV swaps: 615.38 MOET β†’ 615.38 YieldToken +↓ +Status: + - Your ALP position: 1000 FLOW collateral, 615.38 MOET debt + - Your FYV position: 615.38 YieldToken generating yield + - Health factor: 1.3 βœ“ +``` + +### Phase 2: Yield Generation + +``` +Time passes... +↓ +FYV Strategy generates yield: + - Trading fees from LP positions + - Farming rewards + - Interest from lending +↓ +Example after 1 month: + - YieldToken value: 615.38 β†’ 625.00 (+1.5% return) + - Yield earned: ~$10 +↓ +FYV holds: + - Original: 615.38 YieldToken + - Plus accumulated yield +``` + +### Phase 3: Price Drop & Auto-Protection + +``` +FLOW price drops: $1.00 β†’ $0.80 (-20%) +↓ +ALP detects: + - Collateral: 1000 FLOW @ $0.80 = $800 Γ— 0.8 = $640 effective + - Debt: 615.38 MOET + - New health: 640 / 615.38 = 1.04 (below min 1.1!) +↓ +ALP triggers rebalancing: + - Calculates required repayment + - Target debt: $640 / 1.3 = $492.31 MOET + - Needs to repay: 615.38 - 492.31 = 123.07 MOET +↓ +ALP pulls from FYV (TopUpSource): + - FYV swaps: 123.07 YieldToken β†’ 123.07 MOET + - Sends MOET to ALP +↓ +ALP repays debt: + - New debt: 492.31 MOET + - New health: 640 / 492.31 = 1.3 βœ“ +↓ +Status: + - ALP position: 1000 FLOW, 492.31 MOET debt, HF=1.3 + - FYV position: ~492 YieldToken remaining + - Liquidation prevented! βœ“ +``` + +### Phase 4: Price Recovery + +``` +FLOW price recovers: $0.80 β†’ $1.00 +↓ +ALP detects: + - Collateral: 1000 FLOW @ $1.00 = $1000 Γ— 0.8 = $800 effective + - Debt: 492.31 MOET + - New health: 800 / 492.31 = 1.625 (above max 1.5!) +↓ +ALP triggers rebalancing: + - Can borrow more to reach target health + - Target debt: $800 / 1.3 = $615.38 MOET + - Can borrow: 615.38 - 492.31 = 123.07 MOET +↓ +ALP auto-borrows: + - Borrows: 123.07 MOET + - Pushes to FYV (DrawDownSink) +↓ +FYV deploys: + - Swaps: 123.07 MOET β†’ 123.07 YieldToken + - Back to ~615 YieldToken +↓ +Status: + - ALP position: 1000 FLOW, 615.38 MOET debt, HF=1.3 + - FYV position: ~615 YieldToken generating yield + - Fully rebalanced and optimized! βœ“ +``` + +## Key Benefits Explained + +### 1. Yield-Powered Liquidation Prevention + +**Traditional protocol**: +``` +Price drops β†’ Health factor drops β†’ You must manually: + 1. Monitor the drop + 2. Decide: add collateral or repay debt? + 3. Find liquidity + 4. Execute transaction + 5. Hope you're not liquidated first +``` + +**FCM**: +``` +Price drops β†’ Health factor drops β†’ System automatically: + 1. Detects drop instantly + 2. Calculates exact repayment needed + 3. Pulls from your yield + 4. Repays debt + 5. Restores health + +All in one transaction, no intervention needed! +``` + +### 2. Capital Efficiency + +**Without FCM**: +``` +Scenario: Have 1000 FLOW, want to generate yield + +Option A: Just hold FLOW + - Capital: $1000 working + - Opportunity cost: Missing yield opportunities + +Option B: Deposit in lending protocol + - Earn deposit interest: ~3% APY + - Capital: $1000 working + - Yield: ~$30/year + +Option C: Manual yield farming + - Borrow against FLOW: ~$750 + - Deploy to farm: Complex, risky + - Must monitor constantly + - Risk liquidation +``` + +**With FCM**: +``` +Deposit 1000 FLOW β†’ FCM does everything: + - Borrow optimal amount: ~$615 MOET + - Deploy to best yield: Automatic + - Compound returns: Automatic + - Prevent liquidation: Automatic + - Potential yield: 5-15% APY (varies by strategy) + +Capital efficiency: Using collateral to earn yield on borrowed funds +Risk management: Yield protects against liquidation +Effort: Set and forget +``` + +### 3. Composability + +Each component has value independently: + +**Use ALP alone** when you: +- Want simple lending/borrowing +- Have your own yield strategies +- Need DeFi Actions integration + +**Use FYV alone** when you: +- Want yield aggregation +- Don't need leverage +- Prefer direct yield farming + +**Use FCM together** when you: +- Want maximum automation +- Desire liquidation protection +- Seek optimal capital efficiency + +## Understanding the Math + +### Health Factor Calculation + +``` +Health Factor = Effective Collateral / Effective Debt + +Effective Collateral = Token Amount Γ— Price Γ— Collateral Factor +Effective Debt = Borrowed Amount Γ— Price + +Example: + - 1000 FLOW @ $1 each Γ— 0.8 factor = $800 effective collateral + - 615.38 MOET @ $1 each = $615.38 effective debt + - Health Factor = 800 / 615.38 = 1.30 +``` + +### Target Health Ranges + +``` +Health Factor States: + +HF < 1.0 β†’ Liquidatable (immediate danger!) +HF = 1.0-1.1 β†’ At risk (very close to liquidation) +HF = 1.1-1.3 β†’ Below target (should rebalance up) +HF = 1.3 β†’ Target (optimal!) +HF = 1.3-1.5 β†’ Above target (can borrow more) +HF > 1.5 β†’ Overcollateralized (should rebalance down) +``` + +### Borrowing Capacity + +``` +Maximum Safe Borrow = Effective Collateral / Target Health + +Example with target health of 1.3: + - Effective collateral: $800 + - Max borrow: $800 / 1.3 = $615.38 MOET + +Why not borrow more? + - Need safety buffer for price volatility + - Target of 1.3 means 30% buffer above liquidation + - If you borrowed $800, health would be 1.0 (liquidatable immediately!) +``` + +Learn more: [Mathematical Foundations](./math.md) + +## Common Questions + +### How does FCM differ from Uniswap V3? + +**Uniswap V3** evolved from V2 by adding: +- Concentrated liquidity (specific price ranges) +- Multiple fee tiers +- Capital efficiency improvements +- More complex LP management + +**FCM** evolves from basic lending by adding: +- Automated position management +- Yield generation integration +- Liquidation prevention via yield +- Multi-component architecture (ALP + FYV + MOET) + +Both are "evolved" versions of simpler protocols, adding complexity for better capital efficiency. + +### Can I use FCM without understanding all three components? + +**Yes!** Think of it like using a car: +- **User level**: Just drive (deposit and earn yield) +- **Enthusiast level**: Understand the engine (how ALP, FYV, and MOET connect) +- **Builder level**: Modify and extend (create custom strategies) + +Start with user level, learn more as you go. + +### What happens if FYV doesn't have enough liquidity for rebalancing? + +Multiple fallback mechanisms: +1. **Primary**: FYV provides from yield +2. **Secondary**: FYV can exit positions partially +3. **Tertiary**: Traditional liquidation (external liquidators) +4. **Emergency**: Circuit breakers and admin intervention + +The system is designed with multiple safety layers. + +### Is my yield always enough to prevent liquidation? + +**Not guaranteed**, but highly likely because you're earning yield continuously, the system only pulls what's needed, the health buffer (1.3 target) provides cushion, and you can deposit more collateral anytime. Traditional protocols have 0% chance of automatic prevention - FCM gives you a strong automatic defense. + +## Next Steps + +Now that you understand the basics: + +1. **Learn the architecture**: [Architecture Overview](./architecture.md) +2. **Understand the math**: [Mathematical Foundations](./math.md) +3. **Explore components**: [ALP](../alp/index.md), [FYV](../flow-yield-vaults/index.md), [MOET](../moet/index.md) +4. **Start using FCM**: Follow the quick start guide + +--- + +:::tip Key Takeaway +FCM = Traditional Lending + Automation + Yield Generation + Liquidation Protection + +It's not just "another lending protocol" - it's a complete yield-generating system with automated risk management. +::: diff --git a/docs/defi/fcm/index.md b/docs/defi/fcm/index.md new file mode 100644 index 0000000000..a144b36dc9 --- /dev/null +++ b/docs/defi/fcm/index.md @@ -0,0 +1,184 @@ +--- +title: Flow Credit Market (FCM) +sidebar_label: Overview +sidebar_position: 1 +--- + +# Flow Credit Market (FCM) + +Flow Credit Market (FCM) is a comprehensive DeFi yield platform on Flow that combines automated lending, yield farming strategies, and a synthetic stablecoin to create a capital-efficient system for generating returns on crypto assets. + +## What is FCM? + +FCM is **not a single protocol** - it's an integrated system composed of three core components working together: + +```mermaid +graph LR + ALP[ALP
Automated Lending
Platform] --> FCM[Flow Credit
Market] + FYV[FYV
Flow Yield
Vaults] --> FCM + MOET[MOET
Synthetic
Stablecoin] --> FCM + + style FCM fill:#f9f,stroke:#333,stroke-width:4px + style ALP fill:#bbf,stroke:#333,stroke-width:2px + style FYV fill:#bfb,stroke:#333,stroke-width:2px + style MOET fill:#fbb,stroke:#333,stroke-width:2px +``` + +### The Three Components + +1. **[ALP (Automated Lending Platform)](../alp/index.md)**: The core lending/borrowing engine + - Manages collateral deposits and debt positions + - Provides automated rebalancing to maintain position health + - Uses DeFi Actions for composability + - Implements liquidation prevention mechanisms + +2. **[FYV (Flow Yield Vaults)](../flow-yield-vaults/index.md)**: The yield aggregation layer + - Deploys borrowed capital into optimal yield strategies + - Automatically compounds returns + - Provides liquidity for ALP liquidation prevention + - Manages risk through auto-balancing + +3. **[MOET](../moet/index.md)**: The synthetic stablecoin + - Serves as the unit of account for all pricing + - Primary borrowed asset in ALP + - Medium of exchange between components + - Maintains stability through over-collateralization + +## How the Components Work Together + +FCM creates a **yield-generating flywheel** by connecting these three components: + +### The Capital Flow + +```mermaid +sequenceDiagram + participant User + participant ALP + participant MOET + participant FYV + participant Yield + + User->>ALP: 1. Deposit FLOW collateral + ALP->>ALP: 2. Calculate borrowing capacity + ALP->>MOET: 3. Auto-borrow MOET + MOET->>FYV: 4. Deploy to yield strategy + FYV->>Yield: 5. Generate returns + Yield->>FYV: 6. Accumulate yield + + Note over ALP,FYV: When collateral price drops: + FYV->>ALP: 7. Provide funds for rebalancing + ALP->>MOET: 8. Repay debt automatically + + Note over User,ALP: Result: Position stays healthy +``` + +### Step-by-Step Flow + +1. **User deposits collateral** (e.g., FLOW tokens) into an ALP position +2. **ALP auto-borrows** MOET against the collateral to reach target health ratio (1.3) +3. **Borrowed MOET flows** to a FYV strategy (via DrawDownSink) +4. **FYV deploys capital** into yield-generating opportunities (farms, LPs, etc.) +5. **Yield accumulates** and compounds automatically +6. **If collateral price drops**: FYV provides liquidity to ALP (via TopUpSource) +7. **ALP repays debt** automatically to prevent liquidation +8. **User keeps position healthy** without manual intervention + +## Key Innovations + +### 1. Yield-Powered Liquidation Prevention + +Unlike traditional lending protocols where you must manually add collateral or repay debt when prices drop, FCM **uses your yield to maintain position health**. Yield from FYV strategies flows back to ALP automatically, ALP pulls from FYV to repay debt when needed, your position stays healthy without manual intervention, and **you earn yield while protecting yourself from liquidation**. + +### 2. Automated Capital Efficiency + +FCM maximizes your capital efficiency through automation: + +- **Auto-borrowing**: Instantly borrow optimal amount when depositing collateral +- **Auto-rebalancing**: Maintain target health ratio (1.1-1.5) automatically +- **Auto-compounding**: FYV strategies reinvest yields +- **Auto-protection**: Pull from yield to prevent liquidations + +### 3. Composable Architecture + +Each component can be used independently or together. Use **ALP alone** for traditional lending/borrowing, use **FYV alone** for yield aggregation, or use **FCM together** for the complete yield-generating system. + +## Why Use FCM? + +### For Yield Seekers + +FCM allows you to maximize returns by borrowing against collateral and deploying into high-yield strategies, leverage without liquidation risk as yield protects your positions, set and forget through complete automation, and compound returns as yields reinvest automatically. + +### For Conservative Users + +FCM provides liquidation protection through yield maintaining position health, flexible health targets allowing you to choose your risk tolerance (1.1-1.5), support for multiple collateral types including FLOW, stFLOW, USDC and more, and complete transparency with all logic on-chain and auditable. + +### For DeFi Builders + +FCM offers composable primitives allowing you to build on ALP, FYV, or both, standard interfaces for integration through DeFi Actions, the ability to create custom FYV strategies through extensible strategy patterns, and all code publicly available as open source. + +## Documentation Structure + +### Getting Started +- **[Understanding FCM Basics](./basics.md)** - Start here if you're new to FCM +- **[Architecture Overview](./architecture.md)** - How the three components integrate +- **[Mathematical Foundations](./math.md)** - The math behind FCM + +### Component Documentation +- **[ALP Documentation](../alp/index.md)** - Deep dive into the lending platform +- **[FYV Documentation](../flow-yield-vaults/index.md)** - Yield strategies and vaults +- **[MOET Documentation](../moet/index.md)** - The synthetic stablecoin + +### Advanced Topics +- **[Capital Flows](./capital-flows.md)** - How value moves through the system +- **[Risk Management](./risk-management.md)** - Understanding and managing risks +- **[Integration Guide](./integration.md)** - Building on top of FCM + +## Quick Start + +### As a User + +1. **Get collateral**: Acquire FLOW, stFLOW, or other supported tokens +2. **Connect wallet**: Use a Flow-compatible wallet +3. **Create position**: Deposit collateral to start earning +4. **Monitor health**: Track your position via the dashboard + +### As a Developer + +1. **Explore ALP**: Understand the lending primitives +2. **Study FYV**: Learn about yield strategies +3. **Read DeFi Actions**: Master the composability framework +4. **Build**: Create your own strategies or integrations + +## Key Metrics + +Understanding these metrics is crucial for using FCM: + +- **Health Factor**: Ratio of collateral value to debt (must stay above 1.0) +- **Target Health**: Optimal ratio (typically 1.3) +- **Collateral Factor**: Percentage of collateral value usable for borrowing (e.g., 0.8 = 80%) +- **APY**: Annual Percentage Yield from FYV strategies +- **Utilization Rate**: Percentage of ALP liquidity currently borrowed + +## Security & Audits + +FCM implements multiple security layers including smart contract audits for all core contracts, oracle safety through multiple price feed sources with staleness checks, multiple liquidation mechanisms to maintain solvency, circuit breakers for emergency pause functionality, and open source code that is publicly reviewable. + +## Community & Support + +- **GitHub**: [FlowCreditMarket](https://github.com/onflow/FlowCreditMarket) and [FlowYieldVaults](https://github.com/onflow/FlowYieldVaults) +- **Discord**: [Flow Discord](https://discord.gg/flow) - #fcm channel +- **Documentation**: This site +- **Developer Forums**: [Flow Forum](https://forum.onflow.org) + +## What's Next? + +- **New to FCM?** Start with [Understanding FCM Basics](./basics.md) +- **Want technical details?** Read the [Architecture Overview](./architecture.md) +- **Ready to use it?** Explore [ALP](../alp/index.md) or [FYV](../flow-yield-vaults/index.md) +- **Building an integration?** Check the [Integration Guide](./integration.md) + +--- + +:::tip +FCM is designed as a **composable system**. You don't need to use all three components - choose what fits your needs. But when used together, they create a powerful yield-generating machine with automated liquidation protection. +::: diff --git a/docs/defi/fcm/math.md b/docs/defi/fcm/math.md new file mode 100644 index 0000000000..9975281822 --- /dev/null +++ b/docs/defi/fcm/math.md @@ -0,0 +1,705 @@ +--- +title: Mathematical Foundations +sidebar_position: 4 +--- + +# Mathematical Foundations of FCM + +This document explains the mathematical models and formulas that power Flow Credit Market. Understanding these fundamentals helps you reason about system behavior and make informed decisions. + +## Core Variables + +### Token-Level Variables + +| Variable | Symbol | Description | +|----------|--------|-------------| +| **Price** | $P_t$ | Price of token $t$ in MOET terms | +| **Collateral Factor** | $CF_t$ | Usable percentage of token $t$ value (0 < $CF_t$ ≀ 1) | +| **Borrow Factor** | $BF_t$ | Multiplier for borrowed token $t$ (typically 1.0) | +| **Amount** | $A_t$ | Quantity of token $t$ | + +### Position-Level Variables + +| Variable | Symbol | Description | +|----------|--------|-------------| +| **Effective Collateral** | $EC$ | Total usable collateral value in MOET | +| **Effective Debt** | $ED$ | Total debt value in MOET | +| **Health Factor** | $HF$ | Ratio of collateral to debt | +| **Target Health** | $HF_{target}$ | Desired health ratio (typically 1.3) | +| **Min Health** | $HF_{min}$ | Minimum before rebalancing (typically 1.1) | +| **Max Health** | $HF_{max}$ | Maximum before rebalancing (typically 1.5) | + +### Interest Variables + +| Variable | Symbol | Description | +|----------|--------|-------------| +| **Interest Index** | $I_t(n)$ | Interest index for token $t$ at time $n$ | +| **Scaled Balance** | $B_{scaled}$ | Balance divided by interest index | +| **True Balance** | $B_{true}$ | Actual balance including accrued interest | +| **Interest Rate** | $r$ | Annual interest rate | + +## Fundamental Formulas + +### 1. Effective Collateral + +The effective collateral is the sum of all collateral assets multiplied by their prices and collateral factors: + +$$ +EC = \sum_{t \in \text{Collateral}} A_t \times P_t \times CF_t +$$ + +**Example**: +``` +Collateral assets: +- 1000 FLOW @ $1 each, CF = 0.8 +- 500 USDC @ $1 each, CF = 0.9 + +EC = (1000 Γ— 1 Γ— 0.8) + (500 Γ— 1 Γ— 0.9) + = 800 + 450 + = $1250 MOET +``` + +### 2. Effective Debt + +The effective debt is the sum of all borrowed assets multiplied by their prices and borrow factors: + +$$ +ED = \sum_{t \in \text{Debt}} A_t \times P_t \times BF_t +$$ + +**Example**: +``` +Debt: +- 800 MOET @ $1 each, BF = 1.0 + +ED = 800 Γ— 1 Γ— 1.0 + = $800 MOET +``` + +### 3. Health Factor + +The health factor is the ratio of effective collateral to effective debt: + +$$ +HF = \frac{EC}{ED} +$$ + +**Critical thresholds**: +- $HF < 1.0$: Position is liquidatable +- $HF = 1.0$: Exactly at liquidation threshold +- $HF > 1.0$: Position is solvent + +**Example**: +``` +EC = $1250, ED = $800 + +HF = 1250 / 800 = 1.5625 +``` + +### 4. Maximum Borrowing Capacity + +The maximum amount that can be borrowed to reach target health: + +$$ +\text{Max Borrow} = \frac{EC}{HF_{target}} +$$ + +**Derivation**: +``` +We want: HF = EC / ED = HF_target +Therefore: ED = EC / HF_target +``` + +**Example**: +``` +EC = $1250 +HF_target = 1.3 + +Max Borrow = 1250 / 1.3 = $961.54 MOET +``` + +## Auto-Borrowing Mathematics + +### Initial Auto-Borrow Amount + +When a user deposits collateral with `pushToDrawDownSink=true`, the system calculates the initial borrow amount: + +$$ +\text{Borrow Amount} = \frac{EC}{HF_{target}} +$$ + +**Step-by-step calculation**: + +1. **Calculate effective collateral**: + $$ + EC = A_{collateral} \times P_{collateral} \times CF_{collateral} + $$ + +2. **Calculate target debt**: + $$ + ED_{target} = \frac{EC}{HF_{target}} + $$ + +3. **Borrow to reach target**: + $$ + \text{Borrow} = ED_{target} = \frac{EC}{HF_{target}} + $$ + +**Complete example**: +``` +User deposits: 1000 FLOW +FLOW price: $1.00 +Collateral factor: 0.8 +Target health: 1.3 + +Step 1: EC = 1000 Γ— 1.00 Γ— 0.8 = $800 + +Step 2: ED_target = 800 / 1.3 = $615.38 + +Step 3: Borrow = $615.38 MOET + +Result: +- Collateral: 1000 FLOW ($800 effective) +- Debt: 615.38 MOET +- Health: 800 / 615.38 = 1.30 βœ“ +``` + +## Rebalancing Mathematics + +### Overcollateralized Rebalancing (HF > HF_max) + +When health exceeds maximum, calculate additional borrowing capacity: + +$$ +\text{Additional Borrow} = \frac{EC}{HF_{target}} - ED_{current} +$$ + +**Proof**: +``` +Want: HF_new = HF_target +HF_new = EC / ED_new = HF_target +ED_new = EC / HF_target + +Additional borrow = ED_new - ED_current + = (EC / HF_target) - ED_current +``` + +**Example**: +``` +Current state: +- EC = $800 +- ED = $400 +- HF = 800 / 400 = 2.0 (> HF_max of 1.5) + +Calculate additional borrow: +ED_target = 800 / 1.3 = $615.38 +Additional = 615.38 - 400 = $215.38 MOET + +After borrowing $215.38: +- EC = $800 (unchanged) +- ED = $615.38 +- HF = 800 / 615.38 = 1.30 βœ“ +``` + +### Undercollateralized Rebalancing (HF < HF_min) + +When health falls below minimum, calculate required repayment: + +$$ +\text{Required Repayment} = ED_{current} - \frac{EC}{HF_{target}} +$$ + +**Proof**: +``` +Want: HF_new = HF_target +HF_new = EC / ED_new = HF_target +ED_new = EC / HF_target + +Required repayment = ED_current - ED_new + = ED_current - (EC / HF_target) +``` + +**Example**: +``` +Price drops! Collateral value decreases. + +New state: +- EC = $640 (was $800, FLOW dropped 20%) +- ED = $615.38 (unchanged) +- HF = 640 / 615.38 = 1.04 (< HF_min of 1.1) + +Calculate required repayment: +ED_target = 640 / 1.3 = $492.31 +Repayment = 615.38 - 492.31 = $123.07 MOET + +After repaying $123.07: +- EC = $640 (unchanged) +- ED = $492.31 +- HF = 640 / 492.31 = 1.30 βœ“ +``` + +## Interest Mathematics + +### Scaled Balance System + +FCM uses **scaled balances** to efficiently track interest: + +$$ +B_{scaled} = \frac{B_{true}}{I_t} +$$ + +Where: +- $B_{scaled}$: Stored scaled balance +- $B_{true}$: Actual balance including interest +- $I_t$: Current interest index + +**Key insight**: Scaled balance stays constant while interest index grows. + +### Interest Index Growth + +The interest index grows continuously based on the interest rate: + +$$ +I_t(n+1) = I_t(n) \times (1 + r \times \Delta t) +$$ + +Where: +- $r$: Annual interest rate (e.g., 0.10 for 10%) +- $\Delta t$: Time elapsed (in years) + +**For compound interest**: +$$ +I_t(n) = I_0 \times e^{r \times t} +$$ + +Where $e$ is Euler's number (β‰ˆ2.718). + +### True Balance Calculation + +To get the current true balance from scaled balance: + +$$ +B_{true}(t) = B_{scaled} \times I_t +$$ + +**Example**: +``` +Initial deposit: 1000 MOET +Initial index: I_0 = 1.0 +Scaled balance: B_scaled = 1000 / 1.0 = 1000 + +After 1 year at 10% APY: +Interest index: I_1 = 1.0 Γ— e^(0.10 Γ— 1) β‰ˆ 1.105 +True balance: B_true = 1000 Γ— 1.105 = 1105 MOET + +User's debt grew from 1000 to 1105 MOET (10.5% with compound interest) +``` + +### Why Scaled Balances? + +**Without scaled balances**: +``` +Every block (every ~2 seconds): +- Update interest index +- Iterate through ALL positions +- Update each position's balance +- Gas cost: O(n) where n = number of positions +``` + +**With scaled balances**: +``` +Every block: +- Update interest index only +- Gas cost: O(1) + +When position is touched: +- Calculate true balance: scaled Γ— index +- Gas cost: O(1) per position +``` + +**Result**: Massive gas savings for the protocol! + +## Liquidation Mathematics + +### Liquidation Trigger + +A position becomes liquidatable when: + +$$ +HF < 1.0 +$$ + +Equivalently: +$$ +EC < ED +$$ + +### Liquidation Target + +Liquidations aim to restore health to a target (typically 1.05): + +$$ +HF_{liquidation} = 1.05 +$$ + +### Collateral Seized Calculation + +Amount of collateral to seize: + +$$ +\text{Collateral Seized} = \frac{ED_{repaid} \times (1 + \text{bonus})}{P_{collateral} \times CF_{collateral}} +$$ + +Where: +- $ED_{repaid}$: Amount of debt repaid by liquidator +- $\text{bonus}$: Liquidation bonus (e.g., 0.05 for 5%) +- $P_{collateral}$: Price of collateral token +- $CF_{collateral}$: Collateral factor + +**Example**: +``` +Liquidatable position: +- Collateral: 1000 FLOW @ $0.60 +- Debt: 650 MOET @ $1.00 +- HF = (1000 Γ— 0.60 Γ— 0.8) / 650 = 0.738 < 1.0 + +Liquidation: +- Liquidator repays: 150 MOET +- Liquidation bonus: 5% +- Collateral seized: (150 Γ— 1.05) / (0.60 Γ— 0.8) = 328.125 FLOW + +After liquidation: +- Collateral: 671.875 FLOW @ $0.60 = $403.125 effective +- Debt: 500 MOET +- HF = 403.125 / 500 = 0.806... + +(May need multiple liquidations or larger liquidation to reach target 1.05) +``` + +### Required Debt Repayment for Target Health + +To restore position to target health factor: + +$$ +ED_{repay} = ED_{current} - \frac{EC}{HF_{liquidation}} +$$ + +**Example**: +``` +From above, to reach HF = 1.05: +EC = 1000 Γ— 0.60 Γ— 0.8 = $480 +ED_current = $650 + +ED_target = 480 / 1.05 = $457.14 +ED_repay = 650 - 457.14 = $192.86 MOET must be repaid +``` + +## Price Impact Analysis + +### Health Factor Sensitivity to Price Changes + +Given a percentage change in collateral price: + +$$ +HF_{new} = HF_{old} \times \frac{P_{new}}{P_{old}} +$$ + +**Derivation**: +``` +HF_old = EC_old / ED = (A Γ— P_old Γ— CF) / ED + +HF_new = EC_new / ED = (A Γ— P_new Γ— CF) / ED + +HF_new / HF_old = P_new / P_old + +Therefore: HF_new = HF_old Γ— (P_new / P_old) +``` + +**Example**: +``` +Initial: HF = 1.5, Price = $1.00 + +Price drops 20% to $0.80: +HF_new = 1.5 Γ— (0.80 / 1.00) = 1.5 Γ— 0.80 = 1.20 + +Price drops 30% to $0.70: +HF_new = 1.5 Γ— (0.70 / 1.00) = 1.5 Γ— 0.70 = 1.05 (approaching danger!) + +Price drops 35% to $0.65: +HF_new = 1.5 Γ— (0.65 / 1.00) = 1.5 Γ— 0.65 = 0.975 < 1.0 (liquidatable!) +``` + +### Maximum Safe Price Drop + +What's the maximum price drop before liquidation? + +$$ +\text{Max Drop %} = 1 - \frac{1.0}{HF_{current}} +$$ + +**Derivation**: +``` +Want: HF_new = 1.0 (liquidation threshold) +HF_new = HF_old Γ— (P_new / P_old) = 1.0 + +P_new / P_old = 1.0 / HF_old + +P_new = P_old / HF_old + +Drop = P_old - P_new = P_old Γ— (1 - 1/HF_old) + +Drop % = 1 - 1/HF_old +``` + +**Examples**: +``` +HF = 1.3: Max drop = 1 - 1/1.3 = 23.08% +HF = 1.5: Max drop = 1 - 1/1.5 = 33.33% +HF = 2.0: Max drop = 1 - 1/2.0 = 50.00% +HF = 1.1: Max drop = 1 - 1/1.1 = 9.09% (very risky!) +``` + +## Multi-Collateral Mathematics + +### Multiple Collateral Types + +With multiple collateral types: + +$$ +EC = \sum_{i=1}^{n} A_i \times P_i \times CF_i +$$ + +Where $i$ iterates over all collateral token types. + +### Effective Collateral with Price Correlation + +When collateral types are correlated (e.g., FLOW and stFLOW): + +**Simplified (no correlation)**: +$$ +\text{Risk} = \sum_{i} \text{Risk}_i +$$ + +**With correlation** (advanced): +$$ +\text{Risk} = \sqrt{\sum_{i}\sum_{j} w_i w_j \sigma_i \sigma_j \rho_{ij}} +$$ + +Where: +- $w_i$: Weight of asset $i$ +- $\sigma_i$: Volatility of asset $i$ +- $\rho_{ij}$: Correlation between assets $i$ and $j$ + +**Practical impact**: +``` +Scenario 1: Uncorrelated collateral +- 50% FLOW (volatile) +- 50% USDC (stable) +- Effective diversification + +Scenario 2: Correlated collateral +- 50% FLOW (volatile) +- 50% stFLOW (volatile, correlated with FLOW) +- Limited diversification +- Both can drop together! +``` + +## Yield Calculations + +### Simple APY + +Annual Percentage Yield without compounding: + +$$ +\text{APY}_{simple} = \frac{\text{Final Value} - \text{Initial Value}}{\text{Initial Value}} \times \frac{365}{\text{Days}} +$$ + +### Compound APY + +With continuous compounding: + +$$ +\text{APY}_{compound} = e^r - 1 +$$ + +Where $r$ is the continuous annual rate. + +### Leveraged Yield + +When borrowing to increase yield exposure: + +$$ +\text{Yield}_{leveraged} = \text{Yield}_{strategy} - \text{Interest}_{borrowed} +$$ + +**Example**: +``` +Deposit: $1000 collateral +Borrow: $615 at 5% APY +Deploy $615 to strategy earning 10% APY + +Costs: +- Interest on borrowed: 615 Γ— 0.05 = $30.75/year + +Returns: +- Yield from strategy: 615 Γ— 0.10 = $61.50/year + +Net leveraged yield: 61.50 - 30.75 = $30.75/year +Effective APY on your $1000: 30.75 / 1000 = 3.075% extra +Total return: Base yield + leveraged yield +``` + +## Risk Metrics + +### Liquidation Risk Score + +A simplified risk score: + +$$ +\text{Risk Score} = \frac{1}{HF - 1.0} \times \text{Volatility}_{collateral} +$$ + +Higher score = higher risk. + +### Value at Risk (VaR) + +Maximum expected loss over time period at confidence level: + +$$ +\text{VaR}_{95\%} = EC \times \sigma \times z_{0.95} +$$ + +Where: +- $\sigma$: Daily volatility of collateral +- $z_{0.95}$: Z-score for 95% confidence (β‰ˆ1.645) + +**Example**: +``` +Collateral: $1000 FLOW +Daily volatility: 5% +Confidence: 95% + +VaR = 1000 Γ— 0.05 Γ— 1.645 = $82.25 + +Interpretation: 95% confident that daily loss won't exceed $82.25 +``` + +## Validation & Safety Checks + +### Health Factor Bounds + +All operations must satisfy: + +$$ +1.0 \leq HF_{min} < HF_{target} < HF_{max} +$$ + +Typical values: $HF_{min} = 1.1$, $HF_{target} = 1.3$, $HF_{max} = 1.5$ + +### Collateral Factor Bounds + +For safety: + +$$ +0 < CF_t \leq 1.0 +$$ + +Typically: +- Volatile assets (FLOW): $CF = 0.75 - 0.85$ +- Stable assets (USDC): $CF = 0.90 - 0.95$ +- Liquid staking (stFLOW): $CF = 0.80 - 0.85$ + +### Maximum Leverage + +Maximum theoretical leverage: + +$$ +\text{Max Leverage} = \frac{1}{1 - CF} +$$ + +**Examples**: +``` +CF = 0.8: Max leverage = 1 / (1 - 0.8) = 5x +CF = 0.75: Max leverage = 1 / (1 - 0.75) = 4x +CF = 0.9: Max leverage = 1 / (1 - 0.9) = 10x (risky!) +``` + +But actual safe leverage is constrained by target health: + +$$ +\text{Safe Leverage} = \frac{CF}{HF_{target}} +$$ + +**Examples**: +``` +CF = 0.8, HF = 1.3: Safe leverage = 0.8 / 1.3 β‰ˆ 0.615 = ~1.62x +CF = 0.75, HF = 1.5: Safe leverage = 0.75 / 1.5 = 0.50 = 1.5x +``` + +## Practical Examples + +### Complete Position Lifecycle Math + +``` +=== Initial Deposit === +Deposit: 1000 FLOW @ $1.00 +CF = 0.8, HF_target = 1.3 + +EC = 1000 Γ— 1.00 Γ— 0.8 = $800 +Borrow = 800 / 1.3 = $615.38 MOET +HF = 800 / 615.38 = 1.30 βœ“ + +=== Price Drop 20% === +New price: $0.80 +EC = 1000 Γ— 0.80 Γ— 0.8 = $640 +ED = $615.38 (unchanged) +HF = 640 / 615.38 = 1.04 < 1.1 ⚠️ + +Rebalance needed: +ED_target = 640 / 1.3 = $492.31 +Repay = 615.38 - 492.31 = $123.07 + +After repayment: +EC = $640, ED = $492.31 +HF = 640 / 492.31 = 1.30 βœ“ + +=== Price Recovery to $1.00 === +EC = 1000 Γ— 1.00 Γ— 0.8 = $800 +ED = $492.31 +HF = 800 / 492.31 = 1.625 > 1.5 ⚠️ + +Rebalance needed: +ED_target = 800 / 1.3 = $615.38 +Borrow = 615.38 - 492.31 = $123.07 + +After borrowing: +EC = $800, ED = $615.38 +HF = 800 / 615.38 = 1.30 βœ“ + +Position back to optimal state! +``` + +## Summary of Key Formulas + +| Formula | Expression | Use | +|---------|------------|-----| +| **Effective Collateral** | $EC = \sum A_t \times P_t \times CF_t$ | Calculate total collateral value | +| **Health Factor** | $HF = EC / ED$ | Monitor position safety | +| **Max Borrow** | $\text{Max} = EC / HF_{target}$ | Auto-borrowing amount | +| **Rebalance Up** | $\text{Repay} = ED - (EC / HF_{target})$ | Required debt reduction | +| **Rebalance Down** | $\text{Borrow} = (EC / HF_{target}) - ED$ | Additional borrowing capacity | +| **Scaled Balance** | $B_{scaled} = B_{true} / I_t$ | Interest-efficient tracking | +| **True Balance** | $B_{true} = B_{scaled} \times I_t$ | Current balance with interest | +| **Max Price Drop** | $\text{Drop%} = 1 - (1 / HF)$ | Liquidation safety margin | + +## Next Steps + +- **Apply these formulas**: [ALP Documentation](../alp/index.md) +- **Understand architecture**: [FCM Architecture](./architecture.md) +- **Learn the basics**: [Understanding FCM Basics](./basics.md) + +--- + +:::tip +These mathematical foundations ensure FCM operates predictably and safely. All formulas are implemented on-chain and can be verified by examining the smart contracts. +::: From 2eeea892d860743db2a222f5d39ae9cabb703f30 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Thu, 18 Dec 2025 15:20:30 -0600 Subject: [PATCH 02/13] Fix broken markdown links and LaTeX parsing errors - Replace non-existent flow-yield-vaults and moet directory links with placeholders - Remove \text{} LaTeX commands causing acorn parsing errors in math.md - All formulas now use plain text variables instead of \text{} wrapper --- docs/defi/alp/defi-actions.md | 2 +- docs/defi/alp/index.md | 4 +-- docs/defi/alp/moet-role.md | 4 +-- docs/defi/fcm/architecture.md | 4 +-- docs/defi/fcm/basics.md | 6 ++--- docs/defi/fcm/index.md | 10 ++++---- docs/defi/fcm/math.md | 46 +++++++++++++++++------------------ 7 files changed, 38 insertions(+), 38 deletions(-) diff --git a/docs/defi/alp/defi-actions.md b/docs/defi/alp/defi-actions.md index 1901feda3c..cdcfb97388 100644 --- a/docs/defi/alp/defi-actions.md +++ b/docs/defi/alp/defi-actions.md @@ -5,7 +5,7 @@ sidebar_position: 7 # DeFi Actions Integration -DeFi Actions is a composability framework that enables ALP to integrate seamlessly with other DeFi protocols like [Flow Yield Vaults (FYV)](../flow-yield-vaults/index.md). This powerful abstraction allows for automated value flows and complex strategy compositions. +DeFi Actions is a composability framework that enables ALP to integrate seamlessly with other DeFi protocols like [Flow Yield Vaults (FYV)](#). This powerful abstraction allows for automated value flows and complex strategy compositions. ## Understanding DeFi Actions diff --git a/docs/defi/alp/index.md b/docs/defi/alp/index.md index 9f5a2899ca..6e9ea308c3 100644 --- a/docs/defi/alp/index.md +++ b/docs/defi/alp/index.md @@ -9,7 +9,7 @@ sidebar_position: 1 The Automated Lending Platform (ALP) is the core lending protocol component of [Flow Credit Market (FCM)](../fcm/index.md). ALP provides the foundational lending and borrowing infrastructure with automated position management and liquidation protection. :::info -ALP is one of three core components that make up FCM: ALP (Automated Lending Platform) provides the lending/borrowing engine, [Flow Yield Vaults (FYV)](../flow-yield-vaults/index.md) handles yield aggregation strategies, and [MOET](../moet/index.md) serves as the synthetic stablecoin and unit of account. +ALP is one of three core components that make up FCM: ALP (Automated Lending Platform) provides the lending/borrowing engine, [Flow Yield Vaults (FYV)](#) handles yield aggregation strategies, and [MOET](#) serves as the synthetic stablecoin and unit of account. ::: ## What is ALP? @@ -87,7 +87,7 @@ For most users, we recommend using **[Flow Credit Market (FCM)](../fcm/index.md) - [ALP GitHub Repository](https://github.com/onflow/FlowCreditMarket) (FlowCreditMarket contract) - [Flow Credit Market (FCM)](../fcm/index.md) - The complete product -- [MOET Token Documentation](../moet/index.md) +- [MOET Token Documentation](#) - [Flow Documentation](https://developers.flow.com) ## Security Considerations diff --git a/docs/defi/alp/moet-role.md b/docs/defi/alp/moet-role.md index 870ee234ca..c82a7fcd89 100644 --- a/docs/defi/alp/moet-role.md +++ b/docs/defi/alp/moet-role.md @@ -15,7 +15,7 @@ MOET plays a central role in ALP as the default token and primary unit of accoun - πŸ”„ **The rebalancing medium** - Used for all automated operations - πŸŒ‰ **The value bridge** - Flows between ALP and FYV -For more about MOET tokenomics, see the [MOET documentation](../moet/index.md). +For more about MOET tokenomics, see the [MOET documentation](#). ## MOET as Unit of Account @@ -427,7 +427,7 @@ MOET is central to all FCM calculations: - **Understand automation**: [Rebalancing Mechanics](./rebalancing.md) - **See the big picture**: [FCM Architecture](../fcm/architecture.md) -- **Deep dive on MOET**: [MOET Documentation](../moet/index.md) +- **Deep dive on MOET**: [MOET Documentation](#) - **Explore position management**: [Position Lifecycle](./position-lifecycle.md) --- diff --git a/docs/defi/fcm/architecture.md b/docs/defi/fcm/architecture.md index 82e6c87b14..0cdc6adb08 100644 --- a/docs/defi/fcm/architecture.md +++ b/docs/defi/fcm/architecture.md @@ -497,8 +497,8 @@ Actions: - **Understand the math**: [Mathematical Foundations](./math.md) - **Explore ALP details**: [ALP Architecture](../alp/architecture.md) -- **Learn about FYV**: [FYV Documentation](../flow-yield-vaults/index.md) -- **Deep dive into MOET**: [MOET Documentation](../moet/index.md) +- **Learn about FYV**: [FYV Documentation](#) +- **Deep dive into MOET**: [MOET Documentation](#) --- diff --git a/docs/defi/fcm/basics.md b/docs/defi/fcm/basics.md index 9ea1dffb81..37f3d1478f 100644 --- a/docs/defi/fcm/basics.md +++ b/docs/defi/fcm/basics.md @@ -139,7 +139,7 @@ Learn more: [ALP Documentation](../alp/index.md) - ALP repays debt ``` -Learn more: [FYV Documentation](../flow-yield-vaults/index.md) +Learn more: [FYV Documentation](#) ### Component 3: MOET (The Unit of Account) @@ -153,7 +153,7 @@ Learn more: [FYV Documentation](../flow-yield-vaults/index.md) **Why MOET?**: MOET standardizes all valuations, simplifies multi-collateral calculations, is designed specifically for DeFi operations, and provides deep integration with the Flow ecosystem. -Learn more: [MOET Documentation](../moet/index.md) +Learn more: [MOET Documentation](#) ## The Capital Flow Cycle @@ -432,7 +432,7 @@ Now that you understand the basics: 1. **Learn the architecture**: [Architecture Overview](./architecture.md) 2. **Understand the math**: [Mathematical Foundations](./math.md) -3. **Explore components**: [ALP](../alp/index.md), [FYV](../flow-yield-vaults/index.md), [MOET](../moet/index.md) +3. **Explore components**: [ALP](../alp/index.md), [FYV](#), [MOET](#) 4. **Start using FCM**: Follow the quick start guide --- diff --git a/docs/defi/fcm/index.md b/docs/defi/fcm/index.md index a144b36dc9..198d773847 100644 --- a/docs/defi/fcm/index.md +++ b/docs/defi/fcm/index.md @@ -32,13 +32,13 @@ graph LR - Uses DeFi Actions for composability - Implements liquidation prevention mechanisms -2. **[FYV (Flow Yield Vaults)](../flow-yield-vaults/index.md)**: The yield aggregation layer +2. **[FYV (Flow Yield Vaults)](#)**: The yield aggregation layer - Deploys borrowed capital into optimal yield strategies - Automatically compounds returns - Provides liquidity for ALP liquidation prevention - Manages risk through auto-balancing -3. **[MOET](../moet/index.md)**: The synthetic stablecoin +3. **[MOET](#)**: The synthetic stablecoin - Serves as the unit of account for all pricing - Primary borrowed asset in ALP - Medium of exchange between components @@ -125,8 +125,8 @@ FCM offers composable primitives allowing you to build on ALP, FYV, or both, sta ### Component Documentation - **[ALP Documentation](../alp/index.md)** - Deep dive into the lending platform -- **[FYV Documentation](../flow-yield-vaults/index.md)** - Yield strategies and vaults -- **[MOET Documentation](../moet/index.md)** - The synthetic stablecoin +- **[FYV Documentation](#)** - Yield strategies and vaults +- **[MOET Documentation](#)** - The synthetic stablecoin ### Advanced Topics - **[Capital Flows](./capital-flows.md)** - How value moves through the system @@ -174,7 +174,7 @@ FCM implements multiple security layers including smart contract audits for all - **New to FCM?** Start with [Understanding FCM Basics](./basics.md) - **Want technical details?** Read the [Architecture Overview](./architecture.md) -- **Ready to use it?** Explore [ALP](../alp/index.md) or [FYV](../flow-yield-vaults/index.md) +- **Ready to use it?** Explore [ALP](../alp/index.md) or [FYV](#) - **Building an integration?** Check the [Integration Guide](./integration.md) --- diff --git a/docs/defi/fcm/math.md b/docs/defi/fcm/math.md index 9975281822..c56163b8e0 100644 --- a/docs/defi/fcm/math.md +++ b/docs/defi/fcm/math.md @@ -45,7 +45,7 @@ This document explains the mathematical models and formulas that power Flow Cred The effective collateral is the sum of all collateral assets multiplied by their prices and collateral factors: $$ -EC = \sum_{t \in \text{Collateral}} A_t \times P_t \times CF_t +EC = \sum_{t \in Collateral} A_t \times P_t \times CF_t $$ **Example**: @@ -64,7 +64,7 @@ EC = (1000 Γ— 1 Γ— 0.8) + (500 Γ— 1 Γ— 0.9) The effective debt is the sum of all borrowed assets multiplied by their prices and borrow factors: $$ -ED = \sum_{t \in \text{Debt}} A_t \times P_t \times BF_t +ED = \sum_{t \in Debt} A_t \times P_t \times BF_t $$ **Example**: @@ -101,7 +101,7 @@ HF = 1250 / 800 = 1.5625 The maximum amount that can be borrowed to reach target health: $$ -\text{Max Borrow} = \frac{EC}{HF_{target}} +MaxBorrow = \frac{EC}{HF_{target}} $$ **Derivation**: @@ -125,7 +125,7 @@ Max Borrow = 1250 / 1.3 = $961.54 MOET When a user deposits collateral with `pushToDrawDownSink=true`, the system calculates the initial borrow amount: $$ -\text{Borrow Amount} = \frac{EC}{HF_{target}} +BorrowAmount = \frac{EC}{HF_{target}} $$ **Step-by-step calculation**: @@ -142,7 +142,7 @@ $$ 3. **Borrow to reach target**: $$ - \text{Borrow} = ED_{target} = \frac{EC}{HF_{target}} + Borrow = ED_{target} = \frac{EC}{HF_{target}} $$ **Complete example**: @@ -171,7 +171,7 @@ Result: When health exceeds maximum, calculate additional borrowing capacity: $$ -\text{Additional Borrow} = \frac{EC}{HF_{target}} - ED_{current} +AdditionalBorrow = \frac{EC}{HF_{target}} - ED_{current} $$ **Proof**: @@ -206,7 +206,7 @@ After borrowing $215.38: When health falls below minimum, calculate required repayment: $$ -\text{Required Repayment} = ED_{current} - \frac{EC}{HF_{target}} +RequiredRepayment = ED_{current} - \frac{EC}{HF_{target}} $$ **Proof**: @@ -347,12 +347,12 @@ $$ Amount of collateral to seize: $$ -\text{Collateral Seized} = \frac{ED_{repaid} \times (1 + \text{bonus})}{P_{collateral} \times CF_{collateral}} +CollateralSeized = \frac{ED_{repaid} \times (1 + bonus)}{P_{collateral} \times CF_{collateral}} $$ Where: - $ED_{repaid}$: Amount of debt repaid by liquidator -- $\text{bonus}$: Liquidation bonus (e.g., 0.05 for 5%) +- $bonus$: Liquidation bonus (e.g., 0.05 for 5%) - $P_{collateral}$: Price of collateral token - $CF_{collateral}$: Collateral factor @@ -434,7 +434,7 @@ HF_new = 1.5 Γ— (0.65 / 1.00) = 1.5 Γ— 0.65 = 0.975 < 1.0 (liquidatable!) What's the maximum price drop before liquidation? $$ -\text{Max Drop %} = 1 - \frac{1.0}{HF_{current}} +MaxDropPercent = 1 - \frac{1.0}{HF_{current}} $$ **Derivation**: @@ -477,12 +477,12 @@ When collateral types are correlated (e.g., FLOW and stFLOW): **Simplified (no correlation)**: $$ -\text{Risk} = \sum_{i} \text{Risk}_i +Risk = \sum_{i} Risk_i $$ **With correlation** (advanced): $$ -\text{Risk} = \sqrt{\sum_{i}\sum_{j} w_i w_j \sigma_i \sigma_j \rho_{ij}} +Risk = \sqrt{\sum_{i}\sum_{j} w_i w_j \sigma_i \sigma_j \rho_{ij}} $$ Where: @@ -511,7 +511,7 @@ Scenario 2: Correlated collateral Annual Percentage Yield without compounding: $$ -\text{APY}_{simple} = \frac{\text{Final Value} - \text{Initial Value}}{\text{Initial Value}} \times \frac{365}{\text{Days}} +APY_{simple} = \frac{FinalValue - InitialValue}{InitialValue} \times \frac{365}{Days} $$ ### Compound APY @@ -519,7 +519,7 @@ $$ With continuous compounding: $$ -\text{APY}_{compound} = e^r - 1 +APY_{compound} = e^r - 1 $$ Where $r$ is the continuous annual rate. @@ -529,7 +529,7 @@ Where $r$ is the continuous annual rate. When borrowing to increase yield exposure: $$ -\text{Yield}_{leveraged} = \text{Yield}_{strategy} - \text{Interest}_{borrowed} +Yield_{leveraged} = Yield_{strategy} - Interest_{borrowed} $$ **Example**: @@ -556,7 +556,7 @@ Total return: Base yield + leveraged yield A simplified risk score: $$ -\text{Risk Score} = \frac{1}{HF - 1.0} \times \text{Volatility}_{collateral} +\text{Risk Score} = \frac{1}{HF - 1.0} \times Volatility_{collateral} $$ Higher score = higher risk. @@ -566,7 +566,7 @@ Higher score = higher risk. Maximum expected loss over time period at confidence level: $$ -\text{VaR}_{95\%} = EC \times \sigma \times z_{0.95} +VaR_{95\%} = EC \times \sigma \times z_{0.95} $$ Where: @@ -614,7 +614,7 @@ Typically: Maximum theoretical leverage: $$ -\text{Max Leverage} = \frac{1}{1 - CF} +MaxLeverage = \frac{1}{1 - CF} $$ **Examples**: @@ -627,7 +627,7 @@ CF = 0.9: Max leverage = 1 / (1 - 0.9) = 10x (risky!) But actual safe leverage is constrained by target health: $$ -\text{Safe Leverage} = \frac{CF}{HF_{target}} +SafeLeverage = \frac{CF}{HF_{target}} $$ **Examples**: @@ -685,12 +685,12 @@ Position back to optimal state! |---------|------------|-----| | **Effective Collateral** | $EC = \sum A_t \times P_t \times CF_t$ | Calculate total collateral value | | **Health Factor** | $HF = EC / ED$ | Monitor position safety | -| **Max Borrow** | $\text{Max} = EC / HF_{target}$ | Auto-borrowing amount | -| **Rebalance Up** | $\text{Repay} = ED - (EC / HF_{target})$ | Required debt reduction | -| **Rebalance Down** | $\text{Borrow} = (EC / HF_{target}) - ED$ | Additional borrowing capacity | +| **Max Borrow** | $Max = EC / HF_{target}$ | Auto-borrowing amount | +| **Rebalance Up** | $Repay = ED - (EC / HF_{target})$ | Required debt reduction | +| **Rebalance Down** | $Borrow = (EC / HF_{target}) - ED$ | Additional borrowing capacity | | **Scaled Balance** | $B_{scaled} = B_{true} / I_t$ | Interest-efficient tracking | | **True Balance** | $B_{true} = B_{scaled} \times I_t$ | Current balance with interest | -| **Max Price Drop** | $\text{Drop%} = 1 - (1 / HF)$ | Liquidation safety margin | +| **Max Price Drop** | $DropPercent = 1 - (1 / HF)$ | Liquidation safety margin | ## Next Steps From d79ac0c824e1db427a1d15d07021b10a10ad7f01 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Thu, 18 Dec 2025 15:26:36 -0600 Subject: [PATCH 03/13] Fix additional broken links and convert all LaTeX blocks to code blocks - Replace broken links: capital-flows.md, risk-management.md, integration.md - Convert all $$ LaTeX blocks to ```math code blocks for MDX compatibility - Remove LaTeX \sum and \in operators causing acorn parsing errors - Use plain mathematical notation instead of LaTeX commands --- docs/defi/fcm/index.md | 8 +-- docs/defi/fcm/math.md | 134 ++++++++++++++++++++--------------------- 2 files changed, 71 insertions(+), 71 deletions(-) diff --git a/docs/defi/fcm/index.md b/docs/defi/fcm/index.md index 198d773847..8e85651a59 100644 --- a/docs/defi/fcm/index.md +++ b/docs/defi/fcm/index.md @@ -129,9 +129,9 @@ FCM offers composable primitives allowing you to build on ALP, FYV, or both, sta - **[MOET Documentation](#)** - The synthetic stablecoin ### Advanced Topics -- **[Capital Flows](./capital-flows.md)** - How value moves through the system -- **[Risk Management](./risk-management.md)** - Understanding and managing risks -- **[Integration Guide](./integration.md)** - Building on top of FCM +- **[Capital Flows](#)** - How value moves through the system +- **[Risk Management](#)** - Understanding and managing risks +- **[Integration Guide](#)** - Building on top of FCM ## Quick Start @@ -175,7 +175,7 @@ FCM implements multiple security layers including smart contract audits for all - **New to FCM?** Start with [Understanding FCM Basics](./basics.md) - **Want technical details?** Read the [Architecture Overview](./architecture.md) - **Ready to use it?** Explore [ALP](../alp/index.md) or [FYV](#) -- **Building an integration?** Check the [Integration Guide](./integration.md) +- **Building an integration?** Check the [Integration Guide](#) --- diff --git a/docs/defi/fcm/math.md b/docs/defi/fcm/math.md index c56163b8e0..b665991246 100644 --- a/docs/defi/fcm/math.md +++ b/docs/defi/fcm/math.md @@ -44,9 +44,9 @@ This document explains the mathematical models and formulas that power Flow Cred The effective collateral is the sum of all collateral assets multiplied by their prices and collateral factors: -$$ -EC = \sum_{t \in Collateral} A_t \times P_t \times CF_t -$$ +```math +EC = βˆ‘(A_t Γ— P_t Γ— CF_t) for all t in Collateral +``` **Example**: ``` @@ -63,9 +63,9 @@ EC = (1000 Γ— 1 Γ— 0.8) + (500 Γ— 1 Γ— 0.9) The effective debt is the sum of all borrowed assets multiplied by their prices and borrow factors: -$$ +```math ED = \sum_{t \in Debt} A_t \times P_t \times BF_t -$$ +``` **Example**: ``` @@ -80,9 +80,9 @@ ED = 800 Γ— 1 Γ— 1.0 The health factor is the ratio of effective collateral to effective debt: -$$ +```math HF = \frac{EC}{ED} -$$ +``` **Critical thresholds**: - $HF < 1.0$: Position is liquidatable @@ -100,9 +100,9 @@ HF = 1250 / 800 = 1.5625 The maximum amount that can be borrowed to reach target health: -$$ +```math MaxBorrow = \frac{EC}{HF_{target}} -$$ +``` **Derivation**: ``` @@ -124,26 +124,26 @@ Max Borrow = 1250 / 1.3 = $961.54 MOET When a user deposits collateral with `pushToDrawDownSink=true`, the system calculates the initial borrow amount: -$$ +```math BorrowAmount = \frac{EC}{HF_{target}} -$$ +``` **Step-by-step calculation**: 1. **Calculate effective collateral**: - $$ + ```math EC = A_{collateral} \times P_{collateral} \times CF_{collateral} - $$ +```math 2. **Calculate target debt**: - $$ +``` ED_{target} = \frac{EC}{HF_{target}} - $$ +```math 3. **Borrow to reach target**: - $$ +``` Borrow = ED_{target} = \frac{EC}{HF_{target}} - $$ +```math **Complete example**: ``` @@ -170,9 +170,9 @@ Result: When health exceeds maximum, calculate additional borrowing capacity: -$$ +``` AdditionalBorrow = \frac{EC}{HF_{target}} - ED_{current} -$$ +```math **Proof**: ``` @@ -205,9 +205,9 @@ After borrowing $215.38: When health falls below minimum, calculate required repayment: -$$ +``` RequiredRepayment = ED_{current} - \frac{EC}{HF_{target}} -$$ +```math **Proof**: ``` @@ -244,9 +244,9 @@ After repaying $123.07: FCM uses **scaled balances** to efficiently track interest: -$$ +``` B_{scaled} = \frac{B_{true}}{I_t} -$$ +```math Where: - $B_{scaled}$: Stored scaled balance @@ -259,18 +259,18 @@ Where: The interest index grows continuously based on the interest rate: -$$ +``` I_t(n+1) = I_t(n) \times (1 + r \times \Delta t) -$$ +```math Where: - $r$: Annual interest rate (e.g., 0.10 for 10%) - $\Delta t$: Time elapsed (in years) **For compound interest**: -$$ +``` I_t(n) = I_0 \times e^{r \times t} -$$ +```math Where $e$ is Euler's number (β‰ˆ2.718). @@ -278,9 +278,9 @@ Where $e$ is Euler's number (β‰ˆ2.718). To get the current true balance from scaled balance: -$$ +``` B_{true}(t) = B_{scaled} \times I_t -$$ +```math **Example**: ``` @@ -325,30 +325,30 @@ When position is touched: A position becomes liquidatable when: -$$ +``` HF < 1.0 -$$ +```math Equivalently: -$$ +``` EC < ED -$$ +```math ### Liquidation Target Liquidations aim to restore health to a target (typically 1.05): -$$ +``` HF_{liquidation} = 1.05 -$$ +```math ### Collateral Seized Calculation Amount of collateral to seize: -$$ +``` CollateralSeized = \frac{ED_{repaid} \times (1 + bonus)}{P_{collateral} \times CF_{collateral}} -$$ +```math Where: - $ED_{repaid}$: Amount of debt repaid by liquidator @@ -380,9 +380,9 @@ After liquidation: To restore position to target health factor: -$$ +``` ED_{repay} = ED_{current} - \frac{EC}{HF_{liquidation}} -$$ +```math **Example**: ``` @@ -400,9 +400,9 @@ ED_repay = 650 - 457.14 = $192.86 MOET must be repaid Given a percentage change in collateral price: -$$ +``` HF_{new} = HF_{old} \times \frac{P_{new}}{P_{old}} -$$ +```math **Derivation**: ``` @@ -433,9 +433,9 @@ HF_new = 1.5 Γ— (0.65 / 1.00) = 1.5 Γ— 0.65 = 0.975 < 1.0 (liquidatable!) What's the maximum price drop before liquidation? -$$ +``` MaxDropPercent = 1 - \frac{1.0}{HF_{current}} -$$ +```math **Derivation**: ``` @@ -465,9 +465,9 @@ HF = 1.1: Max drop = 1 - 1/1.1 = 9.09% (very risky!) With multiple collateral types: -$$ +``` EC = \sum_{i=1}^{n} A_i \times P_i \times CF_i -$$ +```math Where $i$ iterates over all collateral token types. @@ -476,14 +476,14 @@ Where $i$ iterates over all collateral token types. When collateral types are correlated (e.g., FLOW and stFLOW): **Simplified (no correlation)**: -$$ +``` Risk = \sum_{i} Risk_i -$$ +```math **With correlation** (advanced): -$$ +``` Risk = \sqrt{\sum_{i}\sum_{j} w_i w_j \sigma_i \sigma_j \rho_{ij}} -$$ +```math Where: - $w_i$: Weight of asset $i$ @@ -510,17 +510,17 @@ Scenario 2: Correlated collateral Annual Percentage Yield without compounding: -$$ +``` APY_{simple} = \frac{FinalValue - InitialValue}{InitialValue} \times \frac{365}{Days} -$$ +```math ### Compound APY With continuous compounding: -$$ +``` APY_{compound} = e^r - 1 -$$ +```math Where $r$ is the continuous annual rate. @@ -528,9 +528,9 @@ Where $r$ is the continuous annual rate. When borrowing to increase yield exposure: -$$ +``` Yield_{leveraged} = Yield_{strategy} - Interest_{borrowed} -$$ +```math **Example**: ``` @@ -555,9 +555,9 @@ Total return: Base yield + leveraged yield A simplified risk score: -$$ +``` \text{Risk Score} = \frac{1}{HF - 1.0} \times Volatility_{collateral} -$$ +```math Higher score = higher risk. @@ -565,9 +565,9 @@ Higher score = higher risk. Maximum expected loss over time period at confidence level: -$$ +``` VaR_{95\%} = EC \times \sigma \times z_{0.95} -$$ +```math Where: - $\sigma$: Daily volatility of collateral @@ -590,9 +590,9 @@ Interpretation: 95% confident that daily loss won't exceed $82.25 All operations must satisfy: -$$ +``` 1.0 \leq HF_{min} < HF_{target} < HF_{max} -$$ +```math Typical values: $HF_{min} = 1.1$, $HF_{target} = 1.3$, $HF_{max} = 1.5$ @@ -600,9 +600,9 @@ Typical values: $HF_{min} = 1.1$, $HF_{target} = 1.3$, $HF_{max} = 1.5$ For safety: -$$ +``` 0 < CF_t \leq 1.0 -$$ +```math Typically: - Volatile assets (FLOW): $CF = 0.75 - 0.85$ @@ -613,9 +613,9 @@ Typically: Maximum theoretical leverage: -$$ +``` MaxLeverage = \frac{1}{1 - CF} -$$ +```math **Examples**: ``` @@ -626,9 +626,9 @@ CF = 0.9: Max leverage = 1 / (1 - 0.9) = 10x (risky!) But actual safe leverage is constrained by target health: -$$ +``` SafeLeverage = \frac{CF}{HF_{target}} -$$ +``` **Examples**: ``` From fada04f0de0fe6c8eda1686e91c9e4eb5e18668a Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Thu, 18 Dec 2025 15:30:58 -0600 Subject: [PATCH 04/13] Replace all LaTeX commands with Unicode and fix code block alignment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Convert LaTeX math operators to Unicode equivalents (Γ— Γ· ≀ β‰₯ β‰ˆ) - Replace \frac{a}{b} with (a / b) notation - Simplify subscripts from _{text} to _text - Fix misaligned code block markers throughout document - Remove all remaining LaTeX that causes MDX parsing errors --- docs/defi/fcm/math.md | 154 +++++++++++++++++++++--------------------- 1 file changed, 77 insertions(+), 77 deletions(-) diff --git a/docs/defi/fcm/math.md b/docs/defi/fcm/math.md index b665991246..dbe22a6af3 100644 --- a/docs/defi/fcm/math.md +++ b/docs/defi/fcm/math.md @@ -25,17 +25,17 @@ This document explains the mathematical models and formulas that power Flow Cred | **Effective Collateral** | $EC$ | Total usable collateral value in MOET | | **Effective Debt** | $ED$ | Total debt value in MOET | | **Health Factor** | $HF$ | Ratio of collateral to debt | -| **Target Health** | $HF_{target}$ | Desired health ratio (typically 1.3) | -| **Min Health** | $HF_{min}$ | Minimum before rebalancing (typically 1.1) | -| **Max Health** | $HF_{max}$ | Maximum before rebalancing (typically 1.5) | +| **Target Health** | $HF_target$ | Desired health ratio (typically 1.3) | +| **Min Health** | $HF_min$ | Minimum before rebalancing (typically 1.1) | +| **Max Health** | $HF_max$ | Maximum before rebalancing (typically 1.5) | ### Interest Variables | Variable | Symbol | Description | |----------|--------|-------------| | **Interest Index** | $I_t(n)$ | Interest index for token $t$ at time $n$ | -| **Scaled Balance** | $B_{scaled}$ | Balance divided by interest index | -| **True Balance** | $B_{true}$ | Actual balance including accrued interest | +| **Scaled Balance** | $B_scaled$ | Balance divided by interest index | +| **True Balance** | $B_true$ | Actual balance including accrued interest | | **Interest Rate** | $r$ | Annual interest rate | ## Fundamental Formulas @@ -64,7 +64,7 @@ EC = (1000 Γ— 1 Γ— 0.8) + (500 Γ— 1 Γ— 0.9) The effective debt is the sum of all borrowed assets multiplied by their prices and borrow factors: ```math -ED = \sum_{t \in Debt} A_t \times P_t \times BF_t +ED = \sum_t \in Debt A_t Γ— P_t Γ— BF_t ``` **Example**: @@ -81,7 +81,7 @@ ED = 800 Γ— 1 Γ— 1.0 The health factor is the ratio of effective collateral to effective debt: ```math -HF = \frac{EC}{ED} +HF = (EC / ED) ``` **Critical thresholds**: @@ -101,7 +101,7 @@ HF = 1250 / 800 = 1.5625 The maximum amount that can be borrowed to reach target health: ```math -MaxBorrow = \frac{EC}{HF_{target}} +MaxBorrow = (EC / HF_target) ``` **Derivation**: @@ -125,25 +125,25 @@ Max Borrow = 1250 / 1.3 = $961.54 MOET When a user deposits collateral with `pushToDrawDownSink=true`, the system calculates the initial borrow amount: ```math -BorrowAmount = \frac{EC}{HF_{target}} +BorrowAmount = (EC / HF_target) ``` **Step-by-step calculation**: 1. **Calculate effective collateral**: - ```math - EC = A_{collateral} \times P_{collateral} \times CF_{collateral} -```math +``` + EC = A_collateral Γ— P_collateral Γ— CF_collateral +``` 2. **Calculate target debt**: ``` - ED_{target} = \frac{EC}{HF_{target}} -```math + ED_target = (EC / HF_target) +``` 3. **Borrow to reach target**: ``` - Borrow = ED_{target} = \frac{EC}{HF_{target}} -```math + Borrow = ED_target = (EC / HF_target) +``` **Complete example**: ``` @@ -171,8 +171,8 @@ Result: When health exceeds maximum, calculate additional borrowing capacity: ``` -AdditionalBorrow = \frac{EC}{HF_{target}} - ED_{current} -```math +AdditionalBorrow = (EC / HF_target) - ED_current +``` **Proof**: ``` @@ -206,8 +206,8 @@ After borrowing $215.38: When health falls below minimum, calculate required repayment: ``` -RequiredRepayment = ED_{current} - \frac{EC}{HF_{target}} -```math +RequiredRepayment = ED_current - (EC / HF_target) +``` **Proof**: ``` @@ -245,12 +245,12 @@ After repaying $123.07: FCM uses **scaled balances** to efficiently track interest: ``` -B_{scaled} = \frac{B_{true}}{I_t} -```math +B_scaled = \frac{B_true}{I_t} +``` Where: -- $B_{scaled}$: Stored scaled balance -- $B_{true}$: Actual balance including interest +- $B_scaled$: Stored scaled balance +- $B_true$: Actual balance including interest - $I_t$: Current interest index **Key insight**: Scaled balance stays constant while interest index grows. @@ -260,8 +260,8 @@ Where: The interest index grows continuously based on the interest rate: ``` -I_t(n+1) = I_t(n) \times (1 + r \times \Delta t) -```math +I_t(n+1) = I_t(n) Γ— (1 + r Γ— \Delta t) +``` Where: - $r$: Annual interest rate (e.g., 0.10 for 10%) @@ -269,8 +269,8 @@ Where: **For compound interest**: ``` -I_t(n) = I_0 \times e^{r \times t} -```math +I_t(n) = I_0 Γ— e^{r Γ— t} +``` Where $e$ is Euler's number (β‰ˆ2.718). @@ -279,8 +279,8 @@ Where $e$ is Euler's number (β‰ˆ2.718). To get the current true balance from scaled balance: ``` -B_{true}(t) = B_{scaled} \times I_t -```math +B_true(t) = B_scaled Γ— I_t +``` **Example**: ``` @@ -327,34 +327,34 @@ A position becomes liquidatable when: ``` HF < 1.0 -```math +``` Equivalently: ``` EC < ED -```math +``` ### Liquidation Target Liquidations aim to restore health to a target (typically 1.05): ``` -HF_{liquidation} = 1.05 -```math +HF_liquidation = 1.05 +``` ### Collateral Seized Calculation Amount of collateral to seize: ``` -CollateralSeized = \frac{ED_{repaid} \times (1 + bonus)}{P_{collateral} \times CF_{collateral}} -```math +CollateralSeized = \frac{ED_repaid Γ— (1 + bonus)}{P_collateral Γ— CF_collateral} +``` Where: -- $ED_{repaid}$: Amount of debt repaid by liquidator +- $ED_repaid$: Amount of debt repaid by liquidator - $bonus$: Liquidation bonus (e.g., 0.05 for 5%) -- $P_{collateral}$: Price of collateral token -- $CF_{collateral}$: Collateral factor +- $P_collateral$: Price of collateral token +- $CF_collateral$: Collateral factor **Example**: ``` @@ -381,8 +381,8 @@ After liquidation: To restore position to target health factor: ``` -ED_{repay} = ED_{current} - \frac{EC}{HF_{liquidation}} -```math +ED_repay = ED_current - (EC / HF_liquidation) +``` **Example**: ``` @@ -401,8 +401,8 @@ ED_repay = 650 - 457.14 = $192.86 MOET must be repaid Given a percentage change in collateral price: ``` -HF_{new} = HF_{old} \times \frac{P_{new}}{P_{old}} -```math +HF_new = HF_old Γ— \frac{P_new}{P_old} +``` **Derivation**: ``` @@ -434,8 +434,8 @@ HF_new = 1.5 Γ— (0.65 / 1.00) = 1.5 Γ— 0.65 = 0.975 < 1.0 (liquidatable!) What's the maximum price drop before liquidation? ``` -MaxDropPercent = 1 - \frac{1.0}{HF_{current}} -```math +MaxDropPercent = 1 - (1.0 / HF_current) +``` **Derivation**: ``` @@ -466,8 +466,8 @@ HF = 1.1: Max drop = 1 - 1/1.1 = 9.09% (very risky!) With multiple collateral types: ``` -EC = \sum_{i=1}^{n} A_i \times P_i \times CF_i -```math +EC = \sum_i=1^{n} A_i Γ— P_i Γ— CF_i +``` Where $i$ iterates over all collateral token types. @@ -477,18 +477,18 @@ When collateral types are correlated (e.g., FLOW and stFLOW): **Simplified (no correlation)**: ``` -Risk = \sum_{i} Risk_i -```math +Risk = \sum_i Risk_i +``` **With correlation** (advanced): ``` -Risk = \sqrt{\sum_{i}\sum_{j} w_i w_j \sigma_i \sigma_j \rho_{ij}} -```math +Risk = \sqrt{\sum_i\sum_j w_i w_j \sigma_i \sigma_j \rho_ij} +``` Where: - $w_i$: Weight of asset $i$ - $\sigma_i$: Volatility of asset $i$ -- $\rho_{ij}$: Correlation between assets $i$ and $j$ +- $\rho_ij$: Correlation between assets $i$ and $j$ **Practical impact**: ``` @@ -511,16 +511,16 @@ Scenario 2: Correlated collateral Annual Percentage Yield without compounding: ``` -APY_{simple} = \frac{FinalValue - InitialValue}{InitialValue} \times \frac{365}{Days} -```math +APY_simple = (FinalValue - InitialValue / InitialValue) Γ— (365 / Days) +``` ### Compound APY With continuous compounding: ``` -APY_{compound} = e^r - 1 -```math +APY_compound = e^r - 1 +``` Where $r$ is the continuous annual rate. @@ -529,8 +529,8 @@ Where $r$ is the continuous annual rate. When borrowing to increase yield exposure: ``` -Yield_{leveraged} = Yield_{strategy} - Interest_{borrowed} -```math +Yield_leveraged = Yield_strategy - Interest_borrowed +``` **Example**: ``` @@ -556,8 +556,8 @@ Total return: Base yield + leveraged yield A simplified risk score: ``` -\text{Risk Score} = \frac{1}{HF - 1.0} \times Volatility_{collateral} -```math +\text{Risk Score} = (1 / HF - 1.0) Γ— Volatility_collateral +``` Higher score = higher risk. @@ -566,12 +566,12 @@ Higher score = higher risk. Maximum expected loss over time period at confidence level: ``` -VaR_{95\%} = EC \times \sigma \times z_{0.95} -```math +VaR_95% = EC Γ— \sigma Γ— z_0.95 +``` Where: - $\sigma$: Daily volatility of collateral -- $z_{0.95}$: Z-score for 95% confidence (β‰ˆ1.645) +- $z_0.95$: Z-score for 95% confidence (β‰ˆ1.645) **Example**: ``` @@ -591,18 +591,18 @@ Interpretation: 95% confident that daily loss won't exceed $82.25 All operations must satisfy: ``` -1.0 \leq HF_{min} < HF_{target} < HF_{max} -```math +1.0 ≀ HF_min < HF_target < HF_max +``` -Typical values: $HF_{min} = 1.1$, $HF_{target} = 1.3$, $HF_{max} = 1.5$ +Typical values: $HF_min = 1.1$, $HF_target = 1.3$, $HF_max = 1.5$ ### Collateral Factor Bounds For safety: ``` -0 < CF_t \leq 1.0 -```math +0 < CF_t ≀ 1.0 +``` Typically: - Volatile assets (FLOW): $CF = 0.75 - 0.85$ @@ -614,8 +614,8 @@ Typically: Maximum theoretical leverage: ``` -MaxLeverage = \frac{1}{1 - CF} -```math +MaxLeverage = (1 / 1 - CF) +``` **Examples**: ``` @@ -627,7 +627,7 @@ CF = 0.9: Max leverage = 1 / (1 - 0.9) = 10x (risky!) But actual safe leverage is constrained by target health: ``` -SafeLeverage = \frac{CF}{HF_{target}} +SafeLeverage = (CF / HF_target) ``` **Examples**: @@ -683,13 +683,13 @@ Position back to optimal state! | Formula | Expression | Use | |---------|------------|-----| -| **Effective Collateral** | $EC = \sum A_t \times P_t \times CF_t$ | Calculate total collateral value | +| **Effective Collateral** | $EC = \sum A_t Γ— P_t Γ— CF_t$ | Calculate total collateral value | | **Health Factor** | $HF = EC / ED$ | Monitor position safety | -| **Max Borrow** | $Max = EC / HF_{target}$ | Auto-borrowing amount | -| **Rebalance Up** | $Repay = ED - (EC / HF_{target})$ | Required debt reduction | -| **Rebalance Down** | $Borrow = (EC / HF_{target}) - ED$ | Additional borrowing capacity | -| **Scaled Balance** | $B_{scaled} = B_{true} / I_t$ | Interest-efficient tracking | -| **True Balance** | $B_{true} = B_{scaled} \times I_t$ | Current balance with interest | +| **Max Borrow** | $Max = EC / HF_target$ | Auto-borrowing amount | +| **Rebalance Up** | $Repay = ED - (EC / HF_target)$ | Required debt reduction | +| **Rebalance Down** | $Borrow = (EC / HF_target) - ED$ | Additional borrowing capacity | +| **Scaled Balance** | $B_scaled = B_true / I_t$ | Interest-efficient tracking | +| **True Balance** | $B_true = B_scaled Γ— I_t$ | Current balance with interest | | **Max Price Drop** | $DropPercent = 1 - (1 / HF)$ | Liquidation safety margin | ## Next Steps From 3e0336cf1c2543f3c98475254bbf0ee25434ed44 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Mon, 22 Dec 2025 21:07:29 -0600 Subject: [PATCH 05/13] Improve FCM documentation clarity and mathematical accuracy Updated basics.md: - Converted bullet points to paragraphs for better readability - Added diagram styling to highlight key components - Added explanations for TracerStrategy and AutoBalancer - Enhanced composability section Updated math.md: - Fixed liquidation formulas with complete implementation details - Corrected collateral seizure calculations - Added proper debt ratio vs leverage distinction - Fixed mathematical notation and formatting issues - Improved formula parenthesis handling for clarity --- docs/defi/fcm/basics.md | 120 +++-------- docs/defi/fcm/math.md | 447 ++++++++++++++++++++++++++++------------ 2 files changed, 345 insertions(+), 222 deletions(-) diff --git a/docs/defi/fcm/basics.md b/docs/defi/fcm/basics.md index 37f3d1478f..dd81b9624d 100644 --- a/docs/defi/fcm/basics.md +++ b/docs/defi/fcm/basics.md @@ -7,6 +7,13 @@ sidebar_position: 2 To understand how Flow Credit Market (FCM) works, let's build up from simple lending concepts to FCM's innovative three-component architecture. +:::tip Key Takeaway +FCM = Traditional Lending + Automation + Yield Generation + Liquidation Protection + +It's not just "another lending protocol" - it's a complete yield-generating system with automated risk management. +::: + + ## From Traditional Lending to FCM ### Level 1: Traditional Lending (Aave, Compound) @@ -75,7 +82,7 @@ graph TB style ALP fill:#f9f,stroke:#333,stroke-width:4px style FYV fill:#bfb,stroke:#333,stroke-width:4px - style MOET fill:#fbb,stroke:#333,stroke-width:2px + style DrawDown fill:#bbf,stroke:#333,stroke-width:2px ``` **Complete automation**: @@ -85,24 +92,16 @@ graph TB - βœ… **Auto-protection**: FYV provides liquidity to prevent liquidations - βœ… **Auto-everything**: True set-and-forget experience -**The breakthrough**: -- 🎯 **Yield protects your position**: Your generated yield maintains health automatically -- 🎯 **No manual intervention**: Everything happens automatically -- 🎯 **Capital efficiency**: Borrowed capital works for you immediately +FCM's innovation is that your generated yield protects your position by maintaining health automatically, requiring no manual intervention as everything happens seamlessly in the background. This creates true capital efficiency where borrowed capital works for you immediately upon deployment. ## Understanding the Three Components ### Component 1: ALP (The Lending Engine) -**What it does**: Manages collateral and debt positions with automated rebalancing. - -**Key concepts**: -- **Collateral**: Assets you deposit (FLOW, stFLOW, etc.) -- **Collateral Factor**: Percentage of collateral value you can borrow (e.g., 0.8 = 80%) -- **Health Factor**: Ratio of collateral to debt (must be > 1.0) -- **Target Health**: Optimal ratio the system maintains (typically 1.3) +ALP manages collateral and debt positions with automated rebalancing. You deposit collateral such as FLOW or stFLOW, and the system applies a collateral factor that determines what percentage of your collateral's value you can borrowβ€”for example, a 0.8 collateral factor means you can borrow up to 80% of your collateral's value. The system continuously monitors your health factor, which is the ratio of your collateral to debt and must remain above 1.0 to avoid liquidation. ALP automatically maintains your position at a target health level, typically around 1.3, to provide a safety buffer. **Example**: + ``` Deposit: 1000 FLOW @ $1 = $1000 Collateral Factor: 0.8 (80%) @@ -112,22 +111,19 @@ Target Health: 1.3 Max Safe Borrow: $800 / 1.3 β‰ˆ $615.38 MOET ALP auto-borrows: 615.38 MOET -Position Health: 800 / 615.38 = 1.3 βœ“ +Position Health: 800 / 615.38 = 1.3 ``` Learn more: [ALP Documentation](../alp/index.md) ### Component 2: FYV (The Yield Engine) -**What it does**: Deploys capital into yield-generating strategies and provides liquidity for liquidation prevention. +**TracerStrategy** acts as the smart converter that takes your borrowed MOET, converts it into yield-earning tokens, and converts them back to MOET when your position needs protection, handling all the conversion logic between MOET and yield opportunities. **AutoBalancer** acts as the smart wallet that holds and manages your yield tokens, automatically monitoring the value of your yield position and rebalancing your holdings as needed to optimize returns and maintain liquidity. Together, TracerStrategy handles the conversion logic while AutoBalancer handles the holding and management of those yield tokens. -**Key concepts**: -- **Strategies**: Predefined yield-generating approaches (TracerStrategy, etc.) -- **AutoBalancer**: Manages exposure to yield tokens and rebalancing -- **DrawDownSink**: Receives borrowed MOET from ALP -- **TopUpSource**: Provides liquidity back to ALP when needed +FYV deploys capital into yield-generating strategies and provides liquidity for liquidation prevention. The system uses predefined strategies like TracerStrategy to generate returns, with an AutoBalancer that manages your exposure to yield tokens and handles rebalancing automatically. When ALP borrows MOET on your behalf, the DrawDownSink receives it and deploys it into yield strategies, while the TopUpSource stands ready to provide liquidity back to ALP whenever your position needs debt repayment to maintain health. **Example strategy (TracerStrategy)**: + ``` 1. Receive MOET from ALP β†’ DrawDownSink 2. Swap MOET β†’ YieldToken (e.g., LP token, farm token) @@ -143,15 +139,7 @@ Learn more: [FYV Documentation](#) ### Component 3: MOET (The Unit of Account) -**What it does**: Serves as the currency for all operations - borrowed asset, pricing unit, and value transfer medium. - -**Key concepts**: -- **Unit of Account**: All prices quoted in MOET (FLOW/MOET, USDC/MOET) -- **Primary Borrowed Asset**: What ALP auto-borrows and what FYV receives -- **Synthetic Stablecoin**: Value pegged to maintain stability -- **Medium of Exchange**: Flows between ALP and FYV - -**Why MOET?**: MOET standardizes all valuations, simplifies multi-collateral calculations, is designed specifically for DeFi operations, and provides deep integration with the Flow ecosystem. +MOET serves as the currency for all operations within FCM, functioning simultaneously as the borrowed asset, pricing unit, and value transfer medium. As the system's unit of account, all prices are quoted in MOET termsβ€”whether FLOW/MOET or USDC/MOET. MOET is the primary borrowed asset that ALP auto-borrows and FYV receives for deployment. As a synthetic stablecoin with value pegged to maintain stability, MOET acts as the medium of exchange that flows seamlessly between ALP and FYV components. This design standardizes all valuations, simplifies multi-collateral calculations, and provides deep integration with the Flow ecosystem specifically for DeFi operations. Learn more: [MOET Documentation](#) @@ -307,6 +295,7 @@ Option C: Manual yield farming ``` **With FCM**: + ``` Deposit 1000 FLOW β†’ FCM does everything: - Borrow optimal amount: ~$615 MOET @@ -322,27 +311,14 @@ Effort: Set and forget ### 3. Composability -Each component has value independently: - -**Use ALP alone** when you: -- Want simple lending/borrowing -- Have your own yield strategies -- Need DeFi Actions integration - -**Use FYV alone** when you: -- Want yield aggregation -- Don't need leverage -- Prefer direct yield farming - -**Use FCM together** when you: -- Want maximum automation -- Desire liquidation protection -- Seek optimal capital efficiency +Each component has value independently, allowing you to choose the level of integration that matches your needs. You can use ALP alone when you want simple lending and borrowing, have your own yield strategies, or need DeFi Actions integration for custom workflows. You can use FYV alone when you want yield aggregation without leverage, or prefer direct yield farming without the complexity of borrowing. You can use FCM together when you want maximum automation with liquidation protection and optimal capital efficiency through the integrated system. ## Understanding the Math ### Health Factor Calculation +The health factor is the core metric that determines whether your position is safe or at risk of liquidation. It compares the value of your collateral (adjusted by the collateral factor) against the value of your debt. + ``` Health Factor = Effective Collateral / Effective Debt @@ -357,6 +333,8 @@ Example: ### Target Health Ranges +Different health factor values indicate different states of your position, from dangerous (below 1.0) to overcollateralized (above 1.5). Understanding these ranges helps you know when to take action. + ``` Health Factor States: @@ -370,6 +348,8 @@ HF > 1.5 β†’ Overcollateralized (should rebalance down) ### Borrowing Capacity +This shows how much you can safely borrow while maintaining your target health factor. Borrowing up to this limit ensures you have a safety buffer to protect against price volatility. + ``` Maximum Safe Borrow = Effective Collateral / Target Health @@ -385,60 +365,10 @@ Why not borrow more? Learn more: [Mathematical Foundations](./math.md) -## Common Questions - -### How does FCM differ from Uniswap V3? - -**Uniswap V3** evolved from V2 by adding: -- Concentrated liquidity (specific price ranges) -- Multiple fee tiers -- Capital efficiency improvements -- More complex LP management - -**FCM** evolves from basic lending by adding: -- Automated position management -- Yield generation integration -- Liquidation prevention via yield -- Multi-component architecture (ALP + FYV + MOET) - -Both are "evolved" versions of simpler protocols, adding complexity for better capital efficiency. - -### Can I use FCM without understanding all three components? - -**Yes!** Think of it like using a car: -- **User level**: Just drive (deposit and earn yield) -- **Enthusiast level**: Understand the engine (how ALP, FYV, and MOET connect) -- **Builder level**: Modify and extend (create custom strategies) - -Start with user level, learn more as you go. - -### What happens if FYV doesn't have enough liquidity for rebalancing? - -Multiple fallback mechanisms: -1. **Primary**: FYV provides from yield -2. **Secondary**: FYV can exit positions partially -3. **Tertiary**: Traditional liquidation (external liquidators) -4. **Emergency**: Circuit breakers and admin intervention - -The system is designed with multiple safety layers. - -### Is my yield always enough to prevent liquidation? - -**Not guaranteed**, but highly likely because you're earning yield continuously, the system only pulls what's needed, the health buffer (1.3 target) provides cushion, and you can deposit more collateral anytime. Traditional protocols have 0% chance of automatic prevention - FCM gives you a strong automatic defense. - ## Next Steps Now that you understand the basics: 1. **Learn the architecture**: [Architecture Overview](./architecture.md) 2. **Understand the math**: [Mathematical Foundations](./math.md) -3. **Explore components**: [ALP](../alp/index.md), [FYV](#), [MOET](#) -4. **Start using FCM**: Follow the quick start guide - ---- - -:::tip Key Takeaway -FCM = Traditional Lending + Automation + Yield Generation + Liquidation Protection - -It's not just "another lending protocol" - it's a complete yield-generating system with automated risk management. -::: +3. **Explore components**: [ALP](../alp/index.md), [FYV](#), [MOET](#) \ No newline at end of file diff --git a/docs/defi/fcm/math.md b/docs/defi/fcm/math.md index dbe22a6af3..826851eaf5 100644 --- a/docs/defi/fcm/math.md +++ b/docs/defi/fcm/math.md @@ -7,6 +7,10 @@ sidebar_position: 4 This document explains the mathematical models and formulas that power Flow Credit Market. Understanding these fundamentals helps you reason about system behavior and make informed decisions. +:::tip +These mathematical foundations ensure FCM operates predictably and safely. All formulas are implemented on-chain and can be verified by examining the smart contracts. +::: + ## Core Variables ### Token-Level Variables @@ -25,17 +29,17 @@ This document explains the mathematical models and formulas that power Flow Cred | **Effective Collateral** | $EC$ | Total usable collateral value in MOET | | **Effective Debt** | $ED$ | Total debt value in MOET | | **Health Factor** | $HF$ | Ratio of collateral to debt | -| **Target Health** | $HF_target$ | Desired health ratio (typically 1.3) | -| **Min Health** | $HF_min$ | Minimum before rebalancing (typically 1.1) | -| **Max Health** | $HF_max$ | Maximum before rebalancing (typically 1.5) | +| **Target Health** | $TargetHF$ | Desired health ratio (typically 1.3) | +| **Min Health** | $MinHF$ | Minimum before rebalancing (typically 1.1) | +| **Max Health** | $MaxHF$ | Maximum before rebalancing (typically 1.5) | ### Interest Variables | Variable | Symbol | Description | |----------|--------|-------------| | **Interest Index** | $I_t(n)$ | Interest index for token $t$ at time $n$ | -| **Scaled Balance** | $B_scaled$ | Balance divided by interest index | -| **True Balance** | $B_true$ | Actual balance including accrued interest | +| **Scaled Balance** | $ScaledBalance$ | Balance divided by interest index | +| **True Balance** | $TrueBalance$ | Actual balance including accrued interest | | **Interest Rate** | $r$ | Annual interest rate | ## Fundamental Formulas @@ -45,7 +49,7 @@ This document explains the mathematical models and formulas that power Flow Cred The effective collateral is the sum of all collateral assets multiplied by their prices and collateral factors: ```math -EC = βˆ‘(A_t Γ— P_t Γ— CF_t) for all t in Collateral +EC = βˆ‘(A_t Γ— P_t Γ— CF_t), t ∈ Collateral ``` **Example**: @@ -67,6 +71,8 @@ The effective debt is the sum of all borrowed assets multiplied by their prices ED = \sum_t \in Debt A_t Γ— P_t Γ— BF_t ``` +**Borrow Factor (BF)** is a risk adjustment multiplier applied to debt. While typically set to 1.0 for standard assets like MOET, the borrow factor can be increased above 1.0 for riskier or more volatile borrowed assets. This makes the effective debt higher than the nominal debt, requiring more collateral to maintain the same health factor. For example, a BF of 1.2 means borrowing $100 of that asset counts as $120 of effective debt, providing an extra safety margin for the protocol. + **Example**: ``` Debt: @@ -85,11 +91,13 @@ HF = (EC / ED) ``` **Critical thresholds**: + - $HF < 1.0$: Position is liquidatable - $HF = 1.0$: Exactly at liquidation threshold - $HF > 1.0$: Position is solvent **Example**: + ``` EC = $1250, ED = $800 @@ -101,19 +109,21 @@ HF = 1250 / 800 = 1.5625 The maximum amount that can be borrowed to reach target health: ```math -MaxBorrow = (EC / HF_target) +MaxBorrow = EC / TargetHF ``` **Derivation**: + ``` -We want: HF = EC / ED = HF_target -Therefore: ED = EC / HF_target +We want: HF = EC / ED = TargetHF +Therefore: ED = EC / TargetHF ``` **Example**: + ``` EC = $1250 -HF_target = 1.3 +TargetHF = 1.3 Max Borrow = 1250 / 1.3 = $961.54 MOET ``` @@ -125,27 +135,31 @@ Max Borrow = 1250 / 1.3 = $961.54 MOET When a user deposits collateral with `pushToDrawDownSink=true`, the system calculates the initial borrow amount: ```math -BorrowAmount = (EC / HF_target) +BorrowAmount = (EC / TargetHF) ``` **Step-by-step calculation**: 1. **Calculate effective collateral**: -``` + +```math EC = A_collateral Γ— P_collateral Γ— CF_collateral ``` 2. **Calculate target debt**: -``` - ED_target = (EC / HF_target) + +```math + ED_target = (EC / TargetHF) ``` 3. **Borrow to reach target**: -``` - Borrow = ED_target = (EC / HF_target) + +```math + Borrow = ED_target = (EC / TargetHF) ``` **Complete example**: + ``` User deposits: 1000 FLOW FLOW price: $1.00 @@ -161,35 +175,37 @@ Step 3: Borrow = $615.38 MOET Result: - Collateral: 1000 FLOW ($800 effective) - Debt: 615.38 MOET -- Health: 800 / 615.38 = 1.30 βœ“ +- Health: 800 / 615.38 = 1.30 ``` ## Rebalancing Mathematics -### Overcollateralized Rebalancing (HF > HF_max) +### Overcollateralized Rebalancing (HF > MaxHF) When health exceeds maximum, calculate additional borrowing capacity: -``` -AdditionalBorrow = (EC / HF_target) - ED_current +```math +AdditionalBorrow = (EC / TargetHF) - CurrentED ``` **Proof**: + ``` -Want: HF_new = HF_target -HF_new = EC / ED_new = HF_target -ED_new = EC / HF_target +Want: HF_new = TargetHF +HF_new = EC / ED_new = TargetHF +ED_new = EC / TargetHF -Additional borrow = ED_new - ED_current - = (EC / HF_target) - ED_current +Additional borrow = ED_new - CurrentED + = (EC / TargetHF) - CurrentED ``` **Example**: + ``` Current state: - EC = $800 - ED = $400 -- HF = 800 / 400 = 2.0 (> HF_max of 1.5) +- HF = 800 / 400 = 2.0 (> MaxHF of 1.5) Calculate additional borrow: ED_target = 800 / 1.3 = $615.38 @@ -198,35 +214,37 @@ Additional = 615.38 - 400 = $215.38 MOET After borrowing $215.38: - EC = $800 (unchanged) - ED = $615.38 -- HF = 800 / 615.38 = 1.30 βœ“ +- HF = 800 / 615.38 = 1.30 ``` -### Undercollateralized Rebalancing (HF < HF_min) +### Undercollateralized Rebalancing (HF < MinHF) When health falls below minimum, calculate required repayment: -``` -RequiredRepayment = ED_current - (EC / HF_target) +```math +RequiredRepayment = CurrentED - (EC / TargetHF) ``` **Proof**: + ``` -Want: HF_new = HF_target -HF_new = EC / ED_new = HF_target -ED_new = EC / HF_target +Want: HF_new = TargetHF +HF_new = EC / ED_new = TargetHF +ED_new = EC / TargetHF -Required repayment = ED_current - ED_new - = ED_current - (EC / HF_target) +Required repayment = CurrentED - ED_new + = CurrentED - (EC / TargetHF) ``` **Example**: + ``` Price drops! Collateral value decreases. New state: - EC = $640 (was $800, FLOW dropped 20%) - ED = $615.38 (unchanged) -- HF = 640 / 615.38 = 1.04 (< HF_min of 1.1) +- HF = 640 / 615.38 = 1.04 (< MinHF of 1.1) Calculate required repayment: ED_target = 640 / 1.3 = $492.31 @@ -235,31 +253,31 @@ Repayment = 615.38 - 492.31 = $123.07 MOET After repaying $123.07: - EC = $640 (unchanged) - ED = $492.31 -- HF = 640 / 492.31 = 1.30 βœ“ +- HF = 640 / 492.31 = 1.30 ``` ## Interest Mathematics ### Scaled Balance System -FCM uses **scaled balances** to efficiently track interest: +Instead of updating every position's balance when interest accrues, FCM stores a "scaled" version of each balance that remains constant over time. This scaled balance is the actual balance divided by a global interest index, allowing the protocol to track interest for thousands of positions with minimal gas costs. -``` -B_scaled = \frac{B_true}{I_t} +```math +ScaledBalance = \frac{TrueBalance}{I_t} ``` Where: -- $B_scaled$: Stored scaled balance -- $B_true$: Actual balance including interest +- $ScaledBalance$: Stored scaled balance +- $TrueBalance$: Actual balance including interest - $I_t$: Current interest index **Key insight**: Scaled balance stays constant while interest index grows. ### Interest Index Growth -The interest index grows continuously based on the interest rate: +The interest index is a global multiplier that starts at 1.0 and grows over time based on the current interest rate. Every time the protocol updates, the index increases slightly, and this single update effectively compounds interest for all positions simultaneously. -``` +```math I_t(n+1) = I_t(n) Γ— (1 + r Γ— \Delta t) ``` @@ -268,7 +286,8 @@ Where: - $\Delta t$: Time elapsed (in years) **For compound interest**: -``` + +```math I_t(n) = I_0 Γ— e^{r Γ— t} ``` @@ -276,27 +295,29 @@ Where $e$ is Euler's number (β‰ˆ2.718). ### True Balance Calculation -To get the current true balance from scaled balance: +When you need to know the actual current balance of a position (including all accrued interest), you multiply the stored scaled balance by the current interest index. This calculation happens on-demand only when the position is accessed, not on every block. -``` -B_true(t) = B_scaled Γ— I_t +```math +TrueBalance(t) = ScaledBalance Γ— I_t ``` **Example**: ``` Initial deposit: 1000 MOET Initial index: I_0 = 1.0 -Scaled balance: B_scaled = 1000 / 1.0 = 1000 +Scaled balance: ScaledBalance = 1000 / 1.0 = 1000 After 1 year at 10% APY: Interest index: I_1 = 1.0 Γ— e^(0.10 Γ— 1) β‰ˆ 1.105 -True balance: B_true = 1000 Γ— 1.105 = 1105 MOET +True balance: TrueBalance = 1000 Γ— 1.105 = 1105 MOET User's debt grew from 1000 to 1105 MOET (10.5% with compound interest) ``` ### Why Scaled Balances? +The scaled balance system is a gas optimization that makes FCM economically viable even with thousands of active positions. By storing balances in a scaled form and only updating a single global index, the protocol avoids the prohibitive cost of updating every position on every block. + **Without scaled balances**: ``` Every block (every ~2 seconds): @@ -325,12 +346,13 @@ When position is touched: A position becomes liquidatable when: -``` +```math HF < 1.0 ``` Equivalently: -``` + +```math EC < ED ``` @@ -338,73 +360,249 @@ EC < ED Liquidations aim to restore health to a target (typically 1.05): -``` -HF_liquidation = 1.05 +```math +Target HF = 1.05 ``` ### Collateral Seized Calculation -Amount of collateral to seize: +The amount of collateral to seize depends on the implementation approach used by the protocol. +**Simplified Formula** (used in basic examples and documentation): + +```math +CollateralSeized = (DebtRepaid Γ— (1 + bonus)) / PriceCollateral ``` -CollateralSeized = \frac{ED_repaid Γ— (1 + bonus)}{P_collateral Γ— CF_collateral} + +Where: +- $DebtRepaid$: Amount of debt repaid by liquidator (in MOET or debt token) +- $bonus$: Liquidation bonus (e.g., 0.05 for 5%) +- $PriceCollateral$: Market price of collateral token in MOET terms + +**Complete Formula** (actual FCM implementation): + +```math +CollateralSeized = [(DebtRepaid Γ— PriceDebt) / BorrowFactor] Γ— (1 + bonus) / (PriceCollateral Γ— CollateralFactor) ``` Where: -- $ED_repaid$: Amount of debt repaid by liquidator +- $DebtRepaid$: Amount of debt repaid by liquidator +- $PriceDebt$: Oracle price of debt token (in MOET terms, typically 1.0 for MOET) +- $BorrowFactor$: Risk parameter for debt (typically 1.0) - $bonus$: Liquidation bonus (e.g., 0.05 for 5%) -- $P_collateral$: Price of collateral token -- $CF_collateral$: Collateral factor +- $PriceCollateral$: Oracle price of collateral token (in MOET terms) +- $CollateralFactor$: Risk parameter for collateral (e.g., 0.8 for FLOW) + +**Why the difference?** The simplified formula assumes debt price = 1.0, borrow factor = 1.0, and ignores the collateral factor in seizure (treating it as only affecting borrowing capacity). The complete formula properly accounts for all risk parameters and token prices as implemented in the actual protocol. + +**For MOET debt with typical parameters:** +- $PriceDebt$ = 1.0 (MOET) +- $BorrowFactor$ = 1.0 +- This simplifies the numerator to: $(DebtRepaid Γ— 1.0)/ 1.0 = DebtRepaid$ + +The collateral factor appears in the denominator because it affects how much collateral value must be seized to repay the effective debt. Since effective collateral is calculated as $CollateralAmount Γ— PriceCollateral Γ— CollateralFactor$, seizing collateral to cover debt requires dividing by the CollateralFactor to get the actual token amount. + +**Example using simplified formula**: -**Example**: ``` Liquidatable position: -- Collateral: 1000 FLOW @ $0.60 +- Collateral: 1000 FLOW @ $0.60 = $600 total value +- Effective collateral: $600 Γ— 0.8 CF = $480 - Debt: 650 MOET @ $1.00 -- HF = (1000 Γ— 0.60 Γ— 0.8) / 650 = 0.738 < 1.0 +- HF = 480 / 650 = 0.738 < 1.0 -Liquidation: +Partial liquidation using simplified formula: - Liquidator repays: 150 MOET - Liquidation bonus: 5% -- Collateral seized: (150 Γ— 1.05) / (0.60 Γ— 0.8) = 328.125 FLOW +- Collateral seized = (150 Γ— 1.05) / 0.60 = 262.5 FLOW +- Value of seized collateral: 262.5 Γ— $0.60 = $157.50 -After liquidation: -- Collateral: 671.875 FLOW @ $0.60 = $403.125 effective -- Debt: 500 MOET -- HF = 403.125 / 500 = 0.806... +After partial liquidation: +- Remaining collateral: 1000 - 262.5 = 737.5 FLOW @ $0.60 = $442.50 +- Effective collateral: $442.50 Γ— 0.8 = $354.00 +- Remaining debt: 650 - 150 = 500 MOET +- New HF = 354.00 / 500 = 0.708 (still liquidatable) -(May need multiple liquidations or larger liquidation to reach target 1.05) +Liquidator's profit: +- Paid: $150 (debt repayment) +- Received: $157.50 worth of FLOW +- Profit: $7.50 (5% bonus on $150) +``` + +**Example using complete formula**: + +``` +Same liquidatable position as above. + +Partial liquidation using complete formula: +- DebtRepaid: 150 MOET +- PriceDebt: 1.0 (MOET) +- BorrowFactor: 1.0 +- Liquidation bonus: 5% (0.05) +- PriceCollateral: 0.60 (FLOW in MOET terms) +- CollateralFactor: 0.8 + +CollateralSeized = (150 Γ— 1.0 / 1.0) Γ— 1.05 / (0.60 Γ— 0.8) + = 157.50 / 0.48 + = 328.125 FLOW + +Value of seized collateral: 328.125 Γ— $0.60 = $196.875 + +After partial liquidation: +- Remaining collateral: 1000 - 328.125 = 671.875 FLOW @ $0.60 = $403.125 +- Effective collateral: $403.125 Γ— 0.8 = $322.50 +- Remaining debt: 650 - 150 = 500 MOET +- New HF = 322.50 / 500 = 0.645 (still liquidatable, but lower than simplified) + +Liquidator's profit: +- Paid: $150 (debt repayment) +- Received: $196.875 worth of FLOW +- Profit: $46.875 (31.25% effective bonus!) + +Note: The complete formula gives the liquidator significantly more collateral because +it divides by the CollateralFactor. This compensates for the risk discount applied +to the collateral. In practice, the actual FlowCreditMarket implementation uses the +quoteLiquidation() function which calculates the exact amounts needed to reach the +target health factor of 1.05. ``` ### Required Debt Repayment for Target Health -To restore position to target health factor: +To restore a position to the target health factor (typically 1.05), we need to find how much debt to repay. This is complex because seizing collateral also reduces the effective collateral simultaneously. + +**Goal:** Achieve a specific target health factor after liquidation: +```math +HF_target = EC_after / ED_after ``` -ED_repay = ED_current - (EC / HF_liquidation) + +**The challenge:** Both EC and ED change during liquidation: + +```math +EC_after = EC_current - (Collateral Seized Γ— Price Γ— CF) +ED_after = ED_current - Debt Repaid ``` -**Example**: +**Using the simplified seizure formula:** + +```math +Collateral Seized = (Debt Repaid Γ— (1 + bonus)) / Price +``` + +The effective collateral value seized is: + +```math +EC_seized = Collateral Seized Γ— Price Γ— CF + = [(Debt Repaid Γ— (1 + bonus)) / Price] Γ— Price Γ— CF + = Debt Repaid Γ— (1 + bonus) Γ— CF ``` -From above, to reach HF = 1.05: -EC = 1000 Γ— 0.60 Γ— 0.8 = $480 -ED_current = $650 -ED_target = 480 / 1.05 = $457.14 -ED_repay = 650 - 457.14 = $192.86 MOET must be repaid +**Substituting into the target health equation:** + +```math +HF_target = [EC_current - Debt Repaid Γ— (1 + bonus) Γ— CF] / [ED_current - Debt Repaid] +``` + +**Solving for Debt Repaid:** + +```math +HF_target Γ— (ED_current - Debt Repaid) = EC_current - Debt Repaid Γ— (1 + bonus) Γ— CF + +HF_target Γ— ED_current - HF_target Γ— Debt Repaid = EC_current - Debt Repaid Γ— (1 + bonus) Γ— CF + +HF_target Γ— ED_current - EC_current = HF_target Γ— Debt Repaid - Debt Repaid Γ— (1 + bonus) Γ— CF + +HF_target Γ— ED_current - EC_current = Debt Repaid Γ— [HF_target - (1 + bonus) Γ— CF] ``` +**Final formula:** + +```math +Debt Repaid = (HF_target Γ— ED_current - EC_current) / [HF_target - (1 + bonus) Γ— CF] +``` + +**Working example:** + +``` +Initial position (severely undercollateralized): +- Collateral: 1000 FLOW @ $0.50 (price dropped significantly!) +- EC = 1000 Γ— 0.50 Γ— 0.8 = $400 +- ED = 615.38 MOET +- Current HF = 400 / 615.38 = 0.65 < 1.0 (liquidatable!) +- Target HF = 1.05 +- Liquidation bonus = 5% (0.05) +- Collateral Factor (CF) = 0.8 + +Step 1: Calculate required debt repayment +Debt Repaid = (1.05 Γ— 615.38 - 400) / [1.05 - (1.05 Γ— 0.8)] + = (646.15 - 400) / [1.05 - 0.84] + = 246.15 / 0.21 + = 1,172.14 MOET + +This is more than the total debt! This means the position cannot be restored to HF = 1.05 +because there isn't enough collateral. This would be a full liquidation case. + +Step 2: Calculate maximum achievable HF +If all debt is repaid (615.38 MOET): +Collateral seized = (615.38 Γ— 1.05) / 0.50 = 1,292.30 FLOW +But we only have 1000 FLOW, so this is a full liquidation. + +In full liquidation: +- All 1000 FLOW seized β†’ value = $500 +- Effective value for liquidator = $500 +- Debt repaid = 500 / 1.05 = $476.19 MOET (limited by collateral available) +- Remaining debt = 615.38 - 476.19 = $139.19 (bad debt for protocol) +``` + +**Better example with partial liquidation:** + k +``` +Initial position (moderately undercollateralized): +- Collateral: 1000 FLOW @ $0.78 +- EC = 1000 Γ— 0.78 Γ— 0.8 = $624 +- ED = 650 MOET +- Current HF = 624 / 650 = 0.96 < 1.0 (liquidatable) +- Target HF = 1.05 +- Bonus = 5% (0.05) +- CF = 0.8 + +Step 1: Calculate debt repayment +Debt Repaid = (1.05 Γ— 650 - 624) / [1.05 - (1.05 Γ— 0.8)] + = (682.5 - 624) / [1.05 - 0.84] + = 58.5 / 0.21 + = 278.57 MOET + +Step 2: Verify the calculation +Collateral seized = (278.57 Γ— 1.05) / 0.78 = 375.33 FLOW +EC seized = 375.33 Γ— 0.78 Γ— 0.8 = $234.21 +EC after = 624 - 234.21 = $389.79 +ED after = 650 - 278.57 = $371.43 +HF after = 389.79 / 371.43 = 1.049 β‰ˆ 1.05 βœ“ + +Step 3: Liquidator's outcome +Collateral received: 375.33 FLOW @ $0.78 = $292.76 +Debt repaid: $278.57 +Profit: $292.76 - $278.57 = $14.19 (5.09% return) +``` + +**Key insights:** +1. The formula works when there's sufficient collateral to reach target HF +2. When `Debt Repaid > ED_current`, it indicates a full liquidation scenario +3. The denominator `[HF_target - (1 + bonus) Γ— CF]` is typically small (0.21 in this example), meaning small changes in EC/ED require large debt repayments +4. The liquidation becomes more efficient (smaller debt repayment needed) when the current HF is closer to the target HF + ## Price Impact Analysis ### Health Factor Sensitivity to Price Changes Given a percentage change in collateral price: -``` +```math HF_new = HF_old Γ— \frac{P_new}{P_old} ``` **Derivation**: + ``` HF_old = EC_old / ED = (A Γ— P_old Γ— CF) / ED @@ -416,6 +614,7 @@ Therefore: HF_new = HF_old Γ— (P_new / P_old) ``` **Example**: + ``` Initial: HF = 1.5, Price = $1.00 @@ -433,7 +632,7 @@ HF_new = 1.5 Γ— (0.65 / 1.00) = 1.5 Γ— 0.65 = 0.975 < 1.0 (liquidatable!) What's the maximum price drop before liquidation? -``` +```math MaxDropPercent = 1 - (1.0 / HF_current) ``` @@ -452,6 +651,7 @@ Drop % = 1 - 1/HF_old ``` **Examples**: + ``` HF = 1.3: Max drop = 1 - 1/1.3 = 23.08% HF = 1.5: Max drop = 1 - 1/1.5 = 33.33% @@ -465,23 +665,25 @@ HF = 1.1: Max drop = 1 - 1/1.1 = 9.09% (very risky!) With multiple collateral types: -``` -EC = \sum_i=1^{n} A_i Γ— P_i Γ— CF_i +```math +EC = βˆ‘(A_i Γ— P_i Γ— CF_i) ``` -Where $i$ iterates over all collateral token types. +Where the sum is taken over all n collateral token types. ### Effective Collateral with Price Correlation When collateral types are correlated (e.g., FLOW and stFLOW): **Simplified (no correlation)**: -``` + +```math Risk = \sum_i Risk_i ``` **With correlation** (advanced): -``` + +```math Risk = \sqrt{\sum_i\sum_j w_i w_j \sigma_i \sigma_j \rho_ij} ``` @@ -510,15 +712,15 @@ Scenario 2: Correlated collateral Annual Percentage Yield without compounding: -``` -APY_simple = (FinalValue - InitialValue / InitialValue) Γ— (365 / Days) +```math +APY_simple = ((FinalValue - InitialValue) / InitialValue) Γ— (365 / Days) ``` ### Compound APY With continuous compounding: -``` +```math APY_compound = e^r - 1 ``` @@ -528,11 +730,12 @@ Where $r$ is the continuous annual rate. When borrowing to increase yield exposure: -``` +```math Yield_leveraged = Yield_strategy - Interest_borrowed ``` **Example**: + ``` Deposit: $1000 collateral Borrow: $615 at 5% APY @@ -555,25 +758,26 @@ Total return: Base yield + leveraged yield A simplified risk score: -``` -\text{Risk Score} = (1 / HF - 1.0) Γ— Volatility_collateral +```math +\text{Risk Score} = (1 / HF - 1.0) Γ— \text{Volatility Collateral} ``` Higher score = higher risk. ### Value at Risk (VaR) -Maximum expected loss over time period at confidence level: +Maximum expected loss over time period at confidence level 95%: -``` -VaR_95% = EC Γ— \sigma Γ— z_0.95 +```math +VaR(95) = EC Γ— Οƒ Γ— z(0.95) ``` Where: -- $\sigma$: Daily volatility of collateral -- $z_0.95$: Z-score for 95% confidence (β‰ˆ1.645) +- Οƒ: Daily volatility of collateral +- z(0.95): Z-score for 95% confidence (β‰ˆ1.645) **Example**: + ``` Collateral: $1000 FLOW Daily volatility: 5% @@ -590,17 +794,17 @@ Interpretation: 95% confident that daily loss won't exceed $82.25 All operations must satisfy: -``` -1.0 ≀ HF_min < HF_target < HF_max +```math +1.0 ≀ MinHF < TargetHF < MaxHF ``` -Typical values: $HF_min = 1.1$, $HF_target = 1.3$, $HF_max = 1.5$ +Typical values: $MinHF = 1.1$, $TargetHF = 1.3$, $MaxHF = 1.5$ ### Collateral Factor Bounds For safety: -``` +```math 0 < CF_t ≀ 1.0 ``` @@ -613,29 +817,37 @@ Typically: Maximum theoretical leverage: -``` -MaxLeverage = (1 / 1 - CF) +```math +MaxLeverage = \frac{1}{1 - CF} ``` **Examples**: + ``` CF = 0.8: Max leverage = 1 / (1 - 0.8) = 5x CF = 0.75: Max leverage = 1 / (1 - 0.75) = 4x CF = 0.9: Max leverage = 1 / (1 - 0.9) = 10x (risky!) ``` -But actual safe leverage is constrained by target health: +But actual safe borrowing is constrained by target health: -``` -SafeLeverage = (CF / HF_target) +### Safe Debt Ratio + +Maximum debt-to-collateral ratio while maintaining target health: + +```math +SafeDebtRatio = CF / TargetHF ``` **Examples**: + ``` -CF = 0.8, HF = 1.3: Safe leverage = 0.8 / 1.3 β‰ˆ 0.615 = ~1.62x -CF = 0.75, HF = 1.5: Safe leverage = 0.75 / 1.5 = 0.50 = 1.5x +CF = 0.8, TargetHF = 1.3: Safe debt ratio = 0.8 / 1.3 β‰ˆ 0.615 +CF = 0.75, TargetHF = 1.5: Safe debt ratio = 0.75 / 1.5 = 0.50 ``` +This means with CF = 0.8 and TargetHF = 1.3, you can safely borrow up to $0.615 for every $1 of collateral value. + ## Practical Examples ### Complete Position Lifecycle Math @@ -643,7 +855,7 @@ CF = 0.75, HF = 1.5: Safe leverage = 0.75 / 1.5 = 0.50 = 1.5x ``` === Initial Deposit === Deposit: 1000 FLOW @ $1.00 -CF = 0.8, HF_target = 1.3 +CF = 0.8, TargetHF = 1.3 EC = 1000 Γ— 1.00 Γ— 0.8 = $800 Borrow = 800 / 1.3 = $615.38 MOET @@ -679,27 +891,8 @@ HF = 800 / 615.38 = 1.30 βœ“ Position back to optimal state! ``` -## Summary of Key Formulas - -| Formula | Expression | Use | -|---------|------------|-----| -| **Effective Collateral** | $EC = \sum A_t Γ— P_t Γ— CF_t$ | Calculate total collateral value | -| **Health Factor** | $HF = EC / ED$ | Monitor position safety | -| **Max Borrow** | $Max = EC / HF_target$ | Auto-borrowing amount | -| **Rebalance Up** | $Repay = ED - (EC / HF_target)$ | Required debt reduction | -| **Rebalance Down** | $Borrow = (EC / HF_target) - ED$ | Additional borrowing capacity | -| **Scaled Balance** | $B_scaled = B_true / I_t$ | Interest-efficient tracking | -| **True Balance** | $B_true = B_scaled Γ— I_t$ | Current balance with interest | -| **Max Price Drop** | $DropPercent = 1 - (1 / HF)$ | Liquidation safety margin | - ## Next Steps - **Apply these formulas**: [ALP Documentation](../alp/index.md) - **Understand architecture**: [FCM Architecture](./architecture.md) -- **Learn the basics**: [Understanding FCM Basics](./basics.md) - ---- - -:::tip -These mathematical foundations ensure FCM operates predictably and safely. All formulas are implemented on-chain and can be verified by examining the smart contracts. -::: +- **Learn the basics**: [Understanding FCM Basics](./basics.md) \ No newline at end of file From dc819f9dde17bdca6f747bb4a6ad25f5d0ef3f72 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Mon, 22 Dec 2025 21:51:59 -0600 Subject: [PATCH 06/13] Fix docs/defi sidebar titles and documentation order --- docs/defi/alp/index.md | 4 +- docs/defi/alp/liquidation-system.md | 2 +- docs/defi/alp/moet-role.md | 2 +- docs/defi/fcm/architecture.md | 89 ++++++++++++++++++----------- docs/defi/fcm/index.md | 34 ++++------- 5 files changed, 70 insertions(+), 61 deletions(-) diff --git a/docs/defi/alp/index.md b/docs/defi/alp/index.md index 6e9ea308c3..38f0951a15 100644 --- a/docs/defi/alp/index.md +++ b/docs/defi/alp/index.md @@ -1,7 +1,7 @@ --- title: Automated Lending Platform (ALP) -sidebar_label: Overview -sidebar_position: 1 +sidebar_label: Automated Lending Platform (ALP) +sidebar_position: 10 --- # Automated Lending Platform (ALP) diff --git a/docs/defi/alp/liquidation-system.md b/docs/defi/alp/liquidation-system.md index 4466f7a804..c5afe22930 100644 --- a/docs/defi/alp/liquidation-system.md +++ b/docs/defi/alp/liquidation-system.md @@ -1,6 +1,6 @@ --- title: Liquidation System -sidebar_position: 4 +sidebar_position: 9 --- # Liquidation System diff --git a/docs/defi/alp/moet-role.md b/docs/defi/alp/moet-role.md index c82a7fcd89..f88dc03c96 100644 --- a/docs/defi/alp/moet-role.md +++ b/docs/defi/alp/moet-role.md @@ -1,6 +1,6 @@ --- title: MOET's Role in ALP -sidebar_position: 8 +sidebar_position: 4 --- # MOET's Role in ALP diff --git a/docs/defi/fcm/architecture.md b/docs/defi/fcm/architecture.md index 0cdc6adb08..2a6afce5b6 100644 --- a/docs/defi/fcm/architecture.md +++ b/docs/defi/fcm/architecture.md @@ -5,7 +5,15 @@ sidebar_position: 3 # FCM Architecture Overview -This document explains how Flow Credit Market's three core components - ALP, FYV, and MOET - integrate to create a complete yield-generating system with automated liquidation prevention. +This document explains how Flow Credit Market's (FCM) three core components - [Automated Lending Platform (ALP)](../alp/index.md), [Flow Yield Vaults (FYV)](#), and [Medium Of Exchange Token (MOET)](#) - integrate to create a complete yield-generating system with automated liquidation prevention. + + +:::tip Key Insight +FCM's architecture is designed for **composability** and **automation**. Each component has clear responsibilities and communicates through standardized interfaces (DeFi Actions), enabling: +- Independent development and upgrades +- Third-party strategy integrations +- System resilience through modularity +::: ## High-Level Architecture @@ -147,6 +155,8 @@ New HF: 1.3 (restored to target) **Code integration**: +The integration is implemented through DeFi Actions interfaces in Cadence. On the ALP side, each Position holds references to a DrawDownSink and TopUpSource, which are called during rebalancing operations. When the position becomes overcollateralized, it borrows additional funds and pushes them to the DrawDownSink. When undercollateralized, it pulls funds from the TopUpSource to repay debt. + ```cadence // ALP side (simplified) access(all) struct Position { @@ -167,6 +177,10 @@ access(all) struct Position { } ``` +On the FYV side, strategies implement the DeFi Actions interfaces by providing Sink and Source creation functions. These functions return objects that handle the swap between MOET and yield-bearing tokens. When ALP calls the Sink, FYV converts MOET into yield tokens. When ALP pulls from the Source, FYV converts yield tokens back to MOET. + +TracerStrategy is one of FYV's yield strategies that tracks and manages positions in external yield-generating protocols. It acts as the bridge between ALP's lending system and external DeFi opportunities, automatically converting between MOET and yield tokens while maintaining the optimal balance for returns. + ```cadence // FYV side (simplified) access(all) struct TracerStrategy { @@ -230,18 +244,22 @@ sequenceDiagram participant FYV User->>Position: deposit(collateral) - Position->>Pool: updateCollateral(+amount) + Position->>Position: Store collateral + Position->>Pool: Update collateral balance Pool->>Pool: updateScaledBalance() Position->>Oracle: getPrice(collateralToken) Oracle-->>Position: priceInMOET Position->>Position: calculateHealth() - alt HF > maxHealth + Note over Position: Check if auto-borrow enabled + alt HF > maxHealth AND auto-borrow enabled + Position->>Position: Calculate excess capacity Position->>Pool: borrow(excessCapacity) Pool-->>Position: MOET vault Position->>DrawDownSink: deposit(MOET) - DrawDownSink->>FYV: swap & deploy + DrawDownSink->>FYV: Swap MOET to yield tokens + FYV->>FYV: Deploy to strategy end Position-->>User: success @@ -264,13 +282,18 @@ sequenceDiagram Position->>Oracle: getPrice(collateralToken) Oracle-->>Position: newPrice (lower) + Position->>Pool: getCurrentDebt() + Pool-->>Position: currentDebt + Position->>Position: calculateHealth() - Position->>Position: health < minHealth! + Note over Position: HF < minHealth (e.g., 1.1) - Position->>Position: calculate shortfall - Position->>TopUpSource: withdraw(shortfall) + Position->>Position: Calculate required repayment + Note over Position: Need to reach target HF (1.3) - TopUpSource->>FYV: swap YieldToken β†’ MOET + Position->>TopUpSource: withdraw(repaymentAmount) + TopUpSource->>FYV: Request MOET + FYV->>FYV: Swap YieldToken β†’ MOET FYV-->>TopUpSource: MOET vault TopUpSource-->>Position: MOET vault @@ -278,7 +301,7 @@ sequenceDiagram Pool->>Pool: updateDebt(-amount) Position->>Position: calculateHealth() - Note over Position: health restored to 1.3 + Note over Position: HF restored to 1.3 ``` ## Component Responsibilities @@ -324,7 +347,12 @@ sequenceDiagram ### 1. DeFi Actions Pattern (ALP ↔ FYV) +DeFi Actions enables ALP and FYV to communicate through standardized interfaces without tight coupling. The Sink pattern allows ALP to push borrowed funds to FYV strategies, while the Source pattern enables ALP to pull funds back when needed for rebalancing or repayment. + **Sink Pattern** (Push): + +When ALP has excess borrowing capacity or newly borrowed funds, it uses the Sink interface to deposit MOET into FYV strategies. The FYV strategy receives the funds and automatically converts them to yield-bearing tokens. + ```cadence // ALP pushes to FYV access(all) resource interface Sink { @@ -337,6 +365,9 @@ sink.deposit(vault: <-moetVault) ``` **Source Pattern** (Pull): + +When ALP needs funds to maintain position health, it pulls from the Source interface. FYV converts yield tokens back to MOET and provides the requested amount, enabling automatic liquidation prevention. + ```cadence // ALP pulls from FYV access(all) resource interface Source { @@ -350,7 +381,12 @@ let moet <- source.withdraw(amount: 100.0, type: Type<@MOET.Vault>()) ### 2. Oracle Pattern (ALP ↔ MOET) +The Oracle pattern provides a standardized way for ALP to query token prices in MOET terms. All collateral and debt calculations use these MOET-denominated prices, ensuring consistency across the system. This enables health factor calculations and determines borrowing capacity based on real-time market data. + **Price Query**: + +The PriceOracle interface returns the current price of any token type denominated in MOET. For example, querying the price of FLOW returns how many MOET one FLOW is worth, which ALP uses to calculate effective collateral values. + ```cadence // ALP queries prices in MOET terms access(all) resource interface PriceOracle { @@ -364,7 +400,12 @@ let flowPrice = oracle.getPrice(Type<@FlowToken.Vault>()) ### 3. Event-Driven Pattern +FCM components communicate state changes through events, enabling monitoring, analytics, and external integrations. Each component emits events for significant actions like position changes, yield generation, and token operations. These events allow off-chain systems to track user activity, trigger notifications, and maintain historical records without polling smart contracts. + **Key events across components**: + +ALP emits events for all position lifecycle operations including creation, borrowing, repayment, and rebalancing. FYV broadcasts events when deploying to strategies, generating yield, or providing liquidity back to ALP. MOET tracks token supply changes through mint and burn events, ensuring transparency in the stablecoin's circulation. + ```cadence // ALP events access(all) event PositionCreated(pid: UInt64, owner: Address) @@ -436,24 +477,13 @@ Actions: ### Optimizations -1. **Scaled Balance System** (ALP): - - Avoids updating every position on interest accrual - - Single interest index update affects all positions - - Gas-efficient for large position counts +**Scaled Balance System** - ALP uses a scaled balance approach that avoids updating every position when interest accrues. Instead, a single interest index update affects all positions simultaneously, making the system gas-efficient even with thousands of active positions. -2. **Batch Rebalancing** (ALP): - - Multiple positions can be rebalanced in one transaction - - Keepers can optimize gas costs +**Batch Rebalancing** - The protocol allows multiple positions to be rebalanced in a single transaction, enabling keepers to optimize gas costs by processing several positions at once rather than submitting individual transactions for each rebalancing operation. -3. **Lazy Evaluation** (All components): - - Prices only fetched when needed - - Health only calculated when accessed - - Interest only accrued when position touched +**Lazy Evaluation** - All components use lazy evaluation patterns where prices are only fetched when needed, health factors are calculated only when accessed, and interest accrues only when a position is touched. This approach minimizes unnecessary computations and reduces gas costs for operations that don't require the latest state. -4. **Event-Driven Updates** (All components): - - Off-chain indexers track state - - UI updates without constant blockchain queries - - Reduces RPC load +**Event-Driven Updates** - The system emits events for all critical operations, allowing off-chain indexers to track state changes efficiently. This enables UI updates without constant blockchain queries and significantly reduces RPC load on the network while providing users with real-time information. ### Limits & Constraints @@ -498,13 +528,4 @@ Actions: - **Understand the math**: [Mathematical Foundations](./math.md) - **Explore ALP details**: [ALP Architecture](../alp/architecture.md) - **Learn about FYV**: [FYV Documentation](#) -- **Deep dive into MOET**: [MOET Documentation](#) - ---- - -:::tip Key Insight -FCM's architecture is designed for **composability** and **automation**. Each component has clear responsibilities and communicates through standardized interfaces (DeFi Actions), enabling: -- Independent development and upgrades -- Third-party strategy integrations -- System resilience through modularity -::: +- **Deep dive into MOET**: [MOET Documentation](#) \ No newline at end of file diff --git a/docs/defi/fcm/index.md b/docs/defi/fcm/index.md index 8e85651a59..a2e1778632 100644 --- a/docs/defi/fcm/index.md +++ b/docs/defi/fcm/index.md @@ -1,14 +1,14 @@ --- title: Flow Credit Market (FCM) -sidebar_label: Overview -sidebar_position: 1 +sidebar_label: Flow Credit Market (FCM) +sidebar_position: 9 --- # Flow Credit Market (FCM) -Flow Credit Market (FCM) is a comprehensive DeFi yield platform on Flow that combines automated lending, yield farming strategies, and a synthetic stablecoin to create a capital-efficient system for generating returns on crypto assets. +Flow Credit Market (FCM) is a comprehensive DeFi yield platform on Flow that offers a capital-efficient system for generating returns on crypto assets. -## What is FCM? +## How FCM Works FCM is **not a single protocol** - it's an integrated system composed of three core components working together: @@ -44,7 +44,7 @@ graph LR - Medium of exchange between components - Maintains stability through over-collateralization -## How the Components Work Together +## Interaction Between Components FCM creates a **yield-generating flywheel** by connecting these three components: @@ -87,7 +87,7 @@ sequenceDiagram ### 1. Yield-Powered Liquidation Prevention -Unlike traditional lending protocols where you must manually add collateral or repay debt when prices drop, FCM **uses your yield to maintain position health**. Yield from FYV strategies flows back to ALP automatically, ALP pulls from FYV to repay debt when needed, your position stays healthy without manual intervention, and **you earn yield while protecting yourself from liquidation**. +Unlike traditional lending protocols where you must manually add collateral or repay debt when prices drop, FCM **uses your yield to maintain position health**. Yield from FYV strategies flows back to ALP automatically via [scheduled transactions](../../blockchain-development-tutorials/forte/scheduled-transactions/scheduled-transactions-introduction.md), ALP pulls from FYV to repay debt when needed, your position stays healthy without manual intervention, and **you earn yield while protecting yourself from liquidation**. ### 2. Automated Capital Efficiency @@ -110,11 +110,7 @@ FCM allows you to maximize returns by borrowing against collateral and deploying ### For Conservative Users -FCM provides liquidation protection through yield maintaining position health, flexible health targets allowing you to choose your risk tolerance (1.1-1.5), support for multiple collateral types including FLOW, stFLOW, USDC and more, and complete transparency with all logic on-chain and auditable. - -### For DeFi Builders - -FCM offers composable primitives allowing you to build on ALP, FYV, or both, standard interfaces for integration through DeFi Actions, the ability to create custom FYV strategies through extensible strategy patterns, and all code publicly available as open source. +FCM provides liquidation protection through yield maintaining position health, flexible health targets allowing you to choose your risk tolerance (1.1-1.5), and support for multiple collateral types including FLOW, USD based stablecoins, BTC, and ETH. The system actively monitors and can rebalance positions multiple times per day in response to price movements, ensuring your position stays within safe parameters. ## Documentation Structure @@ -137,7 +133,7 @@ FCM offers composable primitives allowing you to build on ALP, FYV, or both, sta ### As a User -1. **Get collateral**: Acquire FLOW, stFLOW, or other supported tokens +1. **Get collateral**: Acquire FLOW or other supported collateral tokens 2. **Connect wallet**: Use a Flow-compatible wallet 3. **Create position**: Deposit collateral to start earning 4. **Monitor health**: Track your position via the dashboard @@ -165,17 +161,9 @@ FCM implements multiple security layers including smart contract audits for all ## Community & Support -- **GitHub**: [FlowCreditMarket](https://github.com/onflow/FlowCreditMarket) and [FlowYieldVaults](https://github.com/onflow/FlowYieldVaults) -- **Discord**: [Flow Discord](https://discord.gg/flow) - #fcm channel -- **Documentation**: This site -- **Developer Forums**: [Flow Forum](https://forum.onflow.org) - -## What's Next? - -- **New to FCM?** Start with [Understanding FCM Basics](./basics.md) -- **Want technical details?** Read the [Architecture Overview](./architecture.md) -- **Ready to use it?** Explore [ALP](../alp/index.md) or [FYV](#) -- **Building an integration?** Check the [Integration Guide](#) +- [FlowCreditMarket](https://github.com/onflow/FlowCreditMarket) +- [FlowYieldVaults](https://github.com/onflow/FlowYieldVaults) +- [Flow Discord](https://discord.gg/flow) --- From bea5fe66c3353483b089cd1ac141f376cf8992c8 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Tue, 23 Dec 2025 09:13:04 -0600 Subject: [PATCH 07/13] Add comprehensive Flow Yield Vaults (FYV) documentation Created complete FYV documentation with 9 files covering: - Core concepts: architecture, strategies, AutoBalancer, vault lifecycle - Advanced features: leveraged farming, scheduling system, cross-chain integration - Composability: DeFi Actions framework Documentation follows same structure and quality as ALP and FCM docs. --- docs/defi/flow-yield-vaults/architecture.md | 375 +++++++++++++++ docs/defi/flow-yield-vaults/autobalancer.md | 401 ++++++++++++++++ docs/defi/flow-yield-vaults/cross-chain.md | 315 +++++++++++++ docs/defi/flow-yield-vaults/defi-actions.md | 440 ++++++++++++++++++ docs/defi/flow-yield-vaults/index.md | 122 +++++ .../flow-yield-vaults/leveraged-farming.md | 324 +++++++++++++ docs/defi/flow-yield-vaults/scheduling.md | 410 ++++++++++++++++ docs/defi/flow-yield-vaults/strategies.md | 369 +++++++++++++++ .../defi/flow-yield-vaults/vault-lifecycle.md | 437 +++++++++++++++++ 9 files changed, 3193 insertions(+) create mode 100644 docs/defi/flow-yield-vaults/architecture.md create mode 100644 docs/defi/flow-yield-vaults/autobalancer.md create mode 100644 docs/defi/flow-yield-vaults/cross-chain.md create mode 100644 docs/defi/flow-yield-vaults/defi-actions.md create mode 100644 docs/defi/flow-yield-vaults/index.md create mode 100644 docs/defi/flow-yield-vaults/leveraged-farming.md create mode 100644 docs/defi/flow-yield-vaults/scheduling.md create mode 100644 docs/defi/flow-yield-vaults/strategies.md create mode 100644 docs/defi/flow-yield-vaults/vault-lifecycle.md diff --git a/docs/defi/flow-yield-vaults/architecture.md b/docs/defi/flow-yield-vaults/architecture.md new file mode 100644 index 0000000000..4db82bca11 --- /dev/null +++ b/docs/defi/flow-yield-vaults/architecture.md @@ -0,0 +1,375 @@ +--- +title: Architecture Overview +sidebar_position: 2 +--- + +# Architecture Overview + +Flow Yield Vaults (FYV) is built on a modular architecture that separates concerns between user position management, yield strategy implementation, and automated rebalancing. This document explains the core components and how they interact to create an automated leveraged yield farming system. + +## System Architecture + +```mermaid +graph TB + User[User Account] -->|owns| YVM[YieldVaultManager] + YVM -->|contains| YV1[YieldVault 1] + YVM -->|contains| YV2[YieldVault 2] + + YV1 -->|delegates to| Strategy[Strategy Implementation] + YV1 -->|manages| AB[AutoBalancer] + YV1 -->|holds capability| Pos[ALP Position] + + Strategy -->|uses| Connectors[DeFi Connectors] + Connectors -->|swap| SwapConn[SwapConnectors] + Connectors -->|deposit/withdraw| SinkConn[Sink/Source Connectors] + + AB -->|deposits to| ERC4626[ERC4626 Vaults] + AB -->|schedules| Scheduler[FlowTransactionScheduler] + + Pos -->|borrows from| ALP[ALP Pool] + Pos -->|uses| MOET[MOET Token] + + Registry[SchedulerRegistry] -->|tracks| YV1 + Registry -->|tracks| YV2 + + Supervisor[Supervisor] -->|recovers| Registry + + style YV1 fill:#f9f,stroke:#333,stroke-width:4px + style Strategy fill:#bfb,stroke:#333,stroke-width:4px + style AB fill:#bbf,stroke:#333,stroke-width:4px +``` + +## Core Components + +### YieldVault Resource + +The `YieldVault` is the user-facing resource that represents a single yield-generating position. + +**What it does**: Each YieldVault tracks user deposits, delegates operations to a Strategy implementation, holds capabilities to interact with AutoBalancer and ALP Position, and provides user interface for deposit, withdraw, and liquidation operations. + +**Key fields:** +- `strategy`: Reference to the Strategy implementation +- `autoBalancer`: Capability to the AutoBalancer resource +- `position`: Capability to the ALP Position resource +- `id`: Unique identifier for this vault + +**User operations:** +```cadence +// Deposit collateral to start yield farming +vault.deposit(collateralVault: <-flowTokens) + +// Withdraw accumulated value +let withdrawn <- vault.withdraw(amount: 100.0) + +// Close vault and retrieve all value +let value <- vault.liquidate() +``` + +### YieldVaultManager + +The `YieldVaultManager` is stored in the user's account and manages multiple vaults. + +**What it does**: YieldVaultManager stores all vaults owned by a user, provides interfaces for vault creation and access, tracks vault IDs for enumeration, and enables multi-vault management from a single account. + +**Example structure:** +``` +User Account +└── YieldVaultManager + β”œβ”€β”€ YieldVault #42 (TracerStrategy with FLOW collateral) + β”œβ”€β”€ YieldVault #43 (mUSDCStrategy with USDC collateral) + └── YieldVault #44 (TracerStrategy with stFLOW collateral) +``` + +### Strategy Interface + +The Strategy defines how yield is generated and managed. + +**What it does**: Strategies implement the core yield logic including deposit (convert collateral β†’ yield tokens), withdrawal (convert yield tokens β†’ collateral), and liquidation (close position and return all value). The Strategy interface keeps vault logic protocol-agnostic, allowing different yield approaches while maintaining consistent user experience. + +**Key functions:** +```cadence +pub resource interface Strategy { + // Initialize position with collateral + pub fun deposit(collateralVault: @FungibleToken.Vault) + + // Withdraw specified amount + pub fun withdraw(amount: UFix64): @FungibleToken.Vault + + // Close position and return all value + pub fun liquidate(): @FungibleToken.Vault + + // Get current position value + pub fun getBalance(): UFix64 +} +``` + +**Available implementations:** +- **TracerStrategy**: Leveraged yield farming using ALP + ERC4626 vaults +- **mUSDCStrategy**: Cross-chain yield farming via Flow-EVM bridge + +Learn more in [Strategies](./strategies.md). + +### StrategyComposer & StrategyFactory + +The **StrategyComposer** creates configured strategy instances, while the **StrategyFactory** maintains the registry of available composers. + +**What it does**: StrategyComposer assembles DeFi Actions components (swap connectors, sink/source connectors) into a complete strategy. StrategyFactory provides a registry where users can discover available strategies and create instances with pre-configured connectors for their chosen yield approach. + +**Strategy creation flow:** +```mermaid +sequenceDiagram + participant User + participant Factory as StrategyFactory + participant Composer as StrategyComposer + participant Strategy + + User->>Factory: getStrategyNames() + Factory-->>User: ["TracerStrategy", "mUSDCStrategy"] + + User->>Factory: createStrategy("TracerStrategy", collateral) + Factory->>Composer: compose(collateral) + Composer->>Composer: Configure connectors + Composer->>Strategy: Create new strategy instance + Strategy-->>User: Strategy capability +``` + +### AutoBalancer + +The AutoBalancer monitors yield token holdings and triggers rebalancing when thresholds are exceeded. + +**What it does**: AutoBalancer holds yield tokens in ERC4626 vaults, monitors value ratio (current holdings vs. historical deposits), triggers rebalancing when ratio exceeds 95%-105% range, withdraws excess profits or requests deficit recovery, and self-schedules next rebalancing execution. + +**Rebalancing thresholds:** +``` +Ratio = Current Value / Historical Deposit Value + +Upper Threshold: 105% β†’ Excess profits, withdraw and deposit to position +Lower Threshold: 95% β†’ Deficit detected, request funds from position +Target Range: 95%-105% β†’ No action needed +``` + +**Rebalancing flow:** +```mermaid +sequenceDiagram + participant Scheduler + participant AB as AutoBalancer + participant Vault as ERC4626 + participant Swap as SwapConnectors + participant Pos as ALP Position + + Scheduler->>AB: rebalance() + AB->>Vault: getBalance() + Vault-->>AB: currentValue + AB->>AB: Calculate ratio + + alt Ratio > 105% (Excess) + AB->>Vault: withdraw(excess) + Vault-->>AB: yieldTokens + AB->>Swap: swap(yieldTokens β†’ FLOW) + Swap-->>AB: FLOW + AB->>Pos: deposit(FLOW) + else Ratio < 95% (Deficit) + AB->>Pos: Request deficit + Pos->>Swap: swap(MOET β†’ yieldTokens) + Swap-->>AB: yieldTokens + AB->>Vault: deposit(yieldTokens) + end + + AB->>Scheduler: scheduleNextRebalance() +``` + +Learn more in [AutoBalancer](./autobalancer.md). + +### ALP Position Integration + +Each FYV vault maintains a capability to an ALP Position resource for leveraged borrowing. + +**What it does**: The Position holds collateral deposited by the strategy, borrows MOET against the collateral (up to 80% of value), maintains health factor (target: 1.3), and provides liquidity source for deficit recovery. + +**Health factor management:** +``` +Health Factor = (Collateral Value Γ— Collateral Factor) / Debt Value + +Safe Range: 1.1 - 1.5 +Target: 1.3 (optimal leverage) +Liquidation Trigger: < 1.0 +``` + +**Position lifecycle:** +1. Strategy deposits FLOW collateral +2. Position borrows MOET (maintaining HF = 1.3) +3. Strategy converts MOET to yield tokens +4. AutoBalancer deposits yield tokens to ERC4626 +5. When rebalancing triggers: + - Excess: Withdraw yield β†’ swap β†’ deposit more collateral + - Deficit: Borrow more MOET β†’ swap β†’ deposit yield tokens + +Learn more: [ALP Documentation](../alp/index.md) + +## DeFi Actions Connectors + +FYV uses DeFi Actions as composable building blocks for complex yield strategies. + +### SwapConnectors + +Handle token conversions between MOET, collateral, and yield tokens. + +**Available implementations:** +- **UniswapV3SwapConnectors**: Swap via Uniswap V3 pools +- **TeleportCustodySwapConnectors**: Swap via Teleport custody connectors + +**Example usage:** +```cadence +// Swap MOET β†’ YieldToken +let yieldTokens <- swapConnector.swap( + vaultIn: <-moetVault, + amountOutMin: 95.0 // 5% slippage tolerance +) +``` + +### Sink/Source Connectors + +Handle deposits and withdrawals from yield-bearing protocols. + +**ERC4626SinkConnectors**: Deposit to and withdraw from ERC4626-compatible vaults (standard interface for yield-bearing vaults). + +**TopUpSource/DrawDownSink**: Bridge between ALP positions and FYV strategies for automated liquidity provision. + +**Example usage:** +```cadence +// Deposit to ERC4626 vault +sinkConnector.deposit(vault: <-yieldTokens) + +// Withdraw from ERC4626 vault +let withdrawn <- sourceConnector.withdraw(amount: 100.0) +``` + +Learn more in [DeFi Actions](./defi-actions.md). + +## Automated Scheduling System + +FYV implements a self-scheduling mechanism for perpetual rebalancing without external coordination. + +### Self-Scheduling Mechanism + +**Initial setup:** +1. User creates YieldVault +2. Vault creation atomically: + - Issues capability to AutoBalancer + - Registers in SchedulerRegistry + - Schedules first rebalance via FlowTransactionScheduler + +**Perpetual execution:** +1. Scheduler executes `rebalance()` at scheduled time +2. AutoBalancer performs rebalancing logic +3. AutoBalancer calls `scheduleNextRebalance()` for 60 seconds later +4. Process repeats indefinitely + +**Atomic registration:** +If any step fails during vault creation (capability issue, registration failure, or scheduling error), the entire transaction reverts, ensuring no orphaned or incomplete vaults. + +### Supervisor Recovery System + +The Supervisor handles vaults that become stuck or fail to self-schedule. + +**What it does**: Supervisor scans SchedulerRegistry for pending vaults (max 50 per batch), attempts to re-seed scheduling for stuck vaults, automatically reschedules itself if more work remains, and provides bounded processing to prevent timeout. + +**Recovery flow:** +```mermaid +graph TD + Scheduler[Scheduler Triggers] --> Supervisor[Supervisor.recover] + Supervisor --> Check{Pending
vaults?} + Check -->|Yes| Batch[Get up to 50 vaults] + Batch --> Process[Process each vault] + Process --> Reschedule[Schedule for each vault] + Reschedule --> More{More
pending?} + More -->|Yes| SelfSchedule[Schedule next Supervisor run] + More -->|No| Done[Complete] + Check -->|No| Done +``` + +Learn more in [Scheduling System](./scheduling.md). + +## Cross-Chain Architecture + +FYV supports cross-chain yield opportunities through Flow's EVM bridge. + +### Flow-EVM Bridge Integration + +**What it does**: FlowEVMBridgeConfig manages token escrow and minting, CadenceOwnedAccounts enable Cadence contracts to control EVM addresses, ERC4626 vaults provide Ethereum-compatible yield opportunities, and DeFi Connectors abstract the bridging complexity. + +**Token flow:** +``` +Cadence (Flow) β†’ Bridge Locks β†’ EVM Mints β†’ ERC4626 Deposit β†’ Yield Accrual +Yield Accrual β†’ ERC4626 Withdraw β†’ Bridge Burns β†’ Cadence Unlocks β†’ User Receives +``` + +**Example: mUSDCStrategy** +1. User deposits USDC (Cadence token) +2. Bridge locks USDC in escrow +3. EVM contract mints bridged USDC +4. Strategy deposits to ERC4626 vault on EVM side +5. Yield accrues in EVM vault +6. Rebalancing withdraws from EVM vault +7. Bridge burns EVM tokens and unlocks Cadence tokens +8. Strategy returns tokens to user + +Learn more in [Cross-Chain Integration](./cross-chain.md). + +## Contract Deployment + +FYV consists of five primary contracts deployed on Flow: + +| Contract | Purpose | +|----------|---------| +| **FlowYieldVaults** | Main orchestration managing user positions and strategy lifecycle | +| **FlowYieldVaultsStrategies** | Implementation of concrete strategies (TracerStrategy, mUSDCStrategy) | +| **FlowYieldVaultsAutoBalancers** | Rebalancing logic and balance management | +| **FlowYieldVaultsScheduler** | Scheduled transaction management and recovery | +| **FlowYieldVaultsSchedulerRegistry** | Registry tracking all vaults for automated operations | + +Additionally, **FlowYieldVaultsClosedBeta** manages access control during beta phase. + +**Deployment addresses:** +- **Testnet**: `0xd27920b6384e2a78` +- **Mainnet**: `0xb1d63873c3cc9f79` + +## Security Considerations + +**Access Control**: Vaults are owned resources stored in user accountsβ€”only the account owner can access vault operations. + +**Capability Model**: Strategies hold capabilities to AutoBalancers and Positions, not direct references, enabling revocability and access control. + +**Atomic Operations**: Vault creation and registration happen atomicallyβ€”if any step fails, entire transaction reverts. + +**Health Factor Monitoring**: ALP Positions enforce minimum health factors, preventing over-leveraging. + +**Slippage Protection**: Swap connectors include `amountOutMin` parameters to prevent sandwich attacks. + +**Bounded Processing**: Supervisor processes max 50 vaults per execution to prevent timeout. + +## Summary + +FYV's architecture achieves automated leveraged yield farming through separation of concerns where YieldVault manages user interface and lifecycle, Strategy implements yield generation logic, AutoBalancer handles continuous optimization, Position provides leveraged borrowing, and Scheduler enables automated execution. + +The modular design allows new strategies to be added without changing core vault logic, enabling composability through DeFi Actions components, supporting cross-chain yield through standardized interfaces, and maintaining security through Flow's resource-oriented programming model. + +**Key architectural principles:** +1. **Resource ownership**: Users own vaults; vaults own capabilities +2. **Capability-based security**: Limited access through capabilities, not references +3. **Atomic operations**: All-or-nothing transaction guarantees +4. **Self-scheduling**: Perpetual automation without external dependencies +5. **Modularity**: Strategies can be swapped and composed independently + +## Next Steps + +- **Understand strategies**: Read [Strategies](./strategies.md) +- **Learn rebalancing**: Explore [AutoBalancer](./autobalancer.md) +- **Create a vault**: Follow [Vault Lifecycle](./vault-lifecycle.md) +- **Integrate DeFi Actions**: See [DeFi Actions](./defi-actions.md) + +--- + +:::tip Key Takeaway +FYV's architecture separates user position management (YieldVault) from yield strategy (Strategy) and automated optimization (AutoBalancer). This modularity enables complex yield generation while maintaining clean separation of concerns and allowing new strategies to be added easily. +::: diff --git a/docs/defi/flow-yield-vaults/autobalancer.md b/docs/defi/flow-yield-vaults/autobalancer.md new file mode 100644 index 0000000000..9a6c1467f5 --- /dev/null +++ b/docs/defi/flow-yield-vaults/autobalancer.md @@ -0,0 +1,401 @@ +--- +title: AutoBalancer +sidebar_position: 4 +--- + +# AutoBalancer + +The AutoBalancer is FYV's core optimization engine that continuously monitors yield positions and automatically rebalances when thresholds are exceeded. This document explains how AutoBalancers work, when they trigger, and how they maintain optimal position health. + +## What is an AutoBalancer? + +An AutoBalancer is a resource that holds yield-bearing tokens in ERC4626 vaults, monitors the ratio between current value and historical deposits, automatically withdraws excess profits or requests deficit recovery, and self-schedules continuous rebalancing at 60-second intervals. + +Every YieldVault has an associated AutoBalancer stored in contract storage, managed by the vault's strategy implementation. + +## Core Concept: Value Ratio Monitoring + +The AutoBalancer tracks two key values to determine when rebalancing is needed: + +**Historical Deposit Value**: The cumulative value of all tokens deposited to the ERC4626 vault over time (tracked at deposit time and never changes unless new deposits occur). + +**Current Value**: The real-time value of yield tokens held in the ERC4626 vault (increases as yield accrues and decreases if vault experiences losses). + +**Value Ratio**: +``` +Ratio = Current Value / Historical Deposit Value +``` + +**Rebalancing triggers**: +``` +Ratio > 1.05 (105%) β†’ Excess profits, withdraw surplus +Ratio < 0.95 (95%) β†’ Deficit detected, request recovery +Ratio 0.95-1.05 β†’ Within target range, no action needed +``` + +## Rebalancing Mechanics + +### Upper Threshold: Excess Profits (Ratio > 105%) + +When yield accrues and pushes the ratio above 105%, the AutoBalancer harvests profits. + +**What happens:** + +1. Calculate excess value above 105% baseline +2. Withdraw excess yield tokens from ERC4626 vault +3. Swap yield tokens to collateral (FLOW) via SwapConnectors +4. Deposit collateral to ALP Position (increases collateral, improves health factor) +5. Update tracking (historical value stays same, current value returns to ~100%) + +**Example:** +``` +Initial state: + - Historical deposit value: $1,000 + - Current value: $1,080 (8% yield accrued) + - Ratio: 1,080 / 1,000 = 1.08 = 108% + - Threshold exceeded: 108% > 105% βœ“ + +Rebalancing calculation: + - Target value (105%): $1,000 Γ— 1.05 = $1,050 + - Excess: $1,080 - $1,050 = $30 + - Withdraw: 30 YieldToken from vault + +Swap and deposit: + - Swap 30 YieldToken β†’ 29.7 FLOW (1% slippage) + - Deposit 29.7 FLOW to Position + - Position collateral: 1000 β†’ 1029.7 FLOW + +After rebalancing: + - Historical: $1,000 (unchanged) + - Current: $1,050 (back near target) + - Ratio: 1,050 / 1,000 = 1.05 = 105% + - Collateral increased by $29.70 + - Profits locked in as additional safety buffer +``` + +**Impact on position:** +``` +Before rebalancing: + - Collateral: 1000 FLOW @ $1 = $1,000 + - EC (80% CF): $800 + - Debt: 615.38 MOET + - HF: 800 / 615.38 = 1.30 + +After rebalancing: + - Collateral: 1029.7 FLOW @ $1 = $1,029.70 + - EC (80% CF): $823.76 + - Debt: 615.38 MOET (unchanged) + - HF: 823.76 / 615.38 = 1.34 (improved!) + - Safety buffer increased +``` + +### Lower Threshold: Deficit Recovery (Ratio < 95%) + +When the vault experiences losses or value drops below 95%, the AutoBalancer requests recovery funds. + +**What happens:** + +1. Calculate deficit below 95% baseline +2. Request deficit value from ALP Position +3. Position provides MOET (either from available liquidity or by borrowing more) +4. Swap MOET to yield tokens via SwapConnectors +5. Deposit yield tokens to ERC4626 vault +6. Update tracking (current value returns to ~100%) + +**Example:** +``` +State after vault loss: + - Historical deposit value: $1,000 + - Current value: $920 (8% loss in vault) + - Ratio: 920 / 1,000 = 0.92 = 92% + - Threshold breached: 92% < 95% βœ“ + +Rebalancing calculation: + - Target value (95%): $1,000 Γ— 0.95 = $950 + - Deficit: $950 - $920 = $30 + - Request: $30 from Position + +Position response: + - Position has available liquidity: provides 30 MOET + - OR Position borrows additional 30 MOET if needed + - Swap 30 MOET β†’ 29.7 YieldToken + - Deposit 29.7 YieldToken to vault + +After rebalancing: + - Historical: $1,000 (unchanged) + - Current: $920 + $29.70 = $949.70 + - Ratio: 949.70 / 1,000 = 0.9497 β‰ˆ 95% + - Deficit recovered +``` + +**Impact on leveraged positions:** +``` +Before deficit recovery: + - Collateral: 1000 FLOW @ $1 = $1,000 + - Debt: 615.38 MOET + - Vault value: $920 (loss) + - Total exposure: $1,000 + $920 = $1,920 + +After deficit recovery (if Position borrowed more): + - Collateral: 1000 FLOW (unchanged) + - Debt: 615.38 + 30 = 645.38 MOET (increased) + - Vault value: $949.70 (recovered) + - Total exposure: $1,000 + $949.70 = $1,949.70 + - HF: 800 / 645.38 = 1.24 (slightly lower but still safe) +``` + +## Rebalancing Flow Diagram + +```mermaid +graph TD + Start[Rebalance Triggered] --> GetBalance[Get current vault balance] + GetBalance --> GetHistorical[Get historical deposit value] + GetHistorical --> CalcRatio[Calculate ratio] + CalcRatio --> CheckRatio{Ratio?} + + CheckRatio -->|> 1.05| Excess[Excess Profits] + CheckRatio -->|< 0.95| Deficit[Deficit Recovery] + CheckRatio -->|0.95-1.05| NoAction[No Action Needed] + + Excess --> CalcExcess[Calculate excess amount] + CalcExcess --> WithdrawVault[Withdraw from ERC4626] + WithdrawVault --> SwapToFlow[Swap YieldToken β†’ FLOW] + SwapToFlow --> DepositPos[Deposit FLOW to Position] + DepositPos --> Schedule[Schedule next rebalance] + + Deficit --> CalcDeficit[Calculate deficit amount] + CalcDeficit --> RequestMOET[Request MOET from Position] + RequestMOET --> SwapToYield[Swap MOET β†’ YieldToken] + SwapToYield --> DepositVault[Deposit to ERC4626] + DepositVault --> Schedule + + NoAction --> Schedule + Schedule --> End[Complete] + + style Excess fill:#bfb + style Deficit fill:#fbb + style NoAction fill:#bbf +``` + +## Self-Scheduling Mechanism + +AutoBalancers implement perpetual automation through self-scheduling, eliminating the need for external bots or keepers. + +### How It Works + +**Initial Schedule**: When a YieldVault is created, the AutoBalancer is registered in the SchedulerRegistry and scheduled for its first execution via FlowTransactionScheduler at T+60 seconds. + +**Execution**: At scheduled time, scheduler calls `autoBalancer.rebalance()`. The AutoBalancer performs its rebalancing logic (check ratio, execute if needed). + +**Reschedule**: At the end of `rebalance()`, the AutoBalancer calls `scheduleNextRebalance()` to schedule the next execution 60 seconds later. + +**Perpetual Loop**: This creates an infinite self-scheduling loop where each execution schedules the next one. + +**Sequence diagram:** +```mermaid +sequenceDiagram + participant Scheduler + participant AB as AutoBalancer + participant Registry + + Note over AB: Initial vault creation + AB->>Registry: registerAutoBalancer() + AB->>Scheduler: schedule(rebalance, T+60s) + + Note over Scheduler: Wait 60 seconds + + Scheduler->>AB: rebalance() + AB->>AB: Check ratio and execute logic + AB->>Scheduler: schedule(rebalance, T+60s) + + Note over Scheduler: Wait 60 seconds + + Scheduler->>AB: rebalance() + AB->>AB: Check ratio and execute logic + AB->>Scheduler: schedule(rebalance, T+60s) + + Note over AB,Scheduler: Loop continues indefinitely... +``` + +### Atomic Registration + +Vault creation and AutoBalancer registration happen atomically: + +```cadence +transaction createVault() { + prepare(signer: AuthAccount) { + // All these steps happen in one transaction + let vault <- createYieldVault(...) + let autoBalancer <- createAutoBalancer(...) + + registerInRegistry(autoBalancer) // Step 1 + scheduleFirstRebalance(autoBalancer) // Step 2 + + // If ANY step fails, entire transaction reverts + // No orphaned or incomplete vaults + } +} +``` + +This guarantees that every vault either has a fully functional AutoBalancer with scheduled execution or doesn't exist at all (no partial creation). + +## Configuration Parameters + +AutoBalancers accept configuration to control their behavior: + +```cadence +pub struct AutoBalancerConfig { + // Rebalancing thresholds + pub let upperThreshold: UFix64 // Default: 1.05 (105%) + pub let lowerThreshold: UFix64 // Default: 0.95 (95%) + + // Scheduling + pub let rebalanceIntervalSeconds: UInt64 // Default: 60 + + // Swap protection + pub let slippageTolerance: UFix64 // Default: 0.01 (1%) + + // ERC4626 vault + pub let vaultAddress: Address // Target yield vault +} +``` + +**Tuning considerations:** + +**Tighter thresholds** (e.g., 1.02/0.98): More frequent rebalancing, higher gas costs, more precise optimization, better capital efficiency. + +**Wider thresholds** (e.g., 1.10/0.90): Less frequent rebalancing, lower gas costs, more yield variance tolerance, lower capital efficiency. + +**Shorter intervals** (e.g., 30s): More responsive to changes, higher gas costs, better for volatile vaults. + +**Longer intervals** (e.g., 300s): Less responsive, lower gas costs, better for stable vaults. + +## Gas Optimization + +AutoBalancers are designed to minimize gas costs while maintaining effectiveness: + +**No-Op When In Range**: If ratio is within 95%-105%, the rebalance function returns early without executing swaps or transactions, costing minimal gas. + +**Batch Operations**: When rebalancing is needed, all operations (withdraw, swap, deposit) happen in a single transaction. + +**Efficient Scheduling**: Uses Flow's native transaction scheduler rather than external keeper networks. + +**Bounded Execution**: Each rebalance has deterministic gas cost based on operations performed. + +**Example gas costs** (approximate): +``` +Rebalance (no action needed): ~0.0001 FLOW +Rebalance (with excess withdrawal): ~0.001 FLOW +Rebalance (with deficit recovery): ~0.0015 FLOW +``` + +## Monitoring AutoBalancer State + +Users can query AutoBalancer state to understand position health: + +### Scripts + +**Get current ratio:** +```cadence +import FlowYieldVaults from 0xFlowYieldVaults + +pub fun main(vaultID: UInt64): UFix64 { + let vault = FlowYieldVaults.getVault(id: vaultID) + let autoBalancer = vault.getAutoBalancer() + + let current = autoBalancer.getCurrentValue() + let historical = autoBalancer.getHistoricalValue() + + return current / historical +} +// Returns: 1.08 (108% ratio) +``` + +**Get rebalancing history:** +```cadence +pub fun main(vaultID: UInt64): [RebalanceEvent] { + let vault = FlowYieldVaults.getVault(id: vaultID) + let autoBalancer = vault.getAutoBalancer() + + return autoBalancer.getRebalanceHistory() +} +// Returns array of past rebalancing events with timestamps and amounts +``` + +**Check next rebalance time:** +```cadence +pub fun main(vaultID: UInt64): UFix64 { + let registry = FlowYieldVaults.getSchedulerRegistry() + return registry.getNextScheduledTime(vaultID: vaultID) +} +// Returns: 1703001234 (Unix timestamp) +``` + +## Recovery Mechanisms + +If an AutoBalancer becomes stuck or fails to self-schedule, the Supervisor provides recovery: + +**Supervisor Recovery**: Scans SchedulerRegistry for vaults with pending schedules, attempts to re-seed scheduling for stuck vaults (max 50 per execution), and automatically reschedules itself if more work remains. + +**Manual Recovery**: Vault owners can manually trigger rebalancing via `forceRebalance()` transaction if AutoBalancer is stuck. + +**Admin Recovery**: Protocol administrators can intervene in case of critical failures using admin capabilities. + +Learn more in [Scheduling System](./scheduling.md). + +## Advanced: Custom Rebalancing Logic + +Developers can implement custom AutoBalancer logic for specialized strategies: + +```cadence +pub resource CustomAutoBalancer: AutoBalancerInterface { + pub fun rebalance() { + // Custom logic + // - Different thresholds based on time of day + // - Multi-vault coordination + // - Dynamic threshold adjustment + // - Alternative profit distribution + + // Must call scheduleNextRebalance() at end + self.scheduleNextRebalance() + } +} +``` + +Custom implementations must maintain the self-scheduling mechanism and implement the AutoBalancerInterface and register with SchedulerRegistry. + +## Best Practices + +**Monitor Ratio**: Keep an eye on your AutoBalancer's value ratio. Frequent rebalancing in one direction indicates systematic vault performance. + +**Understand Triggers**: Know your thresholds. If your vault frequently hits 105%, you're generating steady profits. If it hits 95%, the vault may be experiencing losses. + +**Gas Awareness**: More frequent rebalancing = more gas costs. Balance responsiveness vs. costs based on your vault size. + +**Threshold Tuning**: Larger vaults benefit from tighter thresholds (better optimization). Smaller vaults benefit from wider thresholds (lower gas impact). + +**Track History**: Review rebalancing history to understand vault performance patterns and identify optimal strategy configurations. + +## Summary + +AutoBalancers are FYV's optimization engine that maintain yield positions within target ranges. They monitor value ratios continuously (every 60 seconds), withdraw excess profits above 105% and lock them as collateral, request deficit recovery below 95% to maintain position health, and self-schedule perpetually without external dependencies. + +**Key mechanisms:** +- Value ratio monitoring: Current vs. Historical +- Bidirectional rebalancing: Excess profits and deficit recovery +- Self-scheduling: Perpetual 60-second loops +- Atomic registration: All-or-nothing vault creation +- Gas optimization: No-op when within range + +## Next Steps + +- **Understand scheduling**: Read [Scheduling System](./scheduling.md) +- **Learn about leverage**: Explore [Leveraged Farming](./leveraged-farming.md) +- **Create a vault**: Follow [Vault Lifecycle](./vault-lifecycle.md) +- **DeFi Actions composability**: See [DeFi Actions](./defi-actions.md) + +--- + +:::tip Key Takeaway +AutoBalancers continuously optimize your yield position by harvesting profits when value exceeds 105% and recovering deficits when value drops below 95%. This creates a self-optimizing system that locks in gains and prevents losses without manual intervention. +::: diff --git a/docs/defi/flow-yield-vaults/cross-chain.md b/docs/defi/flow-yield-vaults/cross-chain.md new file mode 100644 index 0000000000..2fc56b0520 --- /dev/null +++ b/docs/defi/flow-yield-vaults/cross-chain.md @@ -0,0 +1,315 @@ +--- +title: Cross-Chain Integration +sidebar_position: 8 +--- + +# Cross-Chain Integration + +FYV enables access to yield opportunities across multiple blockchains through Flow's EVM bridge. This document explains how cross-chain integration works and how to access Ethereum-compatible yield vaults from Flow. + +## Flow-EVM Bridge Overview + +Flow's EVM bridge connects Flow's Cadence environment with Ethereum Virtual Machine (EVM) compatible chains, enabling seamless asset transfer and smart contract interaction across ecosystems. + +### Bridge Architecture + +The bridge consists of several components: + +**FlowEVMBridgeConfig**: Manages token escrow and minting configuration, maintains token pair mappings (Flow ↔ EVM), and handles bridge fees and limits. + +**CadenceOwnedAccounts (COA)**: Enables Cadence contracts to control EVM addresses, allows Cadence to send EVM transactions, and bridges resource-oriented (Cadence) with account-based (EVM) models. + +**Token Escrow**: Locks Flow native tokens when bridging to EVM, mints equivalent bridged tokens on EVM side, and maintains 1:1 backing ratio. + +### How Bridging Works + +**Flow β†’ EVM (Bridging Out):** +``` +1. User deposits USDC (Flow native) to bridge contract +2. Bridge locks USDC in escrow vault +3. Bridge mints equivalent bridged USDC on EVM side +4. EVM contract receives bridged USDC +5. Transaction hash recorded for verification +``` + +**EVM β†’ Flow (Bridging Back):** +``` +1. EVM contract burns bridged USDC +2. Bridge receives burn notification +3. Bridge unlocks equivalent USDC from escrow +4. User receives USDC on Flow +5. Cross-chain operation complete +``` + +## mUSDCStrategy: Cross-Chain Yield Farming + +The mUSDCStrategy leverages the EVM bridge to access Ethereum-compatible ERC4626 yield vaults. + +### Strategy Architecture + +```mermaid +graph TB + User[User Account] -->|Deposit USDC| Strategy[mUSDCStrategy] + Strategy -->|Bridge| Bridge[FlowEVMBridge] + Bridge -->|Lock USDC| Escrow[Escrow Vault] + Bridge -->|Mint| Bridged[Bridged USDC on EVM] + + Strategy -->|Control| COA[CadenceOwnedAccount] + COA -->|EVM TX| EVMAddr[EVM Address] + EVMAddr -->|Deposit| Vault[ERC4626 Vault] + + Vault -->|Yield| Accrue[Yield Accrual] + Accrue -->|Withdraw| EVMAddr + EVMAddr -->|Burn| Bridged + Bridge -->|Unlock| Escrow + Escrow -->|Return| User + + style Strategy fill:#f9f + style Bridge fill:#bfb + style Vault fill:#bbf +``` + +### Example: Depositing to Cross-Chain Vault + +**User deposits 1000 USDC:** + +``` +Step 1: Bridge to EVM + - User deposits: 1000 USDC (Flow native) + - Bridge locks: 1000 USDC in escrow + - Bridge mints: 1000 bridged USDC on EVM + - Gas cost: ~0.001 FLOW (bridge fee) + +Step 2: COA Transaction + - Strategy controls EVM address via COA + - COA approves ERC4626 vault to spend USDC + - EVM transaction: approve(vault, 1000 USDC) + - Gas cost: ~0.00015 ETH (paid in bridged FLOW) + +Step 3: Deposit to ERC4626 + - COA calls vault.deposit(1000 USDC) + - Vault mints shares to COA address + - Shares received: 1000 (1:1 ratio initially) + - Gas cost: ~0.0002 ETH + +Step 4: Track in AutoBalancer + - AutoBalancer records: Historical value = $1000 + - Scheduling begins: Rebalance every 60s + - Cross-chain monitoring active + +Total setup cost: ~$2-5 (depending on gas prices) +``` + +### Yield Accrual and Rebalancing + +**After yield accrues:** + +``` +ERC4626 vault generates 8% APY over time: + - Initial shares: 1000 + - After time: Shares worth 1080 USDC + - Current value: $1080 + - Historical: $1000 + - Ratio: 1.08 = 108% > 105% threshold + +Rebalancing trigger: + Step 1: Calculate excess + - Excess: $1080 - $1050 = $30 + + Step 2: Withdraw from EVM vault (via COA) + - COA calls vault.withdraw(30 USDC) + - EVM transaction gas: ~0.0002 ETH + - Bridged USDC received at EVM address + + Step 3: Bridge back to Flow + - COA burns 30 bridged USDC + - Bridge unlocks 30 Flow USDC + - Bridge transaction fee: ~0.0005 FLOW + + Step 4: Return to user + - User can claim or compound + - Net profit: $30 - gas costs β‰ˆ $29.50 +``` + +## Supported ERC4626 Vaults + +mUSDCStrategy can connect to any ERC4626-compliant vault on EVM-compatible chains: + +### Mainnet Vaults (Example) + +| Vault Name | Address | Asset | APY Range | +|-----------|---------|-------|-----------| +| Yearn USDC | `0x...` | USDC | 5-12% | +| Aave USDC | `0x...` | USDC | 3-8% | +| Compound USDC | `0x...` | USDC | 4-10% | +| Morpho USDC | `0x...` | USDC | 6-15% | + +**Note:** Vault addresses configured at strategy deployment time. Contact FYV team for current vault list. + +### Vault Selection Criteria + +When choosing ERC4626 vaults for cross-chain farming, consider: + +**Security Audit**: Vault must have recent professional audit, proven track record, and established protocol reputation. + +**Liquidity**: Sufficient liquidity for deposits/withdrawals, low slippage on rebalancing, and reasonable withdrawal limits. + +**Yield Stability**: Consistent yield history, low volatility in APY, and transparent yield source. + +**Gas Efficiency**: Efficient deposit/withdraw operations, batching support if available, and reasonable gas costs relative to vault size. + +**Integration Compatibility**: Full ERC4626 compliance, no special requirements or restrictions, and standard share accounting. + +## Gas Cost Considerations + +Cross-chain operations incur gas costs on both Flow and EVM sides: + +### Cost Breakdown + +**Vault Creation (One-Time):** +``` +Flow side: + - Create strategy: ~0.001 FLOW + - Bridge setup: ~0.001 FLOW + - Register scheduler: ~0.0005 FLOW + Total Flow: ~0.0025 FLOW ($0.002 @ $0.80/FLOW) + +EVM side: + - Approve vault: ~0.00015 ETH + - Initial deposit: ~0.0002 ETH + Total EVM: ~0.00035 ETH ($0.70 @ $2000/ETH) + +Combined one-time cost: ~$0.70 +``` + +**Per Rebalance:** +``` +When no action needed (95%-105%): + - Flow: ~0.0001 FLOW ($0.00008) + - EVM: $0 (no transaction) + Total: ~$0.00008 + +When rebalancing needed: + - Flow bridge: ~0.0005 FLOW ($0.0004) + - EVM withdraw: ~0.0002 ETH ($0.40) + - EVM burn: ~0.00015 ETH ($0.30) + Total: ~$0.70 per rebalance +``` + +**Annual Gas Costs (Estimate):** +``` +Assumptions: + - Rebalancing every 60s = 525,600 checks/year + - 5% trigger rebalancing = 26,280 rebalances/year + - 95% no action = 499,320 no-ops/year + +Costs: + - No-ops: 499,320 Γ— $0.00008 = $40 + - Rebalances: 26,280 Γ— $0.70 = $18,396 + +Total annual gas: ~$18,436 + +For $100K vault: 18.4% of capital (uneconomical!) +For $1M vault: 1.84% of capital (marginal) +For $10M vault: 0.184% of capital (acceptable) +``` + +**Conclusion:** Cross-chain strategies are most cost-effective for larger vaults ($1M+). + +## Bridge Security Considerations + +Using the EVM bridge introduces additional security considerations: + +### Bridge Risk Factors + +**Escrow Security**: Flow tokens locked in bridge escrow contract must be secure, audited, and monitored. Risk: Escrow hack could drain bridged assets. + +**Mint/Burn Integrity**: Bridged tokens must maintain 1:1 backing ratio. Risk: Minting without locking could create unbacked tokens. + +**Cross-Chain Timing**: Bridge operations aren't instant (typically 1-2 minutes). Risk: Price movements during bridging. + +**EVM Vault Security**: ERC4626 vaults on EVM side have independent security models. Risk: Vault exploit affects bridged assets. + +**COA Control**: Cadence contract controls EVM address via COA. Risk: COA vulnerability could compromise EVM assets. + +### Mitigation Strategies + +**Bridge Audits**: Use only audited, established bridge infrastructure and verify escrow contract security. + +**Vault Vetting**: Only connect to audited, reputable ERC4626 vaults with proven track records. + +**Diversification**: Spread capital across multiple vaults and don't concentrate in single cross-chain vault. + +**Monitoring**: Track bridge health metrics and monitor unusual bridge activity. + +**Limits**: Implement per-vault and per-user caps to limit exposure. + +## Cross-Chain Transaction Flow + +Complete cross-chain farming cycle: + +```mermaid +sequenceDiagram + participant User + participant Strategy + participant Bridge + participant COA + participant EVM as EVM Vault + + Note over User,EVM: Deposit Phase + + User->>Strategy: deposit(1000 USDC) + Strategy->>Bridge: bridge(1000 USDC) + Bridge->>Bridge: Lock in escrow + Bridge->>COA: Mint 1000 on EVM + COA->>EVM: deposit(1000 bridged USDC) + EVM-->>COA: 1000 shares + + Note over User,EVM: Yield Accrual + + EVM->>EVM: Generate yield + EVM->>EVM: Shares now worth 1080 USDC + + Note over User,EVM: Rebalancing + + Strategy->>COA: Check balance + COA->>EVM: balanceOf() + EVM-->>COA: 1080 USDC + Strategy->>COA: withdraw(30 USDC) + COA->>EVM: withdraw(30) + EVM-->>COA: 30 bridged USDC + COA->>Bridge: burn(30 USDC) + Bridge->>Bridge: Unlock from escrow + Bridge-->>User: 30 USDC (Flow native) +``` + +## Best Practices + +**Vault Size Matters**: Only use cross-chain strategies for larger vaults ($1M+) where gas costs are < 2% of capital. + +**Monitor Gas Prices**: Track EVM gas prices and pause rebalancing during high gas periods if needed. + +**Understand Bridge Risk**: Cross-chain farming adds bridge security risk on top of vault risk. + +**Diversify**: Don't put all capital in cross-chain vaultsβ€”balance with native Flow strategies. + +**Track Costs**: Monitor actual gas costs vs. yields to ensure profitability. + +**Emergency Access**: Understand how to manually withdraw if automation fails. + +## Summary + +Cross-chain integration via mUSDCStrategy enables access to Ethereum-compatible ERC4626 vaults from Flow, leveraging the Flow-EVM bridge for asset transfer and CadenceOwnedAccounts for EVM control. This unlocks broader yield opportunities while introducing additional gas costs and bridge security considerations. + +**Key tradeoffs:** +- **Benefit**: Access to mature Ethereum DeFi yield +- **Cost**: Higher gas fees from cross-chain operations +- **Risk**: Bridge security and cross-chain timing + +**Optimal use case:** Large vaults ($1M+) seeking diversified yield sources across chains. + +--- + +:::tip Key Takeaway +Cross-chain yield farming is powerful but gas-intensive. It's most suitable for large vaults where gas costs are a small percentage of capital. For smaller vaults, native Flow strategies like TracerStrategy are more cost-effective. +::: diff --git a/docs/defi/flow-yield-vaults/defi-actions.md b/docs/defi/flow-yield-vaults/defi-actions.md new file mode 100644 index 0000000000..a3a01c7043 --- /dev/null +++ b/docs/defi/flow-yield-vaults/defi-actions.md @@ -0,0 +1,440 @@ +--- +title: DeFi Actions +sidebar_position: 9 +--- + +# DeFi Actions + +DeFi Actions are composable primitives that enable complex DeFi operations through simple, reusable components. FYV leverages DeFi Actions to build sophisticated yield strategies from modular building blocks. This document explains the DeFi Actions framework and how it powers FYV's composability. + +## What are DeFi Actions? + +DeFi Actions is a framework of composable smart contract components that implement common DeFi operations as standardized interfaces. Rather than building monolithic strategies, developers compose Actions like building blocks to create complex flows. + +**Key principles:** +- **Single Responsibility**: Each Action does one thing well +- **Composability**: Actions can be chained and combined +- **Standardized Interfaces**: Consistent APIs across implementations +- **Reusability**: Same Actions used across multiple strategies + +## Core Action Types + +FYV uses three main categories of DeFi Actions: + +### 1. Swap Actions (SwapConnectors) + +Convert one token type to another via decentralized exchanges. + +**Interface:** +```cadence +pub resource interface SwapConnector { + // Swap input tokens for output tokens + pub fun swap( + vaultIn: @FungibleToken.Vault, + amountOutMin: UFix64 + ): @FungibleToken.Vault + + // Get expected output for given input + pub fun quote(amountIn: UFix64): UFix64 + + // Get swap route information + pub fun getRoute(): SwapRoute +} +``` + +**Implementations:** +- **UniswapV3SwapConnectors**: Swap via Uniswap V3 pools on Flow EVM +- **TeleportCustodySwapConnectors**: Swap via Teleport custody protocol +- **IncrementSwapConnectors**: Swap via Increment DEX + +**Example usage:** +```cadence +// Swap MOET β†’ FLOW via Uniswap V3 +let swapConnector <- UniswapV3SwapConnectors.createConnector( + tokenIn: Type<@MOET.Vault>(), + tokenOut: Type<@FlowToken.Vault>(), + poolFee: 3000 // 0.3% fee tier +) + +let flowVault <- swapConnector.swap( + vaultIn: <-moetVault, + amountOutMin: 95.0 // 5% slippage tolerance +) +``` + +### 2. Sink Actions (SinkConnectors) + +Deposit tokens into yield-generating protocols. + +**Interface:** +```cadence +pub resource interface SinkConnector { + // Deposit tokens to yield protocol + pub fun deposit(vault: @FungibleToken.Vault) + + // Get current deposited balance + pub fun getBalance(): UFix64 + + // Get vault metadata + pub fun getVaultInfo(): VaultInfo +} +``` + +**Implementations:** +- **ERC4626SinkConnectors**: Deposit to ERC4626-compliant vaults +- **DrawDownSink**: Bridge to ALP borrowing positions +- **StakingSinkConnectors**: Stake tokens in staking protocols + +**Example usage:** +```cadence +// Deposit to ERC4626 vault +let sinkConnector <- ERC4626SinkConnectors.createConnector( + vaultAddress: 0x123..., // ERC4626 vault address + tokenType: Type<@YieldToken.Vault>() +) + +sinkConnector.deposit(vault: <-yieldTokens) +// Tokens now earning yield in ERC4626 vault +``` + +### 3. Source Actions (SourceConnectors) + +Withdraw tokens from yield-generating protocols. + +**Interface:** +```cadence +pub resource interface SourceConnector { + // Withdraw specified amount + pub fun withdraw(amount: UFix64): @FungibleToken.Vault + + // Withdraw all available balance + pub fun withdrawAll(): @FungibleToken.Vault + + // Get available withdrawal amount + pub fun getAvailableBalance(): UFix64 +} +``` + +**Implementations:** +- **ERC4626SourceConnectors**: Withdraw from ERC4626 vaults +- **TopUpSource**: Provide liquidity from ALP positions +- **UnstakingSourceConnectors**: Unstake from staking protocols + +**Example usage:** +```cadence +// Withdraw from ERC4626 vault +let sourceConnector <- ERC4626SourceConnectors.createConnector( + vaultAddress: 0x123..., + tokenType: Type<@YieldToken.Vault>() +) + +let withdrawn <- sourceConnector.withdraw(amount: 100.0) +// Yield tokens withdrawn from vault +``` + +## Action Composition + +The power of DeFi Actions comes from compositionβ€”chaining multiple Actions to create complex flows. + +### Example: TracerStrategy Composition + +TracerStrategy composes five Actions to implement leveraged yield farming: + +**1. Borrow Action** (DrawDownSink): +```cadence +// Borrow MOET from ALP position +let borrowAction <- DrawDownSink.create(positionCap: positionCapability) +borrowAction.deposit(vault: <-initialCollateral) +// Position auto-borrows MOET +``` + +**2. Swap Action #1** (MOET β†’ YieldToken): +```cadence +// Convert borrowed MOET to yield tokens +let swapAction1 <- UniswapV3SwapConnectors.createConnector( + tokenIn: Type<@MOET.Vault>(), + tokenOut: Type<@YieldToken.Vault>(), + poolFee: 3000 +) + +let yieldTokens <- swapAction1.swap( + vaultIn: <-moetVault, + amountOutMin: 95.0 +) +``` + +**3. Sink Action** (YieldToken β†’ ERC4626): +```cadence +// Deposit yield tokens to earn +let sinkAction <- ERC4626SinkConnectors.createConnector( + vaultAddress: 0x789..., + tokenType: Type<@YieldToken.Vault>() +) + +sinkAction.deposit(vault: <-yieldTokens) +// Now earning yield +``` + +**4. Source Action** (ERC4626 β†’ YieldToken): +```cadence +// Withdraw when rebalancing needed +let sourceAction <- ERC4626SourceConnectors.createConnector( + vaultAddress: 0x789..., + tokenType: Type<@YieldToken.Vault>() +) + +let withdrawn <- sourceAction.withdraw(amount: excessAmount) +``` + +**5. Swap Action #2** (YieldToken β†’ FLOW): +```cadence +// Convert back to collateral +let swapAction2 <- UniswapV3SwapConnectors.createConnector( + tokenIn: Type<@YieldToken.Vault>(), + tokenOut: Type<@FlowToken.Vault>(), + poolFee: 3000 +) + +let flowCollateral <- swapAction2.swap( + vaultIn: <-withdrawn, + amountOutMin: 95.0 +) +// Deposit back to position as additional collateral +``` + +### Composition Diagram + +```mermaid +graph LR + Collateral[FLOW Collateral] -->|1. Deposit| Borrow[DrawDownSink] + Borrow -->|2. Borrow| MOET[MOET Tokens] + MOET -->|3. Swap| Swap1[UniswapV3Swap] + Swap1 -->|4. Convert| Yield[YieldTokens] + Yield -->|5. Deposit| Sink[ERC4626Sink] + Sink -->|6. Earn| Vault[ERC4626 Vault] + + Vault -->|7. Withdraw| Source[ERC4626Source] + Source -->|8. Convert| Swap2[UniswapV3Swap] + Swap2 -->|9. Return| Collateral + + style Borrow fill:#f9f + style Swap1 fill:#bfb + style Sink fill:#bbf + style Source fill:#bbf + style Swap2 fill:#bfb +``` + +## Strategy Composer Pattern + +The **StrategyComposer** pattern assembles Actions into complete strategies: + +```cadence +pub resource StrategyComposer { + // Action components + access(self) let borrowAction: @DrawDownSink + access(self) let swapToYieldAction: @SwapConnector + access(self) let sinkAction: @SinkConnector + access(self) let sourceAction: @SourceConnector + access(self) let swapToCollateralAction: @SwapConnector + + // Compose into strategy + pub fun composeStrategy(): @Strategy { + let strategy <- create TracerStrategy( + borrowAction: <-self.borrowAction, + swapToYield: <-self.swapToYieldAction, + sink: <-self.sinkAction, + source: <-self.sourceAction, + swapToCollateral: <-self.swapToCollateralAction + ) + + return <-strategy + } +} +``` + +**Benefits of this pattern:** +- **Flexibility**: Swap any Action implementation without changing strategy logic +- **Testability**: Mock Actions for testing strategies in isolation +- **Reusability**: Same Actions used across multiple strategies +- **Upgradability**: Replace Actions with improved versions + +## Creating Custom Strategies + +Developers can create custom strategies by composing different Actions: + +### Example: Conservative Stablecoin Strategy + +```cadence +pub resource ConservativeStrategy { + // Simplified strategy: just deposit to yield vault + access(self) let sinkAction: @ERC4626SinkConnector + access(self) let sourceAction: @ERC4626SourceConnector + + pub fun deposit(vault: @FungibleToken.Vault) { + // Direct deposit, no borrowing or swapping + self.sinkAction.deposit(vault: <-vault) + } + + pub fun withdraw(amount: UFix64): @FungibleToken.Vault { + // Direct withdrawal + return <-self.sourceAction.withdraw(amount: amount) + } + + pub fun getBalance(): UFix64 { + return self.sinkAction.getBalance() + } +} +``` + +### Example: Multi-Vault Strategy + +```cadence +pub resource MultiVaultStrategy { + // Diversify across multiple vaults + access(self) let vaults: @{String: SinkConnector} + + pub fun deposit(vault: @FungibleToken.Vault) { + let amount = vault.balance + + // Split across 3 vaults + let vault1Amount = amount * 0.4 + let vault2Amount = amount * 0.3 + let vault3Amount = amount * 0.3 + + let vault1 <- vault.withdraw(amount: vault1Amount) + let vault2 <- vault.withdraw(amount: vault2Amount) + let vault3 <- vault + + self.vaults["vault1"]?.deposit(vault: <-vault1) + self.vaults["vault2"]?.deposit(vault: <-vault2) + self.vaults["vault3"]?.deposit(vault: <-vault3) + } +} +``` + +## Action Registry + +The **ActionRegistry** maintains available Action implementations: + +```cadence +pub contract ActionRegistry { + // Registry of available Actions + access(contract) var swapConnectors: {String: Type} + access(contract) var sinkConnectors: {String: Type} + access(contract) var sourceConnectors: {String: Type} + + // Register new Action + pub fun registerSwapConnector(name: String, type: Type) { + self.swapConnectors[name] = type + } + + // Get available Actions + pub fun getAvailableSwapConnectors(): [String] { + return self.swapConnectors.keys + } + + // Create Action instance + pub fun createSwapConnector(name: String, config: {String: AnyStruct}): @SwapConnector { + let connectorType = self.swapConnectors[name] + ?? panic("Connector not found") + + return <-create connectorType(config: config) + } +} +``` + +**Benefits:** +- **Discovery**: Users can enumerate available Actions +- **Versioning**: Multiple versions of same Action can coexist +- **Governance**: Community can vote on adding new Actions + +## Advanced Composition Patterns + +### 1. Sequential Composition + +Chain Actions in sequence: + +```cadence +// FLOW β†’ MOET β†’ YieldToken β†’ ERC4626 +let result <- action1.execute(input: <-flowVault) + |> action2.execute(input: <-result) + |> action3.execute(input: <-result) + |> action4.execute(input: <-result) +``` + +### 2. Parallel Composition + +Execute multiple Actions concurrently: + +```cadence +// Deposit to 3 vaults simultaneously +async { + vault1.deposit(vault: <-split1) + vault2.deposit(vault: <-split2) + vault3.deposit(vault: <-split3) +} +``` + +### 3. Conditional Composition + +Choose Actions based on conditions: + +```cadence +if ratio > 1.05 { + // Withdraw and swap + let withdrawn <- sourceAction.withdraw(amount: excess) + let collateral <- swapAction.swap(vaultIn: <-withdrawn) +} else if ratio < 0.95 { + // Borrow and swap + let borrowed <- borrowAction.borrow(amount: deficit) + let yieldTokens <- swapAction.swap(vaultIn: <-borrowed) +} +``` + +### 4. Recursive Composition + +Actions that contain other Actions: + +```cadence +pub resource CompositeAction: SwapConnector { + // Multi-hop swap composed of single-hop swaps + access(self) let hop1: @SwapConnector + access(self) let hop2: @SwapConnector + + pub fun swap(vaultIn: @FungibleToken.Vault): @FungibleToken.Vault { + let intermediate <- self.hop1.swap(vaultIn: <-vaultIn) + return <-self.hop2.swap(vaultIn: <-intermediate) + } +} +``` + +## Best Practices + +**Keep Actions Small**: Each Action should have single, clear responsibility. + +**Use Interfaces**: Depend on Action interfaces, not concrete implementations. + +**Handle Failures**: Implement proper error handling and revert logic. + +**Document Dependencies**: Clearly specify required Action sequences. + +**Version Actions**: Track Action versions for compatibility. + +**Test Composition**: Unit test Actions individually, integration test compositions. + +## Summary + +DeFi Actions provide the composability framework that powers FYV's flexibility through modular Actions for swaps, deposits, and withdrawals, standardized interfaces enabling interchangeability, composition patterns supporting complex strategies, and the registry system allowing Action discovery and versioning. + +**Key components:** +- **SwapConnectors**: Token conversion via DEXes +- **SinkConnectors**: Deposits to yield protocols +- **SourceConnectors**: Withdrawals from yield protocols +- **StrategyComposer**: Assembles Actions into strategies +- **ActionRegistry**: Discovers and versions Actions + +--- + +:::tip Key Takeaway +DeFi Actions are like LEGO blocks for DeFi strategies. By composing simple, reusable Actions, FYV enables sophisticated yield farming flows while maintaining clean separation of concerns and allowing easy customization. +::: diff --git a/docs/defi/flow-yield-vaults/index.md b/docs/defi/flow-yield-vaults/index.md new file mode 100644 index 0000000000..431c3c2cff --- /dev/null +++ b/docs/defi/flow-yield-vaults/index.md @@ -0,0 +1,122 @@ +--- +title: Flow Yield Vaults (FYV) +sidebar_label: Flow Yield Vaults (FYV) +sidebar_position: 11 +--- + +# Flow Yield Vaults (FYV) + +Flow Yield Vaults (FYV) is a DeFi protocol that enables users to deposit tokens into yield-generating strategies that automatically optimize returns through leveraged positions and continuous rebalancing. FYV is one of the three core components of [Flow Credit Market (FCM)](../fcm/index.md), working alongside [ALP](../alp/index.md) and [MOET](#) to create a fully automated yield farming system. + +:::info +FYV is one of three core components that make up FCM: [ALP (Automated Lending Platform)](../alp/index.md) provides the lending/borrowing engine, FYV (Flow Yield Vaults) handles yield aggregation strategies, and [MOET](#) serves as the synthetic stablecoin and unit of account. +::: + +## What is FYV? + +FYV is a yield aggregation platform that enables automated leveraged yield farming through integration with FlowCreditMarket's lending infrastructure. The system deposits tokens into DeFi strategies, automatically optimizes returns through leveraged positions, continuously rebalances to maintain safe leverage ratios, and provides liquidity for liquidation prevention in ALP positions. + +The protocol operates on the Flow blockchain using Cadence smart contracts and supports multiple tokens including FLOW, USDC, wBTC, wETH, and MOET. + +## Key Innovation: Automated Leveraged Yield Farming + +FYV's standout feature is its **TracerStrategy** that combines leveraged borrowing with yield farming in a fully automated system. When you deposit FLOW into FYV, the system deposits it as collateral in ALP to create a lending position, borrows MOET against the collateral (up to 80% of collateral value), converts borrowed MOET into yield-bearing tokens through swap connectors, deposits yield tokens into ERC4626 vaults via AutoBalancer, and continuously monitors and rebalances to maintain target health factor of 1.3. The result is amplified returns through leverage while maintaining safety through automated health management. + +### Integration with ALP for Liquidation Prevention + +FYV serves a dual purpose in the FCM ecosystem by not only generating yield through leveraged farming but also providing liquidation protection for ALP positions. When an ALP position's health drops due to collateral price changes, FYV provides liquidity via TopUpSource by converting yield tokens back to MOET and sending them to ALP for debt repayment. This yield-powered protection mechanism prevents liquidations automatically, requiring no manual intervention from users. + +## Core Components + +The FYV protocol consists of several key components that work together: + +**YieldVault**: The user-owned resource representing a leveraged position. Each vault tracks the user's deposits, holds capabilities to interact with strategies, and maintains the connection to the AutoBalancer and ALP position. + +**Strategy**: Defines the yield generation approach. Strategies implement deposit, withdraw, and liquidation operations. The StrategyFactory maintains a registry of available strategies, allowing multiple yield generation approaches while keeping vault logic protocol-agnostic. + +**AutoBalancer**: Manages yield token holdings and triggers rebalancing when thresholds are exceeded. The AutoBalancer monitors the value ratio between current holdings and historical deposits, maintaining it within 95%-105% bounds. + +**Position** (from ALP): The underlying lending position that holds collateral and debt. Strategies maintain capabilities to deposit collateral, borrow MOET, and monitor position health. + +**Scheduler**: Handles automated rebalancing through self-scheduling mechanism. Each AutoBalancer schedules its next rebalance execution at 60-second intervals, creating perpetual automation. + +Learn more in [Architecture Overview](./architecture.md). + +## Documentation Sections + +### Core Concepts +- [Architecture Overview](./architecture.md) - Core components and system design +- [Strategies](./strategies.md) - Understanding TracerStrategy and yield generation +- [AutoBalancer](./autobalancer.md) - Automated rebalancing mechanics +- [Vault Lifecycle](./vault-lifecycle.md) - Creating, managing, and closing vaults + +### Advanced Features +- [Leveraged Farming](./leveraged-farming.md) - How leverage amplifies returns +- [Cross-Chain Integration](./cross-chain.md) - Flow-EVM bridge and ERC4626 vaults +- [Scheduling System](./scheduling.md) - Automated execution and recovery + +### Integration +- [FCM Integration](./fcm-integration.md) - Working with ALP and MOET +- [DeFi Actions](./defi-actions.md) - Composable DeFi primitives +- [Swap Connectors](./swap-connectors.md) - Token conversion infrastructure + +## Getting Started + +### For Users + +If you want to earn yield through automated leveraged farming, start with the [Vault Lifecycle](./vault-lifecycle.md) guide to learn how to create your first vault, deposit collateral, and monitor your position. + +### For Developers + +If you want to integrate FYV or create custom strategies, start with the [Architecture Overview](./architecture.md) to understand the system design, then explore [DeFi Actions](./defi-actions.md) for composability patterns. + +### For DeFi Builders + +If you want to understand how FYV achieves automated leverage and liquidation protection, start with [Leveraged Farming](./leveraged-farming.md) and [FCM Integration](./fcm-integration.md). + +## Key Features + +**Automated Leverage**: FYV automatically borrows against your collateral to maximize capital efficiency while maintaining safe health factors. + +**Continuous Rebalancing**: The AutoBalancer monitors your position 24/7 and automatically adjusts when thresholds are exceeded. + +**Liquidation Prevention**: FYV provides liquidity to ALP positions when needed, preventing liquidations through yield accumulation. + +**Cross-Chain Yield**: Access Ethereum-compatible yield vaults through Flow's EVM bridge, bringing DeFi opportunities from multiple chains. + +**Composable Strategies**: Stack DeFi Actions components to create complex yield generation flows tailored to your risk tolerance. + +**Self-Scheduling**: Vaults perpetually schedule their own rebalancing without relying on external bots or keepers. + +## Supported Tokens + +FYV supports multiple collateral types and yield tokens: + +- **FLOW**: Native Flow token +- **stFLOW**: Staked FLOW with liquid staking rewards +- **USDC**: USD stablecoin (bridged) +- **wBTC**: Wrapped Bitcoin (bridged) +- **wETH**: Wrapped Ethereum (bridged) +- **MOET**: Synthetic stablecoin (borrowed asset) + +## Deployment Addresses + +| Network | Contract Address | Status | +|---------|-----------------|--------| +| **Testnet** | `0xd27920b6384e2a78` | Active | +| **Mainnet** | `0xb1d63873c3cc9f79` | Active | + +See [DeFi Contracts](../defi-contracts-mainnet.md) for complete contract addresses. + +## Next Steps + +- **Understand the basics**: Read [Architecture Overview](./architecture.md) +- **Learn strategies**: Explore [TracerStrategy](./strategies.md#tracerstrategy) +- **Create your first vault**: Follow [Vault Lifecycle](./vault-lifecycle.md) +- **Integrate with FCM**: See [FCM Integration](./fcm-integration.md) + +--- + +:::tip Key Takeaway +FYV combines automated leverage, yield farming, and liquidation protection into a single system. By integrating with ALP for borrowing and using AutoBalancers for continuous optimization, FYV enables hands-free yield generation while maintaining position safety. +::: diff --git a/docs/defi/flow-yield-vaults/leveraged-farming.md b/docs/defi/flow-yield-vaults/leveraged-farming.md new file mode 100644 index 0000000000..1b1b96f361 --- /dev/null +++ b/docs/defi/flow-yield-vaults/leveraged-farming.md @@ -0,0 +1,324 @@ +--- +title: Leveraged Farming +sidebar_position: 6 +--- + +# Leveraged Farming + +Leveraged farming amplifies your yield potential by using borrowed capital to increase your exposure to yield-generating assets. This document explains how FYV's TracerStrategy implements leveraged farming and the mechanics of leverage amplification. + +## What is Leveraged Farming? + +Leveraged farming combines collateralized borrowing with yield farming to achieve returns greater than your initial capital. By depositing collateral to borrow additional capital, converting borrowed capital to yield-bearing tokens, and earning yield on both your capital and borrowed funds, you amplify your total returns while maintaining automated risk management through health factor monitoring. + +**Simple example:** +``` +Without leverage: + - Deposit: $1,000 + - Yield: 10% APY + - Annual return: $100 (10% on $1,000) + +With 1.61x leverage: + - Deposit: $1,000 + - Borrowed: $615 + - Total farming: $1,615 + - Yield: 10% APY on $1,615 = $161.50 + - After repaying borrow cost (assume 3% APY): $161.50 - $18.45 = $143.05 + - Net return: $143.05 (14.3% on $1,000 initial capital) +``` + +## How TracerStrategy Achieves Leverage + +TracerStrategy implements leveraged farming through integration with ALP's lending platform: + +### Step-by-Step Leverage Mechanics + +**1. Collateral Deposit** +``` +User deposits: 1000 FLOW @ $1.00 = $1,000 +Collateral Factor: 0.8 (80%) +Effective Collateral (EC): $1,000 Γ— 0.8 = $800 +``` + +**2. Calculate Borrowing Capacity** +``` +Target Health Factor: 1.3 +Maximum Safe Borrow = EC / Target HF + = $800 / 1.3 + = $615.38 MOET +``` + +**3. Auto-Borrow** +``` +Position borrows: 615.38 MOET @ $1.00 = $615.38 +Debt created: $615.38 +Health Factor: $800 / $615.38 = 1.30 βœ“ +``` + +**4. Convert to Yield Tokens** +``` +Swap: 615.38 MOET β†’ ~610 YieldToken +Slippage: ~1% (typical) +Yield exposure: $610 +``` + +**5. Deposit to Yield Vault** +``` +AutoBalancer deposits: 610 YieldToken to ERC4626 +Total position value: $1,000 (collateral) + $610 (yield) = $1,610 +Effective leverage: $1,610 / $1,000 = 1.61x +``` + +## Leverage Ratio Calculation + +The leverage ratio indicates how much total exposure you have relative to your initial capital: + +``` +Leverage = Total Exposure / Initial Capital + = (Collateral + Borrowed Value) / Collateral + = (C + B) / C + = 1 + (B / C) +``` + +**For TracerStrategy with default settings:** +``` +Borrowed (B) = (C Γ— CF) / Target HF + = (C Γ— 0.8) / 1.3 + = 0.615 Γ— C + +Leverage = 1 + 0.615 = 1.615x +``` + +**Different collateral factors:** +``` +CF = 0.75, Target HF = 1.3: + Borrow = (C Γ— 0.75) / 1.3 = 0.577 Γ— C + Leverage = 1.577x + +CF = 0.85, Target HF = 1.3: + Borrow = (C Γ— 0.85) / 1.3 = 0.654 Γ— C + Leverage = 1.654x +``` + +## Risk-Adjusted Returns + +Leverage amplifies both gains and losses. Understanding the risk/reward tradeoff is critical: + +### Upside Scenario (Yield Positive) + +``` +Initial: 1000 FLOW, 1.61x leverage, 10% APY on yield tokens + +Without leverage (baseline): + - Capital: $1,000 + - Yield: 10% Γ— $1,000 = $100 + - Return: 10% + +With leverage (assuming 3% borrow cost): + - Collateral: $1,000 + - Borrowed: $615.38 + - Yield farming: $615.38 at 10% = $61.54 + - Borrow cost: $615.38 at 3% = $18.46 + - Net from leverage: $61.54 - $18.46 = $43.08 + - Total return: $43.08 (4.3% additional from leverage) + - Combined: 10% (baseline) + 4.3% (leverage) = 14.3% + - Amplification: 1.43x returns +``` + +### Downside Scenario (Yield Negative) + +``` +Initial: 1000 FLOW, 1.61x leverage, -5% yield (vault loss) + +Without leverage: + - Capital: $1,000 + - Loss: -5% Γ— $1,000 = -$50 + - Return: -5% + +With leverage (3% borrow cost still applies): + - Yield farming loss: $615.38 Γ— -5% = -$30.77 + - Borrow cost: $615.38 Γ— 3% = $18.46 + - Net from leverage: -$30.77 - $18.46 = -$49.23 + - Total return: -$49.23 (-4.9% additional loss from leverage) + - Combined: -5% (baseline) - 4.9% (leverage) = -9.9% + - Amplification: 1.98x losses +``` + +**Key insight:** Leverage amplifies returns but also amplifies losses. The amplification factor depends on the spread between yield and borrow cost. + +## Health Factor Dynamics + +The health factor is critical for managing liquidation risk in leveraged positions: + +### Health Factor Formula + +``` +HF = Effective Collateral / Effective Debt + = (Collateral Value Γ— CF) / Debt Value +``` + +### Price Impact on Health + +When collateral price changes, health factor changes proportionally: + +``` +Initial state: + - 1000 FLOW @ $1.00 + - EC: $800 (80% CF) + - Debt: $615.38 + - HF: 1.30 + +FLOW price drops to $0.90 (-10%): + - Collateral value: $900 + - EC: $900 Γ— 0.8 = $720 + - Debt: $615.38 (unchanged) + - HF: $720 / $615.38 = 1.17 + +FLOW price drops to $0.75 (-25%): + - Collateral value: $750 + - EC: $750 Γ— 0.8 = $600 + - Debt: $615.38 + - HF: $600 / $615.38 = 0.975 ⚠️ LIQUIDATABLE! +``` + +### Safe Price Drop Calculation + +How much can price drop before liquidation? + +``` +Liquidation occurs when HF < 1.0: + (C_new Γ— Price_new Γ— CF) / Debt = 1.0 + +Solving for Price_new: + Price_new = Debt / (C Γ— CF) + = $615.38 / (1000 Γ— 0.8) + = $0.769 + +Safe price drop from $1.00: + Drop = ($1.00 - $0.769) / $1.00 = 23.1% +``` + +**With target HF = 1.3, you have a 23.1% price drop buffer before liquidation.** + +## Rebalancing Impact on Leverage + +AutoBalancer's rebalancing affects your effective leverage over time: + +### Excess Profits Rebalancing + +When yield accrues and AutoBalancer withdraws excess: + +``` +Before rebalancing: + - Collateral: 1000 FLOW + - Debt: $615.38 + - Yield value: $671 (excess over historical $610) + - Leverage: ($1,000 + $671) / $1,000 = 1.671x + +After rebalancing (withdraw $61 excess): + - Swap $61 yield β†’ ~60 FLOW + - Deposit 60 FLOW to position + - Collateral: 1060 FLOW + - Debt: $615.38 (unchanged) + - Yield value: $610 (back to baseline) + - Leverage: ($1,060 + $610) / $1,060 = 1.575x + - New HF: (1060 Γ— 0.8) / 615.38 = 1.38 (improved!) +``` + +**Effect:** Leverage decreases slightly, safety buffer increases, profits locked in as collateral. + +### Deficit Recovery Rebalancing + +When vault loses value and AutoBalancer requests recovery: + +``` +Before rebalancing: + - Collateral: 1000 FLOW + - Debt: $615.38 + - Yield value: $580 (deficit below historical $610) + - Leverage: ($1,000 + $580) / $1,000 = 1.58x + +After rebalancing (borrow $30 more to cover deficit): + - Borrow additional $30 MOET + - Swap $30 MOET β†’ ~29.7 YieldToken + - Deposit to vault + - Collateral: 1000 FLOW (unchanged) + - Debt: $615.38 + $30 = $645.38 + - Yield value: $609.70 (recovered) + - Leverage: ($1,000 + $609.70) / $1,000 = 1.6097x + - New HF: (1000 Γ— 0.8) / 645.38 = 1.24 (lower but still safe) +``` + +**Effect:** Leverage stays similar, safety buffer decreases, deficit recovered. + +## Optimizing Leverage + +You can adjust leverage by changing configuration parameters: + +### Target Health Factor Adjustment + +``` +Higher Target HF (more conservative): + - Target HF = 1.5 + - Borrow = (C Γ— CF) / 1.5 = (C Γ— 0.8) / 1.5 = 0.533 Γ— C + - Leverage = 1.533x + - Larger safety buffer (50% above liquidation) + - Lower yield amplification + +Lower Target HF (more aggressive): + - Target HF = 1.1 + - Borrow = (C Γ— CF) / 1.1 = (C Γ— 0.8) / 1.1 = 0.727 Γ— C + - Leverage = 1.727x + - Smaller safety buffer (10% above liquidation) + - Higher yield amplification but higher risk +``` + +### Multi-Vault Strategy + +Advanced users can create multiple vaults with different leverage levels: + +``` +Conservative vault: + - 50% of capital + - Target HF = 1.5 + - Leverage: 1.53x + - Low risk + +Aggressive vault: + - 50% of capital + - Target HF = 1.2 + - Leverage: 1.67x + - Higher risk + +Combined effective leverage: (1.53 + 1.67) / 2 = 1.60x +Risk diversification: Two independent positions +``` + +## Best Practices + +**Understand Your Risk**: Higher leverage = higher returns potential but also higher liquidation risk. Know your risk tolerance. + +**Monitor Health Factor**: Check regularly, especially during volatile markets. Set alerts if possible for HF < 1.2. + +**Conservative Targeting**: Start with higher target HF (1.4-1.5) until you understand the system, then optimize based on experience. + +**Diversify Collateral**: If using multiple vaults, diversify across different collateral types to reduce price correlation risk. + +**Account for Costs**: Factor in swap slippage, gas costs, and borrow costs when calculating expected returns. + +**Emergency Plan**: Keep liquid funds available to add collateral if prices move against you. + +## Summary + +Leveraged farming in FYV achieves 1.6x+ exposure through ALP integration, borrowing at target health factor (typically 1.3), converting borrowed capital to yield tokens, and maintaining automated health management. The system amplifies returns when yields exceed borrow costs, increases liquidation risk through reduced price buffers, and continuously optimizes through AutoBalancer rebalancing. + +**Risk/Reward tradeoff:** +- **Higher leverage** β†’ Greater amplification but higher liquidation risk +- **Lower leverage** β†’ Lower amplification but greater safety buffer +- **Optimal leverage** β†’ Balanced based on your risk tolerance and market outlook + +--- + +:::tip Key Takeaway +Leveraged farming amplifies both gains and losses. With FYV's default 1.61x leverage and 23% price drop buffer, you get meaningful yield amplification while maintaining reasonable safety. Always monitor your health factor and understand the liquidation risks. +::: diff --git a/docs/defi/flow-yield-vaults/scheduling.md b/docs/defi/flow-yield-vaults/scheduling.md new file mode 100644 index 0000000000..a7f9807d7c --- /dev/null +++ b/docs/defi/flow-yield-vaults/scheduling.md @@ -0,0 +1,410 @@ +--- +title: Scheduling System +sidebar_position: 7 +--- + +# Scheduling System + +FYV implements a sophisticated self-scheduling mechanism that enables perpetual automated rebalancing without relying on external bots or keepers. This document explains how the scheduling system works and ensures continuous vault optimization. + +## Overview + +The scheduling system consists of three main components: + +1. **FlowTransactionScheduler** - Flow's native transaction scheduling infrastructure +2. **SchedulerRegistry** - Tracks all vaults and their scheduling state +3. **Supervisor** - Recovery mechanism for stuck vaults + +Together, these components create a self-sustaining automation system where vaults schedule their own rebalancing indefinitely. + +## Self-Scheduling Mechanism + +### How It Works + +Each AutoBalancer implements a self-perpetuating scheduling loop: + +**Initial Schedule** (vault creation): +```cadence +// During vault creation +autoBalancer.scheduleFirstRebalance() + ↓ +FlowTransactionScheduler.schedule( + functionCall: "rebalance()", + executeAt: currentTime + 60 seconds +) +``` + +**Execution** (scheduled time arrives): +```cadence +// Scheduler calls +autoBalancer.rebalance() + ↓ +// Perform rebalancing logic +checkRatio() +executeIfNeeded() + ↓ +// Reschedule next execution +scheduleNextRebalance() + ↓ +FlowTransactionScheduler.schedule( + functionCall: "rebalance()", + executeAt: currentTime + 60 seconds +) +``` + +**Perpetual Loop**: +``` +Execute β†’ Rebalance β†’ Schedule Next β†’ Wait 60s β†’ Execute β†’ ... +``` + +This creates an infinite loop where each rebalance execution schedules the next one, requiring no external coordination. + +### Atomic Registration + +Vault creation and scheduling registration happen atomically to prevent orphaned vaults: + +```cadence +transaction createVault() { + prepare(signer: AuthAccount) { + // Create all components + let vault <- createYieldVault(...) + let autoBalancer <- createAutoBalancer(...) + let position <- createPosition(...) + + // Register (all steps must succeed) + registerInRegistry(autoBalancer) // Step 1 + scheduleFirstRebalance(autoBalancer) // Step 2 + linkComponents(...) // Step 3 + + // If ANY step fails β†’ entire transaction reverts + // No partial vaults created + } +} +``` + +**Atomicity guarantee**: Either vault is fully created with working schedule, OR transaction fails and nothing is created. + +## SchedulerRegistry + +The SchedulerRegistry maintains a global record of all active vaults and their scheduling state. + +### Registry Structure + +```cadence +pub contract FlowYieldVaultsSchedulerRegistry { + // Maps vault ID β†’ scheduling info + access(contract) var registry: {UInt64: ScheduleInfo} + + pub struct ScheduleInfo { + pub let vaultID: UInt64 + pub let autoBalancerCap: Capability<&AutoBalancer> + pub let nextScheduledTime: UFix64 + pub let status: ScheduleStatus // Active, Pending, Stuck + } + + pub enum ScheduleStatus: UInt8 { + pub case Active // Scheduling working normally + pub case Pending // Awaiting schedule + pub case Stuck // Failed to reschedule + } +} +``` + +### Registration Lifecycle + +**On vault creation:** +```cadence +registry.register( + vaultID: 42, + autoBalancerCap: capability, + status: ScheduleStatus.Pending +) +``` + +**After first successful schedule:** +```cadence +registry.updateStatus( + vaultID: 42, + status: ScheduleStatus.Active, + nextScheduledTime: currentTime + 60 +) +``` + +**If schedule fails:** +```cadence +registry.updateStatus( + vaultID: 42, + status: ScheduleStatus.Stuck +) +// Supervisor will attempt recovery +``` + +**On vault liquidation:** +```cadence +registry.unregister(vaultID: 42) +// Vault removed from tracking +``` + +## Supervisor Recovery System + +The Supervisor handles vaults that become stuck or fail to self-schedule. + +### What Can Go Wrong? + +Despite atomicity guarantees, vaults can become stuck for several reasons: + +1. **Transaction failure** during reschedule due to gas issues or network congestion +2. **Capability revocation** if user accidentally breaks autoBalancer capability +3. **Scheduler overload** if too many transactions scheduled simultaneously +4. **Network issues** during schedule transaction propagation + +### Supervisor Implementation + +```cadence +pub resource Supervisor { + // Scan registry and recover stuck vaults + pub fun recover() { + let pending = registry.getPendingVaults(limit: 50) + + for vaultID in pending { + let scheduleInfo = registry.getScheduleInfo(vaultID) + + // Attempt to reschedule + if let autoBalancer = scheduleInfo.autoBalancerCap.borrow() { + autoBalancer.scheduleNextRebalance() + + registry.updateStatus( + vaultID: vaultID, + status: ScheduleStatus.Active + ) + } + } + + // If more work remains, schedule next supervisor run + if registry.hasPendingVaults() { + self.scheduleSelf() + } + } + + access(self) fun scheduleSelf() { + FlowTransactionScheduler.schedule( + functionCall: "recover()", + executeAt: currentTime + 120 seconds + ) + } +} +``` + +### Bounded Processing + +The Supervisor processes a maximum of 50 vaults per execution to prevent timeout: + +``` +Iteration 1: Process vaults 1-50 β†’ Reschedule supervisor +Iteration 2: Process vaults 51-100 β†’ Reschedule supervisor +Iteration 3: Process vaults 101-120 β†’ No more pending, stop +``` + +This ensures the recovery process can handle any number of stuck vaults without failing due to gas limits. + +### Recovery Triggers + +The Supervisor runs in two scenarios: + +**1. Scheduled Recovery** (proactive): +``` +Every 10 minutes: + β†’ Check for pending vaults + β†’ Attempt recovery + β†’ Reschedule if more work exists +``` + +**2. Manual Recovery** (reactive): +```cadence +transaction triggerSupervisor() { + prepare(admin: AuthAccount) { + let supervisor = admin.borrow<&Supervisor>(...) + supervisor.recover() + } +} +``` + +## Scheduling Parameters + +Key configuration parameters control scheduling behavior: + +```cadence +pub struct SchedulingConfig { + // Rebalancing frequency + pub let rebalanceIntervalSeconds: UInt64 // Default: 60 + + // Supervisor recovery frequency + pub let supervisorIntervalSeconds: UInt64 // Default: 600 (10 min) + + // Max vaults per supervisor run + pub let maxSupervisorBatchSize: UInt64 // Default: 50 + + // Stale threshold (mark as stuck) + pub let staleThresholdSeconds: UInt64 // Default: 300 (5 min) +} +``` + +### Tuning Considerations + +**Rebalance Interval:** +- **Shorter** (30s): More responsive, higher gas costs, better optimization +- **Longer** (120s): Less responsive, lower gas costs, acceptable for stable vaults + +**Supervisor Interval:** +- **Shorter** (300s): Faster recovery, more frequent checks, higher overhead +- **Longer** (1200s): Slower recovery, less overhead, acceptable for stable network + +**Batch Size:** +- **Smaller** (25): Lower gas per execution, more supervisor runs needed +- **Larger** (100): Higher gas per execution, fewer runs needed, risk of timeout + +## Monitoring Scheduling Health + +Users and administrators can monitor the scheduling system's health: + +### Check Vault Schedule Status + +```cadence +import FlowYieldVaultsSchedulerRegistry from 0xFYV + +pub fun main(vaultID: UInt64): ScheduleStatus { + let registry = FlowYieldVaultsSchedulerRegistry.getRegistry() + let info = registry.getScheduleInfo(vaultID) + + return info.status +} +// Returns: Active, Pending, or Stuck +``` + +### Get Next Scheduled Time + +```cadence +pub fun main(vaultID: UInt64): UFix64 { + let registry = FlowYieldVaultsSchedulerRegistry.getRegistry() + let info = registry.getScheduleInfo(vaultID) + + return info.nextScheduledTime +} +// Returns: Unix timestamp of next rebalance +``` + +### Count Pending Vaults + +```cadence +pub fun main(): UInt64 { + let registry = FlowYieldVaultsSchedulerRegistry.getRegistry() + return registry.countPendingVaults() +} +// Returns: Number of vaults awaiting schedule +``` + +## Failure Modes and Recovery + +### Scenario 1: Single Vault Fails to Reschedule + +**What happens:** +1. Vault executes rebalance successfully +2. Reschedule transaction fails (network issue) +3. Vault marked as "Stuck" in registry +4. Supervisor detects stuck vault on next run +5. Supervisor reschedules the vault +6. Vault returns to "Active" status + +**User impact:** Minor delay (up to 10 minutes) before next rebalance + +### Scenario 2: Scheduler Overload + +**What happens:** +1. Many vaults scheduled at same time +2. Scheduler queue fills up +3. Some reschedule transactions timeout +4. Multiple vaults marked "Stuck" +5. Supervisor processes in batches of 50 +6. All vaults eventually recovered + +**User impact:** Temporary scheduling delays, no loss of funds + +### Scenario 3: Capability Revocation + +**What happens:** +1. User accidentally unlinks AutoBalancer capability +2. Vault can no longer be scheduled +3. Vault marked "Stuck" permanently +4. User must manually fix capability +5. Call forceRebalance() to restart scheduling + +**User impact:** Vault stops rebalancing until fixed + +### Scenario 4: Supervisor Failure + +**What happens:** +1. Supervisor itself fails to reschedule +2. Stuck vaults accumulate +3. Admin manually triggers supervisor +4. Supervisor recovers all pending vaults +5. Supervisor returns to normal operation + +**User impact:** Longer delays (requires admin intervention) + +## Best Practices + +**Monitor Your Vault**: Check scheduling status periodically to ensure "Active" state. + +**Don't Revoke Capabilities**: Avoid unlinking or destroying AutoBalancer capabilities as this breaks scheduling. + +**Use forceRebalance() Sparingly**: Manual rebalancing bypasses scheduling logic; only use if truly stuck. + +**Track Rebalance History**: Monitor rebalance frequency to detect scheduling issues early. + +**Report Stuck Vaults**: If your vault becomes stuck, report it so admins can investigate root cause. + +## Advanced: Custom Scheduling + +Developers can implement custom scheduling logic for specialized use cases: + +```cadence +pub resource CustomAutoBalancer: AutoBalancerInterface { + // Custom interval based on conditions + pub fun getNextInterval(): UInt64 { + let ratio = self.getCurrentRatio() + + if ratio > 1.10 || ratio < 0.90 { + return 30 // More frequent when far from target + } else { + return 120 // Less frequent when stable + } + } + + pub fun scheduleNextRebalance() { + let interval = self.getNextInterval() + + FlowTransactionScheduler.schedule( + functionCall: "rebalance()", + executeAt: currentTime + interval + ) + } +} +``` + +This enables dynamic scheduling based on vault state, optimizing gas costs vs. responsiveness. + +## Summary + +FYV's scheduling system achieves truly automated yield farming through self-scheduling where vaults schedule their own rebalancing, atomic registration preventing orphaned vaults, Supervisor recovery for stuck vaults, and bounded processing handling any scale. + +**Key guarantees:** +- Every vault has either working schedule OR doesn't exist (atomicity) +- Stuck vaults automatically recovered (within 10 minutes) +- No external dependencies (no bot infrastructure needed) +- Scales to thousands of vaults (batched processing) + +--- + +:::tip Key Takeaway +The self-scheduling mechanism is what makes FYV truly "set and forget." Vaults perpetually schedule themselves, the Supervisor recovers failures, and users never need to manually trigger rebalancing. It's automation all the way down. +::: diff --git a/docs/defi/flow-yield-vaults/strategies.md b/docs/defi/flow-yield-vaults/strategies.md new file mode 100644 index 0000000000..9dea02c676 --- /dev/null +++ b/docs/defi/flow-yield-vaults/strategies.md @@ -0,0 +1,369 @@ +--- +title: Yield Strategies +sidebar_position: 3 +--- + +# Yield Strategies + +Strategies in FYV define how yield is generated from deposited collateral. Each strategy implements a specific approach to converting collateral into yield-bearing positions, managing those positions, and handling withdrawals. This document explains the available strategies and how they work. + +## Strategy Interface + +All strategies implement the `Strategy` interface, which provides a consistent API regardless of the underlying yield mechanism. + +```cadence +pub resource interface Strategy { + // Initialize position with collateral deposit + pub fun deposit(collateralVault: @FungibleToken.Vault) + + // Withdraw specified amount of value + pub fun withdraw(amount: UFix64): @FungibleToken.Vault + + // Close position and return all accumulated value + pub fun liquidate(): @FungibleToken.Vault + + // Get current position value + pub fun getBalance(): UFix64 +} +``` + +This interface enables YieldVaults to remain strategy-agnostic, allowing users to switch strategies or compose multiple strategies without changing vault logic. + +## TracerStrategy + +TracerStrategy is the flagship strategy that implements automated leveraged yield farming by bridging ALP lending positions with external DeFi yield opportunities. + +### How It Works + +TracerStrategy combines three components to create leveraged yield: + +**ALP Position** (Collateral & Borrowing): Deposits collateral (FLOW, stFLOW, etc.) to ALP, borrows MOET against collateral up to 80% of value, and maintains health factor at target of 1.3. + +**Swap Connectors** (Token Conversion): Converts MOET to yield-bearing tokens (LP tokens, farm tokens), converts yield tokens back to FLOW for rebalancing, and provides slippage protection on all swaps. + +**AutoBalancer** (Yield Management): Deposits yield tokens to ERC4626 vaults, monitors value and triggers rebalancing at 95%-105% thresholds, and automatically manages position health. + +### Capital Flow Diagram + +```mermaid +sequenceDiagram + participant User + participant Strategy as TracerStrategy + participant Position as ALP Position + participant Swap as SwapConnectors + participant AB as AutoBalancer + participant Vault as ERC4626 Vault + + User->>Strategy: deposit(1000 FLOW) + Strategy->>Position: deposit(1000 FLOW) + Position->>Position: Calculate borrowing capacity + Note over Position: EC = 1000 Γ— $1 Γ— 0.8 = $800
Max borrow = 800 / 1.3 = $615.38 + Position->>Position: borrow(615.38 MOET) + Position-->>Strategy: 615.38 MOET + + Strategy->>Swap: swap(615.38 MOET β†’ YieldToken) + Swap-->>Strategy: ~610 YieldToken (slippage) + + Strategy->>AB: deposit(610 YieldToken) + AB->>Vault: deposit(610 YieldToken) + Vault-->>AB: 610 shares + + Note over AB,Vault: Yield accrues over time + + AB->>AB: Monitor ratio
(Current / Historical) + + alt Ratio > 105% + AB->>Vault: withdraw(excess) + Vault-->>AB: YieldToken + AB->>Swap: swap(YieldToken β†’ FLOW) + Swap-->>AB: FLOW + AB->>Position: deposit(FLOW) + end +``` + +### Example: Leveraged Farming with 1000 FLOW + +Let's walk through a complete TracerStrategy lifecycle: + +**Initial Deposit:** +``` +User deposits: 1000 FLOW @ $1.00 = $1,000 + +Step 1: Deposit to ALP Position + - Collateral: 1000 FLOW + - Collateral Factor: 0.8 (80%) + - Effective Collateral: $1,000 Γ— 0.8 = $800 + +Step 2: Calculate borrowing at target HF = 1.3 + - Target Debt = EC / Target HF = $800 / 1.3 = $615.38 + - Position borrows: 615.38 MOET + +Step 3: Swap MOET β†’ YieldToken + - Swap 615.38 MOET via Uniswap V3 + - Receive ~610 YieldToken (assuming 1% slippage) + - Slippage protection: min 608.92 YieldToken (1% tolerance) + +Step 4: Deposit to ERC4626 Vault + - AutoBalancer deposits 610 YieldToken + - Receives 610 vault shares + - Historical deposit value: $610 (tracked for rebalancing) + +Position Summary: + - Collateral: 1000 FLOW ($1,000) + - Debt: 615.38 MOET ($615.38) + - Yield Tokens: 610 ($610 equivalent) + - Health Factor: 800 / 615.38 = 1.30 βœ“ + - Effective Exposure: $1,000 collateral + $610 yield = $1,610 + - Leverage: 1.61x +``` + +**After Yield Accrues (10% APY over time):** +``` +ERC4626 vault generates yield: + - Initial: 610 YieldToken + - After yield: 671 YieldToken (+10%) + - Current value: $671 + +Rebalancing check: + - Current: $671 + - Historical: $610 + - Ratio: 671 / 610 = 1.10 = 110% + - Threshold exceeded! (> 105%) + +Rebalancing action: + - Excess: $671 - $610 = $61 + - Withdraw 61 YieldToken from vault + - Swap 61 YieldToken β†’ ~60.4 FLOW + - Deposit 60.4 FLOW to position as additional collateral + +After rebalancing: + - Collateral: 1060.4 FLOW ($1,060.40) + - Debt: 615.38 MOET (unchanged) + - Yield Tokens: 610 (back to historical baseline) + - Health Factor: (1060.4 Γ— 0.8) / 615.38 = 1.38 + - Result: Profits locked in as additional collateral +``` + +### Configuration Parameters + +TracerStrategy accepts the following configuration: + +```cadence +pub struct TracerStrategyConfig { + // ALP position parameters + pub let targetHealthFactor: UFix64 // Default: 1.3 + pub let collateralFactor: UFix64 // Token-specific (0.8 for FLOW) + + // AutoBalancer thresholds + pub let upperRebalanceThreshold: UFix64 // Default: 1.05 (105%) + pub let lowerRebalanceThreshold: UFix64 // Default: 0.95 (95%) + + // Swap connector configuration + pub let swapSlippageTolerance: UFix64 // Default: 0.01 (1%) + + // ERC4626 vault address + pub let vaultAddress: Address // Target yield vault + + // Rebalancing frequency + pub let rebalanceIntervalSeconds: UInt64 // Default: 60 +} +``` + +### Risk Considerations + +**Liquidation Risk**: If FLOW price drops significantly, health factor could fall below 1.0, triggering liquidation. The target HF of 1.3 provides a 30% buffer. + +**Smart Contract Risk**: Relies on ERC4626 vault security and ALP lending pool security. + +**Slippage Risk**: Large swaps may experience higher slippage than configured tolerance, causing transaction revert. + +**Yield Volatility**: ERC4626 vault yields fluctuate based on market conditions. Negative yield would trigger deficit rebalancing. + +**Impermanent Loss** (if using LP tokens): LP token strategies may experience impermanent loss relative to holding underlying assets. + +## mUSDCStrategy + +mUSDCStrategy enables cross-chain yield farming by bridging USDC from Flow to EVM-compatible chains and depositing into ERC4626 vaults. + +### How It Works + +mUSDCStrategy uses Flow's EVM bridge to access Ethereum-based yield opportunities: + +**Bridge Locking**: Locks USDC in Flow bridge escrow, mints bridged USDC on EVM side, and maintains 1:1 backing. + +**EVM Deployment**: CadenceOwnedAccount controls EVM address, deposits bridged USDC to ERC4626 vault, and accrues yield in EVM vault. + +**Yield Management**: AutoBalancer monitors EVM vault balance, triggers rebalancing at thresholds, and bridges tokens back to Flow when needed. + +### Capital Flow + +```mermaid +sequenceDiagram + participant User + participant Strategy as mUSDCStrategy + participant Bridge as FlowEVMBridge + participant EVM as EVM Side + participant Vault as ERC4626 (EVM) + + User->>Strategy: deposit(1000 USDC) + Strategy->>Bridge: bridge(1000 USDC) + Bridge->>Bridge: Lock USDC in escrow + Bridge->>EVM: Mint 1000 bridged USDC + + Strategy->>EVM: deposit(1000 USDC) + EVM->>Vault: deposit(1000 USDC) + Vault-->>EVM: 1000 shares + + Note over Vault: Yield accrues + + alt Rebalancing needed + Strategy->>Vault: withdraw(amount) + Vault-->>EVM: USDC + EVM->>Bridge: Burn bridged USDC + Bridge->>Bridge: Unlock USDC + Bridge-->>Strategy: USDC on Flow + end +``` + +### Example: Cross-Chain Yield + +``` +User deposits: 1000 USDC (Flow native) + +Step 1: Bridge to EVM + - Lock 1000 USDC in Flow bridge contract + - Mint 1000 bridged USDC on EVM side + - Transaction hash: 0x123... (tracked for verification) + +Step 2: Deposit to EVM Vault + - CadenceOwnedAccount deposits to ERC4626 vault + - Vault address: 0x789... (configured) + - Receive 1000 vault shares + +Step 3: Yield Accrual (8% APY on EVM side) + - After time: 1080 shares value + - Ratio: 1080 / 1000 = 1.08 = 108% + - Exceeds 105% threshold + +Step 4: Rebalancing + - Withdraw 80 USDC from EVM vault + - Burn 80 bridged USDC on EVM + - Unlock 80 USDC on Flow + - User can claim or compound +``` + +### Cross-Chain Considerations + +**Bridge Security**: Relies on Flow-EVM bridge security and escrow mechanisms. + +**Gas Costs**: EVM transactions require gas fees paid in bridged FLOW. + +**Bridge Latency**: Cross-chain operations take longer than native Flow transactions (typically 1-2 minutes). + +**EVM Vault Risk**: Subject to risks of the specific EVM vault implementation. + +**Exchange Rate Peg**: Bridged USDC maintains 1:1 peg with Flow USDC through bridge mechanics. + +## Strategy Comparison + +| Feature | TracerStrategy | mUSDCStrategy | +|---------|----------------|---------------| +| **Leverage** | Yes (via ALP borrowing) | No (direct deposit) | +| **Chain** | Flow native | Flow β†’ EVM bridge | +| **Complexity** | High (multi-step) | Medium (bridge + deposit) | +| **Gas Costs** | Low (Flow only) | Higher (Flow + EVM) | +| **Yield Source** | ERC4626 on Flow EVM | ERC4626 on external EVM | +| **Collateral** | FLOW, stFLOW, etc. | USDC | +| **Liquidation Risk** | Yes (borrowed position) | No (no borrowing) | +| **Target Users** | Higher risk/reward | Conservative yield farmers | + +## Creating a Strategy Instance + +To use a strategy, create it via the StrategyFactory: + +```cadence +import FlowYieldVaults from 0xFlowYieldVaults +import FungibleToken from 0xFungibleToken + +transaction { + prepare(signer: AuthAccount) { + // Get strategy factory + let factory = FlowYieldVaults.getStrategyFactory() + + // Check available strategies + let strategies = factory.getStrategyNames() + // Returns: ["TracerStrategy", "mUSDCStrategy"] + + // Create TracerStrategy instance + let strategy <- factory.createStrategy( + strategyName: "TracerStrategy", + collateralType: Type<@FlowToken.Vault>() + ) + + // Create vault with strategy + let manager = signer.borrow<&FlowYieldVaults.YieldVaultManager>( + from: FlowYieldVaults.YieldVaultManagerStoragePath + ) ?? panic("Manager not found") + + manager.createVault(strategy: <-strategy) + } +} +``` + +## Strategy Lifecycle + +All strategies follow a consistent lifecycle: + +**1. Initialization**: Strategy created via StrategyFactory with configured connectors, AutoBalancer created and linked, ALP Position created (for leveraged strategies), and strategy registered in SchedulerRegistry. + +**2. Deposit Phase**: User deposits collateral, strategy converts to yield-bearing position, AutoBalancer tracks initial value, and first rebalance scheduled. + +**3. Active Phase**: Yield accrues in target vaults, AutoBalancer monitors continuously (every 60 seconds), rebalancing triggers at thresholds, and profits are locked or deficits recovered. + +**4. Withdrawal**: User requests withdrawal, strategy converts yield tokens back to collateral (via swaps), AutoBalancer withdraws from vaults as needed, and user receives collateral tokens. + +**5. Liquidation**: User closes vault, strategy liquidates all positions (closes ALP position for leveraged strategies), converts all value to collateral, and returns final value to user. + +## Best Practices + +**Start Conservative**: Begin with smaller amounts to understand strategy behavior before committing large capital. + +**Monitor Health Factor** (TracerStrategy): Keep health factor well above 1.1 to avoid liquidation risk. The default 1.3 target provides good buffer. + +**Understand Rebalancing**: Rebalancing frequency and thresholds impact gas costs vs. optimization. Default 60-second interval with 95%-105% thresholds balance efficiency. + +**Consider Gas Costs** (mUSDCStrategy): EVM transactions cost more than Flow native operations. Factor gas into yield calculations. + +**Diversify Strategies**: Use multiple vaults with different strategies to spread risk across yield sources. + +**Track Performance**: Monitor actual yields vs. expectations. ERC4626 vault yields vary with market conditions. + +## Advanced: Custom Strategies + +Developers can create custom strategies by implementing the Strategy interface and registering a StrategyComposer with the factory. Custom strategies can leverage unique yield sources, implement different risk profiles, use alternative rebalancing logic, or combine multiple yield mechanisms. + +See [DeFi Actions](./defi-actions.md) for details on composing custom strategies. + +## Summary + +FYV strategies transform collateral into yield through different approaches: **TracerStrategy** uses leveraged borrowing and yield farming for amplified returns, while **mUSDCStrategy** provides cross-chain access to EVM yield opportunities. Both strategies leverage AutoBalancer for continuous optimization and maintain consistent interfaces through the Strategy pattern. + +**Key concepts:** +- All strategies implement the same interface for consistency +- TracerStrategy achieves 1.6x+ leverage through ALP integration +- mUSDCStrategy bridges to EVM for broader yield access +- AutoBalancer handles continuous optimization for all strategies +- Configuration parameters control risk/reward tradeoffs + +## Next Steps + +- **Understand rebalancing**: Read [AutoBalancer](./autobalancer.md) +- **Learn leverage mechanics**: Explore [Leveraged Farming](./leveraged-farming.md) +- **Create your first vault**: Follow [Vault Lifecycle](./vault-lifecycle.md) +- **Cross-chain details**: See [Cross-Chain Integration](./cross-chain.md) + +--- + +:::tip Key Takeaway +TracerStrategy amplifies returns through leverage (1.6x+ exposure) but carries liquidation risk. mUSDCStrategy provides conservative cross-chain yield without leverage. Choose based on your risk tolerance and yield goals. +::: diff --git a/docs/defi/flow-yield-vaults/vault-lifecycle.md b/docs/defi/flow-yield-vaults/vault-lifecycle.md new file mode 100644 index 0000000000..61d5b45f4d --- /dev/null +++ b/docs/defi/flow-yield-vaults/vault-lifecycle.md @@ -0,0 +1,437 @@ +--- +title: Vault Lifecycle +sidebar_position: 5 +--- + +# Vault Lifecycle + +This guide walks you through the complete lifecycle of a Flow Yield Vault, from initial setup to closing your position and claiming your accumulated value. + +## Overview + +A YieldVault goes through five main phases: + +1. **Setup** - Configure your account for FYV +2. **Creation** - Create a vault with chosen strategy +3. **Deposit** - Add collateral to start yield farming +4. **Management** - Monitor and manage your position +5. **Closure** - Withdraw or liquidate your vault + +## Phase 1: Account Setup + +Before creating your first vault, you need to set up your account with the required resources. + +### Setup Transaction + +```cadence +import FlowYieldVaults from 0xFlowYieldVaults +import FungibleToken from 0xFungibleToken + +transaction { + prepare(signer: AuthAccount) { + // Check if already set up + if signer.borrow<&FlowYieldVaults.YieldVaultManager>( + from: FlowYieldVaults.YieldVaultManagerStoragePath + ) != nil { + return // Already set up + } + + // Create YieldVaultManager + let manager <- FlowYieldVaults.createYieldVaultManager() + + // Store in account + signer.save(<-manager, to: FlowYieldVaults.YieldVaultManagerStoragePath) + + // Create public capability + signer.link<&FlowYieldVaults.YieldVaultManager{FlowYieldVaults.YieldVaultManagerPublic}>( + FlowYieldVaults.YieldVaultManagerPublicPath, + target: FlowYieldVaults.YieldVaultManagerStoragePath + ) + } +} +``` + +**What this does**: Creates a YieldVaultManager resource in your account, stores it at the designated storage path, and creates a public capability for querying your vaults. + +**You only need to do this once** - the manager persists in your account and can hold multiple vaults. + +## Phase 2: Vault Creation + +Create a new vault with your chosen strategy (TracerStrategy or mUSDCStrategy). + +### Create Vault Transaction + +```cadence +import FlowYieldVaults from 0xFlowYieldVaults +import FlowToken from 0xFlowToken + +transaction(strategyName: String) { + prepare(signer: AuthAccount) { + // Get your vault manager + let manager = signer.borrow<&FlowYieldVaults.YieldVaultManager>( + from: FlowYieldVaults.YieldVaultManagerStoragePath + ) ?? panic("YieldVaultManager not found") + + // Get strategy factory + let factory = FlowYieldVaults.getStrategyFactory() + + // Create strategy instance + let strategy <- factory.createStrategy( + strategyName: strategyName, + collateralType: Type<@FlowToken.Vault>() + ) + + // Create vault with strategy + let vaultID = manager.createVault(strategy: <-strategy) + + log("Created vault #".concat(vaultID.toString())) + } +} +``` + +**Parameters:** +- `strategyName`: "TracerStrategy" or "mUSDCStrategy" + +**What happens:** +1. Strategy instance created with configured connectors +2. AutoBalancer created and linked to strategy +3. ALP Position created (for leveraged strategies) +4. Vault registered in SchedulerRegistry +5. First rebalance scheduled for T+60 seconds +6. Vault ID returned (use this to interact with vault later) + +**Example:** +```bash +flow transactions send create-vault.cdc "TracerStrategy" +# Output: Created vault #42 +``` + +## Phase 3: Initial Deposit + +Deposit collateral to activate your vault and start yield farming. + +### Deposit Transaction + +```cadence +import FlowYieldVaults from 0xFlowYieldVaults +import FlowToken from 0xFlowToken +import FungibleToken from 0xFungibleToken + +transaction(vaultID: UInt64, amount: UFix64) { + prepare(signer: AuthAccount) { + // Get vault manager + let manager = signer.borrow<&FlowYieldVaults.YieldVaultManager>( + from: FlowYieldVaults.YieldVaultManagerStoragePath + ) ?? panic("Manager not found") + + // Get vault + let vault = manager.borrowVault(id: vaultID) + ?? panic("Vault not found") + + // Withdraw FLOW from account + let flowVault = signer.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) + ?? panic("Could not borrow FlowToken.Vault") + + let depositVault <- flowVault.withdraw(amount: amount) + + // Deposit to vault + vault.deposit(collateralVault: <-depositVault) + + log("Deposited ".concat(amount.toString()).concat(" FLOW to vault #").concat(vaultID.toString())) + } +} +``` + +**What happens (TracerStrategy example):** +``` +Your deposit: 1000 FLOW @ $1.00 + +Step 1: Collateral deposit + - Strategy deposits 1000 FLOW to ALP Position + - Position calculates: EC = 1000 Γ— $1 Γ— 0.8 = $800 + +Step 2: Auto-borrowing + - Target HF = 1.3 + - Max borrow = EC / Target HF = 800 / 1.3 = 615.38 MOET + - Position borrows 615.38 MOET + +Step 3: Swap to yield tokens + - SwapConnector converts 615.38 MOET β†’ ~610 YieldToken + - Slippage protection ensures minimum output + +Step 4: Deposit to yield vault + - AutoBalancer deposits 610 YieldToken to ERC4626 + - Historical value tracked: $610 + - First rebalance scheduled + +Result: + - You have leveraged position: $1,000 collateral + $610 yield exposure + - Effective leverage: 1.61x + - Health factor: 1.30 (safe) + - Yield farming begins automatically +``` + +## Phase 4: Position Management + +Once your vault is active, you can monitor its performance and make adjustments. + +### Monitoring Your Vault + +**Check vault balance:** +```cadence +import FlowYieldVaults from 0xFlowYieldVaults + +pub fun main(address: Address, vaultID: UInt64): UFix64 { + let managerRef = getAccount(address) + .getCapability<&FlowYieldVaults.YieldVaultManager{FlowYieldVaults.YieldVaultManagerPublic}>( + FlowYieldVaults.YieldVaultManagerPublicPath + ) + .borrow() ?? panic("Manager not found") + + return managerRef.getVaultBalance(id: vaultID) +} +``` + +**Check AutoBalancer ratio:** +```cadence +pub fun main(address: Address, vaultID: UInt64): UFix64 { + let managerRef = getAccount(address) + .getCapability<&FlowYieldVaults.YieldVaultManager{FlowYieldVaults.YieldVaultManagerPublic}>( + FlowYieldVaults.YieldVaultManagerPublicPath + ) + .borrow() ?? panic("Manager not found") + + let vault = managerRef.borrowVaultPublic(id: vaultID) + let autoBalancer = vault.getAutoBalancer() + + let current = autoBalancer.getCurrentValue() + let historical = autoBalancer.getHistoricalValue() + + return current / historical +} +``` + +**Check position health (TracerStrategy):** +```cadence +pub fun main(address: Address, vaultID: UInt64): UFix64 { + // Get vault's ALP position health factor + // Returns: 1.30 (safe), < 1.0 (danger) +} +``` + +### Additional Deposits + +You can add more collateral at any time: + +```cadence +// Same as initial deposit transaction +transaction(vaultID: UInt64, amount: UFix64) { + // ... deposit logic +} +``` + +**Impact of additional deposits:** +- Increases collateral in ALP Position +- Position borrows more MOET to maintain target HF +- Additional MOET swapped to yield tokens +- AutoBalancer tracks new historical baseline +- Leverage ratio maintained + +### Withdrawals + +Withdraw a portion of your vault's value: + +```cadence +import FlowYieldVaults from 0xFlowYieldVaults +import FungibleToken from 0xFungibleToken + +transaction(vaultID: UInt64, amount: UFix64) { + prepare(signer: AuthAccount) { + let manager = signer.borrow<&FlowYieldVaults.YieldVaultManager>( + from: FlowYieldVaults.YieldVaultManagerStoragePath + ) ?? panic("Manager not found") + + let vault = manager.borrowVault(id: vaultID) + ?? panic("Vault not found") + + // Withdraw from vault + let withdrawn <- vault.withdraw(amount: amount) + + // Deposit to your account + let receiver = signer.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) + ?? panic("Could not borrow receiver") + + receiver.deposit(from: <-withdrawn) + + log("Withdrew ".concat(amount.toString()).concat(" FLOW")) + } +} +``` + +**What happens:** +1. AutoBalancer withdraws yield tokens from ERC4626 +2. SwapConnector converts yield tokens β†’ FLOW +3. For leveraged positions: may need to repay some debt to maintain health +4. FLOW returned to your account +5. Historical tracking updated + +### Force Rebalancing + +Manually trigger rebalancing (useful if automated schedule is stuck): + +```cadence +transaction(vaultID: UInt64) { + prepare(signer: AuthAccount) { + let manager = signer.borrow<&FlowYieldVaults.YieldVaultManager>( + from: FlowYieldVaults.YieldVaultManagerStoragePath + ) ?? panic("Manager not found") + + let vault = manager.borrowVault(id: vaultID) + ?? panic("Vault not found") + + vault.forceRebalance() + + log("Manual rebalance triggered for vault #".concat(vaultID.toString())) + } +} +``` + +## Phase 5: Vault Closure + +When you're ready to exit your position, you can liquidate the vault and claim all accumulated value. + +### Liquidate Vault Transaction + +```cadence +import FlowYieldVaults from 0xFlowYieldVaults +import FungibleToken from 0xFungibleToken +import FlowToken from 0xFlowToken + +transaction(vaultID: UInt64) { + prepare(signer: AuthAccount) { + let manager = signer.borrow<&FlowYieldVaults.YieldVaultManager>( + from: FlowYieldVaults.YieldVaultManagerStoragePath + ) ?? panic("Manager not found") + + // Liquidate vault (destroys it and returns all value) + let finalValue <- manager.liquidateVault(id: vaultID) + + // Deposit to your account + let receiver = signer.borrow<&FlowToken.Vault>(from: /storage/flowTokenVault) + ?? panic("Could not borrow receiver") + + receiver.deposit(from: <-finalValue) + + log("Liquidated vault #".concat(vaultID.toString())) + } +} +``` + +**What happens:** +1. AutoBalancer withdraws all yield tokens from ERC4626 +2. All yield tokens swapped to collateral (FLOW) +3. For leveraged positions: + - All debt repaid to ALP + - Remaining collateral withdrawn +4. Vault removed from SchedulerRegistry +5. All resources destroyed +6. Final value returned to you in FLOW + +**Example liquidation:** +``` +Initial deposit: 1000 FLOW +After 1 year of farming at 10% APY: + +Liquidation process: + - Withdraw all yield tokens from ERC4626 + - Yield tokens value: ~$671 (10% growth on $610) + - Swap yield tokens β†’ 671 FLOW + - Repay debt: 615.38 MOET + - After debt: ~55.62 FLOW profit from yield + - Withdraw collateral: 1000 FLOW + - Total returned: 1000 + 55.62 = 1055.62 FLOW + +Your profit: 55.62 FLOW (5.562% return on initial deposit) +``` + +Note: Actual returns depend on ERC4626 vault performance, swap slippage, and gas costs. + +## Complete Lifecycle Example + +Let's walk through a full vault lifecycle from start to finish: + +**Day 1 - Setup and Creation:** +```bash +# Setup account (one-time) +flow transactions send setup-account.cdc + +# Create vault with TracerStrategy +flow transactions send create-vault.cdc "TracerStrategy" +# Output: Vault #42 created + +# Initial deposit +flow transactions send deposit.cdc 42 1000.0 +# Deposited 1000 FLOW, now farming with 1.61x leverage +``` + +**Day 1-365 - Automated Farming:** +``` +AutoBalancer runs every 60 seconds: + - Day 30: Ratio = 102%, no action + - Day 60: Ratio = 106%, rebalanced (withdrew 6% excess) + - Day 90: Ratio = 104%, no action + - Day 120: Ratio = 107%, rebalanced (withdrew 7% excess) + ... continues for full year +``` + +**Day 365 - Closure:** +```bash +# Check final balance +flow scripts execute get-vault-balance.cdc 0x123... 42 +# Output: 1055.62 FLOW + +# Liquidate and withdraw +flow transactions send liquidate-vault.cdc 42 +# Vault #42 liquidated, 1055.62 FLOW returned +``` + +**Result:** 5.562% annual return through automated leveraged yield farming. + +## Best Practices + +**Start Small**: Test with a small amount first to understand vault behavior before committing significant capital. + +**Monitor Regularly**: Check your vault's health factor (leveraged positions) and AutoBalancer ratio weekly to ensure healthy performance. + +**Understand Thresholds**: Know when rebalancing triggers (95%-105%). Frequent hits indicate systematic performance. + +**Plan for Gas**: Each rebalance costs gas. Factor this into yield calculations for smaller vaults. + +**Track Performance**: Record deposit amounts and dates to calculate actual returns vs. expectations. + +**Diversify**: Use multiple vaults with different strategies to spread risk across yield sources. + +**Emergency Withdrawals**: Keep some liquid FLOW in your account for emergency deposits if health factor drops unexpectedly. + +## Troubleshooting + +**Vault creation fails**: Ensure you have set up your account first with the setup transaction, have sufficient FLOW for gas, and hold a beta capability (during closed beta period). + +**Rebalancing not triggering**: Check that vault is registered in SchedulerRegistry, manually trigger with forceRebalance() if needed, and contact support if issue persists. + +**Health factor dropping** (TracerStrategy): Add more collateral via deposit transaction, withdraw some yield to reduce leverage, or monitor collateral price movements. + +**Cannot withdraw**: Ensure vault has sufficient balance, for leveraged positions: check health factor allows withdrawal, and verify no pending rebalances blocking operations. + +## Next Steps + +- **Understand leverage**: Read [Leveraged Farming](./leveraged-farming.md) +- **Learn strategies**: Explore [Strategies](./strategies.md) +- **Master rebalancing**: See [AutoBalancer](./autobalancer.md) +- **Cross-chain options**: Check [Cross-Chain Integration](./cross-chain.md) + +--- + +:::tip Key Takeaway +The vault lifecycle is designed for simplicity: set up once, deposit to start, let AutoBalancer optimize continuously, and liquidate when ready. The system handles all complexity of leveraged borrowing, yield farming, and rebalancing automatically. +::: From 21af78c5d48ad5e8cbb34f1bcfd84dd032a86663 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Tue, 23 Dec 2025 09:41:24 -0600 Subject: [PATCH 08/13] Fix broken markdown links in FYV documentation --- docs/defi/flow-yield-vaults/index.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/defi/flow-yield-vaults/index.md b/docs/defi/flow-yield-vaults/index.md index 431c3c2cff..db5e348d62 100644 --- a/docs/defi/flow-yield-vaults/index.md +++ b/docs/defi/flow-yield-vaults/index.md @@ -56,9 +56,7 @@ Learn more in [Architecture Overview](./architecture.md). - [Scheduling System](./scheduling.md) - Automated execution and recovery ### Integration -- [FCM Integration](./fcm-integration.md) - Working with ALP and MOET - [DeFi Actions](./defi-actions.md) - Composable DeFi primitives -- [Swap Connectors](./swap-connectors.md) - Token conversion infrastructure ## Getting Started @@ -72,7 +70,7 @@ If you want to integrate FYV or create custom strategies, start with the [Archit ### For DeFi Builders -If you want to understand how FYV achieves automated leverage and liquidation protection, start with [Leveraged Farming](./leveraged-farming.md) and [FCM Integration](./fcm-integration.md). +If you want to understand how FYV achieves automated leverage and liquidation protection, start with [Leveraged Farming](./leveraged-farming.md) and explore how FYV integrates with [ALP](../alp/index.md) for borrowing. ## Key Features @@ -113,7 +111,7 @@ See [DeFi Contracts](../defi-contracts-mainnet.md) for complete contract address - **Understand the basics**: Read [Architecture Overview](./architecture.md) - **Learn strategies**: Explore [TracerStrategy](./strategies.md#tracerstrategy) - **Create your first vault**: Follow [Vault Lifecycle](./vault-lifecycle.md) -- **Integrate with FCM**: See [FCM Integration](./fcm-integration.md) +- **Integrate with FCM**: See [FCM Overview](../fcm/index.md) and [ALP Documentation](../alp/index.md) --- From 96b377b0064cd64c8a16d0e299f8e4269ac35748 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Tue, 13 Jan 2026 14:10:44 -0600 Subject: [PATCH 09/13] Improve ALP documentation clarity and fix mathematical formulas - Replace technical sequence diagrams with intuitive flow diagrams in architecture.md - Add clear asset flow visualization for deposit/auto-borrow and price drop recovery - Convert mermaid diagrams to tables and bullet points for better readability - Fix LaTeX math formulas (health factor, utilization, reserve factor) - Clarify MOET as primary debt token and unit of account - Add time-weighted fairness explanation for interest accrual - Update DeFi Actions section with link to Flow Actions documentation - Condense verbose sections into concise paragraphs - Fix incorrect borrowing capacity calculations in examples - Add security architecture explanation for fund protection --- docs/defi/alp/architecture.md | 324 +++++++---------------- docs/defi/alp/credit-market-mechanics.md | 247 +++-------------- 2 files changed, 138 insertions(+), 433 deletions(-) diff --git a/docs/defi/alp/architecture.md b/docs/defi/alp/architecture.md index 8c762db2ec..bb8c58bb1a 100644 --- a/docs/defi/alp/architecture.md +++ b/docs/defi/alp/architecture.md @@ -3,9 +3,9 @@ title: Architecture Overview sidebar_position: 2 --- -# Architecture Overview +# ALP Architecture Overview -ALP is built on a modular architecture with several core components that work together to provide a secure and efficient lending protocol. +ALP is built on a modular architecture with several core components that work together to provide a secure and efficient lending protocol with efficiency and security. The scaled balance system eliminates gas overhead, DeFi Actions enable composability, and multiple security layers protect users. This design makes ALP both powerful for developers and accessible for users. ## Core Components @@ -33,77 +33,47 @@ graph TB ### Pool -The **Pool** is the central smart contract that manages all protocol operations. It serves as the primary logic hub for: +The **Pool** is the central smart contract that manages all protocol operations. Its core responsibilities include: -```mermaid -graph LR - subgraph "Pool Responsibilities" - R1[Track All
Positions] - R2[Manage Token
Balances] - R3[Store
Reserves] - R4[Calculate
Interest] - R5[Execute
Liquidations] - end - - R1 --> Pool[Pool Contract] - R2 --> Pool - R3 --> Pool - R4 --> Pool - R5 --> Pool - - style Pool fill:#f9f,stroke:#333,stroke-width:3px -``` +- **Track All Positions**: Maintains a global registry of every user position with unique IDs and capabilities for position access and management +- **Manage Token Balances**: Tracks credit (deposits) and debit (borrows) balances for each supported token type, ensuring accurate accounting across all positions +- **Store Reserves**: Holds deposited collateral and borrowed assets in secure vaults, maintaining the protocol's liquidity pool +- **Calculate Interest**: Coordinates interest rate calculations using scaled balance indexing for gas-efficient compounding across all positions +- **Execute Liquidations**: Manages the liquidation process when positions become undercollateralized, coordinating with keepers and the DEX liquidation system -The Pool tracks global state for all positions, manages credit and debit balances for each supported token, stores reserves as they are deposited, coordinates interest rate calculations, and executes liquidations and rebalancing operations. It maintains a global ledger that tracks the state of each token type, including interest indices, total deposits, total borrows, and reserve factors. +The Pool maintains a global ledger that tracks the state of each token type, including interest indices, total deposits, total borrows, and reserve factors. ### Position -A **Position** represents a user's credit account within the protocol. Each position tracks: +A **Position** represents a user's credit account within the protocol. Each position tracks and manages several key components: -```mermaid -graph TD - subgraph "Position Components" - C[Collateral
Deposits] - D[Debt
Obligations] - H[Health
Factor] - A[DeFi Actions
Connectors] - end +- **Collateral Deposits**: Assets deposited by the user that serve as backing for borrowing capacity. Each position can hold multiple token types as collateral (FLOW, stFLOW, USDC, wBTC, wETH), with each token having its own collateral factor that determines how much can be borrowed against it. The total collateral value is continuously monitored and updated based on oracle price feeds to maintain accurate position health. - C --> Position[Your Position] - D --> Position - H --> Position - A --> Position +- **Debt Obligations**: The total amount borrowed against the deposited collateral, denominated in MOET. Debt accrues interest over time through scaled balance indexing, automatically compounding without requiring explicit updates. The protocol tracks both the principal borrowed and the accumulated interest, ensuring users always know their exact repayment obligations. - Position --> Operations[Operations:
Deposit, Borrow
Repay, Withdraw] +- **Health Factor**: The critical safety metric calculated as the ratio of effective collateral (collateral value Γ— collateral factor) to total debt value. This must remain above 1.0 at all times to avoid liquidation. Users can configure target health ranges (min/max) for their positions, enabling automated rebalancing through DeFi Actions to maintain optimal leverage while staying within safe bounds. - style Position fill:#bbf,stroke:#333,stroke-width:3px -``` +- **DeFi Actions Connectors**: Optional Sink and Source interfaces that enable automated capital flows for sophisticated yield strategies. DrawDownSink allows the position to automatically borrow more MOET when conditions are favorable (e.g., when health factor exceeds maximum target), while TopUpSource enables automatic debt repayment using external yield sources (e.g., FYV vaults) to prevent liquidation when collateral prices drop. -- **Collateral deposits**: Assets deposited to back borrowing -- **Debt obligations**: Amount borrowed against collateral -- **Health factor**: Ratio of collateral value to debt (must stay above 1.0) -- **DeFi Actions connectors**: Optional Sink and Source for automated flows +Positions support core operations including deposit (add collateral), borrow (take debt against collateral), repay (reduce debt), and withdraw (remove collateral while maintaining safe health factor). Positions are external objects representing ownership of deposited value, with each position capable of holding multiple token balances (both deposits and borrows). They can be configured with different min/max health targets and support composability through DeFi Actions interfaces. ### TokenState -Each supported token in the protocol has an associated **TokenState** that tracks per-token metrics: +Each [supported token](../flow-yield-vaults/index.md#supported-tokens) in the protocol (FLOW, stFLOW, USDC, wBTC, wETH) has an associated **TokenState** that maintains comprehensive per-token metrics and parameters: -```mermaid -graph LR - Token[Token
e.g., FLOW] --> State[TokenState] +- **Interest Indices**: Cumulative scaling factors that track interest accrual over time for both deposits and borrows. These indices enable gas-efficient interest calculations without updating every individual position, as each user's balance is multiplied by the current index to determine their actual balance with accrued interest. - State --> I[Interest
Indices] - State --> TD[Total
Deposits] - State --> TB[Total
Borrows] - State --> CF[Collateral
Factor 0.8] - State --> IR[Interest Rate
Parameters] +- **Total Deposits**: Aggregated sum of all deposits for this token across all positions in the protocol. This global metric helps determine overall liquidity availability and is used in utilization rate calculations that drive interest rates. - style State fill:#bfb,stroke:#333,stroke-width:2px -``` +- **Total Borrows**: Aggregated sum of all outstanding borrows for this token across all positions. Together with total deposits, this determines the utilization rate (borrows/deposits) which directly influences the current interest rate according to the token's rate curve. + +- **Collateral Factor**: The percentage of a token's value that can be used as effective collateral for borrowing (e.g., 0.8 means 80% of deposited FLOW value counts toward borrowing capacity). Higher quality assets typically have higher collateral factors, while more volatile assets have lower factors to account for price risk. + +- **Borrow Factor**: A multiplier applied to borrowed amounts that adjusts the effective debt value for risk management purposes. This factor works inversely to collateral factor, increasing the effective debt to maintain protocol safety margins. -TokenState maintains interest indices for scaled balance calculations, tracks total deposits and borrows for each token, stores the collateral factor (percentage of token value usable as collateral, e.g., 0.8 = 80%), applies borrow factors as multipliers to borrowed amounts, and configures interest rate parameters for rate curves. +- **Interest Rate Parameters**: Configuration values that define the interest rate curve for this token, including base rate, multiplier, kink point, and jump multiplier. These parameters determine how interest rates respond to changes in utilization, typically with low rates at low utilization and sharply increasing rates at high utilization to incentivize repayment. ### Scaled Balance System @@ -144,71 +114,50 @@ This system is highly gas efficient since it eliminates per-user balance updates ### Price Oracle -The **Price Oracle** provides token prices in terms of the default token (MOET): +The **Price Oracle** provides real-time token prices denominated in [MOET](../moet/index.md) terms, implementing the [DeFi Actions PriceOracle interface](../../../blockchain-development-tutorials/forte/flow-actions/intro-to-flow-actions.md#price-oracle) for standardized price queries across the protocol. The oracle is critical for accurate health factor calculations, liquidation triggers, and collateral valuations. -```mermaid -graph TB - subgraph "Oracle Safety Features" - S1[Staleness Checks
Price not too old] - S2[Deviation Guards
Prevent extreme moves] - S3[TWAP Support
Time-weighted prices] - S4[Fallback Sources
Redundancy] - end +**Core Functionality:** - Oracle[Price Oracle] --> S1 - Oracle --> S2 - Oracle --> S3 - Oracle --> S4 +The oracle returns prices for any supported token type (FLOW, stFLOW, USDC, wBTC, wETH) with all values expressed in MOET, creating a unified pricing framework. For example, if FLOW is trading at $1.00 and the system assumes 1 MOET = $1 USD, the oracle returns 1.0 for FLOW/MOET. This MOET-denominated pricing eliminates the need for complex cross-currency conversions when calculating health factors across multi-collateral positions. - Oracle --> Prices[Token Prices
in MOET terms] +**Safety Features:** - Prices --> HF[Health Factor
Calculations] - Prices --> Liq[Liquidation
Triggers] +The oracle incorporates multiple layers of protection to prevent manipulation and ensure accurate pricing: - style Oracle fill:#bfb,stroke:#333,stroke-width:3px -``` +- **Staleness Checks**: Each price feed includes a timestamp, and the oracle rejects any price data older than a configurable threshold (typically 5 minutes per token). This prevents the protocol from using outdated prices during periods of high volatility or oracle downtime, ensuring position health calculations always reflect current market conditions. + +- **Deviation Guards**: The oracle tracks the last accepted price for each token and compares new prices against it, flagging any deviation exceeding a configured percentage (e.g., Β±20% within one update). Extreme price movements trigger additional validation steps or temporary pauses, protecting against oracle manipulation attempts or data errors. + +- **TWAP Support**: Time-Weighted Average Price calculations smooth out short-term price volatility and make manipulation more expensive by requiring sustained price distortions rather than brief spikes. The oracle can aggregate prices over configurable time windows (e.g., 10-30 minutes) to provide manipulation-resistant pricing for critical operations like liquidations. + +- **Fallback Sources**: The protocol supports multiple oracle providers (IncrementFi, Band Protocol, Pyth Network) and can aggregate prices from these sources using median calculations. If the primary oracle fails or returns suspicious data, the system automatically falls back to alternative sources, ensuring continuous operation even during individual oracle outages. -The oracle implements the DeFi Actions PriceOracle interface, enabling standardized price queries across the protocol. +**Usage in Protocol:** -The oracle includes multiple safety features: configurable staleness thresholds per token (typically 5 minutes), maximum deviation checks against the last price snapshot, additional DEX price deviation checks during liquidations, and TWAP (Time-Weighted Average Price) support for manipulation resistance. +Oracle prices directly impact two critical protocol functions. First, health factor calculations query the oracle for each collateral token's current price to determine if positions are adequately collateralized (HF = Effective Collateral Value / Debt Value). Second, liquidation triggers rely on oracle prices to identify underwater positions (HF < 1.0) and calculate fair collateral seizure amounts during liquidations, ensuring liquidators receive appropriate compensation while protecting borrowers from excessive penalties. ## Key Interfaces ### FungibleToken.Vault -```mermaid -graph LR - Vault[FungibleToken.Vault
Standard Interface] --> Op1[Deposit
Tokens] - Vault --> Op2[Withdraw
Tokens] - Vault --> Op3[Balance
Queries] - Vault --> Op4[Transfer
Tokens] - - Op1 --> Compat[Flow Ecosystem
Compatibility] - Op2 --> Compat - Op3 --> Compat - Op4 --> Compat - - style Compat fill:#bfb,stroke:#333,stroke-width:2px -``` - -ALP integrates with Flow's standard `FungibleToken.Vault` interface for token operations, ensuring compatibility with all Flow fungible tokens and wallets. +ALP uses Flow's standard `FungibleToken.Vault` interface for all token operations, enabling it to accept any Flow-compatible token as collateral or debt without custom integration code. This means ALP can support FLOW, USDC, wBTC, stFLOW, and MOET through a single unified interface, and any new Flow token can be added to the protocol simply by configuration rather than code changes. This architectural choice explains why ALP can handle multiple collateral types efficiently and integrate seamlessly with other Flow DeFi protocols like FYV. ### DeFi Actions Framework -ALP implements the **DeFi Actions** framework for protocol composability: +ALP implements the **[DeFi Actions](../../blockchain-development-tutorials/forte/flow-actions/intro-to-flow-actions.md)** framework for protocol composability: ```mermaid graph TB subgraph "Sink Pattern (Push)" S1[Position
Overcollateralized] --> S2[Auto-Borrow
MOET] S2 --> S3[Push to
DrawDownSink] - S3 --> S4[User Wallet
or DeFi Protocol] + S3 --> S4[FYV or other
DeFi Protocol] end subgraph "Source Pattern (Pull)" P1[Position
Undercollateralized] --> P2[Need to
Repay Debt] P2 --> P3[Pull from
TopUpSource] - P3 --> P4[User Wallet
or DeFi Protocol] + P3 --> P4[FYV or other
DeFi Protocol] end style S1 fill:#bbf @@ -241,81 +190,77 @@ graph TB style Oracle fill:#bfb,stroke:#333,stroke-width:2px ``` -## Data Flow +## Data Sequence -### Deposit Flow +### Deposit & Auto-Borrow Sequence ```mermaid -sequenceDiagram - participant User - participant Position - participant Pool - participant TokenState - participant Sink - - User->>Position: deposit() - Position->>Pool: Transfer tokens to reserves - Pool->>Pool: Update scaled balance - Pool->>TokenState: Update totals - Pool->>Pool: Check if overcollateralized - alt Overcollateralized & DrawDownSink enabled - Pool->>Pool: Auto-borrow - Pool->>Sink: Push borrowed tokens +graph TB + subgraph "When You Deposit Collateral" + D1[User deposits
1000 FLOW] -->|Collateral added| D2[ Position
Collateral: 1000 FLOW
Value: $1,000] + D2 --> D3{Health Factor Check
Can borrow safely?
Health > 1.5?} + D3 -->|No
Health ≀ 1.5| D4[Deposit Complete
Collateral stored safely
No borrowing yet] + D3 -->|Yes
Overcollateralized| D5[Auto-Borrow Triggered
Borrow: 615 MOET
Health remains: 1.3] + D5 --> D6[615 MOET β†’ FYV
Earning yield automatically
Liquidation protection active] end + + style D1 fill:#e1f5ff + style D2 fill:#fff4e6 + style D3 fill:#f5f5f5 + style D4 fill:#e8f5e9 + style D5 fill:#e3f2fd + style D6 fill:#f3e5f5 ``` -**Steps**: -1. User calls `deposit()` on their Position -2. Position transfers tokens to Pool reserves -3. Pool updates user's scaled balance -4. Pool updates global TokenState -5. If `drawDownSink` enabled and overcollateralized β†’ auto-borrow +**What happens:** +1. **Deposit**: User deposits 1000 FLOW as collateral (worth $1,000) +2. **Health Check**: System calculates if position can safely borrow more +3. **Decision Point**: + - If health ≀ 1.5: Just hold collateral safely + - If health > 1.5: Automatically borrow MOET +4. **Auto-Borrow**: System borrows 615 MOET while keeping health at 1.3 +5. **Deploy to Yield**: Borrowed MOET automatically sent to FYV to earn yield -### Borrow Flow +### Price Drop & Auto-Rebalancing Sequence ```mermaid -sequenceDiagram - participant User - participant Position - participant Pool - participant Reserves - - User->>Position: withdraw(debt token) - Position->>Pool: Check health factor - alt Health would remain safe - Pool->>Pool: Update debt scaled balance - Pool->>Reserves: Transfer tokens - Reserves-->>User: Receive tokens - Pool->>Position: Update health - else Health would drop too low - Pool-->>User: Revert: Insufficient health +graph TB + subgraph "When Collateral Price Drops" + R1[FLOW price drops 20%
Collateral value: $800
Debt value: $615] --> R2[Health drops to 1.05
Approaching danger zone] + R2 --> R3{Health Factor Check
Liquidation risk?
Health < 1.1?} + R3 -->|No
Health β‰₯ 1.1| R4[Position Safe
No action needed
Continue earning yield] + R3 -->|Yes
Undercollateralized| R5[Auto-Rebalance Triggered
Need: 123 MOET
to restore health] + R5 --> R6[Pull from FYV
Withdraw 123 MOET
from yield earnings] + R6 --> R7[Auto-Repay Debt
Debt: 615 β†’ 492 MOET] + R7 --> R8[Liquidation Prevented!
Health restored: 1.3
Position safe again] end + + style R1 fill:#ffebee + style R2 fill:#fff3e0 + style R3 fill:#f5f5f5 + style R4 fill:#e8f5e9 + style R5 fill:#fff9c4 + style R6 fill:#e1f5fe + style R7 fill:#f3e5f5 + style R8 fill:#c8e6c9 ``` -**Steps**: -1. User calls `withdraw()` for debt token -2. Pool checks health factor would remain above minimum -3. Pool updates user's debt scaled balance -4. Pool transfers tokens from reserves to user -5. Position health is recalculated +**What happens:** +1. **Price Shock**: FLOW price drops 20%, collateral value falls from $1,000 to $800 +2. **Health Warning**: Health factor drops to 1.05 (dangerous territory) +3. **Risk Check**: System detects health < 1.1 (below safety threshold) +4. **Rebalance Trigger**: System calculates need to repay 123 MOET to restore health to 1.3 +5. **Pull from Yield**: TopUpSource withdraws 123 MOET from FYV (your yield earnings) +6. **Auto-Repay**: System automatically repays 123 MOET debt (615 β†’ 492 MOET) +7. **Recovery Complete**: Health restored to 1.3, liquidation prevented without manual intervention ### Interest Accrual -```mermaid -graph LR - Time[Time Passes] --> Touch[Any Position
Touched] - Touch --> Update[Pool Updates
Interest Index] - Update --> Index[Index Increases
Based on Utilization] - Index --> All[All Positions'
Balances Grow
Automatically] +Interest in ALP accumulates continuously but is calculated efficiently using lazy evaluation. Instead of updating every position constantly, the system uses an interest index that updates only when positions are accessed (deposits, withdrawals, or balance checks). - style All fill:#bfb,stroke:#333,stroke-width:2px -``` +When any position is touched, the Pool updates its interest indices based on current utilization rates and elapsed time. Each position stores a "scaled balance" (fixed shares), and the interest index acts as a multiplier to calculate the actual token amount. As the index grows, all positions' real balances increase proportionally without individual updates. -**Process**: -1. Time passes, interest accumulates -2. When any position is touched, Pool updates interest indices -3. Interest index increases based on utilization and rates -4. All positions' true balances grow automatically via scaled balance math +**Time-weighted fairness:** The interest index is cumulative and time-weighted, ensuring fair accrual regardless of when you check your position. You cannot game the system by checking only during high utilization periods. The Pool calculates interest for the entire elapsed time, accounting for all historical rate changes. For example, 3% APR for 5 days plus 7% APR for 5 days yields the same total interest whether you check once at day 10 or multiple times throughout. Lazy evaluation is purely a gas optimization with no impact on economic outcomes. ## Security Architecture @@ -347,74 +292,7 @@ graph TB 4. **Circuit breakers**: Ability to pause operations in emergencies 5. **Access controls**: Permissioned functions for admin operations -## Gas Optimization - -The architecture is optimized for gas efficiency: - -```mermaid -graph LR - subgraph "Gas Optimizations" - O1[Scaled Balances
No per-user updates] - O2[Batch Operations
Multiple in one tx] - O3[Efficient Storage
Compact structures] - O4[Lazy Updates
Calculate on-demand] - end - - O1 --> Result[Minimal
Gas Costs] - O2 --> Result - O3 --> Result - O4 --> Result - - style Result fill:#bfb,stroke:#333,stroke-width:3px -``` - -The architecture is optimized for gas efficiency through scaled balances that eliminate per-user interest updates, batch operations that allow single transactions to update multiple positions, efficient storage using compact data structures for on-chain state, and lazy updates that only calculate interest when needed. - -## Upgradability - -The protocol includes mechanisms for upgrades and parameter adjustments: - -```mermaid -graph TD - Admin[Protocol Admin] --> Functions[Admin Functions] - - Functions --> Rate[Adjust Interest
Rates] - Functions --> Factor[Update Collateral
Factors] - Functions --> Token[Add New
Tokens] - Functions --> Oracle[Switch Price
Feeds] - Functions --> Feature[Enable/Disable
Features] - - Rate --> Protocol[Protocol
Configuration] - Factor --> Protocol - Token --> Protocol - Oracle --> Protocol - Feature --> Protocol - - style Protocol fill:#f9f,stroke:#333,stroke-width:2px -``` - -The protocol supports admin functions to adjust interest rates and collateral factors, dynamic token addition to support new tokens, oracle updates to switch price feed sources, and feature flags to enable or disable features like liquidations. - -## Summary - -**Core Architecture**: -- πŸ—οΈ Modular design with Pool, Position, TokenState, and Oracle -- πŸ”— DeFi Actions framework for composability -- πŸ“Š Scaled balance system for efficiency -- πŸ›‘οΈ Multiple security layers - -**Key Benefits**: -- βœ… Gas efficient scaled balance system -- βœ… Automated flows via Sink/Source interfaces -- βœ… Robust oracle safety features -- βœ… Multi-layer security architecture -- βœ… Flexible and upgradable design - -**Integration Points**: -- Flow FungibleToken standard -- DeFi Actions Sink/Source -- ViewResolver for wallets -- Price Oracle interface +These layered security checks work together to protect user funds and ensure the protocol operates within safe parameters. By validating each operation against multiple security criteria before execution, ALP prevents users from taking actions that would put their positions at risk, blocks transactions when price data is unreliable, and maintains protocol solvency even during market volatility or unexpected conditions. ## Mathematical Foundation @@ -431,10 +309,4 @@ See [FCM Mathematical Foundations](../fcm/math.md) for complete formulas and pro - **Understand operations**: [Credit Market Mechanics](./credit-market-mechanics.md) - **Learn about safety**: [Liquidation System](./liquidation-system.md) - **Explore automation**: [Position Lifecycle](./position-lifecycle.md) -- **See the big picture**: [FCM Architecture](../fcm/architecture.md) - ---- - -:::tip Key Takeaway -ALP's modular architecture combines efficiency with security. The scaled balance system eliminates gas overhead, DeFi Actions enable composability, and multiple security layers protect users. This design makes ALP both powerful for developers and accessible for users. -::: +- **See the big picture**: [FCM Architecture](../fcm/architecture.md) \ No newline at end of file diff --git a/docs/defi/alp/credit-market-mechanics.md b/docs/defi/alp/credit-market-mechanics.md index 3f62c435fc..a05300d762 100644 --- a/docs/defi/alp/credit-market-mechanics.md +++ b/docs/defi/alp/credit-market-mechanics.md @@ -5,7 +5,7 @@ sidebar_position: 3 # Credit Market Mechanics -ALP operates as a decentralized lending protocol where users can deposit collateral and borrow assets. Understanding the core mechanics is essential for effectively managing positions and maximizing capital efficiency. +ALP operates as a decentralized lending protocol where users can deposit collateral and borrow assets. Understanding the core mechanics is essential for effectively managing positions and maximizing capital efficiency. The auto-borrowing feature, scaled interest system, and multi-token support create a powerful yet accessible lending platform. ## Basic Lending Mechanics @@ -33,8 +33,9 @@ Your borrowing capacity depends on two key factors: 2. **Target Health Ratio**: Minimum ratio of collateral to debt **Formula**: -``` -Maximum Borrow = Effective Collateral / Target Health Ratio + +```math +\text{Maximum Borrow} = \frac{\text{Effective Collateral}}{\text{Target Health Ratio}} ``` See [FCM Mathematical Foundations](../fcm/math.md#auto-borrowing-mathematics) for detailed formulas and derivations. @@ -48,34 +49,17 @@ See [FCM Mathematical Foundations](../fcm/math.md#auto-borrowing-mathematics) fo The **health factor** is the most important metric for your position: -``` -Health Factor = Effective Collateral Value / Effective Debt Value +```math +\text{Health Factor} = \frac{\text{Effective Collateral Value}}{\text{Effective Debt Value}} ``` -```mermaid -graph TD - subgraph "Health Factor States" - HF1[HF > 1.5
Overcollateralized] - HF2[HF: 1.3 - 1.5
Healthy] - HF3[HF: 1.1 - 1.3
Below Target] - HF4[HF: 1.0 - 1.1
At Risk] - HF5[HF < 1.0
Liquidatable] - end - - HF1 --> Action1[Can borrow more] - HF2 --> Action2[Optimal state] - HF3 --> Action3[Should repay
or add collateral] - HF4 --> Action4[Urgent action
needed] - HF5 --> Action5[Liquidation
imminent] - - style HF1 fill:#bbf - style HF2 fill:#bfb - style HF3 fill:#ffa - style HF4 fill:#fbb - style HF5 fill:#f00,color:#fff -``` +**Health Factor States:** -Your position's health can be understood across a spectrum: when HF > 1.5 you're overcollateralized and can borrow more; HF between 1.3 and 1.5 represents the healthy range; HF between 1.1 and 1.3 means you're below target and should repay or add collateral; HF between 1.0 and 1.1 puts you at risk of liquidation; and HF < 1.0 means your position is liquidatable and requires immediate action. +- **HF > 1.5 (Overcollateralized)**: Your position can safely borrow more. This is the trigger point for auto-borrowing. +- **HF: 1.3 - 1.5 (Healthy)**: Optimal state with good safety margin. Position is balanced and secure. +- **HF: 1.1 - 1.3 (Below Target)**: Below the target health factor. Consider repaying debt or adding collateral. +- **HF: 1.0 - 1.1 (At Risk)**: Approaching liquidation threshold. Urgent action needed to avoid liquidation. +- **HF < 1.0 (Liquidatable)**: Position is underwater and can be liquidated. Immediate action required. ## Auto-Borrowing Feature @@ -95,7 +79,7 @@ sequenceDiagram ALP->>ALP: Auto-borrow 615.38 MOET ALP->>DrawDownSink: Push MOET DrawDownSink->>User: Funds deployed - ALP->>User: Position created
HF = 1.3 βœ“ + ALP->>User: Position created
HF = 1.3 Note over User,DrawDownSink: Automatic optimization! ``` @@ -103,6 +87,7 @@ sequenceDiagram When you create a position with `pushToDrawDownSink=true`, you deposit collateral (e.g., 1,000 FLOW), the system calculates your maximum safe borrowing capacity, automatically borrows MOET to reach target health (1.3), and sends the borrowed MOET to your DrawDown Sink. **Example**: + ``` Deposit 1000 Flow with collateralFactor=0.8 Target health = 1.3 @@ -122,47 +107,11 @@ You can disable auto-borrowing by setting `pushToDrawDownSink=false` when creati ### Benefits of Auto-Borrowing -```mermaid -graph LR - subgraph "Auto-Borrowing Benefits" - B1[Maximized
Capital Efficiency] - B2[Simplified
Management] - B3[Immediate
Liquidity] - B4[Automated
Rebalancing] - end - - B1 --> Result[Optimal
Position] - B2 --> Result - B3 --> Result - B4 --> Result - - style Result fill:#bfb,stroke:#333,stroke-width:3px -``` - -1. **Maximized Capital Efficiency**: Automatically uses available borrowing capacity -2. **Simplified Position Management**: No need to manually calculate safe borrow amounts -3. **Immediate Liquidity**: Receive borrowed funds instantly upon deposit -4. **Automated Rebalancing**: System maintains optimal health as market conditions change - -### When to Use Auto-Borrowing - -**Use auto-borrowing when**: -- You want to maximize capital efficiency -- You're comfortable with leveraged positions -- You trust automated position management -- You want immediate access to borrowed funds - -**Don't use auto-borrowing when**: -- You want conservative collateralization -- You prefer manual position control -- You're testing or learning the protocol -- You don't need immediate borrowing +Auto-borrowing maximizes capital efficiency by automatically using your available borrowing capacity without requiring manual calculations of safe borrow amounts. When you deposit collateral, the system immediately provides liquidity by borrowing on your behalf, then maintains optimal position health through automated rebalancing as market conditions change. This approach ensures your position always operates at peak efficiency while staying within safe health factor ranges. ## Interest System -ALP uses a sophisticated interest system based on **scaled balances** and **interest indices**. - -### How Interest Accrues +ALP uses an interest system based on **scaled balances** and **interest indices**. ```mermaid graph TD @@ -191,41 +140,23 @@ See [FCM Mathematical Foundations](../fcm/math.md#interest-mathematics) for deta Interest rates in ALP are determined by the utilization rate (percentage of available capital currently borrowed), a base rate (minimum interest rate when utilization is low), slope rates (how quickly rates increase as utilization rises), and optimal utilization (target utilization for balanced rates). -```mermaid -graph LR - subgraph "Utilization vs Interest Rate" - Low[0-80%
Low Utilization
Gradual increase] - Opt[80%
Optimal
Target balance] - High[80-100%
High Utilization
Steep increase] - end +**Interest Rate Curve by Utilization:** - Low --> Opt - Opt --> High +| Utilization Range | Interest Rate Behavior | Purpose | +|------------------|------------------------|---------| +| **0% - 80%** (Low) | Gradual, slow increase | Encourages borrowing while maintaining liquidity | +| **80%** (Optimal) | Target balance point | Ideal equilibrium between lenders and borrowers | +| **80% - 100%** (High) | Steep, rapid increase | Incentivizes debt repayment and new deposits | - style Opt fill:#bfb - style High fill:#fbb -``` - -**Typical Rate Curve**: -``` -Low Utilization (0-80%): Gradual rate increase -Optimal Zone (80%): Target balance point -High Utilization (80-100%): Steep rate increase to encourage repayment -``` +**Example rates:** +- At 40% utilization: ~5% APR (gentle slope) +- At 80% utilization: ~15% APR (optimal point) +- At 95% utilization: ~50% APR (steep slope to protect liquidity) ### Compound Interest Interest in ALP compounds continuously as the interest index grows, with borrowers paying compound interest on debt, lenders earning compound interest on deposits, and interest index updates reflecting accumulated compounding. -**Example**: -``` -Initial borrow: 1000 MOET -Interest index at borrow: 1.0 -After 1 year at 10% APY: -- New interest index: ~1.105 (continuous compounding) -- Debt owed: 1000 * 1.105 = 1,105 MOET -``` - ## Price Oracle System Accurate pricing is critical for maintaining protocol solvency. ALP uses a price oracle with multiple safety features. @@ -251,25 +182,6 @@ graph TD All token prices are quoted in terms of MOET (FLOW/MOET, USDC/MOET, and other token prices), which simplifies calculations and ensures consistency across the protocol. -### Oracle Safety Features - -```mermaid -graph LR - subgraph "Oracle Protections" - S1[Staleness Checks
<5 min old] - S2[Deviation Guards
Large jumps flagged] - S3[Fallback Sources
Alternative feeds] - S4[TWAP Support
Manipulation resistant] - end - - S1 --> Safe[Safe Price
Feed] - S2 --> Safe - S3 --> Safe - S4 --> Safe - - style Safe fill:#bfb,stroke:#333,stroke-width:3px -``` - The oracle employs staleness checks to ensure prices are recent (typically < 5 minutes old), deviation guards that reject or flag large price jumps, fallback mechanisms providing alternative price sources if the primary fails, and TWAP support using time-weighted average prices to reduce manipulation risk. ### How Prices Affect Positions @@ -291,49 +203,25 @@ graph TD ``` **Collateral price increases**: Health improves, can borrow more + ``` Before: 1000 FLOW @ $1 = $1000, Debt = $600, HF = 1.67 After: 1000 FLOW @ $1.20 = $1200, Debt = $600, HF = 2.0 -β†’ Can borrow additional ~$108 MOET +β†’ Can borrow additional ~$200 MOET to have HF = 1.5 ``` **Collateral price decreases**: Health worsens, may need to repay + ``` Before: 1000 FLOW @ $1 = $1000, Debt = $600, HF = 1.67 After: 1000 FLOW @ $0.80 = $800, Debt = $600, HF = 1.33 -β†’ Close to target health, rebalancing may trigger +β†’ Close to target health, rebalancing may trigger up to 66.67 MOET for HF = 1.5 ``` ## Multi-Token Support ALP supports multiple token types as both collateral and debt. -### Token Configuration - -```mermaid -graph TB - subgraph Collateral - C1[FLOW
Factor: 0.8] - C2[stFLOW
Factor: 0.75] - C3[USDC
Factor: 0.9] - end - - subgraph Debt - D1[MOET
Primary] - D2[FLOW
Alternative] - D3[USDC
Alternative] - end - - C1 --> Health[Single Health
Factor Calculation] - C2 --> Health - C3 --> Health - - D1 --> Health - D2 --> Health - D3 --> Health - - style Health fill:#f9f,stroke:#333,stroke-width:3px -``` ### Collateral Tokens @@ -341,13 +229,12 @@ Any supported token can be used as collateral, including Flow, stFlow, USDC, and ### Debt Tokens -You can borrow multiple token types including MOET (the primary borrowed asset), Flow, USDC, and other allowlisted tokens. Each position can have multiple simultaneous borrows, with health calculated across all assets. - -### Cross-Token Calculations +MOET is the primary debt token in ALP. All borrowing positions are denominated in MOET, which serves as the unit of account for the protocol. This ensures consistent pricing and health factor calculations across all positions. When you have multiple tokens, ALP converts all collateral and debt to the default token (MOET) value, calculates a single health factor across all positions, and ensures the total position remains solvent. **Example**: + ``` Collateral: - 1000 FLOW @ $1 each, factor 0.8 = $800 effective @@ -356,7 +243,7 @@ Total effective collateral: $1,250 Debt: - 800 MOET @ $1 each = $800 debt -Health Factor = 1,250 / 800 = 1.56 βœ“ Healthy +Health Factor = 1,250 / 800 = 1.56 ``` ## Utilization and Protocol Dynamics @@ -366,9 +253,9 @@ Health Factor = 1,250 / 800 = 1.56 βœ“ Healthy ```mermaid graph LR Total[Total Available
Capital] --> Borrowed[Amount
Borrowed] - Total --> Available[Amount
Available] + Total --> Available[Amount
Supplied] - Borrowed --> Util[Utilization Rate
Borrowed / Total] + Borrowed --> Util[Utilization Rate
Borrowed / Supplied] Util --> Low[Low <80%
Lower rates] Util --> High[High >80%
Higher rates] @@ -378,8 +265,8 @@ graph LR The protocol tracks **utilization** for each token: -``` -Utilization = Total Borrowed / (Total Deposited + Reserves) +```math +\text{Utilization} = \frac{\text{Total Borrowed}}{\text{Total Supplied + Reserves}} ``` Higher utilization leads to higher interest rates for borrowers, higher yields for lenders, and incentives to add liquidity or repay loans. @@ -388,8 +275,8 @@ Higher utilization leads to higher interest rates for borrowers, higher yields f A portion of interest goes to protocol reserves: -``` -Lender Interest = Borrower Interest Γ— (1 - Reserve Factor) +```math +\text{Lender Interest} = \text{Borrower Interest} \times (1 - \text{Reserve Factor}) ``` ```mermaid @@ -406,54 +293,6 @@ graph LR Reserves are used for the protocol insurance fund, development and maintenance, emergency situations, and the governance-controlled treasury. -## Risk Management - -### For Borrowers - -```mermaid -graph TD - subgraph "Borrower Risk Management" - R1[Monitor Health
Factor Daily] - R2[Set Alerts
HF < 1.5] - R3[Diversify
Collateral] - R4[Use Stable
Assets] - R5[Watch Price
Volatility] - end - - R1 --> Safety[Reduced
Liquidation Risk] - R2 --> Safety - R3 --> Safety - R4 --> Safety - R5 --> Safety - - style Safety fill:#bfb,stroke:#333,stroke-width:3px -``` - -Borrowers should monitor their health factor by setting up alerts for HF < 1.5, keeping a buffer above the minimum (1.1), and watching for price volatility. Manage collateral wisely by diversifying across multiple tokens, using stable assets for lower risk, and considering collateral factors when depositing. - -### For Lenders - -Lenders should understand the risks including smart contract risk, liquidation risk (if the protocol becomes undercollateralized), and interest rate volatility. To maximize returns, monitor utilization rates, deposit when rates are high, and consider different tokens for better yields. - -## Summary - -**Core Mechanics**: -- πŸ’° Collateral with safety factors (e.g., 0.8 = 80% usable) -- πŸ“Š Health factor = Effective Collateral / Debt -- πŸ€– Auto-borrowing optimizes capital efficiency -- πŸ“ˆ Scaled balance system for efficient interest - -**Key Formulas**: -- Max Borrow = Effective Collateral / Target Health -- Health Factor = Effective Collateral / Effective Debt -- Utilization = Total Borrowed / Total Available - -**Safety Features**: -- βœ… Oracle staleness checks and deviation guards -- βœ… Multi-token support with unified health calculation -- βœ… Reserve factor for protocol insurance -- βœ… Continuous interest compounding - ## Mathematical Foundation For detailed formulas underlying credit market mechanics: @@ -468,10 +307,4 @@ For detailed formulas underlying credit market mechanics: - **Learn about protection**: [Liquidation System](./liquidation-system.md) - **Understand the lifecycle**: [Position Lifecycle](./position-lifecycle.md) - **Explore automation**: [Rebalancing Mechanics](./rebalancing.md) -- **See complete formulas**: [FCM Mathematical Foundations](../fcm/math.md) - ---- - -:::tip Key Takeaway -ALP's credit market mechanics combine automated efficiency with robust safety features. The auto-borrowing feature, scaled interest system, and multi-token support create a powerful yet accessible lending platform. Understanding these mechanics helps you manage positions effectively and maximize your DeFi strategy. -::: +- **See complete formulas**: [FCM Mathematical Foundations](../fcm/math.md) \ No newline at end of file From 5174ccd9e8ca98676974bca8d2273740a8a59504 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Tue, 13 Jan 2026 14:12:23 -0600 Subject: [PATCH 10/13] Add comprehensive MOET documentation and update FCM/ALP references Added new MOET documentation section: - Basic concepts and role in FCM ecosystem - Tokenomics and supply mechanics - Stability mechanisms and peg maintenance - Integration guide for developers Updated existing documentation: - Refined ALP index page structure - Updated MOET role explanations in ALP docs - Improved FCM index page clarity --- docs/defi/alp/index.md | 65 +-- docs/defi/alp/moet-role.md | 10 +- docs/defi/fcm/index.md | 26 +- docs/defi/moet/basics.md | 383 ++++++++++++++++ docs/defi/moet/index.md | 153 +++++++ docs/defi/moet/integration.md | 808 ++++++++++++++++++++++++++++++++++ docs/defi/moet/stability.md | 771 ++++++++++++++++++++++++++++++++ docs/defi/moet/tokenomics.md | 708 +++++++++++++++++++++++++++++ 8 files changed, 2861 insertions(+), 63 deletions(-) create mode 100644 docs/defi/moet/basics.md create mode 100644 docs/defi/moet/index.md create mode 100644 docs/defi/moet/integration.md create mode 100644 docs/defi/moet/stability.md create mode 100644 docs/defi/moet/tokenomics.md diff --git a/docs/defi/alp/index.md b/docs/defi/alp/index.md index 38f0951a15..3ab4e92eac 100644 --- a/docs/defi/alp/index.md +++ b/docs/defi/alp/index.md @@ -9,18 +9,16 @@ sidebar_position: 10 The Automated Lending Platform (ALP) is the core lending protocol component of [Flow Credit Market (FCM)](../fcm/index.md). ALP provides the foundational lending and borrowing infrastructure with automated position management and liquidation protection. :::info -ALP is one of three core components that make up FCM: ALP (Automated Lending Platform) provides the lending/borrowing engine, [Flow Yield Vaults (FYV)](#) handles yield aggregation strategies, and [MOET](#) serves as the synthetic stablecoin and unit of account. +ALP is one of three core components that make up FCM: ALP (Automated Lending Platform) provides the lending/borrowing engine, [Flow Yield Vaults (FYV)](../flow-yield-vaults/index.md) handles yield aggregation strategies, and [MOET](../moet/index.md) serves as the synthetic stablecoin and unit of account. ::: -## What is ALP? - ALP is a decentralized lending protocol that enables users to deposit collateral to create lending positions, borrow assets against their collateral up to their borrowing limit, earn interest on deposits, and maintain positions through automated rebalancing. The protocol uses MOET as its primary unit of account and default borrowed asset, with all prices quoted in MOET terms. -## Key Innovation: Automated Rebalancing +## Automated Rebalancing -ALP's standout feature is its **automated rebalancing** system that uses DeFi Actions to maintain optimal position health. When overcollateralized (health > 1.5), the system automatically borrows more to maximize capital efficiency. When undercollateralized (health < 1.1), it automatically repays debt using yield from FYV. The protocol targets a health range of 1.1 to 1.5 for balanced risk/reward, and prevents liquidations by pulling from TopUpSource (often FYV strategies) when needed. +ALP's standout feature is its **automated rebalancing** system that uses [DeFi Actions](../../blockchain-development-tutorials/forte/flow-actions/index.md) to maintain optimal position health. When overcollateralized (health > 1.5), the system automatically borrows more to maximize capital efficiency. When undercollateralized (health < 1.1), it automatically repays debt using yield from FYV. The protocol targets a health range of 1.1 to 1.5 for balanced risk/reward, and prevents liquidations by pulling from TopUpSource (often FYV strategies) when needed. ### Integration with FYV @@ -31,7 +29,8 @@ ALP's unique liquidation prevention mechanism leverages yield from Flow Yield Va 3. Borrowed MOET flows into FYV strategy (via DrawDownSink) 4. FYV generates yield on the borrowed MOET 5. If collateral price drops, ALP pulls from FYV (via TopUpSource) to prevent liquidation -6. **Result**: Yield helps maintain position health automatically +6. If collateral price increases and health factor exceeds 1.5, ALP borrows more MOET (via DrawDownSink) to maximize capital efficiency +7. **Result**: Yield helps maintain position health automatically while optimizing leverage ## Core Components @@ -39,50 +38,28 @@ The protocol consists of four key components: the **Pool** serves as the central Learn more in [Architecture Overview](./architecture.md). -## Documentation Sections - -### Core Concepts -- [Architecture Overview](./architecture.md) - Core components and system design -- [Credit Market Mechanics](./credit-market-mechanics.md) - How lending and borrowing works -- [Position Lifecycle](./position-lifecycle.md) - Creating, managing, and closing positions - -### Advanced Features -- [Rebalancing](./rebalancing.md) - Automated position management -- [Liquidation System](./liquidation-system.md) - Liquidation triggers and mechanisms -- [DeFi Actions](./defi-actions.md) - Protocol composability framework -- [MOET's Role](./moet-role.md) - The unit of account in ALP - ## How ALP Fits into FCM ```mermaid graph TB - User[User] -->|Deposits Collateral| ALP[ALP Position] - ALP -->|Auto-borrows MOET| MOET[MOET Token] - MOET -->|Via DrawDownSink| FYV[FYV Strategy] - FYV -->|Generates Yield| Yield[Yield Tokens] - - Price[Price Drop] -.->|Triggers Rebalancing| ALP - ALP -->|Pulls Funds| FYV - FYV -->|Via TopUpSource| ALP - ALP -->|Repays Debt| MOET - - style ALP fill:#f9f,stroke:#333,stroke-width:4px - style FYV fill:#bbf,stroke:#333,stroke-width:2px - style MOET fill:#bfb,stroke:#333,stroke-width:2px + User[User] -->|1. Deposits Collateral| ALP[ALP Position] + ALP -->|2. Auto-borrows MOET| MOET[MOET Token] + MOET -->|3. Via DrawDownSink| FYV[FYV Strategy] + FYV -->|4. Generates Yield| Yield[Yield Tokens] + + Price[Price Drop] -.->|5. Triggers Rebalancing| ALP + FYV -->|6. Withdraws Yield| Yield + Yield -->|7. Swaps to MOET| Swap[SwapConnector] + Swap -->|8. Via TopUpSource| ALP + ALP -->|9. Repays Debt| MOET + + style ALP fill:#e6b3ff,stroke:#333,stroke-width:4px + style FYV fill:#66cc66,stroke:#333,stroke-width:2px + style MOET fill:#ff6666,stroke:#333,stroke-width:2px + style Yield fill:#ffcc66,stroke:#333,stroke-width:2px + style Swap fill:#99ccff,stroke:#333,stroke-width:2px ``` -## Getting Started with ALP - -To use ALP directly: - -1. Ensure you have Flow tokens or other supported collateral -2. Connect your wallet to the Flow blockchain -3. Create a position by depositing collateral -4. Configure DrawDownSink and TopUpSource for automation -5. Monitor your position health - -For most users, we recommend using **[Flow Credit Market (FCM)](../fcm/index.md)** which provides a complete solution combining ALP, FYV, and MOET. - ## Resources - [ALP GitHub Repository](https://github.com/onflow/FlowCreditMarket) (FlowCreditMarket contract) diff --git a/docs/defi/alp/moet-role.md b/docs/defi/alp/moet-role.md index f88dc03c96..c7f5ae16ad 100644 --- a/docs/defi/alp/moet-role.md +++ b/docs/defi/alp/moet-role.md @@ -5,9 +5,7 @@ sidebar_position: 4 # MOET's Role in ALP -MOET plays a central role in ALP as the default token and primary unit of account. Understanding MOET's function is essential for effectively using ALP and [Flow Credit Market (FCM)](../fcm/index.md). - -## What is MOET? +MOET plays a central role in ALP as the default token and primary unit of account. Understanding MOET's function is essential for effectively using ALP and [Flow Credit Market (FCM)](../fcm/index.md). It standardizes pricing, enables automation, and makes yield-powered liquidation prevention possible. **MOET** is a fungible token on Flow that serves as: - πŸ’° **The primary borrowed asset** - What you borrow from ALP @@ -429,9 +427,3 @@ MOET is central to all FCM calculations: - **See the big picture**: [FCM Architecture](../fcm/architecture.md) - **Deep dive on MOET**: [MOET Documentation](#) - **Explore position management**: [Position Lifecycle](./position-lifecycle.md) - ---- - -:::tip Key Takeaway -MOET isn't just another token - it's the **backbone** of FCM. It standardizes pricing, enables automation, and makes yield-powered liquidation prevention possible. Think of it as the "blood" flowing through FCM's veins, carrying value between ALP and FYV. -::: diff --git a/docs/defi/fcm/index.md b/docs/defi/fcm/index.md index a2e1778632..ba2f4af2ff 100644 --- a/docs/defi/fcm/index.md +++ b/docs/defi/fcm/index.md @@ -13,15 +13,21 @@ Flow Credit Market (FCM) is a comprehensive DeFi yield platform on Flow that off FCM is **not a single protocol** - it's an integrated system composed of three core components working together: ```mermaid -graph LR - ALP[ALP
Automated Lending
Platform] --> FCM[Flow Credit
Market] - FYV[FYV
Flow Yield
Vaults] --> FCM - MOET[MOET
Synthetic
Stablecoin] --> FCM - - style FCM fill:#f9f,stroke:#333,stroke-width:4px - style ALP fill:#bbf,stroke:#333,stroke-width:2px - style FYV fill:#bfb,stroke:#333,stroke-width:2px - style MOET fill:#fbb,stroke:#333,stroke-width:2px +graph TB + subgraph FCM[Flow Credit Market - Integrated DeFi System] + ALP[ALP
Automated Lending Platform
Collateral & Borrowing] + FYV[FYV
Flow Yield Vaults
Yield Strategies] + MOET[MOET
Synthetic Stablecoin
Unit of Account] + + ALP <-->|Borrows| MOET + FYV <-->|Deploys| MOET + ALP <-->|Provides Liquidity| FYV + end + + style FCM fill:#e6b3ff,stroke:#333,stroke-width:4px + style ALP fill:#6699ff,stroke:#333,stroke-width:2px + style FYV fill:#66cc66,stroke:#333,stroke-width:2px + style MOET fill:#ff6666,stroke:#333,stroke-width:2px ``` ### The Three Components @@ -38,7 +44,7 @@ graph LR - Provides liquidity for ALP liquidation prevention - Manages risk through auto-balancing -3. **[MOET](#)**: The synthetic stablecoin +3. **[MOET](../moet/index.md)**: The synthetic stablecoin - Serves as the unit of account for all pricing - Primary borrowed asset in ALP - Medium of exchange between components diff --git a/docs/defi/moet/basics.md b/docs/defi/moet/basics.md new file mode 100644 index 0000000000..51e03dd32b --- /dev/null +++ b/docs/defi/moet/basics.md @@ -0,0 +1,383 @@ +--- +title: MOET Core Concepts +sidebar_label: Core Concepts +sidebar_position: 1 +--- + +# MOET Core Concepts + +This guide explains the fundamental mechanics of MOET and how it functions within the Flow Credit Market ecosystem. + +## What Makes MOET Different + +MOET is fundamentally different from traditional stablecoins like USDC or DAI. Rather than existing as an independent token backed by separate reserves, MOET is directly integrated into the lending protocol as the **protocol debt token**. + +### Comparison with Other Stablecoins + +| Feature | MOET | USDC | DAI | +|---------|------|------|-----| +| **Backing** | Over-collateralized debt positions | Fiat reserves held by Circle | Crypto collateral in Maker vaults | +| **Issuance** | Minted when users borrow from ALP | Minted when fiat deposited | Minted when users lock collateral | +| **Supply Control** | Automatic (tied to borrowing demand) | Centralized (Circle controls) | Decentralized (MakerDAO governance) | +| **Use Case** | FCM ecosystem (lending, yield) | General payments, DeFi | General DeFi usage | +| **Peg Mechanism** | Over-collateralization + liquidations | 1:1 fiat redemption | Stability fee + DSR + liquidations | + +The key insight is that **MOET doesn't need separate reserves** because every MOET token represents debt backed by collateral already locked in ALP positions. + +## The Lifecycle of MOET + +Understanding MOET requires following its complete lifecycle from creation to destruction: + +### 1. Creation (Minting) + +MOET tokens are created when users borrow from their ALP positions. + +**Example: Alice Deposits Collateral** + +``` +Initial State: +β”œβ”€β”€ Alice has: 1000 FLOW tokens +β”œβ”€β”€ FLOW price: $1.00 +β”œβ”€β”€ MOET supply: 10,000 tokens (existing) + +Alice's Action: +β”œβ”€β”€ Deposits: 1000 FLOW into new ALP position +β”œβ”€β”€ Target Health Factor: 1.3 +β”œβ”€β”€ Collateral Factor for FLOW: 0.8 + +Calculation: +β”œβ”€β”€ Total Collateral Value: 1000 Γ— $1.00 = $1,000 +β”œβ”€β”€ Effective Collateral: $1,000 Γ— 0.8 = $800 +β”œβ”€β”€ Max Borrow: $800 / 1.3 = $615.38 MOET +└── ALP auto-borrows: 615.38 MOET + +Minting Process: +β”œβ”€β”€ Protocol Minter creates: 615.38 new MOET tokens +β”œβ”€β”€ Tokens deposited into: Alice's position +β”œβ”€β”€ MOET supply increases: 10,000 β†’ 10,615.38 +└── Alice's debt recorded: 615.38 MOET + +Result: +β”œβ”€β”€ Alice's Position: +β”‚ β”œβ”€β”€ Collateral: 1000 FLOW ($1,000) +β”‚ β”œβ”€β”€ Debt: 615.38 MOET +β”‚ └── Health Factor: $800 / $615.38 = 1.30 βœ“ +β”œβ”€β”€ Alice's Wallet: 615.38 MOET (to use for yield farming) +└── Total MOET Supply: 10,615.38 tokens +``` + +**Key Principle**: Every MOET minted increases a user's debt and must be repaid later. + +### 2. Utilization (Capital Deployment) + +Once minted, MOET flows through the FCM ecosystem to generate yield. + +**Alice's MOET Journey:** + +``` +Step 1: Borrow from ALP +β”œβ”€β”€ Alice's position borrows: 615.38 MOET +└── MOET created and ready for deployment + +Step 2: Flow to FYV (via DrawDownSink) +β”œβ”€β”€ MOET automatically flows to: FYV TracerStrategy +β”œβ”€β”€ No manual transfer needed (DeFi Actions handle it) +└── Alice's 615.38 MOET enters yield generation + +Step 3: Convert to Yield Assets +β”œβ”€β”€ FYV swaps: 615.38 MOET β†’ 615.38 LP tokens +β”œβ”€β”€ LP tokens are yield-bearing (e.g., AMM liquidity positions) +└── AutoBalancer holds LP tokens in optimal vault + +Step 4: Yield Generation +β”œβ”€β”€ LP tokens earn: Trading fees, liquidity rewards +β”œβ”€β”€ After 30 days: 615.38 LP β†’ 640 LP (+4% yield) +└── Value growth: $615.38 β†’ $640.00 (+$24.62) +``` + +**Key Principle**: MOET doesn't sit idle - it's immediately deployed to generate returns that exceed the borrowing cost. + +### 3. Rebalancing (Risk Management) + +MOET enables automated position protection through yield-powered rebalancing. + +**Scenario: FLOW Price Drops** + +``` +Market Event: +β”œβ”€β”€ FLOW price drops: $1.00 β†’ $0.80 (-20%) +β”œβ”€β”€ Alice's collateral value: $1,000 β†’ $800 +β”œβ”€β”€ Effective collateral: $800 Γ— 0.8 = $640 +└── Health Factor: $640 / $615.38 = 1.04 (DANGER!) + +Automated Response: +β”œβ”€β”€ ALP detects: HF < 1.1 (minimum threshold) +β”œβ”€β”€ Target: Restore HF to 1.3 +β”œβ”€β”€ Required debt: $640 / 1.3 = $492.31 +β”œβ”€β”€ Must repay: $615.38 - $492.31 = $123.07 MOET +└── ALP pulls from TopUpSource (FYV) + +FYV Provides Liquidity: +β”œβ”€β”€ FYV checks balance: 640 LP tokens available +β”œβ”€β”€ Converts: 123.07 LP β†’ 123.07 MOET (via SwapConnector) +β”œβ”€β”€ Sends: 123.07 MOET to ALP (via TopUpSource) +└── Remaining: 517 LP tokens still generating yield + +Debt Repayment: +β”œβ”€β”€ ALP receives: 123.07 MOET +β”œβ”€β”€ Burns: 123.07 MOET (supply decreases) +β”œβ”€β”€ New debt: 615.38 - 123.07 = 492.31 MOET +└── New HF: $640 / $492.31 = 1.30 βœ“ (restored!) + +Result: +β”œβ”€β”€ Liquidation prevented automatically +β”œβ”€β”€ Position health restored +β”œβ”€β”€ Alice keeps all collateral +β”œβ”€β”€ Yield continues with remaining 517 LP tokens +└── Total MOET supply: 10,615.38 β†’ 10,492.31 +``` + +**Key Principle**: MOET serves as the common denominator for debt, enabling seamless value transfer between yield sources and debt obligations. + +### 4. Destruction (Burning) + +MOET tokens are permanently destroyed when debt is repaid. + +**Alice Closes Her Position:** + +``` +Final State: +β”œβ”€β”€ Collateral: 1000 FLOW @ $1.00 = $1,000 +β”œβ”€β”€ Debt: 492.31 MOET (after rebalancing) +β”œβ”€β”€ FYV Holdings: 517 LP tokens worth $517 +β”œβ”€β”€ Accrued Interest: 30 days @ 5% APY = ~$2.05 + +Closure Process: +Step 1: Liquidate Yield Position +β”œβ”€β”€ FYV converts: 517 LP β†’ 517 MOET +β”œβ”€β”€ Alice now has: 517 MOET available +└── Debt to repay: 492.31 + 2.05 = 494.36 MOET + +Step 2: Repay Debt +β”œβ”€β”€ ALP receives: 494.36 MOET from FYV +β”œβ”€β”€ Burns: 494.36 MOET (automatic on repayment) +β”œβ”€β”€ Debt cleared: 494.36 - 494.36 = 0 MOET +└── Total MOET supply: 10,492.31 β†’ 9,997.95 + +Step 3: Withdraw Collateral +β”œβ”€β”€ Health Factor: infinite (no debt) +β”œβ”€β”€ Alice withdraws: 1000 FLOW +└── Position closed + +Alice's Profit: +β”œβ”€β”€ MOET remaining: 517 - 494.36 = 22.64 MOET +β”œβ”€β”€ Value: $22.64 +β”œβ”€β”€ ROI: $22.64 / $1,000 = 2.26% for 30 days +└── Annualized: ~27% APY +``` + +**Key Principle**: Burning MOET reduces total supply, ensuring supply always equals outstanding debt. + +## How MOET Maintains Its Peg + +While MOET is a mock token in testing, the production version relies on several mechanisms to maintain its $1 peg: + +### Over-Collateralization + +Every MOET is backed by collateral worth significantly more than $1. + +**Collateralization Calculation:** + +``` +Position Parameters: +β”œβ”€β”€ Collateral Factor (CF): 0.8 (80% of value usable) +β”œβ”€β”€ Target Health Factor (HF): 1.3 +└── Typical Collateralization = CF Γ— HF = 0.8 Γ— 1.3 = 1.04 + +For $1 of MOET debt: +β”œβ”€β”€ Effective Collateral Required: $1.30 (due to HF = 1.3) +β”œβ”€β”€ Total Collateral Required: $1.30 / 0.8 = $1.625 +└── Collateralization Ratio: 162.5% + +Buffer Against Price Drops: +β”œβ”€β”€ Collateral can drop: ($1.625 - $1.00) / $1.625 = 38.5% +└── Before reaching liquidation threshold (HF = 1.0) +``` + +This substantial over-collateralization provides safety margin for price volatility and creates confidence that MOET is redeemable for its backing collateral. + +### Liquidation Mechanism + +When positions become under-collateralized (HF < 1.0), liquidators can repay debt to seize collateral at a profit. + +**Liquidation Example:** + +``` +Under-collateralized Position: +β”œβ”€β”€ Collateral: 1000 FLOW @ $0.60 = $600 +β”œβ”€β”€ Effective Collateral: $600 Γ— 0.8 = $480 +β”œβ”€β”€ Debt: 615.38 MOET +β”œβ”€β”€ Health Factor: $480 / $615.38 = 0.78 < 1.0 ⚠️ +└── Status: Liquidatable + +Liquidator Action: +β”œβ”€β”€ Liquidator has: 200 MOET +β”œβ”€β”€ Repays: 200 MOET of Alice's debt +└── Goal: Profit from liquidation bonus + +Collateral Seizure (Simplified Formula): +β”œβ”€β”€ Formula: CollateralSeized = (DebtRepaid Γ— (1 + Bonus)) / PriceCollateral +β”œβ”€β”€ Calculation: (200 Γ— 1.05) / $0.60 = 350 FLOW +β”œβ”€β”€ Liquidator receives: 350 FLOW worth $210 +└── Profit: $210 - $200 = $10 (5% return) + +Result: +β”œβ”€β”€ Liquidator profit incentivizes MOET buying pressure +β”œβ”€β”€ Ensures MOET remains valuable for liquidation participation +β”œβ”€β”€ Creates natural demand floor for MOET +└── Helps maintain peg during market stress +``` + +**Key Principle**: Liquidations create buying pressure for MOET, as liquidators need MOET to participate in profitable liquidations. + +### Arbitrage Opportunities + +If MOET trades away from $1, arbitrage opportunities arise: + +**MOET Trading Above $1 (e.g., $1.05):** + +``` +Arbitrage Strategy: +1. Deposit $1,625 of FLOW collateral +2. Borrow 1,000 MOET (valued at $1,000) +3. Sell 1,000 MOET for: $1,050 (at $1.05 market price) +4. Profit: $1,050 - $1,000 = $50 +5. Result: Increased MOET supply pushes price down toward $1 +``` + +**MOET Trading Below $1 (e.g., $0.95):** + +``` +Arbitrage Strategy: +1. Buy 1,000 MOET for: $950 (at $0.95 market price) +2. Repay $1,000 MOET debt (valued at $1,000) +3. Saved: $1,000 - $950 = $50 on repayment +4. Withdraw collateral (now unlocked) +5. Result: Increased MOET demand pushes price up toward $1 +``` + +**Key Principle**: Market participants profit from deviations, naturally stabilizing MOET around $1. + +## MOET as Unit of Account + +All prices in FCM are denominated in MOET, creating a consistent pricing framework: + +### Price Quotes + +``` +Collateral Prices (in MOET): +β”œβ”€β”€ FLOW/MOET: 1.0 (1 FLOW = 1 MOET) +β”œβ”€β”€ stFLOW/MOET: 1.05 (liquid staking premium) +β”œβ”€β”€ USDC/MOET: 1.0 (stablecoin parity) +β”œβ”€β”€ wBTC/MOET: 65,000 (Bitcoin price in USD) +└── wETH/MOET: 3,500 (Ethereum price in USD) +``` + +This MOET-denominated pricing simplifies multi-collateral calculations: + +**Health Factor with Multiple Collateral Types:** + +``` +Alice's Position: +β”œβ”€β”€ Collateral: +β”‚ β”œβ”€β”€ 500 FLOW @ 1.0 MOET = 500 MOET value Γ— 0.8 CF = 400 effective +β”‚ β”œβ”€β”€ 100 stFLOW @ 1.05 MOET = 105 MOET value Γ— 0.85 CF = 89.25 effective +β”‚ └── 1,000 USDC @ 1.0 MOET = 1,000 MOET value Γ— 0.9 CF = 900 effective +β”œβ”€β”€ Total Effective Collateral: 400 + 89.25 + 900 = 1,389.25 MOET +β”œβ”€β”€ Debt: 1,068.65 MOET +└── Health Factor: 1,389.25 / 1,068.65 = 1.30 βœ“ + +Calculation Benefits: +β”œβ”€β”€ No currency conversion needed +β”œβ”€β”€ All values in common denomination (MOET) +β”œβ”€β”€ Simplified real-time health monitoring +└── Efficient on-chain computation +``` + +**Key Principle**: MOET as unit of account eliminates complex cross-currency calculations, enabling efficient multi-collateral lending. + +## Interest Accrual on MOET Debt + +MOET debt grows over time through interest, using a scaled balance system: + +### Scaled Balance System + +Instead of updating every position's debt continuously, the protocol uses **interest indices**: + +``` +Interest Index Growth: +β”œβ”€β”€ Initial Index (Iβ‚€): 1.0 +β”œβ”€β”€ After 1 year @ 10% APY: I₁ = 1.1 +β”œβ”€β”€ After 2 years @ 10% APY: Iβ‚‚ = 1.21 +└── After 3 years @ 10% APY: I₃ = 1.331 + +User's Debt Calculation: +β”œβ”€β”€ Scaled Balance: 1,000 MOET (stored once) +β”œβ”€β”€ Current Index: 1.1 (after 1 year) +└── True Balance: 1,000 Γ— 1.1 = 1,100 MOET + +Benefits: +β”œβ”€β”€ Gas Efficient: Only update global index, not individual balances +β”œβ”€β”€ Automatic Compounding: Interest compounds continuously +└── Accurate: Precise interest calculation at any time +``` + +### Interest Rate Model + +Interest rates adjust based on utilization to balance supply and demand: + +``` +Utilization Rate = Total MOET Borrowed / Total MOET Available + +Interest Rate Curve: +β”œβ”€β”€ 0-80% utilization: 2-8% APY (cheap borrowing) +β”œβ”€β”€ 80-90% utilization: 8-20% APY (balanced) +└── 90-100% utilization: 20-50%+ APY (expensive, discourages borrowing) + +Example: +β”œβ”€β”€ Total MOET Deposits: 100,000 MOET +β”œβ”€β”€ Total MOET Borrowed: 85,000 MOET +β”œβ”€β”€ Utilization: 85% +β”œβ”€β”€ Current Interest Rate: ~15% APY +└── Borrowers pay: 15% APY on debt +``` + +**Key Principle**: Utilization-based rates create self-balancing markets without manual intervention. + +## Summary: Key Concepts for Analysts + +Understanding MOET requires grasping these core principles: + +1. **MOET is Protocol Debt**: Every MOET represents borrowed value, not a separate reserve-backed asset + +2. **Mint-and-Burn Model**: Supply dynamically adjusts with borrowing activity (mint on borrow, burn on repay) + +3. **Over-Collateralization**: Typical 162.5% backing provides substantial safety margin + +4. **Automated Capital Flows**: DeFi Actions enable MOET to move seamlessly between ALP and FYV for yield generation + +5. **Unit of Account**: MOET-denominated pricing simplifies multi-collateral calculations + +6. **Liquidation Creates Demand**: Profitable liquidations incentivize MOET accumulation + +7. **Arbitrage Maintains Peg**: Deviations from $1 create profit opportunities that naturally stabilize price + +8. **Utilization-Driven Rates**: Interest rates automatically adjust to balance borrowing demand + +These concepts form the foundation for understanding MOET's role in FCM's capital-efficient yield generation system. + +## Next Steps + +- **[Tokenomics](./tokenomics.md)**: Deep dive into supply dynamics, minting mechanics, and economic models +- **[System Integration](./integration.md)**: Learn how MOET connects ALP, FYV, and FCM components +- **[Stability Mechanisms](./stability.md)**: Understand risk management, oracles, and safety measures diff --git a/docs/defi/moet/index.md b/docs/defi/moet/index.md new file mode 100644 index 0000000000..cd4d95bb66 --- /dev/null +++ b/docs/defi/moet/index.md @@ -0,0 +1,153 @@ +--- +title: MOET - FlowCreditMarket USD +sidebar_label: MOET +sidebar_position: 11 +--- + +# MOET - FlowCreditMarket USD + +MOET (FlowCreditMarket USD) is a synthetic stablecoin that serves as the backbone of the [Flow Credit Market (FCM)](../fcm/index.md) ecosystem. It functions as the unit of account, primary borrowed asset, and value transfer medium between [ALP](../alp/index.md) and [FYV](../flow-yield-vaults/index.md). + +:::warning Current Status +The current MOET implementation is explicitly marked as a "mock version for testing purposes." Production deployment will require additional stability mechanisms, decentralized governance, and enhanced economic controls. +::: + +## What is MOET? + +MOET is a protocol debt token designed to enable capital-efficient lending and yield generation within FCM. Unlike traditional stablecoins backed by fiat reserves or crypto collateral held in separate vaults, MOET is directly integrated into the lending protocol itself, with every MOET token representing active debt backed by over-collateralized positions in ALP. + +**Key Characteristics:** + +- **Synthetic Stablecoin**: Designed to maintain a 1:1 peg with USD through over-collateralization +- **Protocol Debt Token**: Every MOET in circulation represents borrowed value backed by collateral +- **Unit of Account**: All asset prices in FCM are quoted in MOET terms +- **Capital Efficiency Medium**: Enables seamless value transfer between ALP and FYV for automated yield generation + +## How MOET Fits into FCM + +```mermaid +graph TB + subgraph FCM[Flow Credit Market Ecosystem] + User[User] -->|1. Deposits Collateral| ALP[ALP Position] + ALP -->|2. Borrows MOET| MOET[MOET Token] + MOET -->|3. Flows to Strategy| FYV[FYV Vault] + FYV -->|4. Swaps to Yield Assets| Yield[Yield Tokens] + Yield -->|5. Generates Returns| FYV + FYV -->|6. Converts Back| MOET2[MOET] + MOET2 -->|7. Repays Debt| ALP + end + + style ALP fill:#6699ff,stroke:#333,stroke-width:2px + style MOET fill:#ff6666,stroke:#333,stroke-width:2px + style MOET2 fill:#ff6666,stroke:#333,stroke-width:2px + style FYV fill:#66cc66,stroke:#333,stroke-width:2px + style Yield fill:#ffcc66,stroke:#333,stroke-width:2px +``` + +MOET serves three critical roles in the FCM ecosystem: + +1. **Borrowing Asset in ALP**: Users deposit collateral (FLOW, stFLOW, USDC, wBTC, wETH) and borrow MOET against it. The amount they can borrow is determined by collateral factors and target health ratios, ensuring all MOET is over-collateralized. + +2. **Yield Medium in FYV**: Borrowed MOET flows into Flow Yield Vaults where it's converted to yield-bearing assets. The yield generated helps maintain ALP position health during market volatility, creating a self-sustaining liquidation prevention mechanism. + +3. **Unit of Account**: All collateral prices are quoted in MOET terms (FLOW/MOET, USDC/MOET, etc.), simplifying multi-collateral calculations and creating a consistent pricing framework across the entire system. + +## Core Features + +### Mint-and-Burn Model + +MOET supply is dynamic and directly tied to protocol debt: + +- **Minting**: New MOET tokens are created when users borrow from ALP positions +- **Burning**: MOET tokens are destroyed when users repay debt or close positions +- **Supply = Total Outstanding Debt**: The total MOET supply always equals the sum of all debt across all positions + +This direct coupling ensures MOET supply naturally responds to lending demand without requiring external interventions. + +### Over-Collateralization + +Every MOET token is backed by collateral worth significantly more than $1: + +``` +Example Position: +β”œβ”€β”€ Collateral: 1000 FLOW @ $1.00 = $1,000 +β”œβ”€β”€ Collateral Factor: 0.8 (80%) +β”œβ”€β”€ Effective Collateral: $800 +β”œβ”€β”€ Target Health: 1.3 +β”œβ”€β”€ Max Borrow: $800 / 1.3 = 615.38 MOET +└── Collateralization Ratio: $1,000 / $615.38 = 162.5% +``` + +With collateral factors of 0.8 and target health of 1.3, positions maintain approximately 162.5% collateralization, providing substantial safety margin against price volatility. + +### Automated Capital Flows + +MOET moves automatically between system components through [DeFi Actions](../../blockchain-development-tutorials/forte/flow-actions/index.md): + +- **DrawDownSink**: Channels borrowed MOET from ALP to FYV strategies for yield generation +- **TopUpSource**: Returns MOET (or yield tokens convertible to MOET) from FYV back to ALP for debt repayment +- **No Manual Intervention**: The entire flow operates autonomously based on position health targets + +## Why MOET Matters + +### For Analysts + +Understanding MOET is critical for analyzing FCM's mechanics and risk profile: + +- **Debt Tracking**: MOET supply metrics reveal total system leverage and borrowing activity +- **Collateralization Analysis**: MOET/collateral ratios indicate system health and liquidation risks +- **Capital Efficiency**: MOET enables borrowed capital to immediately generate yield, improving returns +- **Systemic Risk**: MOET peg stability is crucial - depeg scenarios could trigger cascading liquidations + +### For the FCM System + +MOET solves key challenges in decentralized lending: + +- **Composability**: Standard FungibleToken interface enables seamless integration with DeFi protocols +- **Capital Efficiency**: Borrowed MOET doesn't sit idle - it actively generates yield in FYV +- **Unified Pricing**: MOET-denominated prices simplify complex multi-collateral calculations +- **Automated Risk Management**: MOET flows enable automatic liquidation prevention through yield generation + +## Technical Implementation + +**Contract Details:** +- **Contract Name**: MOET +- **Standard**: Flow FungibleToken + FungibleTokenMetadataViews +- **Symbol**: MOET +- **Full Name**: FlowCreditMarket USD + +**Deployed Addresses:** + +Testnet: +- Cadence: [`0xd27920b6384e2a78`](https://testnet.flowscan.io/contract/A.d27920b6384e2a78.MOET) +- EVM: [`0x51f5cc5f50afb81e8f23c926080fa38c3024b238`](https://evm-testnet.flowscan.io/address/0x51f5cc5f50afb81e8f23c926080fa38c3024b238) + +Mainnet: +- Cadence: `0x6b00ff876c299c61` + +## Documentation Structure + +This documentation is organized to provide progressive understanding of MOET: + +- **[Core Concepts](./basics.md)**: Essential mechanics for understanding how MOET works +- **[Tokenomics](./tokenomics.md)**: Supply dynamics, minting/burning, and interest rate models +- **[System Integration](./integration.md)**: How MOET connects ALP, FYV, and FCM components +- **[Stability Mechanisms](./stability.md)**: Over-collateralization, oracles, and risk management + +## Getting Started + +To understand MOET's role in FCM: + +1. **Start with [Core Concepts](./basics.md)** to learn the fundamental mechanics +2. **Review [Tokenomics](./tokenomics.md)** to understand supply management and economics +3. **Explore [System Integration](./integration.md)** to see how MOET enables FCM's unique features +4. **Study [Stability Mechanisms](./stability.md)** to assess risks and safety measures + +For practical usage examples, see [ALP Documentation](../alp/index.md) and [FYV Documentation](../flow-yield-vaults/index.md). + +## Key Resources + +- **GitHub Repository**: [FlowCreditMarket](https://github.com/onflow/FlowCreditMarket) +- **Contract Source**: `/cadence/contracts/MOET.cdc` +- **DeepWiki**: [FlowCreditMarket Overview](https://deepwiki.com/onflow/FlowCreditMarket/1-overview) +- **Parent Documentation**: [FCM Overview](../fcm/index.md) diff --git a/docs/defi/moet/integration.md b/docs/defi/moet/integration.md new file mode 100644 index 0000000000..10673659b1 --- /dev/null +++ b/docs/defi/moet/integration.md @@ -0,0 +1,808 @@ +--- +title: MOET System Integration +sidebar_label: System Integration +sidebar_position: 3 +--- + +# MOET System Integration + +This document explains how MOET connects and enables seamless interactions between ALP, FYV, and the broader FCM ecosystem. + +## Overview of Integration Architecture + +MOET serves as the **integration layer** that binds together FCM's components, enabling automated capital flows and coordinated risk management: + +```mermaid +graph TB + subgraph FCM[Flow Credit Market Ecosystem] + subgraph ALP[ALP - Lending Engine] + Pool[Pool Contract] + Position[Position Resource] + Oracle[Price Oracle] + end + + subgraph MOET[MOET - Integration Layer] + Mint[Minting System] + Burn[Burning System] + Balance[Balance Tracking] + end + + subgraph FYV[FYV - Yield Layer] + Vault[Yield Vault] + Strategy[Tracer Strategy] + Balancer[Auto Balancer] + end + + subgraph Actions[DeFi Actions - Flow Control] + Sink[DrawDownSink] + Source[TopUpSource] + Swap[SwapConnector] + end + + Pool -->|Mints| Mint + Position -->|Burns| Burn + Oracle -->|Prices in MOET| Balance + + Mint -->|Flows via| Sink + Sink -->|Deploys to| Strategy + Strategy -->|Holds in| Balancer + + Balancer -->|Converts via| Swap + Swap -->|Provides via| Source + Source -->|Repays to| Position + Position -->|Burns| Burn + end + + style ALP fill:#6699ff,stroke:#333,stroke-width:2px + style MOET fill:#ff6666,stroke:#333,stroke-width:2px + style FYV fill:#66cc66,stroke:#333,stroke-width:2px + style Actions fill:#ffcc66,stroke:#333,stroke-width:2px +``` + +## MOET in ALP (Automated Lending Platform) + +### Primary Borrowed Asset + +MOET is the default and primary borrowed asset in ALP, with all lending operations centered around it. + +**Pool Configuration:** + +```cadence +// ALP Pool initialization (simplified) +init() { + self.defaultToken = Type<@MOET.Vault> + self.supportedTokens = { + Type<@MOET.Vault>: TokenState, + Type<@FlowToken.Vault>: TokenState, + // ... other collateral types + } +} +``` + +**Why MOET as Default:** + +1. **Unified Denomination**: Simplifies multi-collateral accounting +2. **Capital Efficiency**: Borrowed MOET immediately deployable to yield +3. **Composability**: Standard FungibleToken interface enables DeFi integration +4. **Liquidation Simplicity**: Single debt token reduces liquidation complexity + +### Borrowing Flow + +**Step-by-Step Integration:** + +``` +User Action: Deposit 1000 FLOW Collateral + +Step 1: Collateral Locked +β”œβ”€β”€ User calls: Pool.deposit(collateral: <-flowVault, pushToDrawDownSink: true) +β”œβ”€β”€ Pool receives: 1000 FLOW tokens +β”œβ”€β”€ Position created: positionID = 123 +└── Collateral stored in: Pool reserves + +Step 2: Borrow Capacity Calculated +β”œβ”€β”€ Oracle fetches: FLOW/MOET price = 1.0 +β”œβ”€β”€ Collateral value: 1000 Γ— 1.0 = 1000 MOET +β”œβ”€β”€ Collateral factor: 0.8 +β”œβ”€β”€ Effective collateral: 1000 Γ— 0.8 = 800 MOET +β”œβ”€β”€ Target health: 1.3 +└── Max borrow: 800 / 1.3 = 615.38 MOET + +Step 3: MOET Minted +β”œβ”€β”€ Pool calls: MOETMinter.mintTokens(615.38) +β”œβ”€β”€ Minter creates: 615.38 new MOET +β”œβ”€β”€ Vault returned to: Pool +β”œβ”€β”€ Total supply: Increased by 615.38 +└── Event emitted: TokensMinted(amount: 615.38, positionID: 123) + +Step 4: Debt Recorded +β”œβ”€β”€ Position.debt.scaledBalance: 615.38 +β”œβ”€β”€ Position.debt.index: Current interest index (Iβ‚€) +β”œβ”€β”€ Position.health: 1.30 +└── Position state: {collateral: 1000 FLOW, debt: 615.38 MOET} + +Step 5: MOET Distribution +β”œβ”€β”€ If pushToDrawDownSink = true: +β”‚ β”œβ”€β”€ Pool deposits: <-moetVault into DrawDownSink +β”‚ β”œβ”€β”€ Sink forwards to: FYV strategy +β”‚ └── Automatic yield deployment +└── If pushToDrawDownSink = false: + β”œβ”€β”€ Pool sends: <-moetVault to user's wallet + └── User manually deploys MOET +``` + +### Unit of Account in Pricing + +All collateral assets are priced in MOET terms through the oracle system. + +**Oracle Interface:** + +```cadence +access(all) resource interface PriceOracle { + // Returns price of token denominated in MOET + access(all) fun getPrice(token: Type): UFix64 +} +``` + +**Price Examples:** + +``` +Oracle Price Feeds (in MOET): +β”œβ”€β”€ FLOW/MOET: 1.0 (1 FLOW = 1 MOET) +β”œβ”€β”€ stFLOW/MOET: 1.05 (liquid staking premium) +β”œβ”€β”€ USDC/MOET: 1.0 (stablecoin parity) +β”œβ”€β”€ wBTC/MOET: 65,000.0 (Bitcoin price) +└── wETH/MOET: 3,500.0 (Ethereum price) + +Assumption: 1 MOET = 1 USD +``` + +**Health Factor Calculation Using MOET Prices:** + +``` +Multi-Collateral Position: +β”œβ”€β”€ Collateral 1: 500 FLOW @ 1.0 MOET each +β”‚ β”œβ”€β”€ Value: 500 MOET +β”‚ β”œβ”€β”€ CF: 0.8 +β”‚ └── Effective: 400 MOET +β”œβ”€β”€ Collateral 2: 100 stFLOW @ 1.05 MOET each +β”‚ β”œβ”€β”€ Value: 105 MOET +β”‚ β”œβ”€β”€ CF: 0.85 +β”‚ └── Effective: 89.25 MOET +β”œβ”€β”€ Collateral 3: 1000 USDC @ 1.0 MOET each +β”‚ β”œβ”€β”€ Value: 1000 MOET +β”‚ β”œβ”€β”€ CF: 0.9 +β”‚ └── Effective: 900 MOET +β”œβ”€β”€ Total Effective Collateral: 1,389.25 MOET +β”œβ”€β”€ Total Debt: 1,068.65 MOET +└── Health Factor: 1,389.25 / 1,068.65 = 1.30 βœ“ + +Benefits: +β”œβ”€β”€ All values in common denomination +β”œβ”€β”€ No currency conversion needed +β”œβ”€β”€ Efficient on-chain computation +└── Real-time health monitoring simplified +``` + +### Liquidation Process + +MOET integration enables efficient liquidation through standardized debt repayment. + +**Liquidation Flow:** + +``` +Underwater Position Detected: +β”œβ”€β”€ Position 123: HF = 0.85 < 1.0 +β”œβ”€β”€ Collateral: 1000 FLOW @ $0.70 = $700 (MOET terms) +β”œβ”€β”€ Effective collateral: $700 Γ— 0.8 = $560 MOET +β”œβ”€β”€ Debt: 700 MOET +└── Liquidatable: Yes + +Liquidator Action: +Step 1: Liquidator Prepares +β”œβ”€β”€ Liquidator has: 300 MOET in wallet +β”œβ”€β”€ Calls: Pool.liquidate(positionID: 123, repayAmount: 300 MOET) +└── Goal: Seize collateral at profit + +Step 2: Debt Repayment +β”œβ”€β”€ Pool receives: 300 MOET from liquidator +β”œβ”€β”€ Position debt reduced: 700 β†’ 400 MOET +β”œβ”€β”€ Pool burns: 300 MOET (automatic on vault destruction) +└── Supply reduced: 300 MOET + +Step 3: Collateral Seizure +β”œβ”€β”€ Formula: CollateralSeized = (DebtRepaid Γ— (1 + Bonus)) / PriceCollateral +β”œβ”€β”€ Calculation: (300 Γ— 1.05) / 0.70 = 450 FLOW +β”œβ”€β”€ Transfer: 450 FLOW to liquidator +└── Remaining collateral: 1000 - 450 = 550 FLOW + +Step 4: Position Update +β”œβ”€β”€ New collateral: 550 FLOW @ $0.70 = $385 +β”œβ”€β”€ New effective collateral: $385 Γ— 0.8 = $308 +β”œβ”€β”€ New debt: 400 MOET +β”œβ”€β”€ New HF: $308 / $400 = 0.77 (still liquidatable) +└── Further liquidations possible + +Liquidator Profit: +β”œβ”€β”€ Paid: 300 MOET ($300) +β”œβ”€β”€ Received: 450 FLOW worth $315 +β”œβ”€β”€ Profit: $315 - $300 = $15 (5%) +└── Incentivizes holding MOET for liquidations +``` + +### Automated Rebalancing + +MOET enables automatic position adjustments through health factor monitoring. + +**Over-Collateralized Rebalancing (HF > 1.5):** + +``` +Initial State: +β”œβ”€β”€ Collateral: 1000 FLOW @ $1.00 = $1,000 +β”œβ”€β”€ Effective collateral: $800 MOET +β”œβ”€β”€ Debt: 615.38 MOET +β”œβ”€β”€ HF: 1.30 +└── Status: Optimal + +Price Increase Event: +β”œβ”€β”€ FLOW price: $1.00 β†’ $1.50 (+50%) +β”œβ”€β”€ New collateral value: $1,500 +β”œβ”€β”€ New effective collateral: $1,500 Γ— 0.8 = $1,200 MOET +β”œβ”€β”€ Debt unchanged: 615.38 MOET +β”œβ”€β”€ New HF: $1,200 / 615.38 = 1.95 > 1.5 ⚠️ +└── Trigger: Auto-borrow more + +Automated Response: +β”œβ”€β”€ Target HF: 1.3 +β”œβ”€β”€ Target debt: $1,200 / 1.3 = $923.08 MOET +β”œβ”€β”€ Additional borrow: $923.08 - 615.38 = $307.70 MOET +β”œβ”€β”€ Pool mints: 307.70 MOET +β”œβ”€β”€ MOET flows via DrawDownSink to: FYV +β”œβ”€β”€ Debt updated: 615.38 β†’ 923.08 MOET +β”œβ”€β”€ HF restored: $1,200 / 923.08 = 1.30 βœ“ +└── Extra capital deployed: 307.70 MOET earning yield + +Benefits: +β”œβ”€β”€ Maximizes capital efficiency automatically +β”œβ”€β”€ No user intervention required +β”œβ”€β”€ More MOET generating yield +└── Higher overall returns +``` + +**Under-Collateralized Rebalancing (HF < 1.1):** + +``` +Initial State: +β”œβ”€β”€ Collateral: 1000 FLOW @ $1.00 = $1,000 +β”œβ”€β”€ Effective collateral: $800 MOET +β”œβ”€β”€ Debt: 615.38 MOET +β”œβ”€β”€ HF: 1.30 +└── Status: Optimal + +Price Decrease Event: +β”œβ”€β”€ FLOW price: $1.00 β†’ $0.85 (-15%) +β”œβ”€β”€ New collateral value: $850 +β”œβ”€β”€ New effective collateral: $850 Γ— 0.8 = $680 MOET +β”œβ”€β”€ Debt unchanged: 615.38 MOET +β”œβ”€β”€ New HF: $680 / 615.38 = 1.11 < 1.1 ⚠️ +└── Trigger: Auto-repay debt + +Automated Response: +β”œβ”€β”€ Target HF: 1.3 +β”œβ”€β”€ Target debt: $680 / 1.3 = $523.08 MOET +β”œβ”€β”€ Must repay: 615.38 - $523.08 = $92.30 MOET +β”œβ”€β”€ Pool pulls from TopUpSource: 92.30 MOET (from FYV) +β”œβ”€β”€ Pool burns: 92.30 MOET +β”œβ”€β”€ Debt updated: 615.38 β†’ 523.08 MOET +β”œβ”€β”€ HF restored: $680 / 523.08 = 1.30 βœ“ +└── Position protected from liquidation + +Benefits: +β”œβ”€β”€ Prevents liquidation automatically +β”œβ”€β”€ Utilizes yield earned in FYV +β”œβ”€β”€ No user intervention required +└── Maintains position health +``` + +## MOET in FYV (Flow Yield Vaults) + +### Yield Deployment Medium + +MOET serves as the capital source for FYV yield strategies, enabling leveraged yield farming. + +**TracerStrategy Integration:** + +``` +Capital Flow: ALP β†’ MOET β†’ FYV β†’ Yield Assets + +Step 1: Receive MOET +β”œβ”€β”€ FYV receives: 615.38 MOET from ALP (via DrawDownSink) +β”œβ”€β”€ Strategy: TracerStrategy +└── Goal: Generate yield > borrowing cost + +Step 2: Convert to Yield Assets +β”œβ”€β”€ SwapConnector activated +β”œβ”€β”€ Swap: 615.38 MOET β†’ 615.38 LP tokens +β”œβ”€β”€ LP tokens: e.g., FLOW/USDC liquidity pair +└── Yield sources: Trading fees + liquidity rewards + +Step 3: Hold in AutoBalancer +β”œβ”€β”€ AutoBalancer receives: 615.38 LP tokens +β”œβ”€β”€ Target value ratio: 100% (1.0) +β”œβ”€β”€ Acceptable range: 95%-105% +└── Continuously monitors value growth + +Step 4: Yield Accumulation +β”œβ”€β”€ LP tokens earn: Trading fees +β”œβ”€β”€ After 30 days: 615.38 LP β†’ 640 LP +β”œβ”€β”€ Value growth: +4% (monthly yield) +└── Yield ready for: Rebalancing or withdrawal +``` + +### Value Ratio Monitoring + +FYV tracks the ratio of yield assets to borrowed MOET for rebalancing decisions. + +**Value Ratio Formula:** + +``` +ValueRatio = Current LP Value (in MOET) / Initial MOET Borrowed + +Example: +β”œβ”€β”€ Initial borrow: 615.38 MOET +β”œβ”€β”€ Current LP value: 640 MOET (after yield) +β”œβ”€β”€ Value ratio: 640 / 615.38 = 1.04 (104%) +└── Status: Within acceptable range (95%-105%) +``` + +**Rebalancing Thresholds:** + +``` +Value Ratio Conditions: + +Case 1: Ratio < 95% (Deficit - Price Drop or Loss) +β”œβ”€β”€ Current value: 584.61 MOET (95% Γ— 615.38) +β”œβ”€β”€ Problem: Insufficient value to cover debt +β”œβ”€β”€ Action: System alerts, may need external capital +└── Risk: Position may become liquidatable + +Case 2: Ratio 95%-105% (Optimal - Balanced) +β”œβ”€β”€ Current value: 584.61 - 646.15 MOET +β”œβ”€β”€ Status: Healthy range +β”œβ”€β”€ Action: No rebalancing needed +└── Continue: Generating yield + +Case 3: Ratio > 105% (Surplus - Excess Yield) +β”œβ”€β”€ Current value: 646.15+ MOET (>105% Γ— 615.38) +β”œβ”€β”€ Profit: Excess beyond debt coverage +β”œβ”€β”€ Action: Harvest profit, reinvest or compound +└── Opportunity: Increase leverage or take profit +``` + +### Liquidation Prevention + +FYV provides MOET back to ALP through TopUpSource when positions need protection. + +**TopUpSource Flow:** + +``` +Trigger: ALP Position HF Drops Below 1.1 + +Step 1: ALP Requests Liquidity +β”œβ”€β”€ ALP detects: HF = 1.05 < 1.1 +β”œβ”€β”€ Required MOET: 92.30 to restore HF to 1.3 +β”œβ”€β”€ ALP calls: TopUpSource.withdraw(92.30, Type<@MOET.Vault>) +└── TopUpSource connected to: FYV strategy + +Step 2: FYV Prepares MOET +β”œβ”€β”€ FYV checks: LP balance = 640 tokens +β”œβ”€β”€ Required conversion: 92.30 MOET +β”œβ”€β”€ Calculate LP needed: 92.30 LP (assuming 1:1 ratio) +└── FYV has sufficient: 640 > 92.30 βœ“ + +Step 3: Convert Yield to MOET +β”œβ”€β”€ FYV calls: SwapConnector.swap(92.30 LP β†’ MOET) +β”œβ”€β”€ LP tokens sold: 92.30 +β”œβ”€β”€ MOET received: 92.30 +└── Remaining LP: 640 - 92.30 = 547.7 + +Step 4: Provide to ALP +β”œβ”€β”€ FYV transfers: 92.30 MOET via TopUpSource +β”œβ”€β”€ ALP receives: 92.30 MOET +β”œβ”€β”€ ALP repays position debt: 615.38 β†’ 523.08 MOET +β”œβ”€β”€ Pool burns: 92.30 MOET +└── HF restored: 1.30 βœ“ + +Result: +β”œβ”€β”€ Position saved from liquidation +β”œβ”€β”€ FYV still has: 547.7 LP generating yield +β”œβ”€β”€ System maintains: Health and composability +└── User retains: All collateral +``` + +### Yield Compounding + +FYV can reinvest excess yield back into strategies using MOET as the medium. + +**Compounding Scenario:** + +``` +Initial Strategy: +β”œβ”€β”€ Borrowed: 615.38 MOET +β”œβ”€β”€ LP tokens: 615.38 +β”œβ”€β”€ After 3 months yield: 688 LP (+11.8%) +β”œβ”€β”€ Value ratio: 688 / 615.38 = 1.118 (111.8%) +└── Excess: 72.62 LP above 105% threshold + +Compounding Decision: +Option 1: Harvest Profit +β”œβ”€β”€ Convert excess: 72.62 LP β†’ 72.62 MOET +β”œβ”€β”€ Repay debt: Reduce from 615.38 to 542.76 MOET +β”œβ”€β”€ Improve HF: From 1.30 to higher +└── Lower risk: Less leverage + +Option 2: Compound (Increase Leverage) +β”œβ”€β”€ Keep excess: 72.62 LP in strategy +β”œβ”€β”€ Borrow more: Request ALP to increase leverage +β”œβ”€β”€ Additional MOET: Based on new LP value +β”œβ”€β”€ Higher exposure: More LP, more yield +└── Higher risk: Increased leverage + +Option 3: Take Profit +β”œβ”€β”€ Convert excess: 72.62 LP β†’ 72.62 MOET +β”œβ”€β”€ Withdraw to wallet: 72.62 MOET +β”œβ”€β”€ Realize gains: Lock in profit +└── Maintain position: Continue with base amount +``` + +## DeFi Actions: Connecting ALP and FYV + +### DrawDownSink (ALP β†’ FYV) + +DrawDownSink channels borrowed MOET from ALP positions into FYV strategies. + +**Interface:** + +```cadence +access(all) resource interface Sink { + access(all) fun deposit(vault: @{FungibleToken.Vault}) +} +``` + +**Implementation in FYV:** + +```cadence +// TracerStrategy implements Sink +access(all) resource TracerStrategy: Sink { + access(all) fun deposit(vault: @{FungibleToken.Vault}) { + // Receive MOET from ALP + let moet <- vault as! @MOET.Vault + + // Convert to yield asset + let lpTokens <- self.swapConnector.swap(from: <-moet, to: Type<@LPToken.Vault>) + + // Deposit into AutoBalancer + self.autoBalancer.deposit(<-lpTokens) + + // Update tracking + self.totalBorrowed = self.totalBorrowed + moet.balance + } +} +``` + +**Usage Flow:** + +``` +ALP Position Configuration: +β”œβ”€β”€ User sets: position.drawDownSink = TracerStrategy capability +β”œβ”€β”€ On borrow: ALP calls drawDownSink.deposit(<-moetVault) +└── MOET flows: ALP β†’ TracerStrategy automatically + +Example: +β”œβ”€β”€ Position borrows: 615.38 MOET +β”œβ”€β”€ DrawDownSink receives: 615.38 MOET +β”œβ”€β”€ TracerStrategy swaps: MOET β†’ LP tokens +β”œβ”€β”€ AutoBalancer holds: 615.38 LP +└── Yield generation: Begins immediately +``` + +### TopUpSource (FYV β†’ ALP) + +TopUpSource provides MOET from FYV back to ALP for debt repayment and liquidation prevention. + +**Interface:** + +```cadence +access(all) resource interface Source { + access(all) fun withdraw(amount: UFix64, type: Type): @{FungibleToken.Vault} +} +``` + +**Implementation in FYV:** + +```cadence +// TracerStrategy implements Source +access(all) resource TracerStrategy: Source { + access(all) fun withdraw(amount: UFix64, type: Type): @{FungibleToken.Vault} { + // Verify type is MOET + assert(type == Type<@MOET.Vault>(), message: "Only MOET withdrawals supported") + + // Calculate LP tokens needed + let lpNeeded = amount // Assuming 1:1 ratio for simplicity + + // Withdraw from AutoBalancer + let lpTokens <- self.autoBalancer.withdraw(lpNeeded) + + // Convert to MOET + let moet <- self.swapConnector.swap(from: <-lpTokens, to: Type<@MOET.Vault>) + + // Update tracking + self.totalWithdrawn = self.totalWithdrawn + amount + + // Return MOET to ALP + return <- (moet as! @{FungibleToken.Vault}) + } +} +``` + +**Usage Flow:** + +``` +ALP Position Configuration: +β”œβ”€β”€ User sets: position.topUpSource = TracerStrategy capability +β”œβ”€β”€ On low HF: ALP calls topUpSource.withdraw(amount, type) +└── MOET flows: TracerStrategy β†’ ALP automatically + +Example: +β”œβ”€β”€ HF drops to: 1.05 +β”œβ”€β”€ Required MOET: 92.30 +β”œβ”€β”€ TopUpSource provides: 92.30 MOET (converted from LP) +β”œβ”€β”€ ALP repays: 92.30 MOET debt +β”œβ”€β”€ HF restored: 1.30 +└── Liquidation prevented +``` + +### SwapConnector (Token Conversion) + +SwapConnector enables MOET ↔ Yield Asset conversions within FYV strategies. + +**Interface:** + +```cadence +access(all) resource interface SwapConnector { + access(all) fun swap( + from: @{FungibleToken.Vault}, + to: Type + ): @{FungibleToken.Vault} +} +``` + +**Bidirectional Swaps:** + +``` +MOET β†’ Yield Asset (Deployment): +β”œβ”€β”€ Input: 615.38 MOET vault +β”œβ”€β”€ Target: LP token (e.g., FLOW/USDC pair) +β”œβ”€β”€ Swap via: DEX (e.g., IncrementFi) +β”œβ”€β”€ Output: 615.38 LP tokens +└── Use: Deployed to yield vault + +Yield Asset β†’ MOET (Withdrawal): +β”œβ”€β”€ Input: 92.30 LP tokens +β”œβ”€β”€ Target: MOET +β”œβ”€β”€ Swap via: DEX +β”œβ”€β”€ Output: 92.30 MOET +└── Use: Debt repayment to ALP +``` + +**Implementation Example:** + +```cadence +// DEX-based SwapConnector +access(all) resource DEXSwapConnector: SwapConnector { + access(all) fun swap(from: @{FungibleToken.Vault}, to: Type): @{FungibleToken.Vault} { + // Route to appropriate DEX pool + let pool = self.getPool(fromType: from.getType(), toType: to) + + // Execute swap + let output <- pool.swap(input: <-from, minOutput: self.calculateSlippage()) + + // Return swapped tokens + return <-output + } + + access(self) fun getPool(fromType: Type, toType: Type): &Pool { + // Find optimal pool for this pair + return &self.pools[fromType]![toType]! as &Pool + } +} +``` + +## Complete Integration Example + +### End-to-End User Journey + +``` +Day 1: Position Creation +β”œβ”€β”€ User deposits: 1000 FLOW +β”œβ”€β”€ ALP mints: 615.38 MOET +β”œβ”€β”€ MOET flows via DrawDownSink to: FYV +β”œβ”€β”€ FYV swaps: MOET β†’ 615.38 LP tokens +β”œβ”€β”€ LP held in: AutoBalancer +└── Position state: 1000 FLOW collateral, 615.38 MOET debt, HF = 1.30 + +Days 2-30: Yield Generation +β”œβ”€β”€ LP tokens earn: Trading fees + rewards +β”œβ”€β”€ LP value grows: 615.38 β†’ 640 LP (+4%) +β”œβ”€β”€ MOET debt accrues interest: 615.38 β†’ 620.51 (+0.83% monthly) +β”œβ”€β”€ Net position value: 640 - 620.51 = 19.49 MOET profit +└── Value ratio: 640 / 620.51 = 1.031 (103.1%, healthy) + +Day 15: Price Drop Event +β”œβ”€β”€ FLOW price drops: $1.00 β†’ $0.88 (-12%) +β”œβ”€β”€ Collateral value: $880 +β”œβ”€β”€ Effective collateral: $880 Γ— 0.8 = $704 MOET +β”œβ”€β”€ Debt: 617.50 MOET (with partial interest) +β”œβ”€β”€ HF: 704 / 617.50 = 1.14 > 1.1 βœ“ +└── No action: Still above minimum threshold + +Day 20: Further Price Drop +β”œβ”€β”€ FLOW price drops: $0.88 β†’ $0.82 (-7% more, -18% total) +β”œβ”€β”€ Collateral value: $820 +β”œβ”€β”€ Effective collateral: $820 Γ— 0.8 = $656 MOET +β”œβ”€β”€ Debt: 618.50 MOET +β”œβ”€β”€ HF: 656 / 618.50 = 1.06 < 1.1 ⚠️ +└── Trigger: Auto-rebalancing + +Auto-Rebalancing: +β”œβ”€β”€ Target HF: 1.3 +β”œβ”€β”€ Target debt: 656 / 1.3 = 504.62 MOET +β”œβ”€β”€ Repay amount: 618.50 - 504.62 = 113.88 MOET +β”œβ”€β”€ FYV provides via TopUpSource: 113.88 MOET +β”‚ β”œβ”€β”€ Convert LP: 113.88 LP β†’ 113.88 MOET +β”‚ └── Remaining LP: 640 - 113.88 = 526.12 LP +β”œβ”€β”€ ALP burns: 113.88 MOET +β”œβ”€β”€ New debt: 504.62 MOET +β”œβ”€β”€ New HF: 656 / 504.62 = 1.30 βœ“ +└── Position protected! + +Days 21-30: Recovery +β”œβ”€β”€ FLOW price recovers: $0.82 β†’ $0.95 (+16%) +β”œβ”€β”€ Collateral value: $950 +β”œβ”€β”€ Effective collateral: $950 Γ— 0.8 = $760 MOET +β”œβ”€β”€ Debt: 507.50 MOET (with interest) +β”œβ”€β”€ HF: 760 / 507.50 = 1.50 (at threshold) +└── No auto-borrow: Exactly at 1.5 + +Day 30: Position Closure +β”œβ”€β”€ LP value: 526.12 LP worth $547.35 +β”œβ”€β”€ Convert all LP: 526.12 LP β†’ 547.35 MOET +β”œβ”€β”€ Total debt: 507.50 MOET +β”œβ”€β”€ Repay: 507.50 MOET to ALP +β”œβ”€β”€ ALP burns: 507.50 MOET +β”œβ”€β”€ Excess MOET: 547.35 - 507.50 = 39.85 MOET +β”œβ”€β”€ Withdraw collateral: 1000 FLOW +└── Final profit: 39.85 MOET ($39.85 on $1,000 = 3.98% monthly ROI) +``` + +### Integration Benefits + +**For Users:** + +1. **Seamless Capital Flow**: MOET moves automatically between components +2. **Automated Protection**: Yield protects positions without manual intervention +3. **Maximized Returns**: Borrowed capital immediately deployed to yield +4. **Simplified UX**: Single deposit action triggers entire flow + +**For Protocol:** + +1. **Capital Efficiency**: No idle MOET sitting in wallets +2. **Reduced Liquidations**: Auto-rebalancing prevents most liquidations +3. **Composability**: MOET enables third-party integrations +4. **Scalability**: Standardized interfaces support multiple strategies + +**For Ecosystem:** + +1. **Unified Liquidity**: MOET creates common liquidity layer +2. **DeFi Composability**: Standard token enables broader integrations +3. **Innovation**: Developers can build new strategies using MOET +4. **Network Effects**: More users β†’ more liquidity β†’ better yields + +## Technical Implementation Details + +### Contract Interactions + +**Key Contract Calls:** + +```cadence +// ALP borrows MOET for user +pub fun borrow(amount: UFix64): @MOET.Vault { + // Mint MOET + let moet <- MOETMinter.mintTokens(amount: amount) + + // Update position debt + self.debt.scaledBalance = self.debt.scaledBalance + amount + + // Push to DrawDownSink if configured + if let sink = self.drawDownSink { + sink.deposit(vault: <-moet) + return <- MOET.createEmptyVault() // Return empty vault + } + + // Otherwise return MOET to user + return <- moet +} + +// ALP repays MOET debt +pub fun repay(vault: @MOET.Vault) { + // Record repaid amount + let repaidAmount = vault.balance + + // Update position debt + self.debt.scaledBalance = self.debt.scaledBalance - repaidAmount + + // Burn MOET (automatic on destroy) + destroy vault // Triggers burnCallback() +} + +// FYV provides MOET for debt repayment +pub fun provideForRepayment(): @MOET.Vault { + // Calculate needed amount + let neededAmount = self.calculateRepaymentAmount() + + // Withdraw from strategy + let moet <- self.strategy.withdraw(amount: neededAmount, type: Type<@MOET.Vault>()) + + // Return MOET for ALP repayment + return <- (moet as! @MOET.Vault) +} +``` + +### Event Emissions + +**Tracking MOET Flows:** + +```cadence +// Emitted when MOET is minted +pub event TokensMinted(amount: UFix64, positionID: UInt64, mintedBy: Address) + +// Emitted when MOET is burned +pub event TokensBurned(amount: UFix64, burnedFrom: UInt64) + +// Emitted when MOET flows to DrawDownSink +pub event MOETDeployed(amount: UFix64, from: UInt64, to: Address, strategy: String) + +// Emitted when MOET provided via TopUpSource +pub event MOETWithdrawn(amount: UFix64, from: Address, to: UInt64, reason: String) + +// Emitted when MOET swapped +pub event MOETSwapped(amount: UFix64, direction: String, pool: Address) +``` + +**Analytics Use Cases:** + +``` +Monitor Total Supply: +β”œβ”€β”€ Track: TokensMinted events +β”œβ”€β”€ Track: TokensBurned events +β”œβ”€β”€ Calculate: Supply = Mints - Burns +└── Analyze: Supply growth trends + +Monitor Capital Flows: +β”œβ”€β”€ Track: MOETDeployed events (ALP β†’ FYV) +β”œβ”€β”€ Track: MOETWithdrawn events (FYV β†’ ALP) +β”œβ”€β”€ Calculate: Net flow = Deployed - Withdrawn +└── Analyze: Capital efficiency metrics + +Monitor Liquidation Activity: +β”œβ”€β”€ Track: TokensBurned with reason = "liquidation" +β”œβ”€β”€ Calculate: Liquidation volume +β”œβ”€β”€ Analyze: System health indicators +└── Alert: Liquidation cascades +``` + +## Next Steps + +- **[Stability Mechanisms](./stability.md)**: Understand how MOET maintains its peg and manages risk +- **[ALP Documentation](../alp/index.md)**: Deep dive into ALP's lending mechanics +- **[FYV Documentation](../flow-yield-vaults/index.md)**: Explore FYV yield strategies +- **[DeFi Actions](../../blockchain-development-tutorials/forte/flow-actions/index.md)**: Learn about the composability framework diff --git a/docs/defi/moet/stability.md b/docs/defi/moet/stability.md new file mode 100644 index 0000000000..39566fcd3e --- /dev/null +++ b/docs/defi/moet/stability.md @@ -0,0 +1,771 @@ +--- +title: MOET Stability and Risk Management +sidebar_label: Stability & Risk +sidebar_position: 4 +--- + +# MOET Stability and Risk Management + +This document analyzes MOET's stability mechanisms, risk factors, and the safety measures that protect its $1 peg within the FCM ecosystem. + +## Current Implementation Status + +:::warning Mock Token Status +The current MOET implementation is explicitly a "mock version for testing purposes" and **lacks active stability mechanisms**. This analysis describes the intended design for production deployment and identifies gaps in the current implementation. +::: + +**Missing in Current Implementation:** + +- Active MOET/USD price oracle monitoring +- Algorithmic supply adjustments based on peg deviation +- Reserve fund for redemptions +- Governance controls for economic parameters +- Emergency circuit breakers for extreme scenarios + +**Present in Current Implementation:** + +- Over-collateralization requirements +- Liquidation mechanisms +- Interest rate adjustments via utilization +- Mint-and-burn supply model + +## Stability Mechanisms + +### Over-Collateralization + +The primary stability mechanism is requiring all MOET debt to be backed by excess collateral. + +**Collateralization Requirements:** + +``` +Standard Position: +β”œβ”€β”€ Collateral Factor (CF): 0.8 (80% of value usable) +β”œβ”€β”€ Target Health Factor (HF): 1.3 +β”œβ”€β”€ Required Collateral: CF Γ— HF = 0.8 Γ— 1.3 = 1.04 +└── Collateralization Ratio: 1 / 0.8 Γ— 1.3 = 162.5% + +For Every 1 MOET Borrowed: +β”œβ”€β”€ Effective Collateral Required: $1.30 +β”œβ”€β”€ Total Collateral Required: $1.625 +β”œβ”€β”€ Safety Buffer: $0.625 (38.5%) +└── Price Drop Tolerance: 38.5% before liquidation threshold +``` + +**Collateralization by Asset:** + +| Collateral | CF | Target HF | Min Collateralization | Liquidation Buffer | +|------------|-----|-----------|----------------------|-------------------| +| **FLOW** | 0.8 | 1.3 | 162.5% | 38.5% price drop | +| **stFLOW** | 0.85 | 1.3 | 152.9% | 34.6% price drop | +| **USDC** | 0.9 | 1.3 | 144.4% | 30.8% price drop | +| **wBTC** | 0.75 | 1.3 | 173.3% | 42.3% price drop | +| **wETH** | 0.75 | 1.3 | 173.3% | 42.3% price drop | + +**Why Over-Collateralization Provides Stability:** + +1. **Redemption Backing**: Every MOET can theoretically be redeemed for >$1 worth of collateral +2. **Liquidation Buffer**: Provides time for liquidators to act before insolvency +3. **Market Confidence**: Users trust MOET is backed by real, valuable assets +4. **Arbitrage Floor**: If MOET < $1, arbitrageurs can profit by buying MOET to repay debt and unlock collateral + +### Liquidation System + +Liquidations maintain system solvency by clearing bad debt before positions become insolvent. + +**Liquidation Threshold:** + +``` +Position Becomes Liquidatable When: +Health Factor < 1.0 + +Where: +HF = (Ξ£ CollateralValue Γ— CollateralFactor) / TotalDebt + +Example Liquidatable Position: +β”œβ”€β”€ Collateral: 1000 FLOW @ $0.60 = $600 +β”œβ”€β”€ Collateral Factor: 0.8 +β”œβ”€β”€ Effective Collateral: $600 Γ— 0.8 = $480 +β”œβ”€β”€ Debt: 615.38 MOET +β”œβ”€β”€ Health Factor: $480 / $615.38 = 0.78 < 1.0 ⚠️ +└── Status: Liquidatable +``` + +**Liquidation Process:** + +``` +Step 1: Detection +β”œβ”€β”€ Keeper bots monitor: All position health factors +β”œβ”€β”€ Alert triggers: HF < 1.0 +β”œβ”€β”€ Keeper prepares: MOET for liquidation +└── Submits: Liquidation transaction + +Step 2: Collateral Seizure Calculation +β”œβ”€β”€ Formula: CollateralSeized = (DebtRepaid Γ— (1 + Bonus)) / PriceCollateral +β”œβ”€β”€ Example: (200 MOET Γ— 1.05) / $0.60 = 350 FLOW +β”œβ”€β”€ Liquidator profit: 5% (from bonus) +└── Incentive: Encourages fast liquidation + +Step 3: Debt Repayment +β”œβ”€β”€ Liquidator provides: 200 MOET +β”œβ”€β”€ Position debt reduced: 615.38 β†’ 415.38 MOET +β”œβ”€β”€ MOET burned: 200 tokens +└── Supply reduced: Improves system collateralization + +Step 4: Collateral Transfer +β”œβ”€β”€ Seized collateral: 350 FLOW +β”œβ”€β”€ Transferred to: Liquidator +β”œβ”€β”€ Remaining collateral: 650 FLOW +└── Position still exists: Can be liquidated further if HF still < 1.0 + +System Impact: +β”œβ”€β”€ Bad debt cleared: Before insolvency +β”œβ”€β”€ Supply reduced: Burned MOET improves backing ratio +β”œβ”€β”€ Liquidator profit: Creates MOET demand (need MOET to liquidate) +└── Peg support: MOET needed for profitable liquidations +``` + +**Partial Liquidation:** + +``` +Current Implementation: +β”œβ”€β”€ Liquidators can repay: Any amount of debt +β”œβ”€β”€ Goal: Restore HF to healthy level (typically 1.05) +β”œβ”€β”€ Avoids: Complete position closure +└── Benefits: User keeps remaining collateral, lower gas costs + +Example Partial Liquidation: +β”œβ”€β”€ Initial: 1000 FLOW, 615.38 MOET debt, HF = 0.78 +β”œβ”€β”€ Liquidator repays: 200 MOET (not full debt) +β”œβ”€β”€ New state: 650 FLOW, 415.38 MOET debt +β”œβ”€β”€ New HF: (650 Γ— $0.60 Γ— 0.8) / 415.38 = 0.75 +β”œβ”€β”€ Still liquidatable: Additional liquidations needed +└── Continues: Until HF restored above 1.0 +``` + +### Interest Rate-Based Stability + +Utilization-driven interest rates create economic incentives that stabilize supply and demand. + +**Rate Mechanism:** + +``` +High Utilization β†’ High Rates β†’ Incentives: +β”œβ”€β”€ Borrow Side: Expensive MOET discourages new borrowing +β”œβ”€β”€ Repay Side: High cost incentivizes debt repayment +β”œβ”€β”€ Supply Side: High yields attract MOET deposits +└── Result: Utilization decreases toward optimal + +Low Utilization β†’ Low Rates β†’ Incentives: +β”œβ”€β”€ Borrow Side: Cheap MOET encourages new borrowing +β”œβ”€β”€ Repay Side: Low cost reduces urgency to repay +β”œβ”€β”€ Supply Side: Low yields discourage new deposits +└── Result: Utilization increases toward optimal +``` + +**Example Stabilization Cycle:** + +``` +Phase 1: High Demand +β”œβ”€β”€ Utilization: 92% +β”œβ”€β”€ Interest Rate: 45% APY +β”œβ”€β”€ MOET Price: $1.03 (high demand, premium) +β”œβ”€β”€ Borrower Response: "Too expensive, I'll repay early" +β”œβ”€β”€ Lender Response: "Great returns, I'll deposit more" +└── Effect: Supply ↑, Demand ↓, Utilization β†’ 85% + +Phase 2: Market Adjustment +β”œβ”€β”€ Utilization: 85% +β”œβ”€β”€ Interest Rate: 18% APY (dropped) +β”œβ”€β”€ MOET Price: $1.00 (normalized) +β”œβ”€β”€ Market: Balanced state +└── Stable: Rates and price + +Phase 3: Low Demand +β”œβ”€β”€ Utilization: 65% +β”œβ”€β”€ Interest Rate: 7% APY +β”œβ”€β”€ MOET Price: $0.98 (low demand, slight discount) +β”œβ”€β”€ Borrower Response: "Cheap money, I'll borrow more" +β”œβ”€β”€ Lender Response: "Low returns, I'll withdraw" +└── Effect: Supply ↓, Demand ↑, Utilization β†’ 75% + +Phase 4: Equilibrium +β”œβ”€β”€ Utilization: 75% +β”œβ”€β”€ Interest Rate: 9% APY +β”œβ”€β”€ MOET Price: $1.00 +β”œβ”€β”€ Market: Optimal balance +└── Stable: Long-term equilibrium +``` + +### Arbitrage Mechanisms + +Price deviations from $1 create profitable arbitrage opportunities that naturally restore the peg. + +**MOET Trading Above $1 (e.g., $1.05):** + +``` +Arbitrage Strategy: +Step 1: Borrow MOET +β”œβ”€β”€ Deposit: $1,625 FLOW collateral +β”œβ”€β”€ Borrow: 1,000 MOET (valued at $1,000 on-protocol) +β”œβ”€β”€ Cost: Interest on 1,000 MOET debt +└── Capital: 1,000 MOET in hand + +Step 2: Sell MOET on Market +β”œβ”€β”€ Market price: $1.05 +β”œβ”€β”€ Sell: 1,000 MOET for $1,050 +β”œβ”€β”€ Profit captured: $50 immediate +└── Hold: $1,050 stablecoins + +Step 3: Wait for Peg Restoration +β”œβ”€β”€ MOET price: Returns to $1.00 +β”œβ”€β”€ Or: Hold position and earn on $1,050 +└── Later repay: 1,000 MOET debt + +Step 4: Close Position +β”œβ”€β”€ Buy back: 1,000 MOET at $1.00 = $1,000 +β”œβ”€β”€ Repay debt: 1,000 MOET to ALP +β”œβ”€β”€ Withdraw: $1,625 FLOW collateral +β”œβ”€β”€ Net profit: $1,050 - $1,000 - interest β‰ˆ $45 +└── Market impact: Selling pressure pushed MOET β†’ $1.00 + +Arbitrageur Incentive: +β”œβ”€β”€ Risk-free profit: When MOET > $1 +β”œβ”€β”€ Increased supply: More MOET on market (from borrowing) +β”œβ”€β”€ Selling pressure: Drives price down +└── Peg restored: MOET returns to $1 +``` + +**MOET Trading Below $1 (e.g., $0.95):** + +``` +Arbitrage Strategy: +Step 1: Buy Discounted MOET +β”œβ”€β”€ Market price: $0.95 +β”œβ”€β”€ Buy: 1,000 MOET for $950 +β”œβ”€β”€ Savings: $50 vs. $1 peg +└── Capital: 1,000 MOET in hand + +Step 2: Repay Existing Debt +β”œβ”€β”€ Existing position: 1,000 MOET debt (valued at $1,000 on-protocol) +β”œβ”€β”€ Repay using: 1,000 MOET purchased for $950 +β”œβ”€β”€ Debt cleared: 1,000 MOET +└── Savings realized: $50 + +Step 3: Unlock Collateral +β”œβ”€β”€ Debt: Fully repaid +β”œβ”€β”€ Health Factor: Infinite (no debt) +β”œβ”€β”€ Withdraw: All collateral +└── Collateral freed: Can be used elsewhere + +Alternative Strategy (Profitable Liquidations): +β”œβ”€β”€ Buy: 1,000 MOET for $950 +β”œβ”€β”€ Liquidate: Underwater positions +β”œβ”€β”€ Receive: Collateral worth $1,050 (5% bonus) +β”œβ”€β”€ Net profit: $1,050 - $950 = $100 +└── Market impact: Buying pressure pushed MOET β†’ $1.00 + +Arbitrageur Incentive: +β”œβ”€β”€ Discounted debt repayment: When MOET < $1 +β”œβ”€β”€ Profitable liquidations: Higher margins +β”œβ”€β”€ Buying pressure: Drives price up +└── Peg restored: MOET returns to $1 +``` + +## Risk Factors and Mitigation + +### Depeg Risk + +**Risk**: MOET trades significantly away from $1, breaking user confidence. + +**Causes:** + +``` +Supply-Side Shock: +β”œβ”€β”€ Sudden collateral price crash +β”œβ”€β”€ Mass liquidations β†’ large MOET sell pressure +β”œβ”€β”€ Liquidators dump MOET on market +└── Price spirals: MOET β†’ $0.80 + +Demand-Side Shock: +β”œβ”€β”€ Loss of confidence in protocol +β”œβ”€β”€ Users rush to repay debt +β”œβ”€β”€ High MOET demand β†’ price spike +└── Price spikes: MOET β†’ $1.20 + +Oracle Failure: +β”œβ”€β”€ Oracle reports incorrect prices +β”œβ”€β”€ Wrong collateral valuations +β”œβ”€β”€ Inappropriate liquidations or minting +└── System destabilization +``` + +**Mitigation Strategies:** + +``` +Current (Implicit): +β”œβ”€β”€ Over-collateralization: Provides 38-42% buffer +β”œβ”€β”€ Gradual liquidations: Prevents sudden supply shocks +β”œβ”€β”€ Interest rate adjustments: Incentivize balance +└── Arbitrage: Profit-seeking restores peg + +Needed for Production: +β”œβ”€β”€ MOET/USD Price Feed: Active monitoring +β”œβ”€β”€ Circuit Breakers: Pause minting/borrowing during extreme volatility +β”œβ”€β”€ Reserve Fund: Protocol-owned MOET/collateral to stabilize price +β”œβ”€β”€ Stability Module: Direct MOET ↔ $1 redemptions (like DAI PSM) +└── Gradual Rollout: Caps on total supply during early phase +``` + +**Example Depeg Scenario:** + +``` +Day 1: Flash Crash +β”œβ”€β”€ FLOW price: $1.00 β†’ $0.50 (-50%) +β”œβ”€β”€ System debt: 10M MOET +β”œβ”€β”€ Liquidations triggered: 3M MOET worth +β”œβ”€β”€ Liquidators acquire: 3M MOET +β”œβ”€β”€ Liquidators sell: On DEXs for stablecoins +β”œβ”€β”€ MOET price: $1.00 β†’ $0.92 (-8%) +└── Fear spreads: Users panic + +Day 2: Panic Selling +β”œβ”€β”€ Users sell: MOET positions on DEXs +β”œβ”€β”€ More liquidations: Triggered by volatility +β”œβ”€β”€ MOET price: $0.92 β†’ $0.85 (-15% total) +β”œβ”€β”€ System still solvent: Collateral > debt +└── But: Market price β‰  redemption value + +Recovery Mechanism (Without Direct Intervention): +β”œβ”€β”€ Arbitrageurs notice: MOET at $0.85, redeemable for $1 of collateral +β”œβ”€β”€ Arbitrage: Buy MOET at $0.85, repay debt, profit $0.15 per MOET +β”œβ”€β”€ Buying pressure: Increases demand +β”œβ”€β”€ Liquidations stabilize: Collateral prices bottom out +β”œβ”€β”€ Days 3-7: MOET gradually recovers to $0.95 +β”œβ”€β”€ Days 8-14: Returns to $1.00 +└── Lesson: Protocol remained solvent, market recovered naturally + +Recovery Mechanism (With Direct Intervention): +β”œβ”€β”€ Protocol Reserve: Buys 500K MOET at $0.85 = $425K spent +β”œβ”€β”€ Immediate support: Prevents further decline +β”œβ”€β”€ Confidence restored: Users see protocol actively defending peg +β”œβ”€β”€ Days 2-3: MOET returns to $0.98 +β”œβ”€β”€ Days 4-5: Stabilizes at $1.00 +β”œβ”€β”€ Protocol profits: Sells 500K MOET at $1.00 = $500K (earned $75K) +└── Reserves replenished: Ready for next crisis +``` + +### Cascading Liquidation Risk + +**Risk**: One liquidation triggers more liquidations in a downward spiral. + +**Mechanism:** + +``` +Step 1: Initial Liquidation +β”œβ”€β”€ FLOW drops: $1.00 β†’ $0.70 (-30%) +β”œβ”€β”€ 1,000 positions: Become liquidatable +β”œβ”€β”€ Liquidations begin: Keepers repay debt, seize collateral +└── MOET burned: 5M tokens + +Step 2: Collateral Dumping +β”œβ”€β”€ Liquidators sell: Seized collateral (1,000 FLOW each) +β”œβ”€β”€ Market impact: Large FLOW sell pressure +β”œβ”€β”€ FLOW price drops further: $0.70 β†’ $0.60 (-14% more) +└── More positions: Become liquidatable + +Step 3: Cascade +β”œβ”€β”€ Round 2 liquidations: Another 2,000 positions +β”œβ”€β”€ More collateral dumped: FLOW β†’ $0.50 +β”œβ”€β”€ Round 3 liquidations: 5,000 positions +β”œβ”€β”€ Panic selling: Amplifies decline +└── System stress: Extreme + +Step 4: Potential Insolvency +β”œβ”€β”€ If cascade continues: Collateral value < debt value +β”œβ”€β”€ Protocol becomes insolvent: Cannot back all MOET +β”œβ”€β”€ MOET depeg: Severe loss of confidence +└── Crisis: System failure +``` + +**Mitigation:** + +``` +Current Measures: +β”œβ”€β”€ High Collateralization: 162.5% provides buffer +β”œβ”€β”€ Liquidation Bonus: 5% (not too high to encourage mass liquidations) +β”œβ”€β”€ Partial Liquidations: Don't force full position closure +└── Interest Rates: Increase during high utilization to slow borrowing + +Needed Enhancements: +β”œβ”€β”€ Liquidation Rate Limits: Max X positions per hour +β”œβ”€β”€ Progressive Liquidation Bonus: Decreases as more liquidations occur +β”œβ”€β”€ Emergency Collateral Injection: Protocol buys collateral to support prices +β”œβ”€β”€ Liquidation Pauses: Temporary halt during extreme volatility +└── Insurance Fund: Protocol-owned reserves to cover insolvency +``` + +### Oracle Risk + +**Risk**: Incorrect price data leads to wrong liquidations or improper minting. + +**Failure Modes:** + +``` +Price Manipulation: +β”œβ”€β”€ Attacker manipulates: DEX price feed +β”œβ”€β”€ Oracle reports: False price spike (FLOW = $10) +β”œβ”€β”€ Users borrow: Excessive MOET based on inflated collateral +β”œβ”€β”€ Price returns: FLOW = $1, positions insolvent +└── Protocol loss: Uncollateralized MOET in circulation + +Oracle Downtime: +β”œβ”€β”€ Oracle stops updating: Stale prices +β”œβ”€β”€ Actual price drops: FLOW $1 β†’ $0.50 +β”œβ”€β”€ Oracle still reports: $1.00 (stale) +β”œβ”€β”€ No liquidations triggered: Positions become insolvent +└── System risk: Delayed liquidations, bad debt accumulation + +Price Lag: +β”œβ”€β”€ High volatility: FLOW swings $0.80 β†’ $1.20 β†’ $0.70 +β”œβ”€β”€ Oracle updates: Every 10 minutes (lagging) +β”œβ”€β”€ Liquidations: Triggered on stale data +β”œβ”€β”€ User loss: Liquidated unfairly +└── Protocol reputation: Damaged +``` + +**Mitigation:** + +``` +Current Protections: +β”œβ”€β”€ Multiple Oracle Sources: IncrementFi, Band, Pyth +β”œβ”€β”€ Price Staleness Checks: Reject outdated prices +└── Price Deviation Guards: Flag abnormal movements + +Needed Enhancements: +β”œβ”€β”€ Median Price Aggregation: Use median of 3+ oracles +β”œβ”€β”€ Time-Weighted Average Price (TWAP): Smooth out volatility +β”œβ”€β”€ Circuit Breakers: Pause protocol on extreme deviation +β”œβ”€β”€ Keeper Slashing: Penalize keepers for using manipulated prices +β”œβ”€β”€ Price Confidence Intervals: Only accept high-confidence oracle data +└── Fallback Oracles: Backup sources if primary fails +``` + +**Example Oracle Attack Prevention:** + +``` +Normal Operation: +β”œβ”€β”€ Oracle 1 (IncrementFi): FLOW = $1.00 +β”œβ”€β”€ Oracle 2 (Band): FLOW = $1.01 +β”œβ”€β”€ Oracle 3 (Pyth): FLOW = $0.99 +β”œβ”€β”€ Median: $1.00 +└── Use: $1.00 for calculations + +Attack Attempt: +β”œβ”€β”€ Attacker manipulates: Oracle 1 β†’ $10.00 (flash loan attack on DEX) +β”œβ”€β”€ Oracle 2 (Band): FLOW = $1.01 (not manipulated) +β”œβ”€β”€ Oracle 3 (Pyth): FLOW = $0.99 (not manipulated) +β”œβ”€β”€ Median: $1.01 (attack filtered out) +β”œβ”€β”€ Deviation check: $10 vs $1.01 = 890% deviation ⚠️ +β”œβ”€β”€ System response: Reject Oracle 1, use only 2 & 3 +β”œβ”€β”€ Fallback price: Median($1.01, $0.99) = $1.00 +└── Attack failed: No improper minting occurred +``` + +### Smart Contract Risk + +**Risk**: Bugs or exploits in MOET, ALP, or FYV contracts lead to loss of funds. + +**Threat Vectors:** + +``` +Reentrancy Attacks: +β”œβ”€β”€ Attacker calls: Withdraw function +β”œβ”€β”€ During execution: Calls back into contract +β”œβ”€β”€ Exploit: Withdraws funds multiple times +└── Result: Drained reserves + +Overflow/Underflow: +β”œβ”€β”€ Large numbers: Exceed max uint limits +β”œβ”€β”€ Wrap around: 2^256 - 1 + 1 = 0 +β”œβ”€β”€ Exploit: Create debt/collateral from nothing +└── Result: Unlimited MOET minting + +Access Control Bugs: +β”œβ”€β”€ Missing modifiers: Anyone can call admin functions +β”œβ”€β”€ Exploit: Unauthorized minting +└── Result: Infinite MOET supply + +Logic Errors: +β”œβ”€β”€ Incorrect formulas: Health factor calculated wrong +β”œβ”€β”€ Exploit: Borrow more than allowed +└── Result: Undercollateralized positions +``` + +**Mitigation:** + +``` +Current Safeguards: +β”œβ”€β”€ Cadence Language: Resource-oriented, prevents many common bugs +β”œβ”€β”€ Flow Blockchain: Built-in safety features +└── Standard Interfaces: FungibleToken standard compliance + +Needed for Production: +β”œβ”€β”€ Multiple Audits: At least 2-3 independent security audits +β”œβ”€β”€ Bug Bounty Program: Pay white-hats to find vulnerabilities +β”œβ”€β”€ Formal Verification: Mathematical proof of correctness +β”œβ”€β”€ Gradual Rollout: Limited supply caps during testing +β”œβ”€β”€ Emergency Pause: Admin can halt contracts in crisis +β”œβ”€β”€ Timelocks: Delay on admin actions for community review +└── Insurance: Protocol coverage (e.g., Nexus Mutual) +``` + +### Centralization Risk + +**Risk**: Single admin controls minting, creating censorship or manipulation risk. + +**Current State:** + +``` +Centralized Control: +β”œβ”€β”€ Minter Resource: Single resource at admin account +β”œβ”€β”€ Can mint: Unlimited MOET +β”œβ”€β”€ No oversight: No multi-sig or timelock +└── Single point of failure: Admin key compromise = total control +``` + +**Mitigation Roadmap:** + +``` +Phase 1: Multi-Sig (Immediate) +β”œβ”€β”€ Minter Resource: Controlled by 3-of-5 multi-sig +β”œβ”€β”€ Requires: Multiple team members to approve minting +β”œβ”€β”€ Reduces: Single point of failure +└── Timeline: Before mainnet launch + +Phase 2: DAO Governance (6-12 months) +β”œβ”€β”€ Minting Proposals: Community votes on supply changes +β”œβ”€β”€ Timelock: 48-hour delay on parameter changes +β”œβ”€β”€ Veto Power: Community can reject bad proposals +└── Transparency: All actions on-chain and public + +Phase 3: Full Decentralization (12-24 months) +β”œβ”€β”€ Algorithmic Minting: Based on predefined rules only +β”œβ”€β”€ No Admin Keys: Smart contracts fully autonomous +β”œβ”€β”€ Emergency Council: Limited powers, only for critical bugs +└── Community Control: All parameters governed by token holders +``` + +### Liquidity Risk + +**Risk**: Insufficient MOET liquidity on DEXs leads to high slippage and price instability. + +**Problem:** + +``` +Low Liquidity Scenario: +β”œβ”€β”€ DEX Pool: 100,000 MOET / 100,000 USDC +β”œβ”€β”€ User wants to swap: 10,000 MOET (10% of pool) +β”œβ”€β”€ Slippage: ~5% (constant product formula) +β”œβ”€β”€ Received: 9,500 USDC instead of 10,000 +└── Price impact: MOET effectively worth $0.95 + +Cascading Effect: +β”œβ”€β”€ Low liquidity β†’ High slippage +β”œβ”€β”€ High slippage β†’ Arbitrage inefficient +β”œβ”€β”€ Inefficient arbitrage β†’ Peg deviates more +β”œβ”€β”€ Peg deviation β†’ Loss of confidence +└── Confidence loss β†’ More selling β†’ Lower liquidity +``` + +**Solution:** + +``` +Protocol-Owned Liquidity (POL): +β”œβ”€β”€ Protocol deposits: 1M MOET + 1M USDC into DEX +β”œβ”€β”€ Deep liquidity: Reduces slippage +β”œβ”€β”€ Permanent: Protocol doesn't remove liquidity +└── Stability: Enables efficient arbitrage + +Liquidity Mining Incentives: +β”œβ”€β”€ Reward LPs: With protocol tokens +β”œβ”€β”€ Attract: Third-party liquidity providers +β”œβ”€β”€ Increase depth: More liquidity = better peg stability +└── Gradual reduction: As protocol matures + +Example Impact: +β”œβ”€β”€ Before: 100K pool, 10K swap = 5% slippage +β”œβ”€β”€ After: 5M pool (with POL), 10K swap = 0.1% slippage +└── Arbitrage: Becomes profitable at Β±0.2% deviation vs. Β±2% before +``` + +## Safety Measures Summary + +### Current Protections + +| Mechanism | Description | Effectiveness | +|-----------|-------------|--------------| +| **Over-Collateralization** | 162.5% backing required | Strong - provides 38-42% safety buffer | +| **Liquidation System** | Clears bad debt at HF < 1.0 | Moderate - depends on keeper efficiency | +| **Interest Rates** | Utilization-based incentives | Moderate - self-balancing over time | +| **Mint-Burn Model** | Supply tied to debt | Strong - prevents uncollateralized supply | +| **Partial Liquidations** | Avoids full position closure | Strong - reduces cascade risk | +| **Multi-Oracle Support** | Multiple price sources | Moderate - needs median aggregation | + +### Required for Production + +| Enhancement | Purpose | Priority | +|-------------|---------|----------| +| **MOET/USD Oracle** | Monitor peg deviation | Critical | +| **Reserve Fund** | Direct peg support | Critical | +| **Circuit Breakers** | Pause during crisis | High | +| **Multi-Sig Minting** | Decentralize control | Critical | +| **Liquidation Limits** | Prevent cascades | High | +| **Insurance Fund** | Cover insolvency | High | +| **Security Audits** | Find vulnerabilities | Critical | +| **Protocol-Owned Liquidity** | Ensure DEX depth | Medium | +| **DAO Governance** | Community control | Medium | + +## Risk Assessment Matrix + +### Likelihood vs. Impact + +``` +Critical Risk (Address Immediately): +β”œβ”€β”€ Smart Contract Bug: Medium likelihood, Extreme impact +β”œβ”€β”€ Oracle Manipulation: Low likelihood, Extreme impact +└── Admin Key Compromise: Low likelihood, Extreme impact + +High Risk (Address Before Mainnet): +β”œβ”€β”€ Cascading Liquidations: Medium likelihood, High impact +β”œβ”€β”€ Depeg During Volatility: High likelihood, Medium impact +└── Liquidity Crisis: Medium likelihood, High impact + +Medium Risk (Monitor and Improve): +β”œβ”€β”€ Interest Rate Inefficiency: Low likelihood, Medium impact +β”œβ”€β”€ User Error: High likelihood, Low impact +└── Temporary Oracle Lag: Medium likelihood, Low impact + +Low Risk (Acceptable): +β”œβ”€β”€ Minor Slippage: High likelihood, Very low impact +β”œβ”€β”€ Network Congestion: Medium likelihood, Low impact +└── UI/UX Issues: High likelihood, Very low impact +``` + +### Risk Tolerance Recommendations + +**For Analysts:** + +``` +Conservative View: +β”œβ”€β”€ Current MOET: Not suitable for large-scale production +β”œβ”€β”€ Missing: Critical stability mechanisms +β”œβ”€β”€ Recommendation: Wait for production-ready version +└── Risk: High for early adopters + +Moderate View: +β”œβ”€β”€ Testnet MOET: Good for experimentation +β”œβ”€β”€ Limited mainnet: Acceptable with caps (<$10M TVL) +β”œβ”€β”€ Recommendation: Start small, scale gradually +└── Risk: Acceptable with proper risk management + +Aggressive View: +β”œβ”€β”€ Launch MOET: With current design +β”œβ”€β”€ Iterate fast: Fix issues as they arise +β”œβ”€β”€ Recommendation: Move fast, learn from mistakes +└── Risk: High, but manageable with monitoring +``` + +## Next Steps for Production Readiness + +### Phase 1: Critical Infrastructure (Pre-Mainnet) + +``` +1. Implement MOET/USD Oracle +β”œβ”€β”€ Deploy: Chainlink or similar price feed +β”œβ”€β”€ Monitor: Real-time peg tracking +└── Alert: Deviations > Β±2% + +2. Add Multi-Sig Minting +β”œβ”€β”€ Deploy: 3-of-5 multi-sig contract +β”œβ”€β”€ Transfer: Minter resource to multi-sig +└── Test: Minting process with multiple signers + +3. Create Reserve Fund +β”œβ”€β”€ Allocate: 10% of initial supply +β”œβ”€β”€ Management: Protocol-controlled +└── Use: Peg stabilization operations + +4. Security Audit +β”œβ”€β”€ Hire: 2-3 reputable audit firms +β”œβ”€β”€ Scope: MOET, ALP, FYV contracts +└── Fix: All critical and high-severity findings +``` + +### Phase 2: Enhanced Stability (0-3 Months Post-Launch) + +``` +1. Deploy Circuit Breakers +β”œβ”€β”€ Implement: Auto-pause on extreme volatility +β”œβ”€β”€ Thresholds: Β±20% collateral price moves +└── Recovery: Manual restart after review + +2. Liquidation Rate Limits +β”œβ”€β”€ Implement: Max liquidations per block +β”œβ”€β”€ Progressive bonuses: Decrease during mass liquidations +└── Monitoring: Alert on high liquidation volume + +3. Protocol-Owned Liquidity +β”œβ”€β”€ Deploy: 1M MOET + 1M USDC to DEX +β”œβ”€β”€ Monitor: Slippage and arbitrage efficiency +└── Adjust: Add more if needed + +4. Expand Oracle Coverage +β”œβ”€β”€ Add: Pyth and additional sources +β”œβ”€β”€ Implement: Median price aggregation +└── TWAP: Time-weighted averaging +``` + +### Phase 3: Decentralization (6-12 Months) + +``` +1. DAO Governance Launch +β”œβ”€β”€ Deploy: Governance token +β”œβ”€β”€ Distribute: To users and stakeholders +└── Proposals: Parameter changes via voting + +2. Algorithmic Minting Rules +β”œβ”€β”€ Codify: Minting conditions in smart contract +β”œβ”€β”€ Remove: Arbitrary admin minting +└── Governance: Only way to change rules + +3. Emergency Council +β”œβ”€β”€ Form: 5-7 member security council +β”œβ”€β”€ Powers: Limited to emergency pause only +└── Oversight: Community can remove members + +4. Full Transparency +β”œβ”€β”€ Dashboard: Real-time protocol metrics +β”œβ”€β”€ Analytics: Historical data and trends +└── Audits: Ongoing bug bounty program +``` + +## Conclusion + +MOET's stability relies on a multi-layered approach combining over-collateralization, liquidations, interest rate adjustments, and arbitrage incentives. While the current mock implementation lacks active stabilization mechanisms, the intended design provides substantial safety margins through: + +1. **162.5% collateralization** creating a significant buffer against volatility +2. **Liquidation systems** clearing bad debt before insolvency +3. **Economic incentives** through interest rates and arbitrage opportunities +4. **Automated capital flows** via FYV yield providing position protection + +For production deployment, critical enhancements are needed including MOET/USD oracles, reserve funds, multi-sig controls, and comprehensive audits. With these measures in place, MOET can serve as a stable, capital-efficient synthetic stablecoin powering the FCM ecosystem. + +**Key Takeaway for Analysts**: MOET's stability is fundamentally sound in design but requires additional infrastructure before large-scale production use. The over-collateralization model provides strong backing, but active monitoring and intervention capabilities are essential for maintaining the peg during extreme market conditions. + +## Additional Resources + +- **[Core Concepts](./basics.md)**: Fundamental MOET mechanics +- **[Tokenomics](./tokenomics.md)**: Supply dynamics and economic models +- **[System Integration](./integration.md)**: How MOET connects FCM components +- **[FCM Math](../fcm/math.md)**: Mathematical foundations of stability calculations +- **[ALP Liquidations](../alp/liquidation-system.md)**: Detailed liquidation mechanics diff --git a/docs/defi/moet/tokenomics.md b/docs/defi/moet/tokenomics.md new file mode 100644 index 0000000000..4278bcb434 --- /dev/null +++ b/docs/defi/moet/tokenomics.md @@ -0,0 +1,708 @@ +--- +title: MOET Tokenomics +sidebar_label: Tokenomics +sidebar_position: 2 +--- + +# MOET Tokenomics + +This document provides a comprehensive analysis of MOET's supply dynamics, minting and burning mechanisms, interest rate models, and economic incentives. + +## Supply Management + +MOET employs a **dynamic supply model** where total supply directly tracks outstanding debt across all ALP positions. + +### Supply Formula + +``` +Total MOET Supply = Total Outstanding Debt Across All Positions + +Supply Changes: +β”œβ”€β”€ Increases When: +β”‚ β”œβ”€β”€ Users borrow MOET from ALP positions +β”‚ β”œβ”€β”€ ALP auto-borrows during rebalancing (HF > 1.5) +β”‚ └── Interest accrues on existing debt +└── Decreases When: + β”œβ”€β”€ Users repay MOET debt + β”œβ”€β”€ Positions are liquidated (debt repaid by liquidators) + β”œβ”€β”€ ALP auto-repays during rebalancing (HF < 1.1) + └── Vaults containing MOET are destroyed +``` + +### Supply Dynamics Example + +**Day 1: Protocol Launch** + +``` +Initial State: +β”œβ”€β”€ Total MOET Supply: 0 +β”œβ”€β”€ Total Collateral Locked: $0 +β”œβ”€β”€ Active Positions: 0 +└── Utilization: N/A +``` + +**Day 7: Early Adoption** + +``` +User Activity: +β”œβ”€β”€ 10 users deposit collateral +β”œβ”€β”€ Total collateral value: $100,000 +β”œβ”€β”€ Average CF: 0.8, Average Target HF: 1.3 +β”œβ”€β”€ Total borrowed: $61,538 MOET + +Supply Metrics: +β”œβ”€β”€ Total MOET Supply: 61,538 tokens +β”œβ”€β”€ Backing: $100,000 collateral +β”œβ”€β”€ Average Collateralization: 162.5% +└── System Health: All positions HF > 1.3 +``` + +**Day 30: Growth Phase** + +``` +Market Activity: +β”œβ”€β”€ 100 users with active positions +β”œβ”€β”€ Total collateral value: $5,000,000 +β”œβ”€β”€ Total borrowed: $3,076,923 MOET +β”œβ”€β”€ Accrued interest (30 days @ 10% APY): ~$25,000 + +Supply Metrics: +β”œβ”€β”€ Total MOET Supply: 3,101,923 tokens +β”‚ β”œβ”€β”€ Principal: 3,076,923 MOET +β”‚ └── Interest: ~25,000 MOET +β”œβ”€β”€ Utilization: 62% (assuming $2M deposited, $3.1M borrowed capacity) +└── Interest Rate: ~8% APY (moderate utilization) +``` + +**Day 90: Market Volatility** + +``` +Price Crash Scenario: +β”œβ”€β”€ Collateral values drop 30% +β”œβ”€β”€ Remaining collateral value: $3,500,000 +β”œβ”€β”€ Outstanding debt: 3,101,923 MOET +β”œβ”€β”€ Many positions approach liquidation + +Automated Response: +β”œβ”€β”€ FYV provides: 500,000 MOET for debt repayment +β”œβ”€β”€ ALP burns: 500,000 MOET +β”œβ”€β”€ New supply: 2,601,923 MOET +β”œβ”€β”€ System health restored + +Supply Metrics After Rebalancing: +β”œβ”€β”€ Total MOET Supply: 2,601,923 tokens (-16%) +β”œβ”€β”€ Collateral value: $3,500,000 +β”œβ”€β”€ Average HF restored to: 1.3 +└── Crisis averted through automated deleveraging +``` + +**Key Insight**: Supply contracts during market stress as positions automatically deleverage, reducing systemic risk. + +## Minting Mechanics + +MOET tokens are created through a controlled minting process integrated with ALP borrowing operations. + +### Minter Resource + +**Contract Implementation:** + +```cadence +// Minter resource (simplified) +access(all) resource Minter { + access(all) fun mintTokens(amount: UFix64): @MOET.Vault { + // Create new MOET tokens + MOET.totalSupply = MOET.totalSupply + amount + + // Emit event for transparency + emit TokensMinted(amount: amount) + + // Return vault with minted tokens + return <-create Vault(balance: amount) + } +} +``` + +**Access Control:** + +- **Who Can Mint**: Only the account holding the Minter resource +- **Storage**: Stored at admin storage path on protocol deployer account +- **Current Status**: Centralized (single Minter created at contract initialization) +- **Production Plans**: Should transition to multi-sig or decentralized minting + +### Minting Trigger Flow + +**User-Initiated Borrowing:** + +``` +Step 1: User Deposits Collateral +β”œβ”€β”€ User calls: ALP.deposit(1000 FLOW) +β”œβ”€β”€ Position created with: collateralID +└── Collateral locked in Pool reserves + +Step 2: Borrow Capacity Calculation +β”œβ”€β”€ Collateral value: 1000 Γ— $1.00 = $1,000 +β”œβ”€β”€ Collateral factor: 0.8 +β”œβ”€β”€ Effective collateral: $800 +β”œβ”€β”€ Target health: 1.3 +β”œβ”€β”€ Max borrow: $800 / 1.3 = $615.38 +└── Borrowable amount determined + +Step 3: Minting Request +β”œβ”€β”€ ALP calls: Minter.mintTokens(615.38) +β”œβ”€β”€ Minter creates: 615.38 new MOET tokens +β”œβ”€β”€ Vault returned to: ALP Pool +└── Event emitted: TokensMinted(amount: 615.38, ...) + +Step 4: Debt Recording +β”œβ”€β”€ Position debt set to: 615.38 MOET (scaled balance) +β”œβ”€β”€ Interest index captured: Iβ‚€ +β”œβ”€β”€ Position state updated: {collateral: 1000 FLOW, debt: 615.38 MOET} +└── Health factor: 1.30 + +Step 5: Token Distribution +β”œβ”€β”€ If pushToDrawDownSink=true: +β”‚ └── MOET flows to: FYV strategy +β”œβ”€β”€ If pushToDrawDownSink=false: +β”‚ └── MOET sent to: User's wallet +└── User can now utilize MOET for yield farming +``` + +**Automated Rebalancing (HF > 1.5):** + +``` +Scenario: Collateral Price Increases +β”œβ”€β”€ Original: 1000 FLOW @ $1.00, debt 615.38 MOET +β”œβ”€β”€ New price: FLOW @ $1.50 (+50%) +β”œβ”€β”€ New collateral value: $1,500 +β”œβ”€β”€ Effective collateral: $1,500 Γ— 0.8 = $1,200 +β”œβ”€β”€ Current HF: $1,200 / $615.38 = 1.95 > 1.5 ⚠️ +└── Opportunity for more leverage + +Automated Minting: +β”œβ”€β”€ Target HF: 1.3 +β”œβ”€β”€ New max debt: $1,200 / 1.3 = $923.08 +β”œβ”€β”€ Additional borrow: $923.08 - $615.38 = $307.70 +β”œβ”€β”€ ALP mints: 307.70 MOET +β”œβ”€β”€ Debt updated: 615.38 β†’ 923.08 MOET +β”œβ”€β”€ HF restored: $1,200 / $923.08 = 1.30 βœ“ +└── Extra MOET flows to FYV for yield generation +``` + +### Minting Limits and Controls + +**Current Implementation (Mock):** + +- **No Hard Cap**: Unlimited MOET can be minted +- **Collateral Constraint**: Minting limited by available collateral and CF/HF ratios +- **Implicit Cap**: Total supply ≀ (Total Collateral Value Γ— Average CF) / Average Target HF + +**Production Requirements:** + +``` +Recommended Limits: +β”œβ”€β”€ Per-Transaction Limit: e.g., max 100,000 MOET per mint +β”œβ”€β”€ Daily Minting Cap: e.g., max 1,000,000 MOET per 24 hours +β”œβ”€β”€ Total Supply Cap: e.g., 100,000,000 MOET absolute maximum +β”œβ”€β”€ Emergency Pause: Ability to halt minting during crises +└── Multi-Sig Approval: Require 3-of-5 signatures for minting + +Risk Mitigation: +β”œβ”€β”€ Prevents single-transaction exploits +β”œβ”€β”€ Limits daily supply inflation +β”œβ”€β”€ Creates upper bound for systemic risk +β”œβ”€β”€ Enables crisis response +└── Reduces centralization risk +``` + +## Burning Mechanics + +MOET tokens are permanently destroyed when debt is repaid, automatically reducing total supply. + +### Burn Callback + +**Contract Implementation:** + +```cadence +// Automatic burn on vault destruction +access(contract) fun burnCallback() { + if self.balance > 0 { + // Reduce total supply + MOET.totalSupply = MOET.totalSupply - self.balance + + // Emit event + emit TokensBurned(amount: self.balance) + + // Zero out balance before destruction + self.balance = 0 + } +} + +// Called when vault is destroyed +destroy() { + // Automatic burn before destruction + self.burnCallback() + // Vault destroyed +} +``` + +**Key Features:** + +- **Automatic**: Burns happen automatically when vaults are destroyed +- **Supply Accounting**: Ensures total supply always accurate +- **Transparent**: Events emitted for every burn operation +- **Irreversible**: Destroyed MOET cannot be recovered + +### Burning Trigger Flow + +**Debt Repayment:** + +``` +Step 1: User Initiates Repayment +β”œβ”€β”€ User's position: 615.38 MOET debt +β”œβ”€β”€ User has: 615.38 MOET in wallet +└── User calls: ALP.repay(615.38 MOET) + +Step 2: Token Transfer +β”œβ”€β”€ MOET transferred from: User's wallet +β”œβ”€β”€ MOET transferred to: ALP Pool +└── Vault received by protocol + +Step 3: Debt Settlement +β”œβ”€β”€ Position debt reduced: 615.38 β†’ 0 MOET +β”œβ”€β”€ Scaled balance updated: 0 +β”œβ”€β”€ Interest index: Captured for final calculation +└── Position debt cleared + +Step 4: Automatic Burn +β”œβ”€β”€ ALP destroys received vault: destroy moetVault +β”œβ”€β”€ burnCallback() executed automatically +β”œβ”€β”€ Total supply reduced: 615.38 MOET +β”œβ”€β”€ Event emitted: TokensBurned(amount: 615.38) +└── MOET permanently removed from circulation + +Step 5: Collateral Release +β”œβ”€β”€ With debt = 0, HF = infinite +β”œβ”€β”€ User can withdraw: All collateral +└── Position can be closed +``` + +**Liquidation Burning:** + +``` +Scenario: Underwater Position +β”œβ”€β”€ Collateral: 1000 FLOW @ $0.60 = $600 +β”œβ”€β”€ Effective collateral: $600 Γ— 0.8 = $480 +β”œβ”€β”€ Debt: 615.38 MOET +β”œβ”€β”€ HF: $480 / $615.38 = 0.78 < 1.0 ⚠️ +└── Position liquidatable + +Liquidator Action: +β”œβ”€β”€ Liquidator has: 200 MOET +β”œβ”€β”€ Calls: ALP.liquidate(positionID, 200 MOET) +└── Goal: Profit from liquidation bonus + +Burning Process: +β”œβ”€β”€ Step 1: Receive 200 MOET from liquidator +β”œβ”€β”€ Step 2: Calculate collateral seizure +β”‚ └── Seized: (200 Γ— 1.05) / $0.60 = 350 FLOW +β”œβ”€β”€ Step 3: Transfer 350 FLOW to liquidator +β”œβ”€β”€ Step 4: Reduce position debt: 615.38 β†’ 415.38 MOET +β”œβ”€β”€ Step 5: Destroy 200 MOET vault (automatic burn) +β”œβ”€β”€ Step 6: Total supply: Reduced by 200 MOET +└── Step 7: Position remains open with 650 FLOW, 415.38 MOET debt + +Result: +β”œβ”€β”€ 200 MOET permanently burned +β”œβ”€β”€ System becomes more solvent (debt ↓, collateral remains) +β”œβ”€β”€ Liquidator profits incentivize future liquidations +└── Peg pressure alleviated (supply reduction) +``` + +**Automated Rebalancing Burn (HF < 1.1):** + +``` +Scenario: Collateral Price Drop +β”œβ”€β”€ Original: 1000 FLOW @ $1.00, debt 615.38 MOET +β”œβ”€β”€ New price: FLOW @ $0.85 (-15%) +β”œβ”€β”€ New collateral value: $850 +β”œβ”€β”€ Effective collateral: $850 Γ— 0.8 = $680 +β”œβ”€β”€ Current HF: $680 / $615.38 = 1.11 > 1.0 but < 1.1 ⚠️ +└── Below minimum threshold + +Automated Burning: +β”œβ”€β”€ Target HF: 1.3 +β”œβ”€β”€ New target debt: $680 / 1.3 = $523.08 +β”œβ”€β”€ Must repay: $615.38 - $523.08 = $92.30 MOET +β”œβ”€β”€ ALP pulls from TopUpSource (FYV) +β”œβ”€β”€ FYV provides: 92.30 MOET (from yield) +β”œβ”€β”€ ALP burns: 92.30 MOET (debt repayment) +β”œβ”€β”€ Debt updated: 615.38 β†’ 523.08 MOET +β”œβ”€β”€ HF restored: $680 / $523.08 = 1.30 βœ“ +└── Supply reduced: 615.38 β†’ 523.08 MOET +``` + +### Burn Rate Analysis + +**Factors Influencing Burn Rate:** + +``` +High Burn Rate (Supply Contracts): +β”œβ”€β”€ Market downturns β†’ Forced deleveraging +β”œβ”€β”€ Rising interest rates β†’ Incentivized repayment +β”œβ”€β”€ Liquidations β†’ Debt cleared by liquidators +β”œβ”€β”€ Yield maturity β†’ FYV returns exceed new borrowing +└── Collateral appreciation β†’ Users reduce leverage + +Low Burn Rate (Supply Expands): +β”œβ”€β”€ Bull markets β†’ More borrowing demand +β”œβ”€β”€ Low interest rates β†’ Cheap capital attracts users +β”œβ”€β”€ High yield opportunities β†’ More FYV deployment +β”œβ”€β”€ New collateral types β†’ Expanded borrowing capacity +└── Protocol growth β†’ More users entering system +``` + +**Example Burn Scenarios:** + +``` +Bear Market (30 Days): +β”œβ”€β”€ Total supply start: 3,100,000 MOET +β”œβ”€β”€ Liquidations: -200,000 MOET burned +β”œβ”€β”€ Auto-rebalancing: -500,000 MOET burned +β”œβ”€β”€ Voluntary repayment: -300,000 MOET burned +β”œβ”€β”€ New borrowing: +150,000 MOET minted +β”œβ”€β”€ Net change: -850,000 MOET +└── Total supply end: 2,250,000 MOET (-27.4%) + +Bull Market (30 Days): +β”œβ”€β”€ Total supply start: 2,250,000 MOET +β”œβ”€β”€ New borrowing: +800,000 MOET minted +β”œβ”€β”€ Auto-leverage: +300,000 MOET minted +β”œβ”€β”€ Repayments: -150,000 MOET burned +β”œβ”€β”€ Liquidations: -50,000 MOET burned +β”œβ”€β”€ Net change: +900,000 MOET +└── Total supply end: 3,150,000 MOET (+40%) +``` + +**Key Insight**: Supply naturally contracts during stress (reducing risk) and expands during growth (increasing capital efficiency). + +## Interest Rate Model + +MOET borrowing costs are determined by a **utilization-based interest rate curve** that automatically balances supply and demand. + +### Utilization Rate + +``` +Utilization Rate (U) = Total MOET Borrowed / Total MOET Available + +Components: +β”œβ”€β”€ Total MOET Borrowed: Sum of all debt across positions +β”œβ”€β”€ Total MOET Available: MOET deposited + mintable capacity +└── Range: 0% (no borrowing) to 100% (fully utilized) +``` + +### Interest Rate Curve + +**Kink Model** (similar to Compound/Aave): + +``` +Rate Calculation: +β”œβ”€β”€ If U ≀ Optimal Utilization (e.g., 80%): +β”‚ └── Rate = BaseRate + (U / OptimalU) Γ— Multiplier +└── If U > Optimal Utilization: + └── Rate = BaseRate + Multiplier + ((U - OptimalU) / (1 - OptimalU)) Γ— JumpMultiplier + +Example Parameters: +β”œβ”€β”€ BaseRate: 2% APY +β”œβ”€β”€ Multiplier: 8% APY +β”œβ”€β”€ OptimalUtilization: 80% +β”œβ”€β”€ JumpMultiplier: 40% APY +└── MaxRate: 50% APY (at 100% utilization) +``` + +**Visual Representation:** + +``` +Interest Rate vs. Utilization + + 50% β”‚ β•± + β”‚ β•± + 40% β”‚ β•± + β”‚ β•± + 30% β”‚ β•± + β”‚ β•± + 20% β”‚ ╱╱╱← Kink at 80% utilization + β”‚ β•±β•±β•± + 10% β”‚ β•±β•±β•± + β”‚ β•±β•±β•± + 2% β”‚β•±β•±β•±β•±β•±β•±β•± + └───────────────────────────────────── + 0% 20% 40% 60% 80% 100% + Utilization Rate +``` + +### Interest Rate Examples + +**Low Utilization (20%):** + +``` +Market Conditions: +β”œβ”€β”€ Total MOET capacity: 10,000,000 +β”œβ”€β”€ Total MOET borrowed: 2,000,000 +β”œβ”€β”€ Utilization: 20% +└── Plenty of available capital + +Interest Rate Calculation: +β”œβ”€β”€ U = 20% < 80% (below kink) +β”œβ”€β”€ Rate = 2% + (20%/80%) Γ— 8% +β”œβ”€β”€ Rate = 2% + 0.25 Γ— 8% +β”œβ”€β”€ Rate = 2% + 2% +└── Borrowing Cost: 4% APY + +Market Effect: +β”œβ”€β”€ Cheap borrowing encourages more positions +β”œβ”€β”€ Lenders earn low yield (limited demand) +└── System incentivizes borrowing to increase utilization +``` + +**Optimal Utilization (80%):** + +``` +Market Conditions: +β”œβ”€β”€ Total MOET capacity: 10,000,000 +β”œβ”€β”€ Total MOET borrowed: 8,000,000 +β”œβ”€β”€ Utilization: 80% +└── Balanced market + +Interest Rate Calculation: +β”œβ”€β”€ U = 80% (at kink) +β”œβ”€β”€ Rate = 2% + (80%/80%) Γ— 8% +β”œβ”€β”€ Rate = 2% + 1.0 Γ— 8% +β”œβ”€β”€ Rate = 2% + 8% +└── Borrowing Cost: 10% APY + +Market Effect: +β”œβ”€β”€ Moderate borrowing cost +β”œβ”€β”€ Lenders earn attractive yield +└── System in equilibrium +``` + +**High Utilization (95%):** + +``` +Market Conditions: +β”œβ”€β”€ Total MOET capacity: 10,000,000 +β”œβ”€β”€ Total MOET borrowed: 9,500,000 +β”œβ”€β”€ Utilization: 95% +└── Capital constrained + +Interest Rate Calculation: +β”œβ”€β”€ U = 95% > 80% (above kink) +β”œβ”€β”€ Rate = 2% + 8% + ((95% - 80%) / (100% - 80%)) Γ— 40% +β”œβ”€β”€ Rate = 10% + (15% / 20%) Γ— 40% +β”œβ”€β”€ Rate = 10% + 0.75 Γ— 40% +β”œβ”€β”€ Rate = 10% + 30% +└── Borrowing Cost: 40% APY + +Market Effect: +β”œβ”€β”€ Very expensive borrowing discourages new positions +β”œβ”€β”€ High rates incentivize debt repayment +β”œβ”€β”€ Lenders earn exceptional yield +└── System self-balances toward optimal utilization +``` + +### Compound Interest Accrual + +MOET uses continuous compounding through the scaled balance system: + +**Interest Index Growth:** + +``` +Index Update Formula: +I(t+1) = I(t) Γ— (1 + r Γ— Ξ”t) + +Where: +β”œβ”€β”€ I(t): Current interest index +β”œβ”€β”€ r: Interest rate per second +β”œβ”€β”€ Ξ”t: Time elapsed since last update +└── I(t+1): New interest index + +Example (10% APY): +β”œβ”€β”€ Iβ‚€ = 1.0 (initial) +β”œβ”€β”€ r = 10% / (365.25 Γ— 24 Γ— 3600) = 3.17 Γ— 10⁻⁹ per second +β”œβ”€β”€ After 30 days: +β”‚ β”œβ”€β”€ Ξ”t = 30 Γ— 24 Γ— 3600 = 2,592,000 seconds +β”‚ β”œβ”€β”€ I₃₀ = 1.0 Γ— (1 + 3.17Γ—10⁻⁹ Γ— 2,592,000) +β”‚ └── I₃₀ β‰ˆ 1.00821 (0.821% growth in 30 days) +└── After 1 year: I₃₆₅ β‰ˆ 1.10517 (10.517% including compounding) +``` + +**User Debt Calculation:** + +``` +True Debt = Scaled Balance Γ— Current Index + +Example: +β”œβ”€β”€ User borrows: 1,000 MOET at Iβ‚€ = 1.0 +β”œβ”€β”€ Scaled balance stored: 1,000 +β”œβ”€β”€ After 1 year: I₃₆₅ = 1.10517 +β”œβ”€β”€ True debt: 1,000 Γ— 1.10517 = 1,105.17 MOET +└── Interest accrued: 105.17 MOET (10.517%) + +Gas Efficiency: +β”œβ”€β”€ Only global index updated per block +β”œβ”€β”€ Individual balances never updated in storage +β”œβ”€β”€ Calculation performed on-demand +└── Scales to millions of positions efficiently +``` + +## Economic Incentives + +MOET's tokenomics create aligned incentives for all participants: + +### For Borrowers + +**Benefits:** + +``` +Cheap Leverage: +β”œβ”€β”€ Borrow at: 5-10% APY (typical) +β”œβ”€β”€ Deploy to FYV yielding: 10-20% APY +β”œβ”€β”€ Net profit: 5-10% APY on borrowed capital +└── Amplified returns on collateral + +Capital Efficiency: +β”œβ”€β”€ 1000 FLOW collateral β†’ 615 MOET borrowed +β”œβ”€β”€ Total exposure: 1615 MOET equivalent +β”œβ”€β”€ Effective leverage: 1.615x +└── Higher returns than holding collateral alone + +Automated Protection: +β”œβ”€β”€ FYV yield auto-repays during downturns +β”œβ”€β”€ No manual position management needed +β”œβ”€β”€ Reduced liquidation risk +└── Peace of mind +``` + +**Costs:** + +``` +Interest Payments: +β”œβ”€β”€ Debt grows at: Current APY (5-40%) +β”œβ”€β”€ Must be repaid eventually +└── Erodes profits if yield < interest + +Liquidation Risk: +β”œβ”€β”€ If HF < 1.0, position liquidatable +β”œβ”€β”€ Lose collateral (minus debt) +β”œβ”€β”€ 5% penalty to liquidator +└── Must monitor position health +``` + +### For Liquidators + +**Profit Opportunity:** + +``` +Liquidation Profit: +β”œβ”€β”€ Repay: X MOET of underwater debt +β”œβ”€β”€ Receive: X Γ— (1 + bonus) / collateral_price in collateral +β”œβ”€β”€ Bonus: Typically 5% +└── Risk-free arbitrage when HF < 1.0 + +Example: +β”œβ”€β”€ Repay: 1,000 MOET +β”œβ”€β”€ Collateral: FLOW @ $0.80 +β”œβ”€β”€ Receive: (1,000 Γ— 1.05) / $0.80 = 1,312.5 FLOW +β”œβ”€β”€ Value: 1,312.5 Γ— $0.80 = $1,050 +β”œβ”€β”€ Profit: $1,050 - $1,000 = $50 (5%) +└── Incentivizes holding MOET for liquidation opportunities +``` + +**Requirements:** + +``` +Capital Needed: +β”œβ”€β”€ Must hold MOET to liquidate +β”œβ”€β”€ Larger positions = more profit +└── Creates natural MOET demand + +Monitoring: +β”œβ”€β”€ Run keeper bots to detect liquidations +β”œβ”€β”€ Gas costs for transactions +β”œβ”€β”€ Competition with other liquidators +└── Requires technical infrastructure +``` + +### For Protocol (DAO/Treasury) + +**Revenue Streams** (future implementation): + +``` +Protocol Fees: +β”œβ”€β”€ Interest spread: 10% of interest paid +β”œβ”€β”€ Liquidation fees: 1% of liquidated value +β”œβ”€β”€ Minting fees: Small fee on MOET creation +└── Withdrawal fees: Small fee on collateral withdrawal + +Example Revenue (1 month): +β”œβ”€β”€ Total debt: 10,000,000 MOET @ 10% APY +β”œβ”€β”€ Monthly interest: 10,000,000 Γ— 0.10 / 12 = 83,333 MOET +β”œβ”€β”€ Protocol fee: 83,333 Γ— 0.10 = 8,333 MOET +β”œβ”€β”€ Liquidations: 500,000 MOET Γ— 0.01 = 5,000 MOET +β”œβ”€β”€ Total revenue: 13,333 MOET/month +└── Use for: Development, security audits, reserves +``` + +## Token Metrics Summary + +**Supply Characteristics:** + +| Metric | Value | +|--------|-------| +| **Initial Supply** | 0 MOET (mainnet/testnet), 1M MOET (emulator) | +| **Max Supply** | Unlimited (constrained by collateral) | +| **Supply Type** | Dynamic (elastic) | +| **Issuance** | Mint-on-borrow | +| **Destruction** | Burn-on-repay (automatic) | +| **Backing** | Over-collateralized debt positions | + +**Economic Parameters:** + +| Parameter | Typical Value | +|-----------|---------------| +| **Collateral Factor** | 0.8 (80%) | +| **Target Health Factor** | 1.3 | +| **Collateralization Ratio** | 162.5% | +| **Base Interest Rate** | 2% APY | +| **Optimal Utilization** | 80% | +| **Max Interest Rate** | 50% APY | +| **Liquidation Bonus** | 5% | +| **Minimum Health Factor** | 1.0 (liquidation threshold) | + +**Growth Metrics Example:** + +``` +Month 1: +β”œβ”€β”€ Supply: 1,000,000 MOET +β”œβ”€β”€ Collateral: $1,625,000 +β”œβ”€β”€ Positions: 50 +└── Utilization: 40% + +Month 6: +β”œβ”€β”€ Supply: 10,000,000 MOET (+900%) +β”œβ”€β”€ Collateral: $16,250,000 (+900%) +β”œβ”€β”€ Positions: 500 (+900%) +└── Utilization: 65% (+62.5%) + +Month 12: +β”œβ”€β”€ Supply: 50,000,000 MOET (+400%) +β”œβ”€β”€ Collateral: $81,250,000 (+400%) +β”œβ”€β”€ Positions: 2,500 (+400%) +└── Utilization: 75% (+15.4%) +``` + +## Next Steps + +- **[System Integration](./integration.md)**: Learn how MOET connects ALP, FYV, and FCM +- **[Stability Mechanisms](./stability.md)**: Understand risk management and safety measures +- **[FCM Math](../fcm/math.md)**: Explore the mathematical formulas behind MOET mechanics From 5b73bf453fd8667eb6cacc804b6934d859d50093 Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Tue, 13 Jan 2026 14:17:29 -0600 Subject: [PATCH 11/13] Fix broken markdown link to Flow Actions documentation Remove anchor fragment from DeFi Actions PriceOracle link to resolve build error --- docs/defi/alp/architecture.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/defi/alp/architecture.md b/docs/defi/alp/architecture.md index bb8c58bb1a..7b487a76c9 100644 --- a/docs/defi/alp/architecture.md +++ b/docs/defi/alp/architecture.md @@ -114,7 +114,7 @@ This system is highly gas efficient since it eliminates per-user balance updates ### Price Oracle -The **Price Oracle** provides real-time token prices denominated in [MOET](../moet/index.md) terms, implementing the [DeFi Actions PriceOracle interface](../../../blockchain-development-tutorials/forte/flow-actions/intro-to-flow-actions.md#price-oracle) for standardized price queries across the protocol. The oracle is critical for accurate health factor calculations, liquidation triggers, and collateral valuations. +The **Price Oracle** provides real-time token prices denominated in [MOET](../moet/index.md) terms, implementing the [DeFi Actions PriceOracle interface](../../blockchain-development-tutorials/forte/flow-actions/intro-to-flow-actions.md) for standardized price queries across the protocol. The oracle is critical for accurate health factor calculations, liquidation triggers, and collateral valuations. **Core Functionality:** From 957beb3d4cd97d776f5e16aef3ed9478ad7ba60d Mon Sep 17 00:00:00 2001 From: Felipe Cevallos Date: Thu, 15 Jan 2026 11:31:01 -0600 Subject: [PATCH 12/13] Improve documentation clarity and visual consistency --- .../forte/fix-point-128-bit-math.md | 532 ++++++++++++++++++ .../integrations/crossmint/authentication.md | 2 +- .../crossmint/minting-platform.md | 2 +- .../crossmint/payment-checkout.md | 2 +- docs/defi/alp/architecture.md | 38 +- docs/defi/alp/credit-market-mechanics.md | 19 +- docs/defi/alp/index.md | 28 +- docs/defi/alp/moet-role.md | 142 +---- docs/defi/alp/position-lifecycle.md | 42 +- docs/defi/fcm/architecture.md | 104 ++-- docs/defi/fcm/basics.md | 91 ++- docs/defi/fcm/index.md | 32 +- docs/defi/fcm/math.md | 10 +- 13 files changed, 704 insertions(+), 340 deletions(-) create mode 100644 docs/blockchain-development-tutorials/forte/fix-point-128-bit-math.md diff --git a/docs/blockchain-development-tutorials/forte/fix-point-128-bit-math.md b/docs/blockchain-development-tutorials/forte/fix-point-128-bit-math.md new file mode 100644 index 0000000000..4700eed34a --- /dev/null +++ b/docs/blockchain-development-tutorials/forte/fix-point-128-bit-math.md @@ -0,0 +1,532 @@ +--- +title: High-Precision Fixed-Point Math +description: Learn about Flow's high-precision mathematical utilities for DeFi applications using UInt128-based 24-decimal fixed-point arithmetic for accurate financial calculations. +keywords: + - DeFi math + - fixed-point arithmetic + - UInt128 + - high precision + - financial calculations + - rounding modes + - math utilities + - UFix64 conversion + - DeFi Actions + - price calculations +sidebar_label: DeFi Math Utils +--- + +# High-Precision Fixed-Point 128 Bit Math + +Dealing with decimals is a notorious issue for most developers on other chains, especially when working with DeFi. Blockchains are deterministic systems and floating-point arithmetic is non-deterministic across different compilers and architectures, this is why blockchains use fixed-point arithmetic via integers (scaling numbers by a fixed factor). The issue with this is that these fixed-point integers tend to be very imprecise when using various mathematical operations on them. The more operations you apply to these numbers, the more imprecise these numbers become. However [`DeFiActionsMathUtils`] provides a standardized library for high-precision mathematical operations in DeFi applications on Flow. The contract extends Cadence's native 8-decimal precision (`UFix64`) to 24 decimals using `UInt128` for intermediate calculations, ensuring accuracy in complex financial computations while maintaining deterministic results across the network. + +Through integration of this math utility library, developers can ensure that their DeFi protocols perform precise calculations for liquidity pools, yield farming, token swaps, and other financial operations without accumulating rounding errors. + +:::info + +While this documentation focuses on DeFi use cases, these mathematical utilities can be used for any application requiring high-precision decimal arithmetic beyond the native 8-decimal limitation of `UFix64`. + +::: + +## The Precision Problem + +DeFi applications often require multiple sequential calculations, and each operation can introduce rounding errors. When these errors compound over multiple operations, they can lead to: + +- Price manipulation vulnerabilities +- Incorrect liquidity calculations +- Unfair token distributions +- Arbitrage opportunities from precision loss + +Consider a simple example: + +```cadence +// Native UFix64 with 8 decimals +let price: UFix64 = 1.23456789 // Actually stored as 1.23456789 +let amount: UFix64 = 1000000.0 +let fee: UFix64 = 0.003 // 0.3% + +// Multiple operations compound rounding errors +let afterFee = amount * (1.0 - fee) // Some precision lost +let output = afterFee * price // More precision lost +let finalAmount = output / someRatio // Even more precision lost +``` + +After 3-4 sequential operations, the cumulative rounding error can be significant, especially when dealing with large amounts. Assuming a rounding error with 8 decimals (1.234567885 rounds up to 1.23456789, causing a rounding error of 0.000000005), then after 100 operations with this error and dealing with 1 million dollars USDF, the protocol is losing $0.5 in revenue from this lack of precision. This might not seem like a lot, but if we consider the TVL of Aave, which is around 40 billion USD, then that loss results in $20,000 USD! + +## The Solution: 24-Decimal Precision + +[`DeFiActionsMathUtils`] solves this by using `UInt128` to represent fixed-point numbers with 24 decimal places (scaling factor of 10^24). This provides 16 additional decimal places for intermediate calculations, dramatically reducing precision loss. + +:::Warning + +Note: There is still some precision loss occurring, but it is orders of magnitud smaller than with 8 decimals. + +::: + +### The Three-Tier Precision System + +The contract implements a precision sandwich pattern: + +1. **Input Layer**: `UFix64` (8 decimals) - User-facing values +2. **Processing Layer**: `UInt128` (24 decimals) - Internal calculations +3. **Output Layer**: `UFix64` (8 decimals) - Final results with smart rounding + +```cadence +// Import the contract +import DeFiActionsMathUtils from 'ContractAddress' + +// Convert UFix64 to high-precision UInt128 +let inputAmount: UFix64 = 1000.12345678 +let highPrecision = DeFiActionsMathUtils.toUInt128(inputAmount) +// highPrecision now represents 1000.123456780000000000000000 (24 decimals) + +// Perform calculations at 24-decimal precision +let result = DeFiActionsMathUtils.mul(highPrecision, anotherValue) + +// Convert back to UFix64 with rounding +let output = DeFiActionsMathUtils.toUFix64Round(result) +``` + +## Core Constants + +The contract defines several key constants: + +```cadence +access(all) let e24: UInt128 // 10^24 = 1,000,000,000,000,000,000,000,000 +access(all) let e8: UInt128 // 10^8 = 100,000,000 +access(all) let decimals: UInt8 // 24 +``` + +These constants ensure consistent scaling across all operations. + +## Rounding Modes + +Smart rounding is the strategic selection of rounding strategies based on the financial context of your calculation. After performing high-precision calculations at 24 decimals, the final results must be converted back to `UFix64` (8 decimals), and how you handle this conversion can protect your protocol from losses, ensure fairness to users, and reduce systematic bias. + +[`DeFiActionsMathUtils`] provides four rounding modes, each optimized for specific financial scenarios: + +```cadence +access(all) enum RoundingMode: UInt8 { + /// Rounds down (floor) - use for payouts + access(all) case RoundDown + + /// Rounds up (ceiling) - use for fees/liabilities + access(all) case RoundUp + + /// Standard rounding: < 0.5 down, >= 0.5 up + access(all) case RoundHalfUp + + /// Banker's rounding: ties round to even number + access(all) case RoundEven +} +``` + +### When to Use Each Mode + +**RoundDown** - Choose this when calculating user payouts, withdrawals, or rewards. By rounding down, your protocol retains any fractional amounts, protecting against losses from accumulated rounding errors. This is the conservative choice when funds leave your protocol. + +```cadence +// When calculating how much to pay out to users +let userReward = DeFiActionsMathUtils.toUFix64RoundDown(calculatedReward) +``` + +**RoundUp** - Use this for protocol fees, transaction costs, or amounts owed to your protocol. Rounding up ensures your protocol collects slightly more, compensating for precision loss and preventing systematic under-collection of fees over many transactions. + +```cadence +// When calculating fees the protocol collects +let protocolFee = DeFiActionsMathUtils.toUFix64RoundUp(calculatedFee) +``` + +**RoundHalfUp** - Apply this for general-purpose calculations, display values, or when presenting prices to users. This is the familiar rounding method (values 0.5 and above round up, below 0.5 round down) that users expect in traditional finance. + +```cadence +// For display values or general calculations +let displayValue = DeFiActionsMathUtils.toUFix64Round(calculatedValue) +``` + +**RoundEven** - Select this for scenarios involving many repeated calculations where you want to minimize systematic bias. Also known as "[banker's rounding]", this mode rounds ties (exactly 0.5) to the nearest even number, which statistically balances out over many operations, making it ideal for large-scale distributions or statistical calculations. + +```cadence +// For repeated operations where bias matters +let unbiasedValue = DeFiActionsMathUtils.toUFix64(calculatedValue, DeFiActionsMathUtils.RoundingMode.RoundEven) +``` + +## Core Functions + +### Conversion Functions + +**Converting UFix64 to UInt128** + +```cadence +access(all) view fun toUInt128(_ value: UFix64): UInt128 +``` + +Converts a `UFix64` value to `UInt128` with 24-decimal precision. + +**Example:** + +```cadence +import DeFiActionsMathUtils from 'ContractAddress' + +let price: UFix64 = 123.45678900 +let highPrecisionPrice = DeFiActionsMathUtils.toUInt128(price) +// highPrecisionPrice = 123456789000000000000000000 (represents 123.45678900... with 24 decimals) +``` + +**Converting UInt128 to UFix64** + +```cadence +access(all) view fun toUFix64(_ value: UInt128, _ roundingMode: RoundingMode): UFix64 +access(all) view fun toUFix64Round(_ value: UInt128): UFix64 +access(all) view fun toUFix64RoundDown(_ value: UInt128): UFix64 +access(all) view fun toUFix64RoundUp(_ value: UInt128): UFix64 +``` + +Converts a `UInt128` value back to `UFix64`, applying the specified rounding strategy. + +**Example:** + +```cadence +let highPrecisionValue: UInt128 = 1234567890123456789012345678 +let roundedValue = DeFiActionsMathUtils.toUFix64Round(highPrecisionValue) +// roundedValue = 1234567.89012346 (rounded to 8 decimals using RoundHalfUp) + +let flooredValue = DeFiActionsMathUtils.toUFix64RoundDown(highPrecisionValue) +// flooredValue = 1234567.89012345 (truncated to 8 decimals) + +let ceilingValue = DeFiActionsMathUtils.toUFix64RoundUp(highPrecisionValue) +// ceilingValue = 1234567.89012346 (rounded up to 8 decimals) +``` + +## High-Precision Arithmetic + +### Multiplication + +```cadence +access(all) view fun mul(_ x: UInt128, _ y: UInt128): UInt128 +``` + +Multiplies two 24-decimal fixed-point numbers, maintaining precision. + +**Example:** + +```cadence +let amount = DeFiActionsMathUtils.toUInt128(1000.0) +let price = DeFiActionsMathUtils.toUInt128(1.5) + +let totalValue = DeFiActionsMathUtils.mul(amount, price) +let result = DeFiActionsMathUtils.toUFix64Round(totalValue) +// result = 1500.0 +``` + +:::info + +**Important:** The multiplication uses `UInt256` internally to prevent overflow: + +::: + +```cadence +// Internal implementation prevents overflow +return UInt128(UInt256(x) * UInt256(y) / UInt256(e24)) +``` + +### Division + +```cadence +access(all) view fun div(_ x: UInt128, _ y: UInt128): UInt128 +``` + +Divides two 24-decimal fixed-point numbers, maintaining precision. + +**Example:** + +```cadence +let totalValue = DeFiActionsMathUtils.toUInt128(1500.0) +let shares = DeFiActionsMathUtils.toUInt128(3.0) + +let pricePerShare = DeFiActionsMathUtils.div(totalValue, shares) +let result = DeFiActionsMathUtils.toUFix64Round(pricePerShare) +// result = 500.0 +``` + +### UFix64 Division with Rounding + +For convenience, the contract provides direct division functions that handle +conversion and rounding in one call: + +```cadence +access(all) view fun divUFix64WithRounding(_ x: UFix64, _ y: UFix64): UFix64 +access(all) view fun divUFix64WithRoundingUp(_ x: UFix64, _ y: UFix64): UFix64 +access(all) view fun divUFix64WithRoundingDown(_ x: UFix64, _ y: UFix64): UFix64 +``` + +**Example:** + +```cadence +let totalAmount: UFix64 = 1000.0 +let numberOfUsers: UFix64 = 3.0 + +// Standard rounding +let perUserStandard = DeFiActionsMathUtils.divUFix64WithRounding(totalAmount, numberOfUsers) +// perUserStandard = 333.33333333 + +// Round down (conservative for payouts) +let perUserSafe = DeFiActionsMathUtils.divUFix64WithRoundingDown(totalAmount, numberOfUsers) +// perUserSafe = 333.33333333 + +// Round up (conservative for fees) +let perUserFee = DeFiActionsMathUtils.divUFix64WithRoundingUp(totalAmount, numberOfUsers) +// perUserFee = 333.33333334 +``` + +## Common DeFi Use Cases + +### Liquidity Pool Pricing (Constant Product AMM) + +Automated Market Makers like Uniswap use the formula `x * y = k`. Here's how to calculate swap outputs with high precision: + +```cadence +import DeFiActionsMathUtils from 'ContractAddress' +import FungibleToken from 'FungibleTokenAddress' + +access(all) fun calculateSwapOutput( + inputAmount: UFix64, + inputReserve: UFix64, + outputReserve: UFix64, + feeBasisPoints: UFix64 // e.g., 30 for 0.3% +): UFix64 { + // Convert to high precision + let input = DeFiActionsMathUtils.toUInt128(inputAmount) + let reserveIn = DeFiActionsMathUtils.toUInt128(inputReserve) + let reserveOut = DeFiActionsMathUtils.toUInt128(outputReserve) + let fee = DeFiActionsMathUtils.toUInt128(feeBasisPoints) + let basisPoints = DeFiActionsMathUtils.toUInt128(10000.0) + + // Calculate: inputWithFee = inputAmount * (10000 - fee) + let feeMultiplier = DeFiActionsMathUtils.div( + basisPoints - fee, + basisPoints + ) + let inputWithFee = DeFiActionsMathUtils.mul(input, feeMultiplier) + + // Calculate: numerator = inputWithFee * outputReserve + let numerator = DeFiActionsMathUtils.mul(inputWithFee, reserveOut) + + // Calculate: denominator = inputReserve + inputWithFee + let denominator = reserveIn + inputWithFee + + // Calculate output: numerator / denominator + let output = DeFiActionsMathUtils.div(numerator, denominator) + + // Return with conservative rounding (round down for user protection) + return DeFiActionsMathUtils.toUFix64RoundDown(output) +} +``` + +### Compound Interest Calculations + +Calculate compound interest for yield farming rewards: + +```cadence +import DeFiActionsMathUtils from 0xYourAddress + +access(all) fun calculateCompoundInterest( + principal: UFix64, + annualRate: UFix64, // e.g., 0.05 for 5% + periodsPerYear: UInt64, + numberOfYears: UFix64 +): UFix64 { + // Convert to high precision + let p = DeFiActionsMathUtils.toUInt128(principal) + let r = DeFiActionsMathUtils.toUInt128(annualRate) + let n = DeFiActionsMathUtils.toUInt128(UFix64(periodsPerYear)) + let t = DeFiActionsMathUtils.toUInt128(numberOfYears) + let one = DeFiActionsMathUtils.toUInt128(1.0) + + // Calculate: rate per period = r / n + let ratePerPeriod = DeFiActionsMathUtils.div(r, n) + + // Calculate: (1 + rate per period) + let onePlusRate = one + ratePerPeriod + + // Calculate: number of periods = n * t + let totalPeriods = DeFiActionsMathUtils.mul(n, t) + + // Note: For production, you'd need to implement a power function + // This is simplified for demonstration + + // Calculate final amount with rounding + return DeFiActionsMathUtils.toUFix64Round(finalAmount) +} +``` + +### Proportional Distribution + +Distribute rewards proportionally among stakeholders: + +```cadence +import DeFiActionsMathUtils from 0xYourAddress + +access(all) fun calculateProportionalShare( + totalRewards: UFix64, + userStake: UFix64, + totalStaked: UFix64 +): UFix64 { + // Convert to high precision + let rewards = DeFiActionsMathUtils.toUInt128(totalRewards) + let stake = DeFiActionsMathUtils.toUInt128(userStake) + let total = DeFiActionsMathUtils.toUInt128(totalStaked) + + // Calculate: (userStake / totalStaked) * totalRewards + let proportion = DeFiActionsMathUtils.div(stake, total) + let userReward = DeFiActionsMathUtils.mul(proportion, rewards) + + // Round down for conservative payout + return DeFiActionsMathUtils.toUFix64RoundDown(userReward) +} +``` + +### Price Impact Calculation + +Calculate the price impact of a large trade: + +```cadence +import DeFiActionsMathUtils from 0xYourAddress + +access(all) fun calculatePriceImpact( + inputAmount: UFix64, + inputReserve: UFix64, + outputReserve: UFix64 +): UFix64 { + // Convert to high precision + let input = DeFiActionsMathUtils.toUInt128(inputAmount) + let reserveIn = DeFiActionsMathUtils.toUInt128(inputReserve) + let reserveOut = DeFiActionsMathUtils.toUInt128(outputReserve) + + // Calculate initial price: outputReserve / inputReserve + let initialPrice = DeFiActionsMathUtils.div(reserveOut, reserveIn) + + // Calculate new reserves after trade + let newReserveIn = reserveIn + input + let k = DeFiActionsMathUtils.mul(reserveIn, reserveOut) + let newReserveOut = DeFiActionsMathUtils.div(k, newReserveIn) + + // Calculate final price: newOutputReserve / newInputReserve + let finalPrice = DeFiActionsMathUtils.div(newReserveOut, newReserveIn) + + // Calculate impact: (initialPrice - finalPrice) / initialPrice + let priceDiff = initialPrice - finalPrice + let impact = DeFiActionsMathUtils.div(priceDiff, initialPrice) + + return DeFiActionsMathUtils.toUFix64Round(impact) +} +``` + +## Benefits of High-Precision Math + +### Precision Preservation + +The 24-decimal precision provides headroom for complex calculations: + +```cadence +// Chain multiple operations without significant precision loss +let step1 = DeFiActionsMathUtils.mul(valueA, valueB) +let step2 = DeFiActionsMathUtils.div(step1, valueC) +let step3 = DeFiActionsMathUtils.mul(step2, valueD) +let step4 = DeFiActionsMathUtils.div(step3, valueE) +// Still maintains 24 decimals of precision until final conversion +``` + +### Overflow Protection + +The contract uses `UInt256` for intermediate multiplication to prevent overflow: + +```cadence +// Internal implementation protects against overflow +access(all) view fun mul(_ x: UInt128, _ y: UInt128): UInt128 { + return UInt128(UInt256(x) * UInt256(y) / UInt256(self.e24)) +} +``` + +And includes explicit bounds checking when converting to `UFix64`: + +```cadence +access(all) view fun assertWithinUFix64Bounds(_ value: UInt128) { + let MAX_1E24: UInt128 = 184_467_440_737_095_516_150_000_000_000_000_000 + assert( + value <= MAX_1E24, + message: "Value exceeds UFix64.max" + ) +} +``` + +## Best Practices + +Always Use High Precision for Intermediate Calculations + +**❌ Low precision (loses ~$0.50 per 1M USDC):** + +```cadence +let fee: UFix64 = amount * 0.003 +let afterFee: UFix64 = amount - fee +let output: UFix64 = afterFee * price +``` + +**βœ… High precision (safe and accurate):** + +```cadence +// Convert once at the start +let amountHP = DeFiActionsMathUtils.toUInt128(amount) +let feeRate = DeFiActionsMathUtils.toUInt128(0.003) +let priceHP = DeFiActionsMathUtils.toUInt128(price) + +// Perform all calculations at high precision +let afterFeeHP = DeFiActionsMathUtils.mul(amountHP, DeFiActionsMathUtils.toUInt128(1.0) - feeRate) +let outputHP = DeFiActionsMathUtils.mul(afterFeeHP, priceHP) + +// Convert once at the end with smart rounding +let output = DeFiActionsMathUtils.toUFix64RoundDown(outputHP) +``` + +The pattern is simple: **convert β†’ calculate β†’ convert back**. The extra lines give you production-grade precision that protects your protocol from financial losses. + +Always validate that inputs are within acceptable ranges: + +```cadence +access(all) fun swap(inputAmount: UFix64) { + pre { + inputAmount > 0.0: "Amount must be positive" + inputAmount <= 1000000.0: "Amount exceeds maximum" + } + + let inputHP = DeFiActionsMathUtils.toUInt128(inputAmount) + // ... perform calculations +} +``` + +## More Resources + +- [View the DeFiActionsMathUtils source code] +- [Flow DeFi Actions Documentation] +- [Cadence Fixed-Point Numbers] + +## Key takeaways + +- Use high precision (24 decimals) for all intermediate calculations +- Convert to `UFix64` only for final results +- Choose appropriate rounding modes based on your use case +- Always validate inputs and test edge cases +- Document your rounding decisions for maintainability + +## Conclusion + +[`DeFiActionsMathUtils`] gives Flow developers a significant advantage in building DeFi applications. With 24-decimal precision, it is orders of magnitude more accurate than typical blockchain implementations (which use 6-18 decimals). The standardized library eliminates the need to build custom math implementations. + +The simple **convert β†’ calculate β†’ convert back** pattern, combined with strategic rounding modes and built-in overflow protection, means you can focus on your protocol's business logic instead of low-level precision handling. At scale, this protection prevents thousands of dollars in losses from accumulated rounding errors. + + + +[`DeFiActionsMathUtils`]: https://github.com/onflow/FlowActions/blob/main/cadence/contracts/utils/DeFiActionsMathUtils.cdc +[banker's rounding]: https://learn.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/98152b5a-4d86-4acb-b875-66cb1f49433e +[View the DeFiActionsMathUtils source code]: https://github.com/onflow/FlowActions/blob/main/cadence/contracts/utils/DeFiActionsMathUtils.cdc +[Flow DeFi Actions Documentation]: https://developers.flow.com/blockchain-development-tutorials/forte/flow-actions +[Cadence Fixed-Point Numbers]: https://cadence-lang.org/docs/language/values-and-types/fixed-point-nums-ints \ No newline at end of file diff --git a/docs/blockchain-development-tutorials/integrations/crossmint/authentication.md b/docs/blockchain-development-tutorials/integrations/crossmint/authentication.md index a5d5cfb580..001720ea92 100644 --- a/docs/blockchain-development-tutorials/integrations/crossmint/authentication.md +++ b/docs/blockchain-development-tutorials/integrations/crossmint/authentication.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 1 title: Authentication Integration Guide description: Set up user authentication for your Flow application using Crossmint's integrated authentication system with email, social logins, and wallet connections. keywords: diff --git a/docs/blockchain-development-tutorials/integrations/crossmint/minting-platform.md b/docs/blockchain-development-tutorials/integrations/crossmint/minting-platform.md index 502453962b..cc2dfdc554 100644 --- a/docs/blockchain-development-tutorials/integrations/crossmint/minting-platform.md +++ b/docs/blockchain-development-tutorials/integrations/crossmint/minting-platform.md @@ -1,5 +1,5 @@ --- -sidebar_position: 4 +sidebar_position: 3 title: Minting Platform Integration description: Create and distribute tokens at scale on Flow using Crossmint's no-code and API-based minting platform. keywords: diff --git a/docs/blockchain-development-tutorials/integrations/crossmint/payment-checkout.md b/docs/blockchain-development-tutorials/integrations/crossmint/payment-checkout.md index a600a37907..80795d3105 100644 --- a/docs/blockchain-development-tutorials/integrations/crossmint/payment-checkout.md +++ b/docs/blockchain-development-tutorials/integrations/crossmint/payment-checkout.md @@ -1,5 +1,5 @@ --- -sidebar_position: 3 +sidebar_position: 2 title: Payment Checkout Integration description: Enable fiat and cross-chain payments for Flow assets with credit cards, Apple Pay, Google Pay, and crypto across 40+ chains. keywords: diff --git a/docs/defi/alp/architecture.md b/docs/defi/alp/architecture.md index 7b487a76c9..3537a0e4a9 100644 --- a/docs/defi/alp/architecture.md +++ b/docs/defi/alp/architecture.md @@ -160,8 +160,8 @@ graph TB P3 --> P4[FYV or other
DeFi Protocol] end - style S1 fill:#bbf - style P1 fill:#fbb + style S1 fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style P1 fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff ``` The **Sink Interface** receives tokens when positions are overcollateralized, automatically pushing borrowed funds to user wallets or other protocols through the `drawDownSink` configuration on positions, enabling automated value flows out of positions. The **Source Interface** provides tokens when positions need rebalancing, automatically pulling funds to repay debt when undercollateralized through the `topUpSource` configuration, enabling automated value flows into positions. @@ -185,9 +185,9 @@ graph TB Position -->|Auto-Pull| Source[TopUp Source] Pool -->|Liquidates| Liquidator[Liquidators/Keepers] - style Pool fill:#f9f,stroke:#333,stroke-width:4px - style Position fill:#bbf,stroke:#333,stroke-width:2px - style Oracle fill:#bfb,stroke:#333,stroke-width:2px + style Pool fill:#7b5ba1,stroke:#333,stroke-width:4px,color:#fff + style Position fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style Oracle fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` ## Data Sequence @@ -204,12 +204,12 @@ graph TB D5 --> D6[615 MOET β†’ FYV
Earning yield automatically
Liquidation protection active] end - style D1 fill:#e1f5ff - style D2 fill:#fff4e6 - style D3 fill:#f5f5f5 - style D4 fill:#e8f5e9 - style D5 fill:#e3f2fd - style D6 fill:#f3e5f5 + style D1 fill:#5b9bd5,stroke:#333,stroke-width:2px,color:#fff + style D2 fill:#f9a825,stroke:#333,stroke-width:2px + style D3 fill:#757575,stroke:#333,stroke-width:2px,color:#fff + style D4 fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style D5 fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style D6 fill:#7b5ba1,stroke:#333,stroke-width:2px,color:#fff ``` **What happens:** @@ -235,14 +235,14 @@ graph TB R7 --> R8[Liquidation Prevented!
Health restored: 1.3
Position safe again] end - style R1 fill:#ffebee - style R2 fill:#fff3e0 - style R3 fill:#f5f5f5 - style R4 fill:#e8f5e9 - style R5 fill:#fff9c4 - style R6 fill:#e1f5fe - style R7 fill:#f3e5f5 - style R8 fill:#c8e6c9 + style R1 fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff + style R2 fill:#f9a825,stroke:#333,stroke-width:2px + style R3 fill:#757575,stroke:#333,stroke-width:2px,color:#fff + style R4 fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style R5 fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style R6 fill:#7b5ba1,stroke:#333,stroke-width:2px,color:#fff + style R7 fill:#5b9bd5,stroke:#333,stroke-width:2px,color:#fff + style R8 fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` **What happens:** diff --git a/docs/defi/alp/credit-market-mechanics.md b/docs/defi/alp/credit-market-mechanics.md index a05300d762..d62d401b54 100644 --- a/docs/defi/alp/credit-market-mechanics.md +++ b/docs/defi/alp/credit-market-mechanics.md @@ -20,7 +20,7 @@ graph LR Effective --> Borrow[Can Borrow
$615 @ HF 1.3] - style Effective fill:#bfb,stroke:#333,stroke-width:2px + style Effective fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` Each token has a **collateral factor** that determines what percentage of its value can be used. For example, depositing 1,000 FLOW worth $1,000 with a collateral factor of 0.8 results in $800 of effective collateral. This safety buffer protects the protocol against price volatility and ensures positions remain solvent even with market fluctuations. @@ -123,7 +123,7 @@ graph TD Note1[No transaction
needed!] Time -.-> Note1 - style Current fill:#fbb + style Current fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff ``` Instead of updating every user's balance constantly, ALP: @@ -177,7 +177,7 @@ graph TD P3 --> Calc P4 --> Calc - style MOET fill:#fbb,stroke:#333,stroke-width:3px + style MOET fill:#d94d4d,stroke:#333,stroke-width:3px,color:#fff ``` All token prices are quoted in terms of MOET (FLOW/MOET, USDC/MOET, and other token prices), which simplifies calculations and ensures consistency across the protocol. @@ -198,8 +198,8 @@ graph TD Up --> UpResult[New HF: 2.0
Can borrow more!] Down --> DownResult[New HF: 1.33
May trigger rebalancing] - style UpResult fill:#bfb - style DownResult fill:#ffa + style UpResult fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style DownResult fill:#f9a825,stroke:#333,stroke-width:2px ``` **Collateral price increases**: Health improves, can borrow more @@ -260,7 +260,7 @@ graph LR Util --> Low[Low <80%
Lower rates] Util --> High[High >80%
Higher rates] - style Util fill:#bbf,stroke:#333,stroke-width:2px + style Util fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff ``` The protocol tracks **utilization** for each token: @@ -287,8 +287,11 @@ graph LR Reserve --> Uses[Insurance Fund
Development
Emergency
Treasury] - style Reserve fill:#ffa - style Lender fill:#bfb + style Borrower fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style Protocol fill:#7b5ba1,stroke:#333,stroke-width:2px,color:#fff + style Reserve fill:#f9a825,stroke:#333,stroke-width:2px + style Lender fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style Uses fill:#757575,stroke:#333,stroke-width:2px,color:#fff ``` Reserves are used for the protocol insurance fund, development and maintenance, emergency situations, and the governance-controlled treasury. diff --git a/docs/defi/alp/index.md b/docs/defi/alp/index.md index 3ab4e92eac..be0802d6f7 100644 --- a/docs/defi/alp/index.md +++ b/docs/defi/alp/index.md @@ -45,19 +45,21 @@ graph TB User[User] -->|1. Deposits Collateral| ALP[ALP Position] ALP -->|2. Auto-borrows MOET| MOET[MOET Token] MOET -->|3. Via DrawDownSink| FYV[FYV Strategy] - FYV -->|4. Generates Yield| Yield[Yield Tokens] - - Price[Price Drop] -.->|5. Triggers Rebalancing| ALP - FYV -->|6. Withdraws Yield| Yield - Yield -->|7. Swaps to MOET| Swap[SwapConnector] - Swap -->|8. Via TopUpSource| ALP - ALP -->|9. Repays Debt| MOET - - style ALP fill:#e6b3ff,stroke:#333,stroke-width:4px - style FYV fill:#66cc66,stroke:#333,stroke-width:2px - style MOET fill:#ff6666,stroke:#333,stroke-width:2px - style Yield fill:#ffcc66,stroke:#333,stroke-width:2px - style Swap fill:#99ccff,stroke:#333,stroke-width:2px + FYV -->|4. Swaps to Yield Tokens| Yield[Yield Tokens
Generating Returns] + + Price[πŸ“‰ Price Drop] -.->|5. Health drops below 1.1| Trigger[Rebalancing Triggered] + Trigger -.->|6. Requests funds| TopUp[TopUpSource] + TopUp -.->|7. Pulls from| FYV + FYV -.->|8. Swaps yield tokens
back to MOET| MOET_Return[MOET] + MOET_Return -.->|9. Repays debt| ALP + ALP -.->|10. Health restored to 1.3| Safe[βœ… Safe Position] + + style ALP fill:#4a7abf,stroke:#333,stroke-width:4px,color:#fff + style FYV fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style MOET fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff + style MOET_Return fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff + style Yield fill:#f9a825,stroke:#333,stroke-width:2px + style Safe fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` ## Resources diff --git a/docs/defi/alp/moet-role.md b/docs/defi/alp/moet-role.md index c7f5ae16ad..962c4a4064 100644 --- a/docs/defi/alp/moet-role.md +++ b/docs/defi/alp/moet-role.md @@ -8,12 +8,13 @@ sidebar_position: 4 MOET plays a central role in ALP as the default token and primary unit of account. Understanding MOET's function is essential for effectively using ALP and [Flow Credit Market (FCM)](../fcm/index.md). It standardizes pricing, enables automation, and makes yield-powered liquidation prevention possible. **MOET** is a fungible token on Flow that serves as: -- πŸ’° **The primary borrowed asset** - What you borrow from ALP -- πŸ“Š **The unit of account** - All prices quoted in MOET terms -- πŸ”„ **The rebalancing medium** - Used for all automated operations -- πŸŒ‰ **The value bridge** - Flows between ALP and FYV -For more about MOET tokenomics, see the [MOET documentation](#). +- **The primary borrowed asset** - What you borrow from ALP +- **The unit of account** - All prices quoted in MOET terms +- **The rebalancing medium** - Used for all automated operations +- **The value bridge** - Flows between ALP and FYV + +For more about MOET tokenomics, see the [MOET documentation](../moet/index.md). ## MOET as Unit of Account @@ -29,24 +30,21 @@ graph TD MOET --> stFLOW[stFLOW = 1.05 MOET] MOET --> Other[Other tokens...] - style MOET fill:#fbb,stroke:#333,stroke-width:4px + style MOET fill:#d94d4d,stroke:#333,stroke-width:4px,color:#fff ``` -**Why this matters**: Using MOET as the unit of account simplifies calculations by expressing all values in one currency, standardizes pricing consistently across all tokens, enables multi-collateral positions by making it easy to compare different assets, and provides unified risk management through a single health metric. +Using MOET as the unit of account simplifies calculations by expressing all values in one currency, standardizes pricing consistently across all tokens, enables multi-collateral positions by making it easy to compare different assets, and provides unified risk management through a single health metric. **Health factor calculation example**: + ``` Collateral: 1000 FLOW @ 1.0 MOET each Γ— 0.8 factor = 800 MOET value Debt: 615.38 MOET Health Factor = 800 / 615.38 = 1.30 -All in MOET terms = Simple and consistent! +Both collateral and debt in terms of MOET. ``` -:::tip Why Not Just Use USD? -MOET is designed specifically for Flow DeFi, ensuring deep on-chain liquidity, native protocol integration, optimized performance for Flow operations, and better composability with FYV and other protocols. -::: - ## MOET in the Auto-Borrowing Flow When you deposit collateral with auto-borrowing enabled, MOET is what you borrow: @@ -87,8 +85,8 @@ graph LR C --> D[Push to DrawDownSink] D --> E[Health = 1.3 βœ“] - style A fill:#bfb - style E fill:#bfb + style A fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style E fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` **Example**: @@ -111,8 +109,8 @@ graph LR C --> D[Repay MOET debt] D --> E[Health = 1.3 βœ“] - style A fill:#fbb - style E fill:#bfb + style A fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff + style E fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` **Example**: @@ -139,7 +137,7 @@ graph LR Auto --> Wallet[Your Wallet] Wallet --> Use[Use MOET
Yield/Trading/etc] - style ALP fill:#f9f,stroke:#333,stroke-width:2px + style ALP fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff ``` **Flow**: Collateral β†’ Borrow MOET β†’ You control it @@ -161,9 +159,9 @@ graph TB ALP -->|Repay| MOET ALP -->|Health Restored| Safe[Health = 1.3 βœ“] - style ALP fill:#f9f,stroke:#333,stroke-width:3px - style FYV fill:#bfb,stroke:#333,stroke-width:3px - style MOET fill:#fbb,stroke:#333,stroke-width:2px + style ALP fill:#4a7abf,stroke:#333,stroke-width:3px,color:#fff + style FYV fill:#4d994d,stroke:#333,stroke-width:3px,color:#fff + style MOET fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff ``` **Flow**: Collateral β†’ Auto-borrow MOET β†’ FYV β†’ Yield protects position! @@ -185,7 +183,7 @@ graph LR MOET -->|Add Liquidity| LP[LP Pool
MOET/FLOW] LP -->|Earn| Fees[Trading Fees] - style LP fill:#bbf,stroke:#333,stroke-width:2px + style LP fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff ``` **Flow**: Collateral β†’ Borrow MOET β†’ LP Pool β†’ Earn trading fees @@ -199,7 +197,7 @@ graph LR ALP[Borrow from ALP
5% APY] -->|MOET| Protocol[Lend to Protocol
8% APY] Protocol -->|Earn| Spread[3% Spread
Profit!] - style Spread fill:#bfb,stroke:#333,stroke-width:2px + style Spread fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` **Flow**: Borrow MOET cheap β†’ Lend MOET expensive β†’ Keep spread @@ -236,8 +234,8 @@ graph LR C --> D[Repay MOET Debt] D --> E[Health Restored] - style A fill:#fbb - style E fill:#bfb + style A fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff + style E fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` **Example**: @@ -277,7 +275,7 @@ graph TB Supply --> Market Market --> Rate[Interest Rates] - style Market fill:#fbb,stroke:#333,stroke-width:3px + style Market fill:#d94d4d,stroke:#333,stroke-width:3px,color:#fff ``` ### Interest Rate Dynamics @@ -317,101 +315,15 @@ Utilization = Total MOET Borrowed / Total MOET Available 4. **Predictability**: Standard token across all FCM operations 5. **Efficiency**: Single token simplifies everything -### Can I Use Other Tokens? - -Yes, but with limitations: - -:::info For Developers -You can manually borrow other tokens: -```cadence -// Borrow FLOW instead of MOET -let flowBorrowed <- position.borrow( - type: Type<@FlowToken.Vault>(), - amount: 100.0 -) -``` - -However: -- Auto-borrowing always uses MOET -- Rebalancing always uses MOET -- Health calculations still in MOET terms -- FYV integration requires MOET -::: - ## Best Practices ### For Borrowers -βœ… **Do**: -- Maintain MOET buffer in wallet for emergencies -- Set up TopUpSource with MOET for auto-protection -- Monitor MOET interest rates -- Diversify yield strategies with borrowed MOET - -❌ **Don't**: -- Assume MOET will always be cheap to borrow -- Put all borrowed MOET in one place -- Ignore MOET balance in TopUpSource -- Forget MOET debt accumulates interest +When borrowing MOET, always maintain a buffer in your wallet for emergencies and set up a TopUpSource with sufficient MOET for automatic liquidation protection. Actively monitor MOET interest rates as they fluctuate with utilization, and diversify your yield strategies to spread risk across multiple opportunities. Avoid assuming MOET will always be cheap to borrow, concentrating all borrowed funds in one place, neglecting your TopUpSource balance, or forgetting that MOET debt continuously accumulates interest over time. ### For Yield Seekers -βœ… **Do**: -- Use full FCM integration (ALP + FYV) -- Let MOET flow automatically to FYV -- Let yield protect your position -- Monitor FYV MOET liquidity - -❌ **Don't**: -- Manually manage MOET if using FYV -- Interrupt the automated flow -- Remove MOET from FYV when position needs it - -## Real-World Example - -### Complete MOET Lifecycle - -```mermaid -graph TB - Start[User deposits
1000 FLOW] --> Calc[ALP calculates:
Can borrow 615 MOET] - Calc --> Borrow[Auto-borrow
615 MOET] - Borrow --> Deploy[MOET β†’ FYV
via DrawDownSink] - Deploy --> Earn[FYV generates
yield in MOET] - - Price[FLOW price
drops 20%] -.-> Detect[ALP detects
HF = 1.04] - Detect --> Need[Need 123 MOET
to rebalance] - Need --> Pull[Pull from FYV
via TopUpSource] - Pull --> Repay[Repay 123 MOET] - Repay --> Safe[Health = 1.3 βœ“
Liquidation avoided] - - style Start fill:#bbf - style Earn fill:#bfb - style Price fill:#fbb - style Safe fill:#bfb -``` - -**What happened**: -1. Deposited FLOW β†’ Auto-borrowed 615 MOET -2. MOET deployed to FYV β†’ Earned yield -3. Price dropped β†’ Position at risk -4. FYV provided 123 MOET β†’ Debt repaid -5. **Result**: Your MOET yield prevented liquidation! - -## Summary - -**MOET's Three Roles**: -1. πŸ’° **Borrowed Asset**: What you borrow from ALP -2. πŸ“Š **Unit of Account**: How all prices are quoted -3. πŸ”„ **Rebalancing Medium**: Flows between ALP and FYV - -**Key Points**: -- All auto-borrowing is in MOET -- All rebalancing uses MOET -- All health calculations in MOET terms -- MOET enables FCM's yield-powered liquidation prevention - -**Why MOET Matters**: -Without MOET as the standard, FCM's automation wouldn't work. MOET is the "common currency" that lets ALP and FYV communicate seamlessly, enabling the unique liquidation prevention mechanism. +For optimal yield generation, use the full FCM integration with ALP and FYV to enable complete automation. Allow MOET to flow automatically to FYV strategies and let the accumulated yield protect your position from liquidation. Monitor FYV's MOET liquidity to ensure adequate funds are available for rebalancing. Once you've enabled FYV integration, avoid manually managing MOET, interrupting the automated flow, or removing MOET from FYV when your position might need it for rebalancing. ## Mathematical Foundation @@ -425,5 +337,5 @@ MOET is central to all FCM calculations: - **Understand automation**: [Rebalancing Mechanics](./rebalancing.md) - **See the big picture**: [FCM Architecture](../fcm/architecture.md) -- **Deep dive on MOET**: [MOET Documentation](#) -- **Explore position management**: [Position Lifecycle](./position-lifecycle.md) +- **Deep dive on MOET**: [MOET Documentation](../moet/index.md) +- **Explore position management**: [Position Lifecycle](./position-lifecycle.md) \ No newline at end of file diff --git a/docs/defi/alp/position-lifecycle.md b/docs/defi/alp/position-lifecycle.md index bbab748711..79bf040aa8 100644 --- a/docs/defi/alp/position-lifecycle.md +++ b/docs/defi/alp/position-lifecycle.md @@ -5,18 +5,9 @@ sidebar_position: 5 # Position Lifecycle -A Position in ALP represents your lending account. Understanding the complete lifecycle from creation to closure helps you manage your positions effectively and maximize your DeFi strategy. +A Position in ALP represents your lending account. Understanding the complete lifecycle from creation to closure helps you manage your positions effectively and maximize your DeFi strategy. A position's lifecycle is all about managing the health factor. Stay in the healthy range (1.1-1.5), use automation for hands-free management, and always have a plan for when prices move against you. -## What is a Position? - -A **Position** tracks everything about your lending activity: - -- πŸ’° **Collateral deposits**: Assets you've deposited -- πŸ“Š **Debt obligations**: Amounts you've borrowed -- ❀️ **Health metrics**: Current safety status -- πŸ”— **DeFi connectors**: Automation via Sinks and Sources - -Think of it like a bank account, but for DeFi lending - it keeps track of what you own and what you owe. +A **Position** tracks everything about your lending activity. It maintains a complete record of your collateral deposits (the assets you've deposited), debt obligations (the amounts you've borrowed), health metrics (your current safety status), and DeFi connectors (automation via Sinks and Sources that enable seamless integration with other protocols). ## Position Lifecycle Overview @@ -489,27 +480,6 @@ sequenceDiagram Note over Position,FYV: Automatic capital optimization! ``` -## Summary - -**Position Lifecycle Phases**: -1. πŸ†• **Creation**: Deposit collateral, optionally auto-borrow -2. πŸ’š **Healthy Operation**: HF between 1.1-1.5 -3. ⚠️ **Rebalancing**: Automatic adjustments as needed -4. πŸ”΄ **At Risk**: HF approaching 1.0, urgent action -5. 🏁 **Closure**: Repay debt, withdraw collateral - -**Key Health Ranges**: -- **HF > 1.5**: Overcollateralized (auto-borrow if enabled) -- **HF 1.1-1.5**: Healthy range (optimal operation) -- **HF 1.0-1.1**: At risk (urgent action needed) -- **HF < 1.0**: Liquidatable (emergency!) - -**Automation Keys**: -- Configure DrawDownSink for auto-borrowing destination -- Configure TopUpSource for auto-repayment source -- Set appropriate min/max health bounds -- Monitor regularly even with automation - ## Mathematical Foundation For detailed mathematical formulas and proofs underlying position operations: @@ -524,10 +494,4 @@ For detailed mathematical formulas and proofs underlying position operations: - **Understand rebalancing**: [Rebalancing Mechanics](./rebalancing.md) - **Set up automation**: [DeFi Actions Integration](./defi-actions.md) - **Protect against liquidation**: [Liquidation System](./liquidation-system.md) -- **Learn credit mechanics**: [Credit Market Mechanics](./credit-market-mechanics.md) - ---- - -:::tip Key Takeaway -A position's lifecycle is all about managing the health factor. Stay in the healthy range (1.1-1.5), use automation for hands-free management, and always have a plan for when prices move against you. -::: +- **Learn credit mechanics**: [Credit Market Mechanics](./credit-market-mechanics.md) \ No newline at end of file diff --git a/docs/defi/fcm/architecture.md b/docs/defi/fcm/architecture.md index 2a6afce5b6..04cdff8223 100644 --- a/docs/defi/fcm/architecture.md +++ b/docs/defi/fcm/architecture.md @@ -24,19 +24,19 @@ graph TB end subgraph "FCM System" - subgraph "ALP - Lending Layer" + subgraph ALP["ALP Components"] Pool[Pool Contract] Position[Position] Oracle[Price Oracle] end - subgraph "FYV - Yield Layer" + subgraph FYV["FYV Components"] Strategy[Yield Strategy] AutoBalancer[Auto Balancer] Swapper[Token Swapper] end - subgraph "MOET - Currency Layer" + subgraph MOET_Layer["MOET Layer"] MOET[MOET Token] Pricing[Price Feeds] end @@ -61,9 +61,10 @@ graph TB AutoBalancer -->|Manage exposure| Strategy Strategy -->|Via TopUpSource| Position - style ALP fill:#f9f,stroke:#333,stroke-width:3px - style FYV fill:#bfb,stroke:#333,stroke-width:3px - style MOET fill:#fbb,stroke:#333,stroke-width:3px + style ALP fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style FYV fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style MOET_Layer fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff + style MOET fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff ``` ## Component Integration @@ -235,73 +236,38 @@ When needed: Exit yield source β†’ Swap to MOET β†’ Return to ALP ### User Deposit Flow ```mermaid -sequenceDiagram - participant User - participant Position - participant Pool - participant Oracle - participant DrawDownSink - participant FYV - - User->>Position: deposit(collateral) - Position->>Position: Store collateral - Position->>Pool: Update collateral balance - Pool->>Pool: updateScaledBalance() - - Position->>Oracle: getPrice(collateralToken) - Oracle-->>Position: priceInMOET - - Position->>Position: calculateHealth() - Note over Position: Check if auto-borrow enabled - alt HF > maxHealth AND auto-borrow enabled - Position->>Position: Calculate excess capacity - Position->>Pool: borrow(excessCapacity) - Pool-->>Position: MOET vault - Position->>DrawDownSink: deposit(MOET) - DrawDownSink->>FYV: Swap MOET to yield tokens - FYV->>FYV: Deploy to strategy - end - - Position-->>User: success +graph LR + User[πŸ‘€ You deposit
1000 FLOW] --> Position[ALP Position
stores collateral] + Position --> Oracle[Oracle checks
FLOW price] + Oracle --> Health{Health Factor
calculation} + Health -->|HF > 1.5
Can borrow| Borrow[Auto-borrow
615 MOET] + Health -->|HF ≀ 1.5
No borrowing| Done1[βœ… Deposit complete] + Borrow --> DrawDown[Push to
DrawDownSink] + DrawDown --> FYV[FYV Strategy
swaps to yield tokens] + FYV --> Done2[βœ… Earning yield
HF = 1.3] + + style Position fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style FYV fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style Borrow fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff + style Done2 fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` -### Price Change & Rebalancing Flow +### Price Drop & Rebalancing Flow ```mermaid -sequenceDiagram - participant Oracle - participant Position - participant Pool - participant TopUpSource - participant FYV - - Oracle->>Oracle: Price update (collateral drops) - - Note over Position: Periodic check or triggered - - Position->>Oracle: getPrice(collateralToken) - Oracle-->>Position: newPrice (lower) - - Position->>Pool: getCurrentDebt() - Pool-->>Position: currentDebt - - Position->>Position: calculateHealth() - Note over Position: HF < minHealth (e.g., 1.1) - - Position->>Position: Calculate required repayment - Note over Position: Need to reach target HF (1.3) - - Position->>TopUpSource: withdraw(repaymentAmount) - TopUpSource->>FYV: Request MOET - FYV->>FYV: Swap YieldToken β†’ MOET - FYV-->>TopUpSource: MOET vault - TopUpSource-->>Position: MOET vault - - Position->>Pool: repay(MOET) - Pool->>Pool: updateDebt(-amount) - - Position->>Position: calculateHealth() - Note over Position: HF restored to 1.3 +graph LR + Drop[πŸ“‰ FLOW price
drops 20%] --> Position[ALP Position
detects HF = 1.05] + Position --> Calc[Calculate needed
repayment: 123 MOET] + Calc --> TopUp[Pull from
TopUpSource] + TopUp --> FYV[FYV Strategy
swaps yield tokens] + FYV --> MOET[Returns
123 MOET] + MOET --> Repay[ALP repays
debt to Pool] + Repay --> Restored[βœ… Health restored
HF = 1.3] + + style Position fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style FYV fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style MOET fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff + style Restored fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` ## Component Responsibilities diff --git a/docs/defi/fcm/basics.md b/docs/defi/fcm/basics.md index dd81b9624d..e255f58401 100644 --- a/docs/defi/fcm/basics.md +++ b/docs/defi/fcm/basics.md @@ -18,81 +18,66 @@ It's not just "another lending protocol" - it's a complete yield-generating syst ### Level 1: Traditional Lending (Aave, Compound) -In traditional DeFi lending protocols: +Basic lending with complete manual management: ```mermaid graph LR - User[User] -->|Deposit FLOW| Protocol[Lending Protocol] - Protocol -->|Borrow USDC| User - User -->|Repay + Interest| Protocol + User[πŸ‘€ User] -->|1. Deposit FLOW| Protocol[Lending Protocol] + Protocol -->|2. User manually
borrows USDC| Borrowed[πŸ’΅ USDC] + Borrowed -->|3. Sits idle or
manually deployed| User - style Protocol fill:#bbf,stroke:#333,stroke-width:2px -``` + Drop[πŸ“‰ Price Drop] -.->|4. Health drops!| Alert[⚠️ Must act now!] + Alert -.->|5. Manual repay
or liquidation| User -**How it works**: -1. Deposit collateral (e.g., 1000 FLOW worth $1000) -2. Borrow up to ~75% of collateral value (e.g., $750 USDC) -3. Pay interest on borrowed amount -4. **Your responsibility**: Monitor health factor and manually manage position + style Protocol fill:#757575,stroke:#333,stroke-width:2px,color:#fff + style Alert fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff +``` -**Limitations**: Traditional lending requires you to manually monitor and rebalance positions, quickly add collateral or repay debt if collateral price drops, manually deploy borrowed funds to avoid them sitting idle, and act fast enough to prevent liquidation. +Traditional lending protocols require complete manual management at every step. Users must calculate their safe borrowing capacity, execute borrowing transactions themselves, and manually deploy borrowed funds into yield strategies. Most critically, they must constantly monitor their position's health factor and respond quickly to price drops or risk liquidation. This hands-on approach demands significant time, expertise, and attention to maintain a safe and profitable position. -### Level 2: Automated Lending (ALP) +### Level 2: ALP (Automated Lending) -ALP adds automation to traditional lending: +Adds automatic borrowing and rebalancing: ```mermaid graph LR - User[User] -->|Deposit FLOW| ALP[ALP Position] - ALP -->|Auto-borrow MOET| User + User[πŸ‘€ User] -->|1. Deposit FLOW| ALP[ALP Position] + ALP -->|2. AUTO-BORROW
MOET at optimal ratio| Borrowed[πŸ’΅ MOET] + Borrowed -->|3. Still needs
manual deployment| User - Price[Price Drop] -.->|Triggers| Rebalance[Auto-Rebalance] - Rebalance -->|Pulls funds| Source[TopUpSource] - Source -->|Repays debt| ALP + Drop[πŸ“‰ Price Drop] -.->|4. AUTO-REBALANCE
if TopUpSource available| ALP + User -.->|5. Must manually
fund TopUpSource| TopUp[TopUpSource] + TopUp -.->|Provides funds| ALP - style ALP fill:#f9f,stroke:#333,stroke-width:2px + style ALP fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style Borrowed fill:#ffd700,stroke:#333,stroke-width:2px ``` -**New features**: -- βœ… **Auto-borrowing**: Automatically borrows optimal amount when you deposit -- βœ… **Auto-rebalancing**: Maintains target health ratio automatically -- βœ… **TopUpSource integration**: Can pull from external sources to prevent liquidation - -**Better, but**: -- ⚠️ TopUpSource must have funds available -- ⚠️ Borrowed MOET still needs manual deployment for yield -- ⚠️ Still some manual intervention required +ALP introduces partial automation by calculating and executing optimal borrowing amounts when you deposit collateral, and automatically rebalancing your position when health drops below safe levels. However, users still need to manually deploy borrowed MOET into yield strategies and manage their TopUpSource for rebalancing. Without a properly funded TopUpSource, liquidation protection remains limited, leaving a critical gap in the automation. ### Level 3: FCM (ALP + FYV + MOET) -FCM completes the automation by adding yield generation: +Complete yield automation with self-protecting positions: ```mermaid -graph TB - User[User] -->|1. Deposit FLOW| ALP[ALP Position] - ALP -->|2. Auto-borrow MOET| DrawDown[DrawDownSink] - DrawDown -->|3. Deploy| FYV[FYV Strategy] - FYV -->|4. Generate yield| Yield[Yield Tokens] - - Price[Price Drop] -.->|Triggers| ALP - FYV -->|5. Provide liquidity| TopUp[TopUpSource] - TopUp -->|6. Repay debt| ALP - - Yield -.->|Accumulates| FYV - - style ALP fill:#f9f,stroke:#333,stroke-width:4px - style FYV fill:#bfb,stroke:#333,stroke-width:4px - style DrawDown fill:#bbf,stroke:#333,stroke-width:2px +graph LR + User[πŸ‘€ User] -->|1. Deposit FLOW| ALP[ALP] + ALP -->|2. AUTO-BORROW| MOET[MOET] + MOET -->|3. AUTO-DEPLOY
via DrawDownSink| FYV[FYV] + FYV -->|4. AUTO-EARN
yield| Yield[πŸ’° Yield] + + Drop[πŸ“‰ Price Drop] -.->|5. AUTO-DETECT| ALP + Yield -.->|6. AUTO-PROVIDE
via TopUpSource| ALP + ALP -.->|7. AUTO-REPAY
debt restored| Safe[βœ… Safe] + + style ALP fill:#4a7abf,stroke:#333,stroke-width:3px,color:#fff + style FYV fill:#4d994d,stroke:#333,stroke-width:3px,color:#fff + style MOET fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff + style Yield fill:#f9a825,stroke:#333,stroke-width:2px + style Safe fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff ``` -**Complete automation**: -- βœ… **Auto-borrowing**: Instantly borrow optimal amount -- βœ… **Auto-deployment**: Borrowed MOET flows directly to yield strategies -- βœ… **Auto-compounding**: FYV strategies reinvest yields -- βœ… **Auto-protection**: FYV provides liquidity to prevent liquidations -- βœ… **Auto-everything**: True set-and-forget experience - -FCM's innovation is that your generated yield protects your position by maintaining health automatically, requiring no manual intervention as everything happens seamlessly in the background. This creates true capital efficiency where borrowed capital works for you immediately upon deployment. +FCM completes the automation cycle by integrating ALP with FYV and MOET. The system calculates and executes optimal borrowing, automatically deploys borrowed MOET into yield strategies through FYV, and continuously generates returns. When market volatility threatens your position, FCM uses your accumulated yield to prevent liquidations and rebalances automatically to maintain optimal health. This creates a self-healing position where your earnings actively protect your collateral, delivering true set-and-forget lending with no manual intervention required. ## Understanding the Three Components diff --git a/docs/defi/fcm/index.md b/docs/defi/fcm/index.md index ba2f4af2ff..095d523952 100644 --- a/docs/defi/fcm/index.md +++ b/docs/defi/fcm/index.md @@ -14,7 +14,7 @@ FCM is **not a single protocol** - it's an integrated system composed of three c ```mermaid graph TB - subgraph FCM[Flow Credit Market - Integrated DeFi System] + subgraph FCM[Flow Credit Market] ALP[ALP
Automated Lending Platform
Collateral & Borrowing] FYV[FYV
Flow Yield Vaults
Yield Strategies] MOET[MOET
Synthetic Stablecoin
Unit of Account] @@ -24,10 +24,10 @@ graph TB ALP <-->|Provides Liquidity| FYV end - style FCM fill:#e6b3ff,stroke:#333,stroke-width:4px - style ALP fill:#6699ff,stroke:#333,stroke-width:2px - style FYV fill:#66cc66,stroke:#333,stroke-width:2px - style MOET fill:#ff6666,stroke:#333,stroke-width:2px + style FCM fill:#b388d9,stroke:#333,stroke-width:4px,color:#fff + style ALP fill:#4a7abf,stroke:#333,stroke-width:2px,color:#fff + style FYV fill:#4d994d,stroke:#333,stroke-width:2px,color:#fff + style MOET fill:#d94d4d,stroke:#333,stroke-width:2px,color:#fff ``` ### The Three Components @@ -64,7 +64,7 @@ sequenceDiagram participant FYV participant Yield - User->>ALP: 1. Deposit FLOW collateral + User->>ALP: 1. Deposit collateral ALP->>ALP: 2. Calculate borrowing capacity ALP->>MOET: 3. Auto-borrow MOET MOET->>FYV: 4. Deploy to yield strategy @@ -89,6 +89,16 @@ sequenceDiagram 7. **ALP repays debt** automatically to prevent liquidation 8. **User keeps position healthy** without manual intervention +## Key Metrics + +Understanding these metrics is crucial for using FCM: + +- **Health Factor**: Ratio of collateral value to debt (must stay above 1.0) +- **Target Health**: Optimal ratio (typically 1.3) +- **Collateral Factor**: Percentage of collateral value usable for borrowing (e.g., 0.8 = 80%) +- **APY**: Annual Percentage Yield from FYV strategies +- **Utilization Rate**: Percentage of ALP liquidity currently borrowed + ## Key Innovations ### 1. Yield-Powered Liquidation Prevention @@ -151,16 +161,6 @@ FCM provides liquidation protection through yield maintaining position health, f 3. **Read DeFi Actions**: Master the composability framework 4. **Build**: Create your own strategies or integrations -## Key Metrics - -Understanding these metrics is crucial for using FCM: - -- **Health Factor**: Ratio of collateral value to debt (must stay above 1.0) -- **Target Health**: Optimal ratio (typically 1.3) -- **Collateral Factor**: Percentage of collateral value usable for borrowing (e.g., 0.8 = 80%) -- **APY**: Annual Percentage Yield from FYV strategies -- **Utilization Rate**: Percentage of ALP liquidity currently borrowed - ## Security & Audits FCM implements multiple security layers including smart contract audits for all core contracts, oracle safety through multiple price feed sources with staleness checks, multiple liquidation mechanisms to maintain solvency, circuit breakers for emergency pause functionality, and open source code that is publicly reviewable. diff --git a/docs/defi/fcm/math.md b/docs/defi/fcm/math.md index 826851eaf5..410adb6614 100644 --- a/docs/defi/fcm/math.md +++ b/docs/defi/fcm/math.md @@ -44,7 +44,7 @@ These mathematical foundations ensure FCM operates predictably and safely. All f ## Fundamental Formulas -### 1. Effective Collateral +### Effective Collateral The effective collateral is the sum of all collateral assets multiplied by their prices and collateral factors: @@ -63,7 +63,7 @@ EC = (1000 Γ— 1 Γ— 0.8) + (500 Γ— 1 Γ— 0.9) = $1250 MOET ``` -### 2. Effective Debt +### Effective Debt The effective debt is the sum of all borrowed assets multiplied by their prices and borrow factors: @@ -82,7 +82,7 @@ ED = 800 Γ— 1 Γ— 1.0 = $800 MOET ``` -### 3. Health Factor +### Health Factor The health factor is the ratio of effective collateral to effective debt: @@ -104,7 +104,7 @@ EC = $1250, ED = $800 HF = 1250 / 800 = 1.5625 ``` -### 4. Maximum Borrowing Capacity +### Maximum Borrowing Capacity The maximum amount that can be borrowed to reach target health: @@ -555,7 +555,7 @@ In full liquidation: ``` **Better example with partial liquidation:** - k + ``` Initial position (moderately undercollateralized): - Collateral: 1000 FLOW @ $0.78 From 6f3a977e50671c34a41be9b9e2bb87d149f8237f Mon Sep 17 00:00:00 2001 From: 0xLisanAlGaib <0xlisanalgaib@gmail.com> Date: Tue, 3 Mar 2026 12:24:05 -0600 Subject: [PATCH 13/13] Convert bullet points to paragraphs and update diagram colors - Convert best practices lists to flowing paragraphs in MOET documentation - Convert position tracking description to paragraph format - Update all diagram colors to darker, more visible shades - Fix broken MOET documentation link --- docs/defi/alp/architecture.md | 12 +- docs/defi/alp/credit-market-mechanics.md | 11 +- docs/defi/alp/defi-actions.md | 9 +- docs/defi/alp/index.md | 11 +- docs/defi/alp/liquidation-system.md | 10 +- docs/defi/alp/moet-role.md | 24 +-- docs/defi/alp/position-lifecycle.md | 10 +- docs/defi/alp/rebalancing.md | 10 +- docs/defi/fcm/architecture.md | 17 +- docs/defi/fcm/basics.md | 16 +- docs/defi/fcm/fcm_diagram.png | Bin 0 -> 1291947 bytes docs/defi/fcm/index.md | 22 ++- docs/defi/fcm/math.md | 13 +- docs/defi/flow-yield-vaults/architecture.md | 12 +- docs/defi/flow-yield-vaults/autobalancer.md | 8 + docs/defi/flow-yield-vaults/cross-chain.md | 8 + docs/defi/flow-yield-vaults/defi-actions.md | 8 +- docs/defi/flow-yield-vaults/index.md | 12 +- .../flow-yield-vaults/leveraged-farming.md | 11 +- docs/defi/flow-yield-vaults/scheduling.md | 7 + docs/defi/flow-yield-vaults/strategies.md | 11 +- .../defi/flow-yield-vaults/vault-lifecycle.md | 8 + docs/defi/moet/basics.md | 65 ++++---- docs/defi/moet/index.md | 20 +-- docs/defi/moet/integration.md | 19 ++- docs/defi/moet/stability.md | 150 ++++++++++-------- docs/defi/moet/tokenomics.md | 7 + 27 files changed, 355 insertions(+), 156 deletions(-) create mode 100644 docs/defi/fcm/fcm_diagram.png diff --git a/docs/defi/alp/architecture.md b/docs/defi/alp/architecture.md index 3537a0e4a9..4696a5ffcc 100644 --- a/docs/defi/alp/architecture.md +++ b/docs/defi/alp/architecture.md @@ -5,7 +5,15 @@ sidebar_position: 2 # ALP Architecture Overview -ALP is built on a modular architecture with several core components that work together to provide a secure and efficient lending protocol with efficiency and security. The scaled balance system eliminates gas overhead, DeFi Actions enable composability, and multiple security layers protect users. This design makes ALP both powerful for developers and accessible for users. +The Automated Lending Platform (ALP) is built on a modular architecture with several core components that work together to provide a secure and efficient lending protocol with efficiency and security. The scaled balance system eliminates gas overhead, DeFi Actions enable composability, and multiple security layers protect users. This design makes ALP both powerful for developers and accessible for users. + +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **ALP** = [Automated Lending Platform](./index.md) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin) +- **FCM** = [Flow Credit Market](../fcm/index.md) ## Core Components @@ -118,7 +126,7 @@ The **Price Oracle** provides real-time token prices denominated in [MOET](../mo **Core Functionality:** -The oracle returns prices for any supported token type (FLOW, stFLOW, USDC, wBTC, wETH) with all values expressed in MOET, creating a unified pricing framework. For example, if FLOW is trading at $1.00 and the system assumes 1 MOET = $1 USD, the oracle returns 1.0 for FLOW/MOET. This MOET-denominated pricing eliminates the need for complex cross-currency conversions when calculating health factors across multi-collateral positions. +The oracle returns prices for any supported token type (FLOW, stFLOW, USDC, wBTC, wETH) with all values expressed in MOET, creating a unified pricing framework. For example, if FLOW is trading at $1.00 and MOET's backing value is equivalent to $1, the oracle returns 1.0 for FLOW/MOET. This MOET-denominated pricing eliminates the need for complex cross-currency conversions when calculating health factors across multi-collateral positions. **Safety Features:** diff --git a/docs/defi/alp/credit-market-mechanics.md b/docs/defi/alp/credit-market-mechanics.md index d62d401b54..b9e8ad05ca 100644 --- a/docs/defi/alp/credit-market-mechanics.md +++ b/docs/defi/alp/credit-market-mechanics.md @@ -5,7 +5,16 @@ sidebar_position: 3 # Credit Market Mechanics -ALP operates as a decentralized lending protocol where users can deposit collateral and borrow assets. Understanding the core mechanics is essential for effectively managing positions and maximizing capital efficiency. The auto-borrowing feature, scaled interest system, and multi-token support create a powerful yet accessible lending platform. +The Automated Lending Platform (ALP) operates as a decentralized lending protocol where users can deposit collateral and borrow assets. Understanding the core mechanics is essential for effectively managing positions and maximizing capital efficiency. The auto-borrowing feature, scaled interest system, and multi-token support create a powerful yet accessible lending platform. + +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **ALP** = [Automated Lending Platform](./index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin and unit of account) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **FCM** = [Flow Credit Market](../fcm/index.md) +- **APY** = Annual Percentage Yield ## Basic Lending Mechanics diff --git a/docs/defi/alp/defi-actions.md b/docs/defi/alp/defi-actions.md index cdcfb97388..72a30ca745 100644 --- a/docs/defi/alp/defi-actions.md +++ b/docs/defi/alp/defi-actions.md @@ -5,7 +5,14 @@ sidebar_position: 7 # DeFi Actions Integration -DeFi Actions is a composability framework that enables ALP to integrate seamlessly with other DeFi protocols like [Flow Yield Vaults (FYV)](#). This powerful abstraction allows for automated value flows and complex strategy compositions. +DeFi Actions is a composability framework that enables the [Automated Lending Platform (ALP)](./index.md) to integrate seamlessly with other DeFi protocols like [Flow Yield Vaults (FYV)](../flow-yield-vaults/index.md). This powerful abstraction allows for automated value flows and complex strategy compositions. For comprehensive documentation on DeFi Actions, see [Flow Actions](../../blockchain-development-tutorials/forte/flow-actions/index.md). + +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **ALP** = [Automated Lending Platform](./index.md) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin) +- **FCM** = [Flow Credit Market](../fcm/index.md) ## Understanding DeFi Actions diff --git a/docs/defi/alp/index.md b/docs/defi/alp/index.md index be0802d6f7..89134fcff8 100644 --- a/docs/defi/alp/index.md +++ b/docs/defi/alp/index.md @@ -8,6 +8,13 @@ sidebar_position: 10 The Automated Lending Platform (ALP) is the core lending protocol component of [Flow Credit Market (FCM)](../fcm/index.md). ALP provides the foundational lending and borrowing infrastructure with automated position management and liquidation protection. +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin and unit of account) +- **FCM** = [Flow Credit Market](../fcm/index.md) + :::info ALP is one of three core components that make up FCM: ALP (Automated Lending Platform) provides the lending/borrowing engine, [Flow Yield Vaults (FYV)](../flow-yield-vaults/index.md) handles yield aggregation strategies, and [MOET](../moet/index.md) serves as the synthetic stablecoin and unit of account. ::: @@ -18,7 +25,7 @@ The protocol uses MOET as its primary unit of account and default borrowed asset ## Automated Rebalancing -ALP's standout feature is its **automated rebalancing** system that uses [DeFi Actions](../../blockchain-development-tutorials/forte/flow-actions/index.md) to maintain optimal position health. When overcollateralized (health > 1.5), the system automatically borrows more to maximize capital efficiency. When undercollateralized (health < 1.1), it automatically repays debt using yield from FYV. The protocol targets a health range of 1.1 to 1.5 for balanced risk/reward, and prevents liquidations by pulling from TopUpSource (often FYV strategies) when needed. +ALP's standout feature is its **automated rebalancing** system that uses [DeFi Actions](../../blockchain-development-tutorials/forte/flow-actions/index.md) to maintain optimal position health. When overcollateralized (health > 1.5), the system automatically borrows more to maximize capital efficiency. When undercollateralized (health < 1.1), it automatically repays debt using yield from [FYV](../flow-yield-vaults/index.md). The protocol targets a health range of 1.1 to 1.5 for balanced risk/reward, and prevents liquidations by pulling from TopUpSource (often FYV strategies) when needed. ### Integration with FYV @@ -66,7 +73,7 @@ graph TB - [ALP GitHub Repository](https://github.com/onflow/FlowCreditMarket) (FlowCreditMarket contract) - [Flow Credit Market (FCM)](../fcm/index.md) - The complete product -- [MOET Token Documentation](#) +- [MOET Token Documentation](../moet/index.md) - [Flow Documentation](https://developers.flow.com) ## Security Considerations diff --git a/docs/defi/alp/liquidation-system.md b/docs/defi/alp/liquidation-system.md index c5afe22930..e796593dfc 100644 --- a/docs/defi/alp/liquidation-system.md +++ b/docs/defi/alp/liquidation-system.md @@ -5,7 +5,15 @@ sidebar_position: 9 # Liquidation System -Liquidations are a critical safety mechanism in ALP that protect the protocol from insolvency. When a position becomes undercollateralized, it can be liquidated to restore the protocol's health and protect lenders. +Liquidations are a critical safety mechanism in the Automated Lending Platform (ALP) that protect the protocol from insolvency. When a position becomes undercollateralized, it can be liquidated to restore the protocol's health and protect lenders. + +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **ALP** = [Automated Lending Platform](./index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **FCM** = [Flow Credit Market](../fcm/index.md) ## Understanding Liquidations diff --git a/docs/defi/alp/moet-role.md b/docs/defi/alp/moet-role.md index 962c4a4064..ac7e61a0e3 100644 --- a/docs/defi/alp/moet-role.md +++ b/docs/defi/alp/moet-role.md @@ -5,22 +5,28 @@ sidebar_position: 4 # MOET's Role in ALP -MOET plays a central role in ALP as the default token and primary unit of account. Understanding MOET's function is essential for effectively using ALP and [Flow Credit Market (FCM)](../fcm/index.md). It standardizes pricing, enables automation, and makes yield-powered liquidation prevention possible. +MOET plays a central role in the Automated Lending Platform (ALP) as the default token and primary unit of account. Understanding MOET's function is essential for effectively using ALP and [Flow Credit Market (FCM)](../fcm/index.md). It standardizes pricing, enables automation, and makes yield-powered liquidation prevention possible. + +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **ALP** = [Automated Lending Platform](./index.md) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin) +- **FCM** = [Flow Credit Market](../fcm/index.md) **MOET** is a fungible token on Flow that serves as: - **The primary borrowed asset** - What you borrow from ALP - **The unit of account** - All prices quoted in MOET terms - **The rebalancing medium** - Used for all automated operations -- **The value bridge** - Flows between ALP and FYV +- **The value bridge** - Flows between ALP and Flow Yield Vaults (FYV) For more about MOET tokenomics, see the [MOET documentation](../moet/index.md). ## MOET as Unit of Account -Think of MOET as the "common language" for all value in ALP - like how everything in a store is priced in dollars. - -### All Prices in MOET Terms +Think of MOET as the "common language" for all value in ALP, like how everything in a store is priced in dollars. ```mermaid graph TD @@ -61,16 +67,12 @@ sequenceDiagram ALP->>ALP: Can borrow: 800 / 1.3 = 615.38 ALP->>MOET: Auto-borrow 615.38 MOET MOET->>User: Receive 615.38 MOET - ALP->>ALP: Health = 1.3 βœ“ + ALP->>ALP: Health = 1.3 Note over User,MOET: All automatic, no manual steps! ``` -**Why MOET?** -1. **Standardization**: One primary asset simplifies everything -2. **Liquidity**: MOET designed for high liquidity -3. **Predictability**: You always know what you'll receive -4. **Efficiency**: No token choice complexity +Using MOET as the primary borrowed asset provides standardization by simplifying the entire system with one primary asset, ensuring high liquidity through its design for deep markets, delivering predictability so you always know what you'll receive when borrowing, and maximizing efficiency by eliminating token choice complexity. ## MOET in Rebalancing diff --git a/docs/defi/alp/position-lifecycle.md b/docs/defi/alp/position-lifecycle.md index 79bf040aa8..32cd3650c1 100644 --- a/docs/defi/alp/position-lifecycle.md +++ b/docs/defi/alp/position-lifecycle.md @@ -5,7 +5,15 @@ sidebar_position: 5 # Position Lifecycle -A Position in ALP represents your lending account. Understanding the complete lifecycle from creation to closure helps you manage your positions effectively and maximize your DeFi strategy. A position's lifecycle is all about managing the health factor. Stay in the healthy range (1.1-1.5), use automation for hands-free management, and always have a plan for when prices move against you. +A Position in the Automated Lending Platform (ALP) represents your lending account. Understanding the complete lifecycle from creation to closure helps you manage your positions effectively and maximize your DeFi strategy. A position's lifecycle is all about managing the health factor. Stay in the healthy range (1.1-1.5), use automation for hands-free management, and always have a plan for when prices move against you. + +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **ALP** = [Automated Lending Platform](./index.md) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin) +- **FCM** = [Flow Credit Market](../fcm/index.md) A **Position** tracks everything about your lending activity. It maintains a complete record of your collateral deposits (the assets you've deposited), debt obligations (the amounts you've borrowed), health metrics (your current safety status), and DeFi connectors (automation via Sinks and Sources that enable seamless integration with other protocols). diff --git a/docs/defi/alp/rebalancing.md b/docs/defi/alp/rebalancing.md index c2b982041f..2774aafdee 100644 --- a/docs/defi/alp/rebalancing.md +++ b/docs/defi/alp/rebalancing.md @@ -5,7 +5,15 @@ sidebar_position: 6 # Rebalancing Mechanics -Rebalancing is ALP's automated position management system that maintains positions within target health ranges. This powerful feature eliminates manual management and optimizes capital efficiency. +Rebalancing is the Automated Lending Platform's (ALP) automated position management system that maintains positions within target health ranges. This powerful feature eliminates manual management and optimizes capital efficiency. + +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **ALP** = [Automated Lending Platform](./index.md) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin) +- **FCM** = [Flow Credit Market](../fcm/index.md) ## Understanding Rebalancing diff --git a/docs/defi/fcm/architecture.md b/docs/defi/fcm/architecture.md index 04cdff8223..3900ebe822 100644 --- a/docs/defi/fcm/architecture.md +++ b/docs/defi/fcm/architecture.md @@ -5,7 +5,16 @@ sidebar_position: 3 # FCM Architecture Overview -This document explains how Flow Credit Market's (FCM) three core components - [Automated Lending Platform (ALP)](../alp/index.md), [Flow Yield Vaults (FYV)](#), and [Medium Of Exchange Token (MOET)](#) - integrate to create a complete yield-generating system with automated liquidation prevention. +This document explains how Flow Credit Market's (FCM) three core components - [Automated Lending Platform (ALP)](../alp/index.md), [Flow Yield Vaults (FYV)](../flow-yield-vaults/index.md), and [MOET (FlowCreditMarket USD)](../moet/index.md) - integrate to create a complete yield-generating system with automated liquidation prevention. + +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **BF** = Borrow Factor (risk multiplier for borrowed assets) +- **ALP** = [Automated Lending Platform](../alp/index.md) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin) +- **FCM** = Flow Credit Market :::tip Key Insight @@ -429,7 +438,7 @@ Actions: System State: Emergency β”œβ”€β”€ ALP Positions: Multiple HF < 1.0 β”œβ”€β”€ FYV Strategies: Emergency liquidation mode -β”œβ”€β”€ MOET: Potential depeg risk +β”œβ”€β”€ MOET: Potential value deviation risk └── Oracles: Stale or unreliable Actions: @@ -493,5 +502,5 @@ Actions: - **Understand the math**: [Mathematical Foundations](./math.md) - **Explore ALP details**: [ALP Architecture](../alp/architecture.md) -- **Learn about FYV**: [FYV Documentation](#) -- **Deep dive into MOET**: [MOET Documentation](#) \ No newline at end of file +- **Learn about FYV**: [FYV Documentation](../flow-yield-vaults/index.md) +- **Deep dive into MOET**: [MOET Documentation](../moet/index.md) \ No newline at end of file diff --git a/docs/defi/fcm/basics.md b/docs/defi/fcm/basics.md index e255f58401..7aee2cebb1 100644 --- a/docs/defi/fcm/basics.md +++ b/docs/defi/fcm/basics.md @@ -7,6 +7,14 @@ sidebar_position: 2 To understand how Flow Credit Market (FCM) works, let's build up from simple lending concepts to FCM's innovative three-component architecture. +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **ALP** = [Automated Lending Platform](../alp/index.md) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **MOET** = [FlowCreditMarket USD](../moet/index.md) (synthetic stablecoin) +- **FCM** = Flow Credit Market + :::tip Key Takeaway FCM = Traditional Lending + Automation + Yield Generation + Liquidation Protection @@ -120,13 +128,13 @@ FYV deploys capital into yield-generating strategies and provides liquidity for - ALP repays debt ``` -Learn more: [FYV Documentation](#) +Learn more: [FYV Documentation](../flow-yield-vaults/index.md) ### Component 3: MOET (The Unit of Account) -MOET serves as the currency for all operations within FCM, functioning simultaneously as the borrowed asset, pricing unit, and value transfer medium. As the system's unit of account, all prices are quoted in MOET termsβ€”whether FLOW/MOET or USDC/MOET. MOET is the primary borrowed asset that ALP auto-borrows and FYV receives for deployment. As a synthetic stablecoin with value pegged to maintain stability, MOET acts as the medium of exchange that flows seamlessly between ALP and FYV components. This design standardizes all valuations, simplifies multi-collateral calculations, and provides deep integration with the Flow ecosystem specifically for DeFi operations. +MOET serves as the currency for all operations within FCM, functioning simultaneously as the borrowed asset, pricing unit, and value transfer medium. As the system's unit of account, all prices are quoted in MOET termsβ€”whether FLOW/MOET or USDC/MOET. MOET is the primary borrowed asset that ALP auto-borrows and FYV receives for deployment. As a synthetic stablecoin with value determined by the weighted average of its backing assets, MOET acts as the medium of exchange that flows seamlessly between ALP and FYV components. This design standardizes all valuations, simplifies multi-collateral calculations, and provides deep integration with the Flow ecosystem specifically for DeFi operations. -Learn more: [MOET Documentation](#) +Learn more: [MOET Documentation](../moet/index.md) ## The Capital Flow Cycle @@ -356,4 +364,4 @@ Now that you understand the basics: 1. **Learn the architecture**: [Architecture Overview](./architecture.md) 2. **Understand the math**: [Mathematical Foundations](./math.md) -3. **Explore components**: [ALP](../alp/index.md), [FYV](#), [MOET](#) \ No newline at end of file +3. **Explore components**: [ALP](../alp/index.md), [FYV](../flow-yield-vaults/index.md), [MOET](../moet/index.md) \ No newline at end of file diff --git a/docs/defi/fcm/fcm_diagram.png b/docs/defi/fcm/fcm_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..6c02db44acc128950dc3eb9ff0d08b797bf87034 GIT binary patch literal 1291947 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νb}8{KOdX*awLK^I9es${`YXu6L$K!Dm# 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

#)qqo!enqfiD)l-c~UchAf{Bd9#08 za%XN|i1y}Acj7}{_t-qAnU-FkdOI-25Lx9x4PkD5TC_n5aslv>q7qV!`c5Rmi<}$N z-8;zl+#;_&4dY(iLVvCPelER!jl9$K&qs;!(?4VLs@Af^Z2_o&8hCszRT0#t2l=F6 zWj$Kc<5}6@Hw}JBk`ca|CQlbjkJl&a34;clVU#hy7^j6(3s+D^1R^}VXxVV#uU;vogbc8934_~Mfub%C z9=;Q1IIW!}hp(wO*8&&W!`2;KSe2;x;&AqLfyH)xlU*tcW4zQKeXLnKX*j*JQ&{)w zIXKy-$~oDE&<)%T*ma(0p$n^){=zoXRr6&HYU_1|VH8Td+69(b1jM z+$TN;>G7Gr;n|+)X2&S79g7#-pIzhbHse!@@=DnQz6~;i)t-p0FxY76ICgvnRZ%av zE#2j6u0UORM7p_(d0jPzt<-t+BcqrV7sPX<|Dn~ zv4}7}Z*njVGy3q!GyBTVXVeI9{oJu|@ziaB!j@OURHv z`PB=3@&jIL0G&Zbg_(Y7RjnXZ~%Eo~D z<=U_x;#)07VUe@5g@I$(&F;h6zwr~Eia4WcPA@n z=j&&OVsjiq^O}B5>;{H(fxiW;$Dr$|))FPAk9t~pO{uupfy`(RC`URJ+YR{}aV#F7 ze`0LWpYN&5a$Eg!9%EzGGaT&fsxIpDK=_KiKeFbnIhj#(Be`;`yYh2t*xI4Vk6X7L zTF0&DKg1xNGkyYq89NpHbz?e{Md7rFd8-Ov0jyL~QUdO_jyCtgVmP>V?Zn6K?d=o6 z-s9K5u#azc&q977bl;(!q+MRQ7qd4#dyZM#H|*e==2f@PhJMM}V$xEttd=X6ex3k$ zOA%HapCgb$kH^Epi>EUKkEMQ_f?+oj!^;Cg)!PdeK&EOEqF6jpN|8Y@g@s7EXu_xJ zt7Zyk#7mG3NvcD@N8v1r{gjeksJ804$$%U3{hi3f-;x%A$iK}N$0{Qw`G}q0WLIbl zM3e%2MkmQFQ$XHGLk!AAslrhaJ^f*|V%e?|)aDA3Sy4mmkP;y}cXMFu>=2kuRw9W` zT}4qz$AZX*7l(&7I*rC$`qM|FSh>lujyi5faqnDOY+6hpd3w{=^MKJ6VvTs{J(EAf=$uNNSu`P%ZS#Oz%r3zsV#&( zLT4he@J&vUOkg;;qD}#Hxfv1o&+O9k zpzXijcg-rKBQR8`vS}5c(-R|LbGiBq8oVAI@Xc%Ut+$h}`Vc8Yk>|>K!be<>D+ai{ z^Iz&xmcz=`#`Tt-Tl&%FFP5;OJ>ENF;Ci?Ad^~J!lP>VAR}5>rpHlTf3}AmRpdK(s zm&cZV}6eA1oID1z5Fr&R}cw)3n({r!i>?1HBO zRh-?wdXxk{kkDeGBN1ckbfg39`SmggQ_&C$_>D*}6sV^Io`=|d2w;jh7OshB&)Gl- z{@W*gkaRvuxG46TKUh&%wK`XJeEsS;i!Z555WSn>KAjA3MZhsad_xE1M71JM&<6km zfLdbnJO2{6@~wU20L0n6tpPqGt#9B~^DuBxbR)v`!ZEjKX}XS>Xbg`#RaPFMjv8Dr z`B1gyZquuSdh|Rn8!i`gOmG1i7zRA~6TLoem5 ZNWFHdo{89cb6pF$D8Ko$n!;Z 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 mh&_QC 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

S|@oo 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�jV^dBHMA2nA-$<*r)-P`M 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 mXmZYE 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

ZF?Z! zBn+$_sXnNX2+jV|f%yK@|D3fflp0XT+v@OHzza|D*6w_?V9Gb^T=G?&CgPZNv1?wy zDFve%S2w9HlP7$%z{-;46Z4dF1&Qw%hyi(k$iLSA|yZ&;%>TdU0^H1N+4H3}HZoz)}!qh>C;!y@;9oaFLV+dM~cZ zeKAae8-#;vR)vorz|N>iUQpS^V}96UM1zF0ATeWlc+YGR3~Yg_JPJ^qVh%}gdT_1{ znwReJt;H_q43(q%;{&&X9~{*`Hkur!pBDNHf9zBTuS<^IbQxoi zbcc+&LPq%MI>lZg;$$65|F%HbuA<6kO^#Q?%E0!d&R<>zCx_EUl$OpoSF4#*iO;{2 zm+=X9yOGVk8uab8KE6lwdY5HC8f%A>aw;0#$bnpD}kucge&6~cp=9=ODG_K=y3h0~V(emBpKK0Xv zE2E&zSOP{0Y*KQCL}{}4j!N4YIio&Qls zKu}~w$hlVOOYZ!i3!37&aaEL+r0*Re(3`9_Yinn4@(rJV(PwR=__DO=9~PD(IltnT z;n2ROmiaT;Plw4c?FS{6R^d@I%C`Ijx4%Lu3&2(;eMxD%Au!3ffni9R>XhN|ORbqv zQPVx1#jLG;4b@|qbOxS^2qqrFRRC(LDlj*+8DoCm8c!cZ4cleMe@yl`LlvYJ7w%SC zb9vK_?gF(&3`bHfuOr+?rTxZk9_#E=TS?=EnWV`lPvW9r%ysM+-Y%D$oCkZehhB&q zGW+S#ST7wwO$@dB+gAz-*V48$1Jo3K2_xPX_!K?HL4r?6SXRG#8>+l-zlGOeA$bGMjg0x@P+6&$4!7=nf+f?od6TP!$b4+EjhTfd^Kw7+EhIMTGn(=EX!6@ z|Dc0_A6b*uj}3Wci=CkQ}UcfGdvso473RjeW{%l(W#%+jS2WFVbux-@@_MB)MA%mN8n$?pn z&ugZ6PY&?-laahtuMl$ilh)f#`&rwQ%Hh|*>zyOIea$^8r#|A(BvAN=J&*jZ)L43t z)As3oe?1RDF#tx7kFZuWeRRRgV`mIoF16u5EcHjI&mNjEj8Wz&ZEcAxu3*kd^@WsI z4ugj0kjgX*rRr3d%BJ{{rrDnWTJMxFPQfjVCV;lndI7#&U6Ib6<>Lgk&rb)eJGF7;nmbft*RTs;y9w zNesac{hU5e6?Xy*Cs(Fk;21vV-fY@PWSuhENU1uODPz2Mw4vqu?X17E(~Pv3TBj(^ z=E`6^w6)MJ`3wur>@itNj7mV}n1hSn9q4Wv^jq^%XO^94nC5l9*KZehiW%uKYKv8FsF=N( zEpJ~3otbx^P7aTV?|?9DLTc#DSY5M+GS~wT2V$RSH@Pld?~Ct;u3@*lJ)|;y@n9f8 zYYQRTx-^YPVc`3<^5eDGKX~A2B);~b}G0Bd5r~)M+>gl)!2JgYngZp<2kp#7vK%k-xBLs zi@q#vpWi(B##G^ZIp18+Ec@Rc$@Q|RqY_98O76SOCG0Fs`;@szj-dK5+A~*==x8n! z1iW`Ti%O1kRzSYY5y*=_rez!Z0)VVy3sYdyT273d#hCO+DXn0Td;FY0oAN$!lUkx-) z!;6so;@4BGUCnvD>k%{Qp7Z(qdk$GIPoMN@aL>yfZh;{|l}4zmDh=TXyiy>R0XzW` zz5=SZ^}05S09dYnAk6Oih-*c|hKhw^jx*86f{TLg;(?d_gQs~k;Mo?#Q}9;|jz`wK z$_z9QxY`8i#rLIYSH3lplI4ucnFd>i_nxa8OUuhn=p(WC5xB1FdsybMCdHEmq37-^ z!m0d`Xqy1V|C^M2cMBAw=l)Y3olrlI;_zr{UFivHnfI%a^zaX_U)1ROe`AMFZ2JoW z8F(*a&%F3XEQ+`7?{yL>35<^yN-&DZ4eX)Idy)Wu4wP0_h@M((uC*;6gWD9&VN1kT zxsZ+%&^84V&n@GYAXbQIy)S`#A3&g$WPS6e2R46A+32s+yPQeB?=(hooO_Q%2~!l= z03#KDGp8FPBqFRA!-0v(7P8H?QwEbW7B2ww%wnken1^LHX`K!$f}TXZy8hj9vQX)* zjJLyU0=NB>EAf{ho)+%yje^>mkC@U$Bg2V697vwS2#ParNXEJHAb zARO1uoF>Q;3&q@5JK&*6}7G+;^k}oeOkI$OF0EvrNTZ4MkpRm3JESPnPLnHqJtOy%&Sy z>-m?j_xKcfSlV0klMsG>kg&nf_{>zAJrU!-Y_zbYE|hoM;{XWt9t_LW;Na=w^OmhP^%st1%I2Ttyj4M86MxAg@n443oJiz`eM-_(L zt8(k^2dSn}cg21px9z)CDOZ=oS+8ThxSE+xS|xLX)ogENzWyoVQhglg*V*=tr%ylW z{}a)n;Hj9NK6+D=hUc8?WMj;wg6^*vQ`c9aT~f6i^QeAAQ*Wz2h%i|x%nDdzH5Iuzq-7@kr%c+Y)#lS&DcjoGyb(Y1 z`&eCxXQ!#uwz*`r-8Vk2LbVYOK-lRG&|jO z5FqBNx3vu4%rj@QDiRB=if=PtW?5q0A0t@^)f%H?6p zH|z#E5JV=BYYEjed<TEFJ^=Fo}rADOuI+-=blQ@sefZZ4fDqI?y1naht#+iUiERND9o7*ry1 zl>+jp(?s_s!q^5S^MWlDwua!jD> z_LuUB_m!!~>^d?|Cb(Aw+~}%U&5kx3ak(hIgj=C_fmP`URZG%8*r8!~leCMYjoK}| zGSOT;QruiUs->@Zr=NT0kYC3VnTOCzxl#->Vx8<|+L~u3JF2Y1*~X+VT9vEX#x3I3 zh8x3V0r+2FPT$uyJ$#vCYDXB_%JDKuY{$A`ft$f5JPH2Rg_=Z_uvUd~!1b|wy5&lM z^x}io`JK3(S$SL;3uXcRHj@2T7@*oN$kn+L`zd#-(Y!MHZX?Aq&23DnRQ^%Q3EU{J zLS`j zdIk!u-^csvzGzblx#Jl;3KZ4joZ<7J+#;7eeI-PP?zgoxF{&HCW#Y}IzVF|d12v3F zwd?e`bl)*=A_6Tpms#GN;1Hj&>5otL4HMdBHyQyv>D)ViS)6PUYJD@rm=Lw^5T3_Y zvVv1Lmwp)B)C;rpovLS0_}Hlf$BYvmE+XStYl)}yn;eKS z=k?DJq)j4T!NZq3ls+#CIYvbVEnR;+$BhuEJas8wPIW0zZk(M>GTq@6EL~r*7)GFO zJ=b1oo}om2dyE1X)P&#BoL;U7V*@0+S1e+e?JNPRdj?-D%25s}oMgs_CGp+^ty^{< zt`+X2x|IacZTKb(6Rkv#Ej@N!5Wnmv!Zsds{197O%YU1DBld9!A+v0 z9V5lF_~qrHZDV42|5ogzr1CswNXq!6A9|5k&bAR9>(<@C&L0QQgJ#j3=lVTO+*0kF zi{FF6_L{(IPV$_qTj_@LUF&eN5d<|EKy$XkvMG}H3<~SVuKS11>OE`QDr;D9@%Z4- zl_0#5K8QdRR0AueRjmJDn)>6?^FoDt&)NIHQiT;#o_qm9SYZ!k62kuR)UY39F$7n8 zvrClf_nfm7!d60yBSog-C_G2_M>rjOSF=WkUuT~o`>+r^-~{CQo98`D1td?xg>}!B zJY!&UIwZjRixno8;3LKTG8e_*4)cdrDDb3sM)o><67QxwD-VLG9Vr#J z0HLd`OLIV__ugd&#@VHbuzoXKJfgEs&TF-vd;^9o-V*sRePwZ3QCP_I+;S#Vj*d2* zn@Jh($`NSVVgBzxHE!-JL9ifj;?z>|NiN|fw zXC>13D>~ytWYX(x+P-hJ_YGmTw$fVb;(>(PUzmLZap7z7pKWnn&wVG) z(d#EkuJ~wjt6uwZIGct6N`zw7dcu`25VjjzCPY%5qp_iWg5pNcstapQ+EsrvWtZx~ z{)E}pft1*t2ep0-5X*Z$Ds=DP(Oq1B)EmpmOAUvjyN6Jrfl*cmD#pA|AOAwusm8P) zN{ca^LH%%M3Dc@-RW|K$_Tlzm6pr-emnP8Hjqzu~6wuN_UaR z;zY;9jFYYw;2oysJpIXY7!eBAC8!HImQE>Q=5Nr1Z+F}|j_Ku1!2Y7e=TO0bZ zgt98=NSTIj5)aN@)AIc*&8VY!3!*Y_MK&x(Na*854z-RJ+_MhevjFcydJ=c-N~>$k z)9EMcAMM;8Sl!tyQ~ws&oNM)=2j8r$R`j_A@BzZBXM&iig~6lHoh$XXCd=%H-V)T; zBkeB=Lz`W{RFb!b$$b$O?r+es5pqlm|bIFn{T z{2bHRUfjbiDmc{hgtrJ~^U3;!csV)KnL|3kh|rVV4Lj$FCk9;7hwP>Z!s5c@O!#4s zUz>Bj+kEM=gEU{%`HaZTN$Pex^()d->q;6F-ue2H>&4Uj>rQCUq~w6i6x5camsV*!&mvVX;uHxT|tx` z)NCfZ5-?6}TNr7pak}xfs1sb?Zy+!aFQLh0y9dmbeF@B8jgPSClXuVZKF({k9qJt# z4A|?HGC#rYr`vs>wp{S^YwP~&uWw(pjH)|O+Wr}4O!@4**5cMLMmZ4peCl4Y!cRnzHoXNnWH?Q$A+dC)^hS zFPQ#D)Vho#J z3#{!~aJzYZ?6~pO9rA7tg!5=w?ZBZx;>N`Il;9+b_X8`2YxLs(c<0!kWHip|bfXd9R7a{yzT$Usf zE#))gUjPKYdy2vXhoccVL^F=tmorjbY_%t{QMe8O45d|F4bGj0;hJR>-elYHEdWW< zh}S`PwZ&v?W;vy*G>`(eP}`aIn3pTLQQca`#j2IFq`eqGlU)(@s(Z9wAuB@kqKeS_lA}1%Tce|amskY z5HVPzv@Q4P&L@0|sz@~?@mF!7X7@oGSvH=V#8pO2dB}PrD~9JCoVHHnkLc95S#m~< zJO6rdK-C`H39gIW^*(Biprqky`bT?3JZScZJzt4^jn9#bt*-Qbd#md!?Vf>^s8Feq z!BP97=4l&geNLRcc(SqUD^D+*8&TC8)17#gMR*WIa9DU~YZfQ8V`@g;d!&RAX7F;9 zWNuj1N;5bdFbrxt?VPmhcC+t5M@H?3(Fu(glN!V4VQ|3$dr(2| zo?_*37!f4H$y95-elYAr(6f-;c-ZbBeD)PL^WF1pW$MFhfc&_u3HhqVk}F`>5dkq{ zhbC0=19l!*a-eK@iItOSOx-%$&*T3jsMMHeGTfl z^D;J)L?&&&?S>m~aOI9YI9C~dScgs3Sn0TSzijR~ojQ6q!R23AuVMQ@A?=^na5Qzi zz*veZxPZR80J?wG+_XA*>NNJF4-+mXw7(K18$g@M>WsV0%WO>B{H^?27e$FlzTf}- zv+Dp;m_Nw!VM2S}h*BJAzpi^YJI?pTn)pf^F#xD1LwM55|XzVKC`6%GA5uN39g)cmTG$qy+eXs^3~vZ7;h9Q z*J_1fBaM9P?h?%u&nNQfW>_qd4`f5x7|zZ5v~);WC4d;?;UuuhCgO2DrRMvp0(m3l*38uYEqQW4i25Yv958x zc}r5mEh4F+=dYsNCL8st-3$zxhRN)r&pa`_P40U4Ep~NGCmtHM;JT-dbA<| zrW9EfDfZ&1>ND_J6F!_TQyAvED1NGSNyH6{#fFN^{^rNG%hPtrr0Q*Vd%n>N#=`Aw z*0|ASKH1{4Uh7Tt0>TpxH(m`X&>N{m;oe=Am$e5?i)l8#!hSo><;;uUZ7pc=FCD`@ z9=H@zxm7G(1C=PPagw@IzAuk9DPCo1eJ`W*YD74tSly-_hy-a(sCYi(W%fPYU|Vn9 ze~lmKJ(xIVKaTfkMBVJv#qQV;jX3i&!P&>R%fsDEa(unOrTV}+&v~zwVxe>Dea*3B zc;u7L;AhwV5}5Ri`FQEgeim5a2e7~Fc}R)u5U`ciXd6@9ye^zAyluQ53}F5$59(yk z>7=bHLrO;HFByHY?fbpn>Gxh%Lcrn`4Huz%Z_aHalkw#F#6e6!+V^k61qaLqNh$fi zQQlqFJxg)4wCM{Dxo?l3{)$EJoBo^#4NEFu0@5`Rf>iFTh;BjOEAB^SdjsLzL?JwR z8q-tz`-ZnOmcV|JN&qWXjj!GjfW$veG4Qe&HMa5oKeADGzTn0qzJ*29W8p6h8wNMC zLh2Vf$UlB}leFkXKVe$Dw?*vgZ()+zic z*2SG}+Z?=2)f@+jYUwfsd%OO~q4yO;!)n8~pu_*jnC_o!k$cTY%96!kI#Z21!gYyrYoR`fiktfij)(H5hR`JJ3 zGqrn(JFo>|g)y?2>0cNl;iRhr95h)*o+{+jG`C0eYr7&nV4r>r`})yO zi;Tvuo`HMYS_WnTY5xrg8a2wz7mV|_x=YU5yM_(h&VQGN58f4)9LyL-YYJL%)_*$m zm6NY)wf5FA9t47|)9)4J?@jkbQ}*r*s}G~B#0Zf)rB%M(Jt^PLjvZPGjFp6@nXMmH+VDCNF-=#Jr-S+Jy4P_QJC~Ba zMEbBN4J%1=6E5vs7L-TAY-&BE}%|VB%m zxc}m5JucLYHAEYiYEycGX+HzDJ#Z_0w=p@^>w8L@s917`)-6xj;D{E-pJTqT`{LPGT3)TXN~vY}@SB^ZEdJ%qt$K7Na2-05Rboph7AQiNVo@>B}5>_u*G;v0C+$aGJ+?fHky!e6#4d6vehX zT%{$MAF1+H!nrnK!!cS$`g$YHmif|Y7H7y-?Mp;Ym&Bgb$EMFDyVdm|~ zk(0ji!>3k0Y}BOH12-Y`@FD!1{onLgxPX`6d77)r$+ddr>~JZ7&zv8uTw9j*94gT= z-83$5h2J<5!NYH~nNG=hU!N-#?He%Zl=hS7GE`bm!-ct^oU z&a!Tpq4eZ!@1JyA-`D<6>YX#e#xc@ZMM|F4Y=x)h0?YWCednBTl8tqBe6q~X%jJAn zP;QRZ*wwGBMf*8N@PNyT%YzcKwy+xw^Hr-7l-dHtZ;HhDk=8 zjpqJ<sVKrdkTQ;YK3*pfKPeT`G-9W zRD{+1akfs58ShyTLGwPcy`9;2?U&%P1*#&O(5(Hwzdrpo>dac^ z243rk>R!Xol4snP51hzc!sW*;IY6<<|EDd+u;%6C6}1?eb;+w%cBby42scKRb+3WU zAscEC;K^W|Ku|#J`@U+m#w?_BgKP-BQhQYQBb&C8{JaRvdEf7sUrXQP_e=SStu5!g z^e-upc`nUTtfayjI2EDzrMx^}wI{!M=da6LHfn2gRbzPrZsNey=!N7HTz0B7_SaAZ zU90jg?0n8urWs`uR@Yoq;iq``&B_7!)To@wL{0g`jU~GHf-fkPG7Cx#LG7VLAte^E;^13I*tcMjFFno1qyhgIk!Ww%}{UpPf z{B0CJ745HUY%PU>Wb9pUg!ZQ~W8sL)d{dUhPbhJ3VH4M8e{eG{k#0rv zOfn2XW|JdZ>u+xEW%L!StvNp8;&PhC4N(*OmjV)5)6+TIR}somM(xDaC#-pfBHr(< zbnCVfvCx>4lr?+4`MHYSMJA;iw;WJqs_eU(ZxSr5i>_KpRSz~ zhUbsjp>s}CBsh+Ly^#I%R?aX>DeG|JX4$apt|-E7{dLbLc`Y}V33P8H*Zr&XcZ1D? zn+sK;iihVPJWhP%q;}m9T*-|flsZRcWG_|lNS6x+Apj-em&KRKd6>_%cI|a=p|L6= zagY^62RMNFn0ZMUt&Qt=7e`JDM=7{jXIMh+6tTm;$R^nWZcW(0E^!m4(=`45jJ~5j z?^t$yRBGQp1a5gdX_sxsq^P=SMS=WulO>TDHs8!$Kl*(%yy5ok|BN&r&nL)Ay$JAjbENrH(h{oKxVZi6DFHL?N z-<$WsQxb>8C>Ckwj2bDq*Io->>Zd!S^VN>{Y17<$ch3h`JfBa%7=rn?@j@yyGrw(C zo<&L8bO^NNX(QFHW7`%HBL2%CoeO43mQC*1jc2Z~gijnlgE5YA`C9Mt6HTr`P5-k0 zpXW%)x8{-lSxMRyl9a28VW@XH3H<9$=B=b=~qgJ(&jNAT%wXN2VzCjTQa}K3PeZ#oR1pD|yp6)+6`Rb$ zj`|^YJ+B(`heQkM{k9suj!S*NEU2Pse$tLGip5>>Zh76gjtLY7lIy1aSqeXxn_p$_ z6#u{f2%(}3f||%P+)R$OlcTJL6!d!+DOk34rDD!CoK<#P%@#%9h1RaMQTsq>i8!R1 zM=S}!ZP-)`HAH8S%SF0L{|^c+Pkb^>{}NDzo6}6$vQAgwX)5G%a zHR)nz%uLxumtChzn|m*1u|k^fa++^JoEN2OxZib+qSlYcQ2)rscg8?f`?*t{SWrh_ z>zckLVnae_YQY7(PZA@yayv)ogC%{VVfEI~;Gc=fUE_U&$4a*9W1FHdi;5_gyE9X2VakS6DwU_8OG3wR~h zef^=~CI2f;TTBVyB6%u2n364ZGQg_FTr$_b9{-wvjrMIAUZbMIM$5-B-U4%8J zx1v;g&X`IM82a#=`k%X?S!z=>{2`G{8LUqG_1G%fZ?OQ#6I2OxA(vD1E!xHtr{gac ztkZv^SwHw;OIn6?zE!M0YI#h6Of^3xzhB~<6*r&$9M(+H;ik#Aq25|P*&~>h*bjR! z{#vStVBLy%zW*^?i%=?^L}h(93a-SM8|v@lSdxaA4@}3wZ0Vw^yYGT)6iP|Fa$1 worth of collateral +1. **Redemption Backing**: Every MOET can theoretically be redeemed for collateral worth significantly more than the debt value 2. **Liquidation Buffer**: Provides time for liquidators to act before insolvency 3. **Market Confidence**: Users trust MOET is backed by real, valuable assets -4. **Arbitrage Floor**: If MOET < $1, arbitrageurs can profit by buying MOET to repay debt and unlock collateral +4. **Arbitrage Floor**: If MOET trades below backing value, arbitrageurs can profit by buying MOET to repay debt and unlock collateral ### Liquidation System @@ -198,58 +208,58 @@ Phase 4: Equilibrium ### Arbitrage Mechanisms -Price deviations from $1 create profitable arbitrage opportunities that naturally restore the peg. +Price deviations from MOET's backing value create profitable arbitrage opportunities that naturally restore stability. -**MOET Trading Above $1 (e.g., $1.05):** +**MOET Trading Above Backing Value:** ``` Arbitrage Strategy: Step 1: Borrow MOET -β”œβ”€β”€ Deposit: $1,625 FLOW collateral -β”œβ”€β”€ Borrow: 1,000 MOET (valued at $1,000 on-protocol) -β”œβ”€β”€ Cost: Interest on 1,000 MOET debt -└── Capital: 1,000 MOET in hand +β”œβ”€β”€ Deposit: Collateral (e.g., FLOW) +β”œβ”€β”€ Borrow: MOET against collateral at protocol-determined value +β”œβ”€β”€ Cost: Interest on MOET debt +└── Capital: MOET in hand Step 2: Sell MOET on Market -β”œβ”€β”€ Market price: $1.05 -β”œβ”€β”€ Sell: 1,000 MOET for $1,050 -β”œβ”€β”€ Profit captured: $50 immediate -└── Hold: $1,050 stablecoins +β”œβ”€β”€ Market price: Premium above backing value +β”œβ”€β”€ Sell: MOET for stable assets at premium +β”œβ”€β”€ Profit captured: Difference between market and backing value +└── Hold: Stablecoins -Step 3: Wait for Peg Restoration -β”œβ”€β”€ MOET price: Returns to $1.00 -β”œβ”€β”€ Or: Hold position and earn on $1,050 -└── Later repay: 1,000 MOET debt +Step 3: Wait for Value Normalization +β”œβ”€β”€ MOET price: Returns to backing value +β”œβ”€β”€ Or: Hold position and earn yield +└── Later repay: MOET debt Step 4: Close Position -β”œβ”€β”€ Buy back: 1,000 MOET at $1.00 = $1,000 -β”œβ”€β”€ Repay debt: 1,000 MOET to ALP -β”œβ”€β”€ Withdraw: $1,625 FLOW collateral -β”œβ”€β”€ Net profit: $1,050 - $1,000 - interest β‰ˆ $45 -└── Market impact: Selling pressure pushed MOET β†’ $1.00 +β”œβ”€β”€ Buy back: MOET at normalized backing value +β”œβ”€β”€ Repay debt: MOET to ALP +β”œβ”€β”€ Withdraw: Collateral +β”œβ”€β”€ Net profit: Premium minus interest and costs +└── Market impact: Selling pressure pushes MOET toward backing value Arbitrageur Incentive: -β”œβ”€β”€ Risk-free profit: When MOET > $1 +β”œβ”€β”€ Profit opportunity: When MOET trades above backing value β”œβ”€β”€ Increased supply: More MOET on market (from borrowing) β”œβ”€β”€ Selling pressure: Drives price down -└── Peg restored: MOET returns to $1 +└── Value restored: MOET returns to backing value ``` -**MOET Trading Below $1 (e.g., $0.95):** +**MOET Trading Below Backing Value:** ``` Arbitrage Strategy: Step 1: Buy Discounted MOET -β”œβ”€β”€ Market price: $0.95 -β”œβ”€β”€ Buy: 1,000 MOET for $950 -β”œβ”€β”€ Savings: $50 vs. $1 peg -└── Capital: 1,000 MOET in hand +β”œβ”€β”€ Market price: Below backing value +β”œβ”€β”€ Buy: MOET on market at discount +β”œβ”€β”€ Savings: Discount relative to backing value +└── Capital: MOET in hand Step 2: Repay Existing Debt -β”œβ”€β”€ Existing position: 1,000 MOET debt (valued at $1,000 on-protocol) -β”œβ”€β”€ Repay using: 1,000 MOET purchased for $950 -β”œβ”€β”€ Debt cleared: 1,000 MOET -└── Savings realized: $50 +β”œβ”€β”€ Existing position: MOET debt valued at backing value on-protocol +β”œβ”€β”€ Repay using: MOET purchased at discount +β”œβ”€β”€ Debt cleared: Full MOET amount +└── Savings realized: Discount amount Step 3: Unlock Collateral β”œβ”€β”€ Debt: Fully repaid @@ -258,24 +268,24 @@ Step 3: Unlock Collateral └── Collateral freed: Can be used elsewhere Alternative Strategy (Profitable Liquidations): -β”œβ”€β”€ Buy: 1,000 MOET for $950 +β”œβ”€β”€ Buy: MOET at discount β”œβ”€β”€ Liquidate: Underwater positions -β”œβ”€β”€ Receive: Collateral worth $1,050 (5% bonus) -β”œβ”€β”€ Net profit: $1,050 - $950 = $100 -└── Market impact: Buying pressure pushed MOET β†’ $1.00 +β”œβ”€β”€ Receive: Collateral with liquidation bonus +β”œβ”€β”€ Net profit: Bonus plus discount +└── Market impact: Buying pressure pushes MOET toward backing value Arbitrageur Incentive: -β”œβ”€β”€ Discounted debt repayment: When MOET < $1 -β”œβ”€β”€ Profitable liquidations: Higher margins +β”œβ”€β”€ Discounted debt repayment: When MOET below backing value +β”œβ”€β”€ Profitable liquidations: Enhanced margins from discount β”œβ”€β”€ Buying pressure: Drives price up -└── Peg restored: MOET returns to $1 +└── Value restored: MOET returns to backing value ``` ## Risk Factors and Mitigation -### Depeg Risk +### Value Deviation Risk -**Risk**: MOET trades significantly away from $1, breaking user confidence. +**Risk**: MOET trades significantly away from its backing value, breaking user confidence. **Causes:** @@ -284,13 +294,13 @@ Supply-Side Shock: β”œβ”€β”€ Sudden collateral price crash β”œβ”€β”€ Mass liquidations β†’ large MOET sell pressure β”œβ”€β”€ Liquidators dump MOET on market -└── Price spirals: MOET β†’ $0.80 +└── Price spirals: MOET trades below backing value Demand-Side Shock: β”œβ”€β”€ Loss of confidence in protocol β”œβ”€β”€ Users rush to repay debt β”œβ”€β”€ High MOET demand β†’ price spike -└── Price spikes: MOET β†’ $1.20 +└── Price spikes: MOET trades above backing value Oracle Failure: β”œβ”€β”€ Oracle reports incorrect prices @@ -309,14 +319,14 @@ Current (Implicit): └── Arbitrage: Profit-seeking restores peg Needed for Production: -β”œβ”€β”€ MOET/USD Price Feed: Active monitoring +β”œβ”€β”€ MOET Value Oracle: Active monitoring relative to backing assets β”œβ”€β”€ Circuit Breakers: Pause minting/borrowing during extreme volatility -β”œβ”€β”€ Reserve Fund: Protocol-owned MOET/collateral to stabilize price -β”œβ”€β”€ Stability Module: Direct MOET ↔ $1 redemptions (like DAI PSM) +β”œβ”€β”€ Reserve Fund: Protocol-owned MOET/collateral to stabilize value +β”œβ”€β”€ Stability Module: Redemption mechanisms tied to backing asset values └── Gradual Rollout: Caps on total supply during early phase ``` -**Example Depeg Scenario:** +**Example Value Deviation Scenario:** ``` Day 1: Flash Crash @@ -325,32 +335,32 @@ Day 1: Flash Crash β”œβ”€β”€ Liquidations triggered: 3M MOET worth β”œβ”€β”€ Liquidators acquire: 3M MOET β”œβ”€β”€ Liquidators sell: On DEXs for stablecoins -β”œβ”€β”€ MOET price: $1.00 β†’ $0.92 (-8%) +β”œβ”€β”€ MOET market price: Drops 8% below backing value └── Fear spreads: Users panic Day 2: Panic Selling β”œβ”€β”€ Users sell: MOET positions on DEXs β”œβ”€β”€ More liquidations: Triggered by volatility -β”œβ”€β”€ MOET price: $0.92 β†’ $0.85 (-15% total) +β”œβ”€β”€ MOET market price: 15% below backing value β”œβ”€β”€ System still solvent: Collateral > debt -└── But: Market price β‰  redemption value +└── But: Market price temporarily deviates from backing value Recovery Mechanism (Without Direct Intervention): -β”œβ”€β”€ Arbitrageurs notice: MOET at $0.85, redeemable for $1 of collateral -β”œβ”€β”€ Arbitrage: Buy MOET at $0.85, repay debt, profit $0.15 per MOET +β”œβ”€β”€ Arbitrageurs notice: MOET trading below backing value +β”œβ”€β”€ Arbitrage: Buy discounted MOET, repay debt, profit from discount β”œβ”€β”€ Buying pressure: Increases demand β”œβ”€β”€ Liquidations stabilize: Collateral prices bottom out -β”œβ”€β”€ Days 3-7: MOET gradually recovers to $0.95 -β”œβ”€β”€ Days 8-14: Returns to $1.00 +β”œβ”€β”€ Days 3-7: MOET gradually recovers toward backing value +β”œβ”€β”€ Days 8-14: Returns to backing value └── Lesson: Protocol remained solvent, market recovered naturally Recovery Mechanism (With Direct Intervention): -β”œβ”€β”€ Protocol Reserve: Buys 500K MOET at $0.85 = $425K spent +β”œβ”€β”€ Protocol Reserve: Buys 500K MOET at discount β”œβ”€β”€ Immediate support: Prevents further decline -β”œβ”€β”€ Confidence restored: Users see protocol actively defending peg -β”œβ”€β”€ Days 2-3: MOET returns to $0.98 -β”œβ”€β”€ Days 4-5: Stabilizes at $1.00 -β”œβ”€β”€ Protocol profits: Sells 500K MOET at $1.00 = $500K (earned $75K) +β”œβ”€β”€ Confidence restored: Users see protocol actively defending value +β”œβ”€β”€ Days 2-3: MOET returns closer to backing value +β”œβ”€β”€ Days 4-5: Stabilizes at backing value +β”œβ”€β”€ Protocol profits: Sells 500K MOET at backing value (earns spread) └── Reserves replenished: Ready for next crisis ``` @@ -615,8 +625,8 @@ Example Impact: | Enhancement | Purpose | Priority | |-------------|---------|----------| -| **MOET/USD Oracle** | Monitor peg deviation | Critical | -| **Reserve Fund** | Direct peg support | Critical | +| **MOET Value Oracle** | Monitor value relative to backing assets | Critical | +| **Reserve Fund** | Direct value support | Critical | | **Circuit Breakers** | Pause during crisis | High | | **Multi-Sig Minting** | Decentralize control | Critical | | **Liquidation Limits** | Prevent cascades | High | @@ -637,7 +647,7 @@ Critical Risk (Address Immediately): High Risk (Address Before Mainnet): β”œβ”€β”€ Cascading Liquidations: Medium likelihood, High impact -β”œβ”€β”€ Depeg During Volatility: High likelihood, Medium impact +β”œβ”€β”€ Value Deviation During Volatility: High likelihood, Medium impact └── Liquidity Crisis: Medium likelihood, High impact Medium Risk (Monitor and Improve): @@ -680,9 +690,9 @@ Aggressive View: ### Phase 1: Critical Infrastructure (Pre-Mainnet) ``` -1. Implement MOET/USD Oracle -β”œβ”€β”€ Deploy: Chainlink or similar price feed -β”œβ”€β”€ Monitor: Real-time peg tracking +1. Implement MOET Value Oracle +β”œβ”€β”€ Deploy: Price feeds for monitoring value relative to backing assets +β”œβ”€β”€ Monitor: Real-time backing value tracking └── Alert: Deviations > Β±2% 2. Add Multi-Sig Minting @@ -758,9 +768,9 @@ MOET's stability relies on a multi-layered approach combining over-collateraliza 3. **Economic incentives** through interest rates and arbitrage opportunities 4. **Automated capital flows** via FYV yield providing position protection -For production deployment, critical enhancements are needed including MOET/USD oracles, reserve funds, multi-sig controls, and comprehensive audits. With these measures in place, MOET can serve as a stable, capital-efficient synthetic stablecoin powering the FCM ecosystem. +For production deployment, critical enhancements are needed including MOET value oracles, reserve funds, multi-sig controls, and comprehensive audits. With these measures in place, MOET can serve as a stable, capital-efficient synthetic stablecoin powering the FCM ecosystem. -**Key Takeaway for Analysts**: MOET's stability is fundamentally sound in design but requires additional infrastructure before large-scale production use. The over-collateralization model provides strong backing, but active monitoring and intervention capabilities are essential for maintaining the peg during extreme market conditions. +**Key Takeaway for Analysts**: MOET's stability is fundamentally sound in design but requires additional infrastructure before large-scale production use. The over-collateralization model provides strong backing, but active monitoring and intervention capabilities are essential for maintaining value stability relative to backing assets during extreme market conditions. MOET's value is determined by the geometric weighted average of its backing assets, making it impractical to maintain a strict peg to any single external asset like USD. ## Additional Resources diff --git a/docs/defi/moet/tokenomics.md b/docs/defi/moet/tokenomics.md index 4278bcb434..4517e123dd 100644 --- a/docs/defi/moet/tokenomics.md +++ b/docs/defi/moet/tokenomics.md @@ -8,6 +8,13 @@ sidebar_position: 2 This document provides a comprehensive analysis of MOET's supply dynamics, minting and burning mechanisms, interest rate models, and economic incentives. +**Key Abbreviations:** Throughout this document, we use the following abbreviations: +- **HF** = Health Factor (measures position safety: effective collateral Γ· debt) +- **CF** = Collateral Factor (percentage of collateral value that can be borrowed against) +- **ALP** = [Automated Lending Platform](../alp/index.md) +- **FYV** = [Flow Yield Vaults](../flow-yield-vaults/index.md) +- **APY** = Annual Percentage Yield + ## Supply Management MOET employs a **dynamic supply model** where total supply directly tracks outstanding debt across all ALP positions.

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%0D_!c&Ymd0p=3T$GyF6o4%fW5YtcTZsg{Y5@ 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