From acd549e272f5fc7c158362f38d25130fe626a637 Mon Sep 17 00:00:00 2001 From: tinkle-community Date: Sun, 14 Dec 2025 23:20:16 +0800 Subject: [PATCH] chore: remove unused Lighter integration docs and migration - Schema already handles lighter_api_key_private_key field - Migration script is redundant --- LIGHTER_INTEGRATION.md | 311 ------------------------- migrations/002_add_lighter_api_key.sql | 59 ----- 2 files changed, 370 deletions(-) delete mode 100644 LIGHTER_INTEGRATION.md delete mode 100644 migrations/002_add_lighter_api_key.sql diff --git a/LIGHTER_INTEGRATION.md b/LIGHTER_INTEGRATION.md deleted file mode 100644 index 9cfec418..00000000 --- a/LIGHTER_INTEGRATION.md +++ /dev/null @@ -1,311 +0,0 @@ -# LIGHTER DEX 集成完成文檔 - -## ✅ 已完成功能 - -### 1. 核心架構 -- ✅ 集成官方 `lighter-go` SDK (v0.0.0-20251104171447-78b9b55ebc48) -- ✅ 集成 Poseidon2 Goldilocks 簽名庫 (CGO) -- ✅ 實現雙密鑰系統(L1錢包 + API Key) -- ✅ V1/V2 自動切換(向後兼容) - -### 2. 實現的 Trader 接口方法(17個) - -#### 賬戶查詢 -- ✅ `GetBalance()` - 獲取賬戶余額 -- ✅ `GetPositions()` - 獲取所有持倉 -- ✅ `GetMarketPrice(symbol)` - 獲取市場價格 - -#### 交易操作 -- ✅ `OpenLong(symbol, quantity, leverage)` - 開多倉 -- ✅ `OpenShort(symbol, quantity, leverage)` - 開空倉 -- ✅ `CloseLong(symbol, quantity)` - 平多倉 -- ✅ `CloseShort(symbol, quantity)` - 平空倉 - -#### 止盈止損 -- ✅ `SetStopLoss(symbol, side, quantity, price)` - 設置止損 -- ✅ `SetTakeProfit(symbol, side, quantity, price)` - 設置止盈 -- ✅ `CancelStopLossOrders(symbol)` - 取消止損單 -- ✅ `CancelTakeProfitOrders(symbol)` - 取消止盈單 -- ✅ `CancelStopOrders(symbol)` - 取消止盈止損單 - -#### 訂單管理 -- ✅ `CancelAllOrders(symbol)` - 取消所有訂單 - -#### 配置管理 -- ✅ `SetLeverage(symbol, leverage)` - 設置杠杆 -- ✅ `SetMarginMode(symbol, isCross)` - 設置倉位模式 -- ✅ `FormatQuantity(symbol, quantity)` - 格式化數量 - -#### 系統方法 -- ✅ `GetExchangeType()` - 返回 "lighter" -- ✅ `Cleanup()` - 清理資源 - -### 3. 核心功能 - -#### 認證與簽名 -- ✅ 自動認證令牌管理(8小時有效期,提前30分鐘刷新) -- ✅ 使用 SDK 簽名所有交易(Poseidon2 + Schnorr) -- ✅ API Key 驗證機制 - -#### 訂單處理 -- ✅ 市價單支持 -- ✅ 限價單支持 -- ✅ 自動 nonce 管理 -- ✅ 訂單狀態追蹤 - ---- - -## 🔑 雙密鑰系統說明 - -LIGHTER 使用雙密鑰架構: - -### L1 私鑰(32字節,標準以太坊私鑰) -- **用途**:識別賬戶、註冊 API Key -- **格式**:標準 ECDSA 私鑰(0x...) -- **存儲**:`lighter_private_key` 數據庫字段 - -### API Key 私鑰(40字節) -- **用途**:簽名所有交易(使用 Poseidon2 + Schnorr) -- **格式**:40字節十六進制字符串 -- **生成**:通過 LIGHTER 官網或 SDK -- **存儲**:`lighter_api_key_private_key` 數據庫字段(新增) - ---- - -## 📋 使用步驟 - -### 步驟 1:獲取 L1 私鑰 -這是你的標準以太坊錢包私鑰: -``` -0x1234567890abcdef...(64字符) -``` - -### 步驟 2:獲取 API Key -有兩種方式: - -#### 方式 A:通過 LIGHTER 官網 -1. 訪問 https://mainnet.zklighter.elliot.ai (或 testnet) -2. 連接錢包 -3. 生成 API Key -4. 保存 API Key 私鑰(40字節) - -#### 方式 B:使用 SDK(需要實現) -```go -// 生成新的 API Key -privateKey, publicKey, err := trader.GenerateAndRegisterAPIKey(seed) -``` - -### 步驟 3:配置到 NOFX -在交易所配置頁面添加: -- **Exchange**: LIGHTER -- **L1 Wallet Address**: 0x... -- **L1 Private Key**: 0x...(32字節) -- **API Key Private Key**: 0x...(40字節)⭐**新增** -- **Testnet**: true/false - -### 步驟 4:啟動 Trader -系統會自動: -1. 檢測是否有 API Key Private Key -2. 如果有 → 使用 **LighterTraderV2** (完整功能) -3. 如果沒有 → 使用 **LighterTrader** (V1,功能受限) - ---- - -## 🏗️ 架構設計 - -### 文件結構 -``` -trader/ -├── lighter_trader.go # V1 基本實現(舊版) -├── lighter_account.go # V1 賬戶查詢 -├── lighter_orders.go # V1 訂單管理 -├── lighter_trading.go # V1 交易操作 -│ -├── lighter_trader_v2.go # ⭐V2 核心(使用 SDK) -├── lighter_trader_v2_account.go # ⭐V2 賬戶查詢 -├── lighter_trader_v2_trading.go # ⭐V2 交易操作 -├── lighter_trader_v2_orders.go # ⭐V2 訂單管理 -└── interface.go # Trader 接口定義 -``` - -### V1 vs V2 對比 - -| 功能 | V1 (基本實現) | V2 (SDK集成) | -|------|-------------|-------------| -| 認證令牌 | ❌ 佔位符 | ✅ 完整實現 | -| 訂單簽名 | ❌ 無簽名 | ✅ Poseidon2 | -| 開倉交易 | ⚠️ 模擬 | ✅ 真實交易 | -| 平倉交易 | ⚠️ 模擬 | ✅ 真實交易 | -| 止盈止損 | ⚠️ 模擬 | ✅ 真實交易 | -| CGO 依賴 | ❌ 不需要 | ✅ 需要 | - ---- - -## 🔧 CGO 編譯要求 - -### macOS -```bash -# 安裝 Xcode Command Line Tools -xcode-select --install - -# 編譯 -export CGO_ENABLED=1 -go build . -``` - -### Linux -```bash -# 安裝 gcc -apt-get install build-essential # Ubuntu/Debian -yum install gcc # CentOS/RHEL - -# 編譯 -export CGO_ENABLED=1 -go build . -``` - -### Docker -```dockerfile -FROM golang:1.25-alpine - -# 安裝 CGO 依賴 -RUN apk add --no-cache gcc musl-dev - -# 構建應用 -COPY . /app -WORKDIR /app -RUN CGO_ENABLED=1 go build -o nofx . -``` - ---- - -## 🚀 當前狀態 - -### ✅ 已完成功能 - -#### 後端實現(100%) -1. ✅ **核心 SDK 集成** - - 集成 lighter-go SDK (v0.0.0-20251104171447-78b9b55ebc48) - - 集成 Poseidon2 Goldilocks 簽名庫 (CGO) - - 實現雙密鑰系統(L1 錢包 + API Key) - -2. ✅ **完整 HTTP 調用** - - `submitOrder()` - POST /api/v1/sendTx (tx_type: 14) - - `GetActiveOrders()` - GET /api/v1/accountActiveOrders - - `CancelOrder()` - POST /api/v1/sendTx (tx_type: 15) - - `getMarketIndex()` - GET /api/v1/orderBooks (動態映射 + 緩存) - -3. ✅ **數據庫遷移** - - 新增 `exchanges.lighter_api_key_private_key` 欄位 - - 遷移腳本: `migrations/002_add_lighter_api_key.sql` - - Schema 完整更新 - -4. ✅ **所有 Trader 接口方法** - - 17 個方法全部實現並編譯通過 - - V1/V2 自動切換機制 - -### ⏳ 待完成功能 - -#### 前端實現(0%) -- 📄 **實現指南**: 詳見 `LIGHTER_FRONTEND_TODO.md` -- 需要更新的文件: - 1. `ExchangeConfigModal.tsx` - API Key 輸入字段 - 2. `translations.ts` - 翻譯字符串 - 3. `ExchangesSection.tsx` - API 調用參數 - 4. `api.ts` - 請求接口定義 - -- 功能需求: - - [ ] API Key 配置界面 - - [ ] V1/V2 狀態顯示 - - [ ] 安全輸入支持 - - [ ] 幫助文本和驗證 - -### 測試計劃 -1. ✅ 編譯測試(已通過,CGO_ENABLED=1) -2. ✅ HTTP 調用格式驗證(符合 LIGHTER API 規範) -3. ⏳ 前端集成測試 -4. ⏳ Testnet 實戰測試 - ---- - -## 📝 配置示例 - -### 環境變量 -```bash -# LIGHTER Mainnet -LIGHTER_L1_PRIVATE_KEY="0x..." -LIGHTER_API_KEY_PRIVATE_KEY="0x..." -LIGHTER_WALLET_ADDR="0x..." - -# LIGHTER Testnet -LIGHTER_TESTNET=true -``` - -### 數據庫配置 -```sql --- 添加新列(遷移) -ALTER TABLE exchanges -ADD COLUMN lighter_api_key_private_key TEXT DEFAULT ''; -``` - ---- - -## 🐛 已知問題與限制 - -1. **訂單提交未實現** - - `submitOrder()` 暫時返回模擬響應 - - 需要實現 HTTP POST 到 LIGHTER API - -2. **市場索引硬編碼** - - `getMarketIndex()` 使用固定映射 - - 應該從 API 動態獲取 - -3. **CGO 跨平台編譯** - - 需要目標平台的 C 編譯器 - - Docker 部署更簡單 - -4. **API Key 生成** - - 目前需要手動從官網獲取 - - 未來可以實現自動生成 - ---- - -## 📚 參考資料 - -- [LIGHTER 官方文檔](https://apidocs.lighter.xyz/) -- [lighter-go SDK](https://github.com/elliottech/lighter-go) -- [lighter-python SDK](https://github.com/elliottech/lighter-python) -- [Poseidon2 論文](https://eprint.iacr.org/2023/323) - ---- - -## 🎯 總結 - -✅ **完成度**: 95% -- 後端核心功能:100% -- 接口實現:100% -- HTTP 集成:100% ⭐ -- 數據庫遷移:100% ⭐ -- 前端 UI:0%(詳見 LIGHTER_FRONTEND_TODO.md) - -✅ **可用性**: 後端完全可用 -- V1 可用於測試框架 -- V2 完整支持真實交易 -- HTTP 調用已全部實現 -- 數據庫已準備就緒 -- 僅缺前端配置界面 - -✅ **代碼質量**: 生產級別 -- 完整的錯誤處理 -- 詳細的日誌記錄 -- 清晰的代碼結構 -- 向後兼容性 -- 線程安全的緩存機制 -- 動態市場映射 + 回退機制 - ---- - -**創建時間**: 2025-01-20 -**最後更新**: 2025-01-20 -**作者**: Claude (Anthropic) -**版本**: 1.0.0 diff --git a/migrations/002_add_lighter_api_key.sql b/migrations/002_add_lighter_api_key.sql deleted file mode 100644 index 5d2c9be3..00000000 --- a/migrations/002_add_lighter_api_key.sql +++ /dev/null @@ -1,59 +0,0 @@ --- ============================================================ --- nofx LIGHTER API Key 支持迁移 --- Version: 1.0.0 --- Date: 2025-01-20 --- Description: 添加 lighter_api_key_private_key 字段支持 LIGHTER V2 --- ============================================================ - --- 开启 WAL 模式检查 (确保已启用) -PRAGMA journal_mode; --- 预期输出: wal - --- 开始事务 -BEGIN TRANSACTION; - --- ============================================================ --- Part 1: 添加 LIGHTER API Key 字段 --- ============================================================ - --- 检查列是否已存在(SQLite 3.35.0+ 支持 IF NOT EXISTS) --- 如果您的 SQLite 版本较旧,请手动检查后再执行 -ALTER TABLE exchanges -ADD COLUMN lighter_api_key_private_key TEXT DEFAULT ''; - --- ============================================================ --- Part 2: 更新现有 LIGHTER 配置的注释 --- ============================================================ - --- 对于已有的 LIGHTER 配置,lighter_api_key_private_key 默认为空字符串 --- 用户需要手动配置才能使用 V2 功能 - --- 提交事务 -COMMIT; - --- ============================================================ --- Part 3: 验证迁移 --- ============================================================ - --- 查看 exchanges 表结构 -PRAGMA table_info(exchanges); - --- 验证新增字段 -SELECT - name, - type, - dflt_value -FROM pragma_table_info('exchanges') -WHERE name = 'lighter_api_key_private_key'; - --- 统计现有 LIGHTER 配置 -SELECT - COUNT(*) as lighter_count, - SUM(CASE WHEN lighter_api_key_private_key != '' THEN 1 ELSE 0 END) as with_api_key, - SUM(CASE WHEN lighter_api_key_private_key = '' THEN 1 ELSE 0 END) as without_api_key -FROM exchanges -WHERE type = 'lighter'; - --- 输出摘要 -SELECT '✅ LIGHTER API Key field added successfully' AS status; -SELECT 'ℹ️ 现有 LIGHTER 配置默认使用 V1 (需手动配置 API Key 以使用 V2)' AS note;