info_tfgrid/collections/projectinca/specs_blockchain/liquidity_pool_contract.md
2024-08-17 13:22:25 +02:00

2.3 KiB

Liquidity Pool Contract

More info see here

some further specs

graph TB
    Start((Start)) --> Register[Register Participant]
    Register --> SetPreferences[Set Price Preferences]
    SetPreferences --> JoinPool[Join Liquidity Pool]

    JoinPool --> Transaction{Transaction?}
    Transaction -->|Buy| BuyProcess[Buy Process]
    Transaction -->|Sell| SellProcess[Sell Process]
    Transaction -->|No Transaction| Monitor[Monitor Pool]

    BuyProcess --> CheckLiquidity{Sufficient Liquidity?}
    CheckLiquidity -->|Yes| ExecuteBuy[Execute Buy]
    CheckLiquidity -->|No| QueueRequest[Queue Buy Request]

    SellProcess --> CheckPriceLimit{Meet Price Limit?}
    CheckPriceLimit -->|Yes| ExecuteSell[Execute Sell]
    CheckPriceLimit -->|No| WaitForPrice[Wait for Price Change]

    ExecuteBuy --> UpdateAccounts[Update All Accounts]
    ExecuteSell --> UpdateAccounts
    UpdateAccounts --> CalculateDiscount[Calculate TFGrid Discount]

    QueueRequest --> Monitor
    WaitForPrice --> Monitor

    Monitor --> AggregateStats[Aggregate Daily Stats]
    AggregateStats --> PublishStats[Publish Aggregate Stats]

    PublishStats --> CheckLockup{Lockup Period?}
    CheckLockup -->|Yes| ContinueHolding[Continue Holding]
    CheckLockup -->|No| Withdraw{Withdraw?}

    Withdraw -->|Yes| ProcessWithdrawal[Process Withdrawal]
    Withdraw -->|No| Transaction

    ProcessWithdrawal --> UpdateAccounts
    ContinueHolding --> Transaction

    subgraph "Liquidity Pool Operations"
        Transaction
        BuyProcess
        SellProcess
        CheckLiquidity
        CheckPriceLimit
        ExecuteBuy
        ExecuteSell
        QueueRequest
        WaitForPrice
        UpdateAccounts
        Monitor
        AggregateStats
        PublishStats
    end

    classDef process fill:#f9f,stroke:#333,stroke-width:2px;
    classDef decision fill:#ff9,stroke:#333,stroke-width:2px;
    classDef start fill:#9f9,stroke:#333,stroke-width:2px;
    class Start start;
    class Transaction,CheckLiquidity,CheckPriceLimit,Withdraw,CheckLockup decision;
    class Register,SetPreferences,JoinPool,BuyProcess,SellProcess,ExecuteBuy,ExecuteSell,QueueRequest,WaitForPrice,UpdateAccounts,CalculateDiscount,Monitor,AggregateStats,PublishStats,ContinueHolding,ProcessWithdrawal process;