#!/usr/bin/env node /** * Debug Pacifica API 连接问题 */ import { PacificaProxyClient } from './src/exchanges/pacifica/PacificaProxyClient.js' import { logger } from './src/utils/logger.js' import * as dotenv from 'dotenv' // 加载环境变量 dotenv.config() async function debugApiConnection() { console.log('🔍 Debug Pacifica API 连接...') // 检查环境变量 const account1 = process.env.PACIFICA_ACCOUNT_1 const privateKey1 = process.env.PACIFICA_PRIVATE_KEY_1 const account2 = process.env.PACIFICA_ACCOUNT_2 const privateKey2 = process.env.PACIFICA_PRIVATE_KEY_2 console.log('📋 环境变量检查:') console.log(`PACIFICA_ACCOUNT_1: ${account1 ? '✅ 已设置' : '❌ 未设置'}`) console.log(`PACIFICA_PRIVATE_KEY_1: ${privateKey1 ? '✅ 已设置' : '❌ 未设置'}`) console.log(`PACIFICA_ACCOUNT_2: ${account2 ? '✅ 已设置' : '❌ 未设置'}`) console.log(`PACIFICA_PRIVATE_KEY_2: ${privateKey2 ? '✅ 已设置' : '❌ 未设置'}`) console.log() if (!account1 || !privateKey1) { console.error('❌ 缺少必要的环境变量') return } // 代理配置 const proxyConfig = { protocol: process.env.PROXY_PROTOCOL || 'http', host: process.env.PROXY_HOST || 'geo.iproyal.com', port: parseInt(process.env.PROXY_PORT || '12321'), auth: { username: process.env.ASTER_PROXY_USER || '', password: `${process.env.ASTER_PROXY_SESSION_PREFIX || ''}12345678${ process.env.ASTER_PROXY_SESSION_SUFFIX || '' }`, }, } console.log('🔧 代理配置:') console.log(`代理: ${proxyConfig.protocol}://${proxyConfig.host}:${proxyConfig.port}`) console.log(`用户: ${proxyConfig.auth.username}`) console.log() try { // 测试账户1 console.log('🧪 测试账户1...') const client1 = new PacificaProxyClient({ baseURL: process.env.PACIFICA_BASE_URL || 'https://api.pacifica.fi', privateKey: privateKey1, account: account1, proxyConfig: process.env.PROXY_ENABLED === 'true' ? proxyConfig : null, }) console.log(`📍 账户地址: ${account1}`) console.log(`🔑 私钥长度: ${privateKey1.length} 字符`) console.log() // 测试基本连接 console.log('📡 测试 API 连接...') const balanceResult = await client1.getBalances(account1) console.log('📊 API 响应:') console.log(`成功: ${balanceResult.success}`) if (balanceResult.success) { console.log('✅ 连接成功!') console.log('📋 账户数据:') console.log(JSON.stringify(balanceResult.data, null, 2)) } else { console.log('❌ 连接失败!') console.log(`错误: ${balanceResult.error}`) // 详细错误分析 if (balanceResult.error?.includes('Invalid address')) { console.log() console.log('🔍 地址格式分析:') console.log(`地址长度: ${account1.length}`) console.log( `地址格式: ${/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(account1) ? '✅ 符合Base58格式' : '❌ 不符合Base58格式'}`, ) // 检查是否是有效的Solana地址 try { const bs58 = await import('bs58') const decoded = bs58.default.decode(account1) console.log(`解码长度: ${decoded.length} 字节 (期望32字节)`) console.log(`有效地址: ${decoded.length === 32 ? '✅' : '❌'}`) } catch (e) { console.log(`地址解码失败: ${e}`) } } } // 如果有第二个账户,也测试一下 if (account2 && privateKey2) { console.log() console.log('🧪 测试账户2...') const client2 = new PacificaProxyClient({ baseURL: process.env.PACIFICA_BASE_URL || 'https://api.pacifica.fi', privateKey: privateKey2, account: account2, proxyConfig: process.env.PROXY_ENABLED === 'true' ? proxyConfig : null, }) const balanceResult2 = await client2.getBalances(account2) console.log(`账户2连接: ${balanceResult2.success ? '✅' : '❌'}`) if (!balanceResult2.success) { console.log(`错误: ${balanceResult2.error}`) } } } catch (error: any) { console.error('💥 Debug 过程出错:', error.message) logger.error('Debug 失败', { error: error.message, stack: error.stack }) } } // 运行debug debugApiConnection().catch(console.error)