Skip to content

cryptocj520/meteora2

Repository files navigation

🏗️ DLMM 流动性管理系统

企业级 Solana DLMM 流动性自动化管理平台

📋 项目概述

DLMM流动性管理系统是一个基于 Solana 区块链的企业级动态流动性做市商(Dynamic Liquidity Market Maker)自动化管理平台。系统采用现代化的微服务架构设计,提供完整的流动性策略管理、风险控制、收益分析和实时监控功能。

🎯 核心特性

  • 🏗️ 企业级架构: 基于 TypeScript + 依赖注入的模块化设计,支持高并发和故障容错
  • 🤖 智能策略引擎: 内置多种流动性策略,支持自定义策略开发和热更新
  • ⚡ 实时监控系统: WebSocket 驱动的实时数据监控和告警系统
  • 🔒 企业级安全: 钱包加密存储、权限管理、审计日志
  • 📊 数据分析平台: 完整的收益分析、风险评估和报表系统
  • 🌐 现代化 Web 界面: 响应式仪表盘,直观的操作体验
  • 🔄 自动化运维: 容器化部署、健康检查、故障自愈

🏛️ 技术架构

📦 系统架构图

┌─────────────────────────────────────────────────────────────┐
│                     Web 前端界面 (7001)                      │
│  ┌─────────────┬─────────────┬─────────────┬─────────────┐  │
│  │   钱包管理   │   策略管理   │   交易中心   │   监控中心   │  │
│  └─────────────┴─────────────┴─────────────┴─────────────┘  │
└─────────────────────┬───────────────────────────────────────┘
                      │ WebSocket (7002/7003)
┌─────────────────────┴───────────────────────────────────────┐
│                    后端 API 服务 (7000)                      │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │                  API 网关层                              │ │
│  │    路由管理 │ 认证授权 │ 限流熔断 │ 日志记录             │ │
│  └─────────────────────────────────────────────────────────┘ │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │                  业务服务层                              │ │
│  │  ┌─────────────┬─────────────┬─────────────┬──────────┐ │ │
│  │  │  策略管理器  │  头寸管理器  │  钱包服务   │ 分析服务  │ │ │
│  │  └─────────────┴─────────────┴─────────────┴──────────┘ │ │
│  └─────────────────────────────────────────────────────────┘ │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │                  协议适配层                              │ │
│  │  ┌─────────────┬─────────────┬─────────────┬──────────┐ │ │
│  │  │ Meteora     │  Jupiter    │   多RPC     │ 池爬虫   │ │ │
│  │  │   适配器     │   适配器     │   管理器     │  服务   │ │ │
│  │  └─────────────┴─────────────┴─────────────┴──────────┘ │ │
│  └─────────────────────────────────────────────────────────┘ │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │                  基础设施层                              │ │
│  │    事件总线 │ 日志服务 │ 缓存服务 │ 配置管理 │ 状态管理  │ │
│  └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

🧱 模块分层设计

┌─── 表示层 (Presentation Layer)
│    ├── Web 前端界面 (React-like Components)
│    ├── RESTful API 接口
│    └── WebSocket 实时通信
│
├─── 业务逻辑层 (Business Layer)
│    ├── 策略管理器 (StrategyManager)
│    ├── 头寸管理器 (PositionManager)
│    ├── 钱包管理器 (WalletService)
│    ├── 分析服务 (AnalyticsService)
│    └── 风险控制器 (RiskController)
│
├─── 服务层 (Service Layer)
│    ├── 区块链服务 (BlockchainService)
│    ├── 外部集成服务 (ExternalService)
│    └── 内部服务 (InternalService)
│
├─── 数据访问层 (Data Access Layer)
│    ├── 缓存管理 (CacheService)
│    ├── 状态存储 (StateService)
│    └── 配置管理 (ConfigService)
│
└─── 基础设施层 (Infrastructure Layer)
     ├── 事件总线 (EventBus)
     ├── 日志系统 (LoggerService)
     ├── 监控系统 (MonitorService)
     └── 依赖注入 (DIContainer)

🚀 快速开始

💻 环境要求

组件 版本要求 说明
Node.js >= 18.0.0 JavaScript 运行时
NPM >= 9.0.0 包管理器
内存 >= 4GB 推荐 8GB
存储 >= 20GB SSD 推荐
网络 稳定的互联网连接 需要访问 Solana RPC

⚡ 一键启动

# 1. 克隆项目
git clone <repository-url>
cd dlmm-liquidity-manager

# 2. 安装依赖
npm install

# 3. 配置环境变量
cp env.example .env
# 编辑 .env 文件,配置必要参数

# 4. 一键启动系统
./scripts/quick-start.sh

# 5. 验证部署
curl http://localhost:7000/api/health
curl http://localhost:7001/health

🔧 详细配置

环境变量配置

# .env 配置文件
NODE_ENV=production                    # 运行环境
SERVER_PORT=7000                      # API 服务器端口
WS_PORT=7002                          # WebSocket 端口
MONITOR_PORT=7003                     # 监控端口

# Solana 区块链配置
SOLANA_NETWORK=mainnet-beta           # Solana 网络
SOLANA_PRIVATE_KEY=your-private-key   # 钱包私钥 (Base58)
RPC_PRIMARY=https://api.mainnet-beta.solana.com
RPC_BACKUP=https://solana-api.projectserum.com

# Jupiter 交易配置
JUPITER_API_URL=https://quote-api.jup.ag/v6
JUPITER_SLIPPAGE_BPS=50               # 默认滑点 0.5%

# 安全配置
WALLET_ENCRYPTION_KEY=your-encryption-key  # 钱包加密密钥

# 日志配置
LOG_LEVEL=info                        # 日志级别
LOG_MAX_FILE_SIZE=2097152            # 单个日志文件最大大小 (2MB)
LOG_MAX_FILES=5                      # 最大日志文件数量

高级配置

// config/default.json
{
  "strategy": {
    "defaultTimeout": 1800000,        // 策略执行超时 (30分钟)
    "monitorInterval": 30000,         // 监控间隔 (30秒)
    "maxActiveStrategies": 10,        // 最大并发策略数
    "defaultParams": {
      "slippageBps": 100,             // 默认滑点 1%
      "binRange": 69,                 // 默认 Bin 范围
      "outOfRangeTimeoutMinutes": 30, // 超出范围超时
      "stopLossBinOffset": 5          // 止损 Bin 偏移
    }
  },
  "solana": {
    "priorityFee": 200000,            // 优先级费用
    "commitment": "confirmed",         // 确认级别
    "timeout": 30000,                 // RPC 超时
    "retries": {
      "maxRetries": 3,                // 最大重试次数
      "retryDelayMs": 2000,           // 重试延迟
      "backoffFactor": 2              // 退避因子
    }
  }
}

🛠️ 功能模块

🔐 钱包管理系统

核心功能

  • 安全存储: AES-256-GCM 加密存储私钥
  • 多签支持: 支持多重签名钱包
  • 余额管理: 实时查询 SOL 和 SPL Token 余额
  • 交易签名: 安全的交易签名机制

API 接口

# 创建钱包
POST /api/wallet/create
{
  "password": "your-secure-password"
}

# 解锁钱包
POST /api/wallet/unlock
{
  "password": "your-secure-password"
}

# 获取余额
GET /api/wallet/balance
GET /api/wallet/balance/:tokenMint

# 锁定钱包
POST /api/wallet/lock

📊 策略管理系统

策略类型

  1. 简单 Y 头寸策略 (Simple Y Strategy)

    • 用途: 单侧流动性提供
    • 特点: 专注单一代币流动性,风险相对较低
    • 适用场景: 稳定币对、主流代币
  2. 连锁头寸策略 (Chain Position Strategy)

    • 用途: 多层级流动性管理
    • 特点: 创建连续的流动性区间,自动调整
    • 适用场景: 高波动性代币对

策略配置

{
  "type": "simple_y",
  "params": {
    "poolAddress": "pool_address_here",
    "yAmount": 1000000,              // Y 代币数量 (最小单位)
    "binRange": 69,                  // Bin 范围
    "slippageBps": 100,             // 滑点容忍度 (1%)
    "autoRebalance": true,          // 自动重平衡
    "stopLoss": {
      "enabled": true,
      "binOffset": 5,               // 止损触发偏移
      "percentage": 10              // 止损百分比
    },
    "monitoring": {
      "interval": 30000,            // 监控间隔 (30秒)
      "outOfRangeTimeout": 1800000  // 超出范围超时 (30分钟)
    }
  }
}

策略生命周期管理

# 创建策略
POST /api/strategy/create
{
  "type": "simple_y",
  "name": "USDC-SOL流动性策略",
  "params": { ... }
}

# 启动策略
POST /api/strategy/:instanceId/start

# 暂停策略
POST /api/strategy/:instanceId/pause

# 恢复策略
POST /api/strategy/:instanceId/resume

# 停止策略
POST /api/strategy/:instanceId/stop

# 获取策略状态
GET /api/strategy/:instanceId

# 获取所有策略
GET /api/strategy/list

🎯 头寸管理系统

头寸类型

  • Y 头寸: 单一代币流动性头寸
  • X 头寸: 对称流动性头寸
  • 双向头寸: 同时持有 X 和 Y 头寸

头寸操作

# 创建 Y 头寸
POST /api/position/y/create
{
  "poolAddress": "pool_address",
  "amount": "1000000",
  "binRange": 69,
  "slippageBps": 100
}

# 创建 X 头寸
POST /api/position/x/create
{
  "poolAddress": "pool_address",
  "amount": "1000000",
  "binRange": 69,
  "slippageBps": 100
}

# 关闭头寸
DELETE /api/position/:positionAddress

# 收取手续费
POST /api/position/:positionAddress/harvest

# 获取头寸信息
GET /api/position/:positionAddress

# 获取用户所有头寸
GET /api/position/user/:userAddress

🪐 Jupiter 交易集成

交易功能

  • 智能路由: 自动寻找最优交易路径
  • 滑点保护: 自适应滑点管理
  • MEV 保护: 反 MEV 交易策略
  • 批量交易: 支持批量交易执行

交易接口

# 获取报价
POST /api/jupiter/quote
{
  "inputMint": "So11111111111111111111111111111111111111112",
  "outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "amount": "1000000",
  "slippageBps": 50
}

# 执行交易
POST /api/jupiter/swap
{
  "route": { ... },
  "userPublicKey": "user_public_key"
}

# 获取交易历史
GET /api/jupiter/history/:userAddress

🏊 池爬虫系统

功能特性

  • 自动发现: 实时发现新的 DLMM 流动性池
  • 智能筛选: 基于多维度指标筛选优质池子
  • 风险评估: 自动评估池子风险等级
  • 实时监控: 监控池子状态变化

筛选条件

{
  "filters": {
    "meteorScore": {
      "min": 70,
      "max": 100
    },
    "tvl": {
      "min": 10000,
      "max": 10000000
    },
    "age": {
      "minHours": 24,
      "maxHours": 720
    },
    "apr": {
      "min24h": 5,
      "max24h": 1000
    },
    "volume": {
      "min24h": 10000,
      "max24h": 100000000
    },
    "fdv": {
      "min": 1000000,
      "max": 1000000000
    }
  }
}

📈 数据分析系统

分析维度

  • 收益分析: PnL 计算、APR/APY 分析
  • 风险分析: VaR、最大回撤、夏普比率
  • 策略对比: 不同策略效果对比
  • 市场分析: 市场趋势、相关性分析

分析接口

# 获取策略收益报告
GET /api/analytics/strategy/:instanceId/pnl

# 获取头寸分析
GET /api/analytics/position/:positionAddress

# 获取市场数据
GET /api/analytics/market/:poolAddress

# 导出报表
GET /api/analytics/export/:type

🌐 Web界面使用指南

📊 仪表盘概览

访问 http://localhost:7001 进入系统主界面

主要功能模块

  1. 钱包管理页面

    • 钱包创建和导入
    • 余额查询和管理
    • 交易历史记录
  2. 策略管理页面

    • 策略创建向导
    • 实时策略监控
    • 策略配置管理
  3. 头寸管理页面

    • 头寸创建和关闭
    • 头寸实时监控
    • 收益统计分析
  4. 交易中心页面

    • Jupiter 代币交换
    • 交易历史记录
    • 市场数据查看
  5. 池爬虫页面

    • 池子发现和筛选
    • 过滤条件设置
    • 实时监控面板
  6. 分析中心页面

    • 收益分析报表
    • 风险评估报告
    • 策略效果对比

🖱️ 操作流程

创建第一个策略

  1. 准备钱包

    钱包管理 → 创建钱包 → 输入密码 → 保存助记词
    
  2. 选择池子

    池爬虫 → 设置筛选条件 → 选择合适池子 → 复制池地址
    
  3. 创建策略

    策略管理 → 创建策略 → 选择类型 → 配置参数 → 启动策略
    
  4. 监控运行

    策略监控 → 查看实时状态 → 分析收益表现 → 调整参数
    

🐳 部署和运维

📦 Docker 部署

使用 Docker Compose (推荐)

# docker-compose.yml
version: '3.8'
services:
  dlmm-manager:
    build: .
    ports:
      - "7000:7000"    # API 服务
      - "7001:7001"    # Web 界面
      - "7002:7002"    # WebSocket
      - "7003:7003"    # 监控
    environment:
      - NODE_ENV=production
      - SERVER_PORT=7000
      - WS_PORT=7002
      - MONITOR_PORT=7003
    volumes:
      - ./data:/app/data
      - ./logs:/app/logs
      - ./config:/app/config
    env_file:
      - .env
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:7000/api/health"]
      interval: 30s
      timeout: 10s
      retries: 3

部署命令

# 构建和启动
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

# 更新服务
docker-compose pull && docker-compose up -d

🖥️ 传统部署

Ubuntu 服务器部署

# 1. 安装 Node.js
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs

# 2. 克隆项目
git clone <repository-url>
cd dlmm-liquidity-manager

# 3. 安装依赖
npm install --production

# 4. 配置环境
cp env.example .env
# 编辑配置文件

# 5. 构建项目
npm run build

# 6. 使用 PM2 管理进程
npm install -g pm2
pm2 start ecosystem.config.js
pm2 save
pm2 startup

PM2 配置文件

// ecosystem.config.js
module.exports = {
  apps: [{
    name: 'dlmm-api',
    script: 'dist/app.js',
    instances: 2,
    exec_mode: 'cluster',
    env: {
      NODE_ENV: 'production',
      PORT: 7000
    },
    error_file: './logs/api-error.log',
    out_file: './logs/api-out.log',
    log_file: './logs/api.log',
    time: true
  }, {
    name: 'dlmm-web',
    script: 'web/server.js',
    instances: 1,
    env: {
      NODE_ENV: 'production',
      PORT: 7001
    }
  }]
}

📊 监控和运维

健康检查

# API 服务健康检查
curl http://localhost:7000/api/health

# Web 服务健康检查
curl http://localhost:7001/health

# 系统状态检查
curl http://localhost:7000/api/system/status

日志管理

# 查看实时日志
tail -f logs/operation.log
tail -f logs/strategy.log
tail -f logs/monitor.log

# 日志轮转
./scripts/rotate-logs.sh

# 清理旧日志
./scripts/clean-logs.sh

性能监控

  • 系统指标: CPU、内存、磁盘使用率
  • 业务指标: 策略数量、交易成功率、收益率
  • 技术指标: API 响应时间、错误率、吞吐量

🛠️ 开发指南

🏗️ 项目结构

dlmm-liquidity-manager/
├── src/                          # 源代码目录
│   ├── app.ts                   # 应用程序入口
│   ├── di/                      # 依赖注入
│   │   └── container.ts         # DI 容器配置
│   ├── server/                  # API 服务器
│   │   ├── api-server.ts        # Express 服务器
│   │   ├── routes/              # API 路由
│   │   └── middleware/          # 中间件
│   ├── services/                # 服务层
│   │   ├── blockchain/          # 区块链服务
│   │   ├── business/            # 业务服务
│   │   ├── external/            # 外部服务
│   │   ├── internal/            # 内部服务
│   │   └── strategy/            # 策略服务
│   ├── infrastructure/          # 基础设施
│   │   ├── EventBus.ts          # 事件总线
│   │   ├── logging/             # 日志系统
│   │   └── StateService.ts      # 状态管理
│   ├── types/                   # 类型定义
│   └── utils/                   # 工具函数
├── web/                         # Web 前端
│   ├── public/                  # 静态资源
│   │   ├── js/                  # JavaScript 文件
│   │   │   ├── components/      # 组件
│   │   │   ├── services/        # 前端服务
│   │   │   └── utils/           # 工具函数
│   │   └── css/                 # 样式文件
│   └── server.js                # Web 服务器
├── config/                      # 配置文件
├── scripts/                     # 脚本文件
├── test/                        # 测试文件
├── logs/                        # 日志目录
└── data/                        # 数据目录

🔧 添加新功能

创建新服务

// src/services/business/NewService.ts
import { injectable, inject } from 'tsyringe';
import { TYPES, ILoggerService } from '../../types/interfaces';

@injectable()
export class NewService {
  constructor(
    @inject(TYPES.LoggerService) private logger: ILoggerService
  ) {}

  async initialize(): Promise<void> {
    await this.logger.logSystem('INFO', '新服务初始化');
  }

  async doSomething(): Promise<void> {
    // 实现业务逻辑
  }
}

注册服务

// src/di/container.ts
import { NewService } from '../services/business/NewService';

// 在 registerServiceLayer 方法中添加
container.registerSingleton('NewService', NewService);

创建 API 路由

// src/server/routes/new-routes.ts
import { Router } from 'express';
import { NewService } from '../../services/business/NewService';

export function createNewRoutes(newService: NewService): Router {
  const router = Router();

  router.get('/api/new/status', async (req, res) => {
    try {
      const status = await newService.getStatus();
      res.json({ success: true, data: status });
    } catch (error) {
      res.status(500).json({ success: false, error: error.message });
    }
  });

  return router;
}

🧪 测试

运行测试

# 单元测试
npm test

# 集成测试
npm run test:integration

# 覆盖率测试
npm run test:coverage

# 特定测试文件
npm test -- --testPathPattern=StrategyManager

测试示例

// test/services/StrategyManager.test.ts
import { StrategyManager } from '../../src/services/strategy/StrategyManager';

describe('StrategyManager', () => {
  let strategyManager: StrategyManager;

  beforeEach(() => {
    // 初始化测试环境
  });

  it('should create strategy successfully', async () => {
    const result = await strategyManager.createStrategy({
      type: 'simple_y',
      params: {}
    });
    
    expect(result).toBeDefined();
    expect(result.success).toBe(true);
  });
});

🚨 故障排除

常见问题和解决方案

1. 端口占用问题

# 查找占用端口的进程
lsof -i :7000
lsof -i :7001

# 停止进程
kill -9 <PID>

# 或使用快速停止脚本
./scripts/quick-stop.sh

2. 钱包解锁失败

# 检查钱包文件权限
ls -la data/wallet.enc

# 验证加密密钥
echo $WALLET_ENCRYPTION_KEY

# 重新创建钱包
rm data/wallet.enc
# 重新创建钱包

3. RPC 连接问题

# 测试 RPC 连接
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}' \
  $RPC_PRIMARY

# 切换到备用 RPC
export RPC_PRIMARY="https://api.mainnet-beta.solana.com"

4. 策略执行失败

# 查看策略日志
tail -f logs/strategy.log

# 检查策略状态
curl http://localhost:7000/api/strategy/list

# 重启策略服务
pm2 restart dlmm-api

5. 前端页面无法加载

# 检查 Web 服务状态
curl http://localhost:7001/health

# 重启 Web 服务
pm2 restart dlmm-web

# 清除浏览器缓存
# Ctrl+Shift+R (强制刷新)

📋 日志分析

日志级别

  • ERROR: 系统错误,需要立即处理
  • WARN: 警告信息,需要关注
  • INFO: 一般信息,正常运行状态
  • DEBUG: 调试信息,开发阶段使用

关键日志位置

logs/
├── operation.log      # 操作日志
├── strategy.log       # 策略执行日志
├── monitor.log        # 监控日志
├── api-error.log      # API 错误日志
└── system.log         # 系统日志

🔧 性能优化

系统优化建议

  1. 资源配置: 建议 8GB+ 内存,SSD 存储
  2. 网络优化: 使用高质量 RPC 节点
  3. 缓存策略: 合理设置缓存 TTL
  4. 并发控制: 限制最大并发策略数量
  5. 日志管理: 定期清理旧日志文件

📚 最佳实践

💰 资金管理

  • 分散投资,不要将所有资金投入单一策略
  • 设置合理的止损点,控制风险
  • 定期评估策略表现,及时调整

⚙️ 策略配置

  • 根据市场波动性调整 Bin 范围
  • 监控池子的流动性深度
  • 设置合理的滑点容忍度

🛡️ 安全实践

  • 定期更新系统和依赖
  • 使用强密码和加密存储
  • 定期备份重要数据
  • 监控异常交易和操作

📄 许可证

MIT License - 详见 LICENSE 文件

🤝 技术支持


🎉 感谢使用 DLMM 流动性管理系统!

💡 提示: 本文档会随着系统更新持续完善,建议定期查看最新版本。

About

dlmm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published