debug_api_connection.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #!/usr/bin/env node
  2. /**
  3. * Debug Pacifica API 连接问题
  4. */
  5. import { PacificaProxyClient } from './src/exchanges/pacifica/PacificaProxyClient.js'
  6. import { logger } from './src/utils/logger.js'
  7. import * as dotenv from 'dotenv'
  8. // 加载环境变量
  9. dotenv.config()
  10. async function debugApiConnection() {
  11. console.log('🔍 Debug Pacifica API 连接...')
  12. // 检查环境变量
  13. const account1 = process.env.PACIFICA_ACCOUNT_1
  14. const privateKey1 = process.env.PACIFICA_PRIVATE_KEY_1
  15. const account2 = process.env.PACIFICA_ACCOUNT_2
  16. const privateKey2 = process.env.PACIFICA_PRIVATE_KEY_2
  17. console.log('📋 环境变量检查:')
  18. console.log(`PACIFICA_ACCOUNT_1: ${account1 ? '✅ 已设置' : '❌ 未设置'}`)
  19. console.log(`PACIFICA_PRIVATE_KEY_1: ${privateKey1 ? '✅ 已设置' : '❌ 未设置'}`)
  20. console.log(`PACIFICA_ACCOUNT_2: ${account2 ? '✅ 已设置' : '❌ 未设置'}`)
  21. console.log(`PACIFICA_PRIVATE_KEY_2: ${privateKey2 ? '✅ 已设置' : '❌ 未设置'}`)
  22. console.log()
  23. if (!account1 || !privateKey1) {
  24. console.error('❌ 缺少必要的环境变量')
  25. return
  26. }
  27. // 代理配置
  28. const proxyConfig = {
  29. protocol: process.env.PROXY_PROTOCOL || 'http',
  30. host: process.env.PROXY_HOST || 'geo.iproyal.com',
  31. port: parseInt(process.env.PROXY_PORT || '12321'),
  32. auth: {
  33. username: process.env.ASTER_PROXY_USER || '',
  34. password: `${process.env.ASTER_PROXY_SESSION_PREFIX || ''}12345678${
  35. process.env.ASTER_PROXY_SESSION_SUFFIX || ''
  36. }`,
  37. },
  38. }
  39. console.log('🔧 代理配置:')
  40. console.log(`代理: ${proxyConfig.protocol}://${proxyConfig.host}:${proxyConfig.port}`)
  41. console.log(`用户: ${proxyConfig.auth.username}`)
  42. console.log()
  43. try {
  44. // 测试账户1
  45. console.log('🧪 测试账户1...')
  46. const client1 = new PacificaProxyClient({
  47. baseURL: process.env.PACIFICA_BASE_URL || 'https://api.pacifica.fi',
  48. privateKey: privateKey1,
  49. account: account1,
  50. proxyConfig: process.env.PROXY_ENABLED === 'true' ? proxyConfig : null,
  51. })
  52. console.log(`📍 账户地址: ${account1}`)
  53. console.log(`🔑 私钥长度: ${privateKey1.length} 字符`)
  54. console.log()
  55. // 测试基本连接
  56. console.log('📡 测试 API 连接...')
  57. const balanceResult = await client1.getBalances(account1)
  58. console.log('📊 API 响应:')
  59. console.log(`成功: ${balanceResult.success}`)
  60. if (balanceResult.success) {
  61. console.log('✅ 连接成功!')
  62. console.log('📋 账户数据:')
  63. console.log(JSON.stringify(balanceResult.data, null, 2))
  64. } else {
  65. console.log('❌ 连接失败!')
  66. console.log(`错误: ${balanceResult.error}`)
  67. // 详细错误分析
  68. if (balanceResult.error?.includes('Invalid address')) {
  69. console.log()
  70. console.log('🔍 地址格式分析:')
  71. console.log(`地址长度: ${account1.length}`)
  72. console.log(
  73. `地址格式: ${/^[1-9A-HJ-NP-Za-km-z]{32,44}$/.test(account1) ? '✅ 符合Base58格式' : '❌ 不符合Base58格式'}`,
  74. )
  75. // 检查是否是有效的Solana地址
  76. try {
  77. const bs58 = await import('bs58')
  78. const decoded = bs58.default.decode(account1)
  79. console.log(`解码长度: ${decoded.length} 字节 (期望32字节)`)
  80. console.log(`有效地址: ${decoded.length === 32 ? '✅' : '❌'}`)
  81. } catch (e) {
  82. console.log(`地址解码失败: ${e}`)
  83. }
  84. }
  85. }
  86. // 如果有第二个账户,也测试一下
  87. if (account2 && privateKey2) {
  88. console.log()
  89. console.log('🧪 测试账户2...')
  90. const client2 = new PacificaProxyClient({
  91. baseURL: process.env.PACIFICA_BASE_URL || 'https://api.pacifica.fi',
  92. privateKey: privateKey2,
  93. account: account2,
  94. proxyConfig: process.env.PROXY_ENABLED === 'true' ? proxyConfig : null,
  95. })
  96. const balanceResult2 = await client2.getBalances(account2)
  97. console.log(`账户2连接: ${balanceResult2.success ? '✅' : '❌'}`)
  98. if (!balanceResult2.success) {
  99. console.log(`错误: ${balanceResult2.error}`)
  100. }
  101. }
  102. } catch (error: any) {
  103. console.error('💥 Debug 过程出错:', error.message)
  104. logger.error('Debug 失败', { error: error.message, stack: error.stack })
  105. }
  106. }
  107. // 运行debug
  108. debugApiConnection().catch(console.error)