# 数据模型:多平台账户凭据管理与签名服务 ## 核心实体设计(简化版) ### 1. PlatformAccount (平台账户) 存储各平台的账户凭据信息,支持不同平台的凭据格式。 ```typescript interface PlatformAccount { accountId: string; // 账户唯一标识 platformId: 'pacifica' | 'aster' | 'binance' | 'okx'; alias?: string; // 账户别名 // 加密存储的凭据(根据平台不同) credentials: { // Pacifica: Ed25519 私钥 privateKey?: string; // base58 编码 // Aster: 以太坊私钥 + 签名者地址 ethPrivateKey?: string; // 0x 开头 signerAddress?: string; // 0x 开头 // Binance/OKX: API 凭据 apiKey?: string; secretKey?: string; passphrase?: string; // OKX 需要 }; // 状态信息 status: 'active' | 'inactive'; environment: 'development' | 'production'; // 使用统计 usage: { totalSigns: number; lastSignAt?: Date; errorCount: number; }; createdAt: Date; updatedAt: Date; } ``` ### 2. SignatureAdapter (签名适配器) 为每个平台实现特定的签名算法。 ```typescript interface SignatureAdapter { platformId: string; // 平台标识 algorithm: 'ed25519' | 'eip191' | 'hmac-sha256'; // 签名方法 sign(data: any, credentials: any): Promise; // 验证方法(可选) verify?(signature: string, data: any, publicKey: string): Promise; } interface SignatureResult { signature: string; algorithm: string; encoding: string; // base58, hex, base64 publicKey?: string; // 如果适用 metadata?: Record; } ``` ### 3. ConfigManager (配置管理器) 管理配置文件的加载和热重载。 ```typescript interface ConfigManager { configPath: string; lastLoaded: Date; // 加载的账户数据 accounts: Map; // key: platformId:accountId // 配置操作 loadConfig(): Promise; reloadConfig(): Promise; watchConfig(): void; // 监控文件变化 // 账户查询 getAccount(platformId: string, accountId: string): PlatformAccount | null; getAccountsByPlatform(platformId: string): PlatformAccount[]; } ``` ## 配置文件格式 ### JSON 配置结构 ```json { "pacifica": [ { "accountId": "pac-main-001", "alias": "Pacifica主账户", "privateKey": "base58_encoded_private_key", "environment": "production" } ], "aster": [ { "accountId": "ast-hedge-001", "alias": "Aster对冲账户", "ethPrivateKey": "0x1234567890abcdef...", "signerAddress": "0x742d35Cc...", "environment": "production" } ], "binance": [ { "accountId": "bn-spot-001", "alias": "Binance现货账户", "apiKey": "your_api_key", "secretKey": "your_secret_key", "environment": "production" } ], "okx": [ { "accountId": "okx-perp-001", "alias": "OKX永续账户", "apiKey": "your_api_key", "secretKey": "your_secret_key", "passphrase": "your_passphrase", "environment": "production" } ] } ``` ## 核心服务接口 ### CredentialManager (主服务) ```typescript interface CredentialManager { // 签名服务(核心功能) sign(platformId: string, accountId: string, data: any): Promise; // 账户查询 getAccount(platformId: string, accountId: string): PlatformAccount | null; listAccounts(platformId?: string): PlatformAccount[]; // 配置管理 reloadConfig(): Promise; getStatus(): ConfigStatus; } interface ConfigStatus { configPath: string; lastLoaded: Date; accountCount: number; platformCount: number; isWatching: boolean; } ``` ## 验证规则 ### 1. 账户标识验证 - `accountId`: 3-50字符,字母数字和连字符 - `platformId`: 必须是 'pacifica' | 'aster' | 'binance' | 'okx' ### 2. 凭据格式验证 - Pacifica privateKey: base58编码,44字符 - Aster ethPrivateKey: 0x开头,64位十六进制 - Binance/OKX apiKey: 非空字符串 - Binance/OKX secretKey: 非空字符串 ### 3. 环境隔离 - development 和 production 环境账户分离 - 同一 platformId + accountId 组合唯一 --- **设计完成时间**: 2025-09-28 **实体总数**: 3个核心实体(简化) **关系复杂度**: 简单(单一职责) **下一步**: 简化 API 契约文档