— 目标与范围 —
— 核心术语 —
ExchangeAdapter:各交易所适配器统一接口,已定义于 src/exchanges/ExchangeAdapter.ts。AccountManager:集中式账户管理器,见 src/accounts/accountManager.ts。RegisteredAccount:注册实体,包含 exchange/accountId/adapter/meta。— 架构与职责 —
(exchange, accountId) 管理适配器实例;幂等。balances() 与 positions(),并附加来源标签 { exchange, accountId }。placeOrder/cancel/cancelAll/getOrder/openOrders/leverage/depth 等。ws(),转发常见事件(depth/orders/trades/balance/account_info/account_positions 等),并附 { exchange, accountId } 标签。— 统一数据模型(归一化) —
Balance: { asset, total, free }Position: { symbol, side: 'LONG'|'SHORT', qty, entryPrice, unrealizedPnl, leverage? }Order: { id, symbol, status, side, type, price?, origQty, executedQty, updateTime }Depth: { bids: [{price,qty}], asks: [{price,qty}], ts }BTC)。— AccountManager API(对上暴露) —
register({ exchange, accountId, adapter, meta? })list()、balancesAll()、positionsAll()getAdapter()、placeOrderOn()、cancelOrderOn()、cancelAllOn()、openOrdersOn()、leverageOn()、depthOn()cancelAllByExchange(exchange, symbol)ws()(聚合 EventEmitter)— Pacifica 账户相关(REST/WS) —
PacificaClient):
/api/v1/account/info(POST)/api/v1/account(GET)或文档对应的 settings 页面/api/v1/account_equity_history、/api/v1/account_balance_history(见 docs 镜像 HTML)/api/v1/account/update-leverage、/api/v1/account/update-margin-mode/api/v1/subaccounts/create、/api/v1/subaccounts/transfertweetnacl+bs58),按 signing/implementation 组装 {timestamp, expiry_window, type, data} 紧凑 JSON 后签名。prices、book、trades、account_info、account_balance、account_positions、account_orders。{"method":"ping"},服务端返回 { "channel": "pong" }。— Aster 账户相关(REST/HMAC) —
X-MBX-APIKEY + sha256(signature);/fapi/v2/balance、/fapi/v2/positionRisk、/fapi/v3/openOrders;/fapi/v3/positionSide/dual;/fapi/v3/leverage、/fapi/v3/marginType;/fapi/v3/order(x-www-form-urlencoded,链上 personal_sign 参与签名字符串)。— 错误处理与重试 —
PacificaClient 实装。— 安全与密钥管理 —
PACIFICA_DEBUG=1 时)。— 持久化(后续) —
— 测试与回归 —
examples/pacifica_test.ts、examples/pacifica_ws_example.ts、examples/aster_adapter_smoke.ts;ExchangeAdapter 市价/限价/撤单/全撤/深度/持仓/余额。— 路线图 —
— 启动自检(Init Check,Fail-fast) —
PACIFICA_ACCOUNT、PACIFICA_ACCOUNT_PRIVATE_KEY(或 PACIFICA_PRIVATE_KEY);如启用代理单:PACIFICA_AGENT_WALLET、PACIFICA_AGENT_PRIVATE_KEY;ASTER_API_KEY/ASTER_API_SECRET(查询必需);ASTER_ORDER_USER/ASTER_ORDER_SIGNER/PRIVATE_KEY(下单必需)。PACIFICA_ACCOUNT;否则 fail-fast;ASTER_ORDER_USER/ASTER_ORDER_SIGNER 为合法 EVM 地址;私钥 0x 前缀、长度正确;GET /api/v1/book?symbol=BTC、Aster GET /fapi/v3/exchangeInfo;wss://.../ws 并发送 ping,收到 pong;docs/accounts/ENV_VARS.md 与接入文档;/api/v1/account/info(POST)在账户环境完整时应成功;/fapi/v2/balance//fapi/v2/positionRisk 应成功;推荐在装配层提供
--init-check开关,或默认执行;并将失败详情写入日志与控制台,方便快速排障。