feat: 重命名项目为 PolyHermes 并添加下单签名前日志

- 将所有 polymarket-bot 相关名称改为 PolyHermes
  - 容器名称: polyhermes, polyhermes-mysql, polyhermes-backend
  - 数据库名称: polyhermes
  - 应用名称: polyhermes-backend, polyhermes-frontend
  - 网络名称: polyhermes-network
  - 更新所有配置文件和文档

- 在 OrderSigningService 中添加下单签名前的详细日志输出
  - 输出订单方向、价格、数量、地址、金额等所有参数
  - 便于调试和排查下单问题
This commit is contained in:
WrBug
2025-12-03 04:01:45 +08:00
parent 950acfeb04
commit 58cc096a77
12 changed files with 62 additions and 42 deletions
+2 -2
View File
@@ -47,7 +47,7 @@
## 📦 项目结构 ## 📦 项目结构
``` ```
polymarket-bot/ polyhermes/
├── backend/ # 后端服务 ├── backend/ # 后端服务
│ ├── src/main/kotlin/ # Kotlin 源代码 │ ├── src/main/kotlin/ # Kotlin 源代码
│ │ ├── api/ # Polymarket API 接口定义 │ │ ├── api/ # Polymarket API 接口定义
@@ -96,7 +96,7 @@ cd PolyHermes
创建 MySQL 数据库: 创建 MySQL 数据库:
```sql ```sql
CREATE DATABASE polymarket_bot CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE DATABASE polyhermes CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
``` ```
3. **启动后端** 3. **启动后端**
+3 -3
View File
@@ -12,8 +12,8 @@ YELLOW='\033[1;33m'
NC='\033[0m' # No Color NC='\033[0m' # No Color
# 配置 # 配置
APP_NAME="polymarket-bot-backend" APP_NAME="polyhermes-backend"
JAR_NAME="polymarket-bot-backend-1.0.0.jar" JAR_NAME="polyhermes-backend-1.0.0.jar"
DEPLOY_DIR="./deploy" DEPLOY_DIR="./deploy"
PROFILE="${SPRING_PROFILES_ACTIVE:-prod}" PROFILE="${SPRING_PROFILES_ACTIVE:-prod}"
@@ -131,7 +131,7 @@ deploy_docker() {
warn ".env 文件不存在,创建示例文件..." warn ".env 文件不存在,创建示例文件..."
cat > .env <<EOF cat > .env <<EOF
# 数据库配置 # 数据库配置
DB_URL=jdbc:mysql://mysql:3306/polymarket_bot?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4 DB_URL=jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4
DB_USERNAME=root DB_USERNAME=root
DB_PASSWORD=your_password_here DB_PASSWORD=your_password_here
+7 -7
View File
@@ -5,12 +5,12 @@ services:
build: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: polymarket-bot-backend container_name: polyhermes-backend
ports: ports:
- "${SERVER_PORT:-8000}:8000" - "${SERVER_PORT:-8000}:8000"
environment: environment:
- SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-prod} - SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-prod}
- DB_URL=${DB_URL:-jdbc:mysql://mysql:3306/polymarket_bot?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4} - DB_URL=${DB_URL:-jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4}
- DB_USERNAME=${DB_USERNAME:-root} - DB_USERNAME=${DB_USERNAME:-root}
- DB_PASSWORD=${DB_PASSWORD:-} - DB_PASSWORD=${DB_PASSWORD:-}
- SERVER_PORT=8000 - SERVER_PORT=8000
@@ -22,16 +22,16 @@ services:
condition: service_healthy condition: service_healthy
restart: unless-stopped restart: unless-stopped
networks: networks:
- polymarket-network - polyhermes-network
mysql: mysql:
image: mysql:8.2 image: mysql:8.2
container_name: polymarket-bot-mysql container_name: polyhermes-mysql
ports: ports:
- "${MYSQL_PORT:-3306}:3306" - "${MYSQL_PORT:-3306}:3306"
environment: environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD:-rootpassword} - MYSQL_ROOT_PASSWORD=${DB_PASSWORD:-rootpassword}
- MYSQL_DATABASE=polymarket_bot - MYSQL_DATABASE=polyhermes
- MYSQL_CHARACTER_SET_SERVER=utf8mb4 - MYSQL_CHARACTER_SET_SERVER=utf8mb4
- MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci - MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci
volumes: volumes:
@@ -43,12 +43,12 @@ services:
retries: 5 retries: 5
restart: unless-stopped restart: unless-stopped
networks: networks:
- polymarket-network - polyhermes-network
volumes: volumes:
mysql-data: mysql-data:
networks: networks:
polymarket-network: polyhermes-network:
driver: bridge driver: bridge
+1 -1
View File
@@ -1,2 +1,2 @@
rootProject.name = "polymarket-bot-backend" rootProject.name = "polyhermes-backend"
@@ -19,7 +19,7 @@ class HealthController {
return ResponseEntity.ok(mapOf( return ResponseEntity.ok(mapOf(
"status" to "UP", "status" to "UP",
"timestamp" to System.currentTimeMillis(), "timestamp" to System.currentTimeMillis(),
"service" to "polymarket-bot-backend" "service" to "polyhermes-backend"
)) ))
} }
} }
@@ -168,6 +168,26 @@ class OrderSigningService {
// 5. 确保 maker 地址也是小写格式 // 5. 确保 maker 地址也是小写格式
val makerAddressLower = makerAddress.lowercase() val makerAddressLower = makerAddress.lowercase()
// 打印签名前的订单参数
logger.info("========== 订单签名前参数 ==========")
logger.info("订单方向: $side")
logger.info("价格: $price")
logger.info("数量: $size")
logger.info("Token ID: $tokenId")
logger.info("Maker 地址: $makerAddressLower")
logger.info("Signer 地址: $signerAddress")
logger.info("Taker 地址: $taker")
logger.info("Maker Amount (wei): ${amounts.makerAmount}")
logger.info("Taker Amount (wei): ${amounts.takerAmount}")
logger.info("Salt: $salt")
logger.info("Expiration: $expiration")
logger.info("Nonce: $nonce")
logger.info("Fee Rate BPS: $feeRateBps")
logger.info("Signature Type: $signatureType")
logger.info("Exchange Contract: $EXCHANGE_CONTRACT")
logger.info("Chain ID: $CHAIN_ID")
logger.info("====================================")
// 6. 构建订单数据并签名 // 6. 构建订单数据并签名
val signature = signOrder( val signature = signOrder(
privateKey = privateKey, privateKey = privateKey,
@@ -1,8 +1,8 @@
# 应用配置 # 应用配置
spring.application.name=polymarket-bot-backend spring.application.name=polyhermes-backend
# 数据源配置(默认配置,可通过环境变量覆盖) # 数据源配置(默认配置,可通过环境变量覆盖)
spring.datasource.url=${DB_URL:jdbc:mysql://localhost:3306/polymarket_bot?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true} spring.datasource.url=${DB_URL:jdbc:mysql://localhost:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&allowPublicKeyRetrieval=true}
spring.datasource.username=${DB_USERNAME:root} spring.datasource.username=${DB_USERNAME:root}
spring.datasource.password=${DB_PASSWORD:11111111} spring.datasource.password=${DB_PASSWORD:11111111}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
@@ -31,7 +31,7 @@ spring.profiles.active=${SPRING_PROFILES_ACTIVE:dev}
# 日志配置 # 日志配置
logging.level.root=INFO logging.level.root=INFO
logging.level.com.wrbug.polymarketbot=DEBUG logging.level.com.wrbug.polyhermes=DEBUG
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
# Polymarket API 配置 # Polymarket API 配置
+1 -1
View File
@@ -45,7 +45,7 @@ create_env_file() {
warn ".env 文件不存在,创建示例文件..." warn ".env 文件不存在,创建示例文件..."
cat > .env <<EOF cat > .env <<EOF
# 数据库配置 # 数据库配置
DB_URL=jdbc:mysql://mysql:3306/polymarket_bot?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4 DB_URL=jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4
DB_USERNAME=root DB_USERNAME=root
DB_PASSWORD=your_password_here DB_PASSWORD=your_password_here
+7 -7
View File
@@ -5,12 +5,12 @@ services:
build: build:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
container_name: polymarket-bot container_name: polyhermes
ports: ports:
- "${SERVER_PORT:-80}:80" - "${SERVER_PORT:-80}:80"
environment: environment:
- SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-prod} - SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-prod}
- DB_URL=${DB_URL:-jdbc:mysql://mysql:3306/polymarket_bot?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4} - DB_URL=${DB_URL:-jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4}
- DB_USERNAME=${DB_USERNAME:-root} - DB_USERNAME=${DB_USERNAME:-root}
- DB_PASSWORD=${DB_PASSWORD:-} - DB_PASSWORD=${DB_PASSWORD:-}
- SERVER_PORT=8000 - SERVER_PORT=8000
@@ -22,16 +22,16 @@ services:
condition: service_healthy condition: service_healthy
restart: unless-stopped restart: unless-stopped
networks: networks:
- polymarket-network - polyhermes-network
mysql: mysql:
image: mysql:8.2 image: mysql:8.2
container_name: polymarket-bot-mysql container_name: polyhermes-mysql
ports: ports:
- "${MYSQL_PORT:-3307}:3306" - "${MYSQL_PORT:-3307}:3306"
environment: environment:
- MYSQL_ROOT_PASSWORD=${DB_PASSWORD:-rootpassword} - MYSQL_ROOT_PASSWORD=${DB_PASSWORD:-rootpassword}
- MYSQL_DATABASE=polymarket_bot - MYSQL_DATABASE=polyhermes
- MYSQL_CHARACTER_SET_SERVER=utf8mb4 - MYSQL_CHARACTER_SET_SERVER=utf8mb4
- MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci - MYSQL_COLLATION_SERVER=utf8mb4_unicode_ci
volumes: volumes:
@@ -43,12 +43,12 @@ services:
retries: 5 retries: 5
restart: unless-stopped restart: unless-stopped
networks: networks:
- polymarket-network - polyhermes-network
volumes: volumes:
mysql-data: mysql-data:
networks: networks:
polymarket-network: polyhermes-network:
driver: bridge driver: bridge
+14 -14
View File
@@ -41,7 +41,7 @@
```bash ```bash
# 创建 .env 文件 # 创建 .env 文件
cat > .env <<EOF cat > .env <<EOF
DB_URL=jdbc:mysql://mysql:3306/polymarket_bot?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4 DB_URL=jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4
DB_USERNAME=root DB_USERNAME=root
DB_PASSWORD=your_password_here DB_PASSWORD=your_password_here
SPRING_PROFILES_ACTIVE=prod SPRING_PROFILES_ACTIVE=prod
@@ -107,7 +107,7 @@ cd backend
./gradlew clean bootJar ./gradlew clean bootJar
``` ```
构建产物位于 `build/libs/polymarket-bot-backend-1.0.0.jar` 构建产物位于 `build/libs/polyhermes-backend-1.0.0.jar`
2. **使用部署脚本(推荐)** 2. **使用部署脚本(推荐)**
@@ -129,28 +129,28 @@ cd backend
```bash ```bash
# 开发环境 # 开发环境
java -jar build/libs/polymarket-bot-backend-1.0.0.jar --spring.profiles.active=dev java -jar build/libs/polyhermes-backend-1.0.0.jar --spring.profiles.active=dev
# 生产环境 # 生产环境
java -jar build/libs/polymarket-bot-backend-1.0.0.jar --spring.profiles.active=prod java -jar build/libs/polyhermes-backend-1.0.0.jar --spring.profiles.active=prod
``` ```
4. **使用 systemd 管理(Linux** 4. **使用 systemd 管理(Linux**
```bash ```bash
# 复制服务文件 # 复制服务文件
sudo cp deploy/polymarket-bot-backend.service /etc/systemd/system/ sudo cp deploy/polyhermes-backend.service /etc/systemd/system/
# 编辑服务文件,修改路径和用户 # 编辑服务文件,修改路径和用户
sudo nano /etc/systemd/system/polymarket-bot-backend.service sudo nano /etc/systemd/system/polyhermes-backend.service
# 启动服务 # 启动服务
sudo systemctl daemon-reload sudo systemctl daemon-reload
sudo systemctl enable polymarket-bot-backend sudo systemctl enable polyhermes-backend
sudo systemctl start polymarket-bot-backend sudo systemctl start polyhermes-backend
# 查看日志 # 查看日志
sudo journalctl -u polymarket-bot-backend -f sudo journalctl -u polyhermes-backend -f
``` ```
### Docker 部署 ### Docker 部署
@@ -180,7 +180,7 @@ cd backend
```bash ```bash
# 创建 .env 文件 # 创建 .env 文件
cat > .env <<EOF cat > .env <<EOF
DB_URL=jdbc:mysql://mysql:3306/polymarket_bot?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4 DB_URL=jdbc:mysql://mysql:3306/polyhermes?useSSL=false&serverTimezone=UTC&characterEncoding=utf8mb4
DB_USERNAME=root DB_USERNAME=root
DB_PASSWORD=your_password_here DB_PASSWORD=your_password_here
SPRING_PROFILES_ACTIVE=prod SPRING_PROFILES_ACTIVE=prod
@@ -203,21 +203,21 @@ docker-compose down
3. **仅构建镜像** 3. **仅构建镜像**
```bash ```bash
docker build -t polymarket-bot-backend:latest . docker build -t polyhermes-backend:latest .
``` ```
4. **运行容器** 4. **运行容器**
```bash ```bash
docker run -d \ docker run -d \
--name polymarket-bot-backend \ --name polyhermes-backend \
-p 8000:8000 \ -p 8000:8000 \
-e SPRING_PROFILES_ACTIVE=prod \ -e SPRING_PROFILES_ACTIVE=prod \
-e DB_URL=jdbc:mysql://host.docker.internal:3306/polymarket_bot?useSSL=false \ -e DB_URL=jdbc:mysql://host.docker.internal:3306/polyhermes?useSSL=false \
-e DB_USERNAME=root \ -e DB_USERNAME=root \
-e DB_PASSWORD=your_password \ -e DB_PASSWORD=your_password \
-e JWT_SECRET=your-jwt-secret \ -e JWT_SECRET=your-jwt-secret \
polymarket-bot-backend:latest polyhermes-backend:latest
``` ```
## 前端部署 ## 前端部署
+2 -2
View File
@@ -1,11 +1,11 @@
{ {
"name": "polymarket-bot-frontend", "name": "polyhermes-frontend",
"version": "1.0.0", "version": "1.0.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "polymarket-bot-frontend", "name": "polyhermes-frontend",
"version": "1.0.0", "version": "1.0.0",
"dependencies": { "dependencies": {
"antd": "^5.12.0", "antd": "^5.12.0",
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"name": "polymarket-bot-frontend", "name": "polyhermes-frontend",
"version": "1.0.0", "version": "1.0.0",
"type": "module", "type": "module",
"scripts": { "scripts": {