93 lines
2.5 KiB
Markdown
93 lines
2.5 KiB
Markdown
|
|
# Enhanced Routing and Liquidity Engine
|
||
|
|
|
||
|
|
This document explains the enhanced routing system with multi-protocol support and automated liquidity management.
|
||
|
|
|
||
|
|
## Overview
|
||
|
|
|
||
|
|
The Enhanced Swap Router provides intelligent routing across multiple DEX protocols:
|
||
|
|
- **Uniswap V3**: Primary for small swaps, high liquidity
|
||
|
|
- **Dodoex PMM**: Best for large swaps, lower slippage
|
||
|
|
- **Balancer**: Weighted pools for stablecoin swaps
|
||
|
|
- **Curve**: Deep liquidity for stable/stable swaps
|
||
|
|
- **1inch**: Aggregation for best execution
|
||
|
|
|
||
|
|
## Decision Logic Map
|
||
|
|
|
||
|
|
The system uses a decision logic map to route swaps optimally:
|
||
|
|
|
||
|
|
### Size-Based Routing
|
||
|
|
|
||
|
|
- **Small swaps** (< $10k): Uniswap V3 → Dodoex
|
||
|
|
- **Medium swaps** ($10k-$100k): Dodoex → Balancer → Uniswap V3
|
||
|
|
- **Large swaps** (> $100k): Dodoex → Curve → Balancer
|
||
|
|
|
||
|
|
### Slippage-Based Routing
|
||
|
|
|
||
|
|
- **Low slippage** (< 0.1%): Prefer Dodoex (PMM provides better price)
|
||
|
|
- **Medium slippage** (< 0.5%): Prefer Balancer
|
||
|
|
- **High slippage**: Prefer Curve (deepest liquidity)
|
||
|
|
|
||
|
|
### Liquidity-Based Routing
|
||
|
|
|
||
|
|
- **High liquidity** (> $1M): Prefer Uniswap V3
|
||
|
|
- **Medium liquidity**: Prefer Dodoex
|
||
|
|
- **Low liquidity**: Prefer Curve
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
### Basic Swap
|
||
|
|
|
||
|
|
```solidity
|
||
|
|
(uint256 amountOut, SwapProvider provider) = enhancedSwapRouter.swapToStablecoin(
|
||
|
|
LiquidityPoolETH.AssetType.WETH,
|
||
|
|
usdtAddress,
|
||
|
|
amountIn,
|
||
|
|
amountOutMin,
|
||
|
|
SwapProvider.UniswapV3 // 0 = auto-select
|
||
|
|
);
|
||
|
|
```
|
||
|
|
|
||
|
|
### Get Quotes
|
||
|
|
|
||
|
|
```solidity
|
||
|
|
(SwapProvider[] memory providers, uint256[] memory amounts) =
|
||
|
|
enhancedSwapRouter.getQuotes(usdtAddress, amountIn);
|
||
|
|
```
|
||
|
|
|
||
|
|
## Admin Configuration
|
||
|
|
|
||
|
|
### Update Routing Config
|
||
|
|
|
||
|
|
```solidity
|
||
|
|
SwapProvider[] memory providers = new SwapProvider[](2);
|
||
|
|
providers[0] = SwapProvider.Dodoex;
|
||
|
|
providers[1] = SwapProvider.Balancer;
|
||
|
|
|
||
|
|
router.setRoutingConfig(0, providers); // 0 = small swaps
|
||
|
|
```
|
||
|
|
|
||
|
|
### Toggle Providers
|
||
|
|
|
||
|
|
```solidity
|
||
|
|
router.setProviderEnabled(SwapProvider.Dodoex, true);
|
||
|
|
router.setProviderEnabled(SwapProvider.Curve, false);
|
||
|
|
```
|
||
|
|
|
||
|
|
## Liquidity Engine Service
|
||
|
|
|
||
|
|
The backend service provides:
|
||
|
|
|
||
|
|
1. **Quote Aggregation**: Compare prices across all protocols
|
||
|
|
2. **Decision Logic**: Apply routing rules automatically
|
||
|
|
3. **Simulation**: Test routing decisions before execution
|
||
|
|
4. **Analytics**: Track routing performance
|
||
|
|
|
||
|
|
## Benefits
|
||
|
|
|
||
|
|
1. **Better Execution**: Always use best available price
|
||
|
|
2. **Lower Slippage**: Dodoex PMM for large trades
|
||
|
|
3. **Resilience**: Multiple fallback options
|
||
|
|
4. **Automation**: No manual intervention needed
|
||
|
|
5. **Transparency**: All decisions visible in admin dashboard
|
||
|
|
|