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
Customizable Liquidity Ranges
Providers can select specific price intervals
Liquidity is concentrated within chosen price bounds
More capital deployed near current market price
Price Ticks
Discrete price points within the liquidity range
Enables granular liquidity positioning
Similar to order book price levels
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
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 });
Staking Liquidity
solidityCopy// Stake a portion of liquidity uint128 liquidityToStake = calculateStakeAmount(); nft.stake(tokenId, liquidityToStake);
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