Moai Finance 2.0

Moai Finance 2.0 utilizes Uniswap V3 to provide concentrated and efficient liquidity.

Concentrated Liquidity Concept

What is Concentrated Liquidity?

Concentrated Liquidity allows liquidity providers to:

  • Specify precise price ranges for token pairs

  • Maximize capital efficiency

  • Provide liquidity more strategically compared to traditional AMMs

Key Characteristics

  1. Customizable Liquidity Ranges

    • Providers can select specific price intervals

    • Liquidity is concentrated within chosen price bounds

    • More capital deployed near current market price

  2. Price Ticks

    • Discrete price points within the liquidity range

    • Enables granular liquidity positioning

    • Similar to order book price levels

  3. Active Tick

    • The current price tick where trading occurs

    • Liquidity is most concentrated and active at this point

Technical Implementation

Smart Contract Modifications

solidityCopy// Core Contract Interfaces
contract UniswapV3Pool {
    // Tracking liquidity properties
    uint128 public liquidity;
    uint128 public liquidityStaked;
    
    // Reward and fee tracking
    uint256 public rewardGrowth;
    uint256 public feeGrowth0;
    uint256 public feeGrowth1;
}

contract NonfungiblePositionManager {
    // Liquidity Position Management
    function mint(...) external returns (uint256 tokenId);
    function stake(uint256 tokenId, uint128 liquidityAmount) external;
    function unstake(uint256 tokenId, uint128 liquidityAmount) external;
    
    // Position Information Retrieval
    function positions(uint256 tokenId) external view returns (..., uint128 liquidity, ...);
    function positions2(uint256 tokenId) external view returns (uint128 liquidityStaked, ...);
}

Interaction Workflow

  1. Liquidity Provision

    solidityCopy// Provide liquidity to a specific range
    (uint256 tokenId,,) = nft.mint({
        token0: address,
        token1: address,
        fee: uint24,
        tickLower: int24,
        tickUpper: int24,
        amount0Desired: uint256,
        amount1Desired: uint256
    });
  2. Staking Liquidity

    solidityCopy// Stake a portion of liquidity
    uint128 liquidityToStake = calculateStakeAmount();
    nft.stake(tokenId, liquidityToStake);
  3. Unstaking Liquidity

    solidityCopy// Unstake liquidity
    uint128 liquidityToUnstake = calculateUnstakeAmount();
    nft.unstake(tokenId, liquidityToUnstake);

Unique Features

  • Flexible Staking: Partial liquidity can be staked

  • Reward Tracking: Continuous Moai rewards for staked positions

  • Fee Distribution: Trading fees distributed to Moai stakers

Important Considerations

  • Transferring position NFT automatically un-stakes all liquidity

  • Staking amount cannot exceed available unstaked liquidity

  • Carefully select price ranges to optimize returns

Potential Strategies

  • Narrow Range: High capital efficiency, more risk

  • Wide Range: Lower capital efficiency, more stability

  • Dynamic Range Adjustment: Actively manage liquidity position

Last updated