credential-constants.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /**
  2. * 多平台账户凭据管理系统 - 常量定义
  3. */
  4. import { ErrorCode, PlatformType, SignatureAlgorithm } from './credential-types'
  5. /**
  6. * 支持的平台列表
  7. */
  8. export const SUPPORTED_PLATFORMS: PlatformType[] = ['pacifica', 'aster', 'binance', 'okx']
  9. /**
  10. * 平台签名算法映射
  11. */
  12. export const PLATFORM_ALGORITHMS: Record<PlatformType, SignatureAlgorithm> = {
  13. pacifica: 'ed25519',
  14. aster: 'eip191',
  15. binance: 'hmac-sha256',
  16. okx: 'hmac-sha256',
  17. }
  18. /**
  19. * 性能要求常量
  20. */
  21. export const PERFORMANCE_LIMITS = {
  22. // 签名延迟目标
  23. MAX_SIGNATURE_TIME_MS: 50,
  24. MAX_BATCH_SIGNATURE_TIME_MS: 200,
  25. MAX_CONFIG_RELOAD_TIME_MS: 5000,
  26. // 吞吐量目标
  27. MAX_QPS: 100,
  28. MAX_BATCH_SIZE: 10,
  29. // 缓存设置
  30. CONFIG_CACHE_TTL_MS: 120 * 1000, // 2分钟
  31. } as const
  32. /**
  33. * 配置验证规则
  34. */
  35. export const VALIDATION_RULES = {
  36. // 账户ID规则
  37. ACCOUNT_ID: {
  38. MIN_LENGTH: 3,
  39. MAX_LENGTH: 50,
  40. PATTERN: /^[a-zA-Z0-9\-_]+$/,
  41. },
  42. // Pacifica私钥规则
  43. PACIFICA_PRIVATE_KEY: {
  44. LENGTH: 44, // base58编码长度
  45. PATTERN: /^[1-9A-HJ-NP-Za-km-z]{44}$/, // base58字符集
  46. },
  47. // 以太坊私钥规则
  48. ETH_PRIVATE_KEY: {
  49. LENGTH: 66, // 0x + 64位十六进制
  50. PATTERN: /^0x[a-fA-F0-9]{64}$/,
  51. },
  52. // API Key规则
  53. API_KEY: {
  54. MIN_LENGTH: 8,
  55. MAX_LENGTH: 128,
  56. },
  57. } as const
  58. /**
  59. * 错误消息映射
  60. */
  61. export const ERROR_MESSAGES: Record<ErrorCode, string> = {
  62. [ErrorCode.ACCOUNT_NOT_FOUND]: '指定账户不存在',
  63. [ErrorCode.PLATFORM_NOT_SUPPORTED]: '不支持的平台',
  64. [ErrorCode.INVALID_DATA_FORMAT]: '签名数据格式错误',
  65. [ErrorCode.SIGNATURE_FAILED]: '签名操作失败',
  66. [ErrorCode.CONFIG_LOAD_FAILED]: '配置文件加载失败',
  67. [ErrorCode.ACCOUNT_INACTIVE]: '账户已禁用',
  68. }
  69. /**
  70. * HTTP状态码映射
  71. */
  72. export const HTTP_STATUS_CODES: Record<ErrorCode, number> = {
  73. [ErrorCode.ACCOUNT_NOT_FOUND]: 404,
  74. [ErrorCode.PLATFORM_NOT_SUPPORTED]: 400,
  75. [ErrorCode.INVALID_DATA_FORMAT]: 400,
  76. [ErrorCode.SIGNATURE_FAILED]: 500,
  77. [ErrorCode.CONFIG_LOAD_FAILED]: 500,
  78. [ErrorCode.ACCOUNT_INACTIVE]: 423,
  79. }
  80. /**
  81. * 配置文件默认设置
  82. */
  83. export const DEFAULT_CONFIG = {
  84. // 配置文件路径
  85. DEFAULT_CONFIG_PATH: './credentials.json',
  86. // 文件监控设置
  87. WATCH_DEBOUNCE_MS: 1000, // 防抖时间
  88. // 日志设置
  89. LOG_LEVEL: 'info',
  90. AUDIT_LOG_RETENTION_DAYS: 30,
  91. // 安全设置
  92. ENCRYPTION_ALGORITHM: 'aes-256-gcm',
  93. KEY_DERIVATION_ITERATIONS: 100000,
  94. } as const
  95. /**
  96. * API 默认端口和路径
  97. */
  98. export const API_CONFIG = {
  99. DEFAULT_PORT: 3000,
  100. BASE_PATH: '/api/v1',
  101. MAX_REQUEST_SIZE: '1mb',
  102. REQUEST_TIMEOUT_MS: 30000,
  103. } as const
  104. /**
  105. * Pacifica 平台特定常量
  106. */
  107. export const PACIFICA_CONFIG = {
  108. // Ed25519 签名常量
  109. PRIVATE_KEY_LENGTH: 32, // 字节
  110. PUBLIC_KEY_LENGTH: 32, // 字节
  111. SIGNATURE_LENGTH: 64, // 字节
  112. // Base58 编码长度
  113. BASE58_PRIVATE_KEY_LENGTH: 44,
  114. BASE58_PUBLIC_KEY_LENGTH: 44,
  115. BASE58_SIGNATURE_LENGTH: 88,
  116. // 支持的订单类型
  117. SUPPORTED_ORDER_TYPES: ['place_order', 'cancel_order', 'modify_order', 'close_position'],
  118. } as const
  119. /**
  120. * 日志格式模板
  121. */
  122. export const LOG_TEMPLATES = {
  123. SIGNATURE_REQUEST: 'Signature request: platform={platform}, account={account}, type={type}',
  124. SIGNATURE_SUCCESS: 'Signature completed: platform={platform}, account={account}, time={timeMs}ms',
  125. SIGNATURE_ERROR: 'Signature failed: platform={platform}, account={account}, error={error}',
  126. CONFIG_RELOAD: 'Config reloaded: path={path}, accounts={accountCount}, time={timeMs}ms',
  127. ACCOUNT_ACCESS: 'Account accessed: platform={platform}, account={account}, operation={operation}',
  128. } as const