完整的去中心化交易平台克隆,包含现货和永续合约交易功能。
完整的交易界面,包含实时K线图、订单簿、最近成交、交易表单、持仓管理等功能
基于 Hyperliquid 交易平台的完整复刻,采用现代化技术栈构建,支持链上交易、实时市场数据、钱包集成等核心功能。
前端
- Vue 3 + Composition API
- TypeScript 5+
- Tailwind CSS 3+
- Pinia (状态管理)
- ECharts (图表)
- ethers.js (Web3)
- Vite (构建工具)
后端
- Node.js 18+
- Express.js
- TypeScript
- MySQL 8.0
- Redis 7
- WebSocket (ws)
- JWT 认证
部署
- Docker + Docker Compose
- Nginx
- 克隆项目
git clone <repository-url>
cd coke-hyperliquid- 配置环境变量
cp .env.example .env
# 编辑 .env 文件,修改必要的配置(特别是 JWT_SECRET 和数据库密码)- 启动所有服务
docker-compose up -d- 访问应用
- 前端: http://localhost:3000
- 后端 API: http://localhost:4000
- WebSocket: ws://localhost:4001
- 查看日志
docker-compose logs -f- 停止服务
docker-compose downcd frontend
npm install
npm run dev- 启动 MySQL 和 Redis
docker-compose up -d mysql redis- 初始化数据库
mysql -h 127.0.0.1 -u root -p < backend/database/schema.sql- 配置环境变量
cd backend
cp .env.example .env
# 编辑 .env 文件- 启动后端服务
npm install
npm run dev后端 API 运行在 http://localhost:4000 WebSocket 运行在 ws://localhost:4001
coke-hyperliquid/
├── frontend/ # Vue 3 前端
│ ├── src/
│ │ ├── components/ # 组件
│ │ ├── composables/ # 组合式函数
│ │ ├── stores/ # Pinia 状态
│ │ ├── views/ # 页面
│ │ ├── types/ # 类型定义
│ │ └── utils/ # 工具函数
│ ├── Dockerfile
│ ├── nginx.conf
│ └── package.json
├── backend/ # Express 后端
│ ├── src/
│ │ ├── config/ # 配置
│ │ ├── controllers/ # 控制器
│ │ ├── models/ # 数据模型
│ │ ├── routes/ # 路由
│ │ ├── services/ # 服务层
│ │ ├── middleware/ # 中间件
│ │ ├── types/ # 类型定义
│ │ └── utils/ # 工具函数
│ ├── database/
│ │ └── schema.sql # 数据库结构
│ ├── Dockerfile
│ └── package.json
├── doc/ # 文档
│ ├── 调研报告.md
│ └── 系统设计.md
├── docker-compose.yml # Docker 编排
├── .env.example # 环境变量示例
└── README.md # 项目说明
- ✅ 交易界面(K线图、订单簿、交易表单)
- ✅ 实时市场数据(WebSocket)
- ✅ MetaMask 钱包集成
- ✅ 订单管理(下单、撤单)
- ✅ 持仓管理
- ✅ 响应式设计(桌面/平板/移动端)
- ✅ ECharts 交互式图表
- ✅ 多时间周期切换
GET /api/market/pairs- 获取所有交易对GET /api/market/ticker/:symbol- 获取行情GET /api/market/orderbook/:symbol- 获取订单簿GET /api/market/trades/:symbol- 获取最近成交GET /api/market/klines/:symbol- 获取K线数据
POST /api/auth/login- 钱包签名登录GET /api/auth/profile- 获取用户信息GET /api/auth/challenge- 获取签名挑战
POST /api/trade/order- 创建订单DELETE /api/trade/order/:id- 取消订单GET /api/trade/orders/open- 获取活跃订单POST /api/trade/leverage- 设置杠杆
GET /api/account/balance- 获取余额GET /api/account/positions- 获取持仓POST /api/account/position/close- 平仓POST /api/account/deposit- 充值(测试用)
ticker.{symbol}- 行情推送orderbook.{symbol}- 订单簿推送trades.{symbol}- 成交推送
参考 .env.example 文件,主要配置项:
JWT_SECRET- JWT 密钥(生产环境必须修改)DB_PASSWORD- 数据库密码CORS_ORIGIN- 允许的跨域来源VITE_API_URL- 前端 API 地址VITE_WS_URL- 前端 WebSocket 地址
MySQL 8.0,数据库结构位于 backend/database/schema.sql
初始化包含:
- 用户表
- 交易对表
- 订单表
- 持仓表
- 资产表
- 行情表
大部分 API 需要 JWT 认证,在请求头中添加:
Authorization: Bearer <token>
获取 Token:
- 前端使用 MetaMask 签名
- 调用
/api/auth/login获取 JWT token
# 获取市场数据(无需认证)
curl http://localhost:4000/api/market/ticker/BTC/USDC
# 创建订单(需要认证)
curl -X POST http://localhost:4000/api/trade/order \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"symbol": "BTC/USDC",
"side": "BUY",
"type": "LIMIT",
"price": "50000",
"quantity": "0.1",
"signature": "0x..."
}'cd frontend
npm run testcd backend
npm run test前端
cd frontend
npm run build
# 产物在 dist/ 目录后端
cd backend
npm run build
# 产物在 dist/ 目录# 生产环境启动
NODE_ENV=production docker-compose up -d
# 查看状态
docker-compose ps
# 查看资源使用
docker stats
# 备份数据库
docker exec hyperliquid-mysql mysqldump -u root -p hyperliquid > backup.sql-
数据库优化
- 添加索引优化查询
- 定期清理历史数据
- 使用读写分离
-
缓存策略
- Redis 缓存热点数据
- CDN 加速静态资源
- API 响应缓存
-
负载均衡
- Nginx 反向代理
- 多实例部署
- WebSocket 会话保持
- ✅ 修改默认密码和密钥
- ✅ 使用 HTTPS/WSS
- ✅ 启用防火墙规则
- ✅ 定期更新依赖
- ✅ 备份数据库
- ✅ 限制 API 速率
- ✅ 输入验证和过滤
推荐监控指标:
- API 响应时间
- WebSocket 连接数
- 数据库连接池状态
- 订单成交率
- 系统资源使用
# 检查 MySQL 是否运行
docker-compose ps mysql
# 检查日志
docker-compose logs mysql# 检查端口是否开放
netstat -an | grep 4001
# 检查防火墙规则# 检查 CORS 配置
# 检查 .env 中的 CORS_ORIGIN详细文档:
欢迎提交 Issue 和 Pull Request!
MIT License
开发时间: 2024-11 版本: v1.0.0 状态: ✅ 完成开发
