WrBug 7f85274a96 feat: 实现私钥加密存储功能
- 创建 CryptoUtils 加密工具类,支持 AES-256/CBC/PKCS5Padding 加密
- encryption.key 支持任意长度密钥(通过 SHA-256 哈希成 32 字节)
- 修改 AccountService,在保存时加密私钥,在使用时解密
- 修改 CopyOrderTrackingService,在使用私钥前先解密
- 更新 Account 实体注释,说明私钥已加密存储
- 添加向后兼容支持:如果私钥未加密(旧数据),直接返回明文
2025-12-03 06:02:26 +08:00
2025-12-03 02:27:05 +08:00

PolyHermes

GitHub Twitter

一个功能强大的 Polymarket 预测市场跟单交易系统,支持自动化跟单、多账户管理、实时订单推送和统计分析。

功能特性

核心功能

  • 🔐 多账户管理:支持通过私钥导入多个钱包账户,统一管理
  • 👥 Leader 管理:添加和管理被跟单者(Leader),支持分类筛选(sports/crypto
  • 📊 跟单配置:灵活的跟单模板配置,支持比例跟单和固定金额跟单
  • 🔄 自动跟单:实时监控 Leader 交易,自动复制订单(支持买入和卖出)
  • 📈 订单跟踪:完整的订单生命周期跟踪,包括买入、卖出和匹配记录
  • 📊 统计分析:全局统计、Leader 统计、分类统计,支持时间范围筛选
  • 💼 仓位管理:实时查看和管理持仓,支持仓位推送
  • ⚙️ 系统管理:代理配置、API 健康检查、实时状态监控

技术特性

  • 🌐 WebSocket 实时推送:订单和仓位数据实时推送
  • 🔒 安全存储:私钥和 API 凭证加密存储
  • 📱 响应式设计:完美支持移动端和桌面端
  • 🚀 高性能:异步处理、并发优化
  • 🛡️ 风险控制:每日亏损限制、订单数限制、价格容忍度等

🏗️ 技术栈

后端

  • 框架: Spring Boot 3.2.0
  • 语言: Kotlin 1.9.20
  • 数据库: MySQL 8.2.0
  • ORM: Spring Data JPA
  • 数据库迁移: Flyway
  • HTTP 客户端: Retrofit 2.9.0 + OkHttp 4.12.0
  • WebSocket: Spring WebSocket

前端

  • 框架: React 18 + TypeScript
  • 构建工具: Vite
  • UI 库: Ant Design 5.12.0
  • HTTP 客户端: axios
  • 状态管理: Zustand
  • 路由: React Router 6
  • 以太坊库: ethers.js 6.9.0

📦 项目结构

polyhermes/
├── backend/                 # 后端服务
│   ├── src/main/kotlin/    # Kotlin 源代码
│   │   ├── api/            # Polymarket API 接口定义
│   │   ├── controller/     # REST 控制器
│   │   ├── service/        # 业务逻辑服务
│   │   ├── entity/         # 数据库实体
│   │   ├── repository/     # 数据访问层
│   │   ├── dto/            # 数据传输对象
│   │   ├── websocket/      # WebSocket 处理
│   │   └── util/           # 工具类
│   └── src/main/resources/
│       ├── application.properties
│       └── db/migration/   # 数据库迁移脚本
├── frontend/                # 前端应用
│   ├── src/
│   │   ├── components/     # 公共组件
│   │   ├── pages/          # 页面组件
│   │   ├── services/       # API 服务
│   │   ├── types/          # TypeScript 类型
│   │   └── utils/          # 工具函数
│   └── package.json
├── docs/                    # 文档
└── README.md

🚀 快速开始

前置要求

  • JDK 17+
  • Node.js 18+
  • MySQL 8.0+
  • Gradle 7.5+(或使用 Gradle Wrapper

开发环境

  1. 克隆仓库
git clone https://github.com/WrBug/PolyHermes.git
cd PolyHermes
  1. 配置数据库

创建 MySQL 数据库:

CREATE DATABASE polyhermes CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 启动后端
cd backend
./gradlew bootRun

后端服务将在 http://localhost:8000 启动(开发环境)。

  1. 启动前端
cd frontend
npm install
npm run dev

前端应用将在 http://localhost:3000 启动。

生产部署

详细的部署文档请参考:部署文档

快速部署

一体化部署(推荐) - 前后端一起部署到一个容器:

# 在项目根目录
./deploy.sh

分别部署:

后端(Java 方式):

cd backend
./deploy.sh java

后端(Docker 方式):

cd backend
./deploy.sh docker

前端:

cd frontend
# 使用默认后端地址(相对路径)
./build.sh

# 或指定自定义后端地址(跨域场景)
./build.sh --api-url http://your-backend-server.com:8000

📖 使用指南

账户管理

  1. 进入"账户管理"页面
  2. 点击"导入账户"
  3. 输入私钥(支持私钥字符串、助记词或 Keystore 文件)
  4. 系统自动推导钱包地址并验证
  5. 配置账户名称和是否默认账户

跟单配置

  1. 进入"Leader 管理",添加被跟单者(Leader)地址
  2. 进入"跟单模板",创建跟单模板(配置跟单比例、风险控制等)
  3. 进入"跟单配置",将账户、模板和 Leader 关联
  4. 启用跟单关系,系统将自动开始跟单

查看统计

  • 全局统计:查看所有跟单关系的汇总统计
  • Leader 统计:查看特定 Leader 的统计信息
  • 分类统计:按分类(sports/crypto)查看统计
  • 跟单关系统计:查看单个跟单关系的详细统计

🔧 配置说明

环境变量

变量名 说明 默认值
DB_USERNAME 数据库用户名 root
DB_PASSWORD 数据库密码 -
SERVER_PORT 后端服务端口 8000
POLYGON_RPC_URL Polygon RPC 地址 https://polygon-rpc.com
JWT_SECRET JWT 密钥 -

代理配置

系统支持通过 Web UI 配置 HTTP 代理,无需修改环境变量:

  1. 进入"系统管理"页面
  2. 配置代理主机、端口、用户名和密码
  3. 启用代理并测试连接
  4. 配置实时生效,无需重启服务

📚 文档

🤝 贡献

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📝 开发规范

  • 后端: 遵循 Kotlin 编码规范,使用 Spring Boot 最佳实践
  • 前端: 遵循 TypeScript 和 React 最佳实践
  • 提交信息: 使用清晰的提交信息,遵循 Conventional Commits

详细开发规范请参考:

⚠️ 免责声明

本软件仅供学习和研究使用。使用本软件进行交易的风险由用户自行承担。作者不对任何交易损失负责。

📄 许可证

本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。

🔗 相关链接

🙏 致谢

感谢所有为本项目做出贡献的开发者和用户!


如果这个项目对你有帮助,请给个 Star!

S
Description
一个功能强大的 Polymarket 预测市场跟单交易系统,支持自动化跟单、多账户管理、实时订单推送和统计分析。
Readme MIT 5.3 MiB
Languages
Kotlin 60.8%
TypeScript 34.9%
Shell 2%
JavaScript 1.2%
Python 0.9%
Other 0.2%