Solana perp DEX들(Jupiter/Flash/Phoenix/GMTrade)을 한 계정으로 묶은 라우터.
• API 베이스: https://api.imperial.space/api/v1
• 전체 스펙: https://api.imperial.space/api/v1/openapi.json
───────────
🔑 1. 인증 (제일 큰 함정)
문서의 콜드 서명(/mobile/connect)은 무조건 401 "Failed to generate mobile session" → 막힌다. 시간낭비 포인트.
✅ 실제 방법:
• Imperial 앱/웹에서 지갑 연결 + 입금 + "one-click/API/mobile trading" 활성화
• → JWT(Bearer, 30일 만료) 발급됨 → 봇이 이걸 사용
• 헤더: Authorization: Bearer <JWT>
• JWT는 거래 권한만(입출금 불가). ⚠️ 30일 만료 → 갱신 안 하면 주문이 401로 조용히 멈춤
───────────
📝 2. 주문 인코딩 (POST /mobile/orders)
필드 → 의미:
• wallet → base58 pubkey
• profileIndex → 서브계정 0~5
• side → 0=long, 1=short
• action → 0=increase(진입), 1=decrease(축소)
• underwriter → 0=Jupiter, 1=Flash, 2=Phoenix, 3=GMTrade
• orderType → 0=Market, 1=Limit
• sizeUsd → 6-decimal ($1 = 1,000,000)
• collateralAmount → 담보 6-dec (1x면 sizeUsd와 동일)
• triggerPrice → 오라클 스케일 1e9 (가격 × 1,000,000,000)
• slippageBps → bps
• symbol / phoenixNative → "SOL" 등 / Phoenix CLOB이면 true
응답: {success, signature, orderPda} → orderPda로 취소/수정
• 취소: POST /mobile/orders/cancel {wallet, orderPda, profileIndex}
• 수정: POST /mobile/orders/update
───────────
📊 3. 마켓메이킹은 무조건 Phoenix
패시브 메이커는 Phoenix(underwriter=2 + phoenixNative=true)만 가능. Jupiter/Flash/GMTrade는 오라클·풀형이라 resting
limit 불가.
• 수수료: maker ~0.5bps / taker ~3.5bps (maker 싸서 유리)
• bid(매수) = side=0, action=0, Limit @ mid 아래
• ask(매도) = side=1, action=0, Limit @ mid 위
• 순포지션 = long − short
───────────
🔎 4. 시세·상태 읽기 (대부분 public)
• GET /phoenix/mark-prices → 심볼별 mid (fair price)
• GET /phoenix/depth?symbol=SOL → 오더북 bids/asks
• GET /phoenix/markets → 심볼별 tick/lot/maxLev/수수료
• GET /positions?walletAddress= → 포지션(side,sizeUsd,entry,pnl)
• GET /orders?walletAddress= → resting 주문
• GET /mobile/balances (JWT) → 프로필별 USDC
• WS: /ws/market(시세), /ws(지갑 변경 신호)
───────────
🔁 5. 최소 봇 루프
jwt = <앱에서 발급>
매 N초:
mid = GET /phoenix/mark-prices
pos = GET /positions
bid, ask = 전략(mid, pos)
기존 주문 cancel(orderPda)
POST /mobile/orders bid (side0/action0/Limit/phoenixNative,
sizeUsd=$*1e6, triggerPrice=px*1e9)
POST /mobile/orders ask (side1/action0/...)
종료 시: 모든 orderPda cancel ← 필수
───────────
⚠️ 6. 함정 체크리스트
• JWT는 앱에서 발급(콜드서명 X), 30일마다 갱신
• sizeUsd 6-dec / triggerPrice 1e9 스케일 (틀리면 가격 엉뚱)
• MM은 Phoenix + phoenixNative=true만
• 입금은 /deposit/build-tx(스폰서 트랜잭션)로 — 임의 주소 raw 전송 금지(자금 분실)
• rate limit 600/min (per wallet)
• 봇 죽을 때 cancel-all 안 하면 유령 주문 남음
• Solana 가스용 SOL 소액 필요
솔라나 Perp 쪽에서는 현재 Phoenix가 가장 유망하다고 보고 있습니다.
Imperial이 Phoenix 유동성을 끌어와 거래를 체결하는 구조라 이중 파밍 가능성을 기대하며 사용하고 있습니다.
다만 API 구축 과정이 생각보다 복잡한 편이라, 직접 자동화나 봇 연동을 고려하시는 분들은 이 부분을 참고하시는 것이 좋겠습니다.
Imperial 초대
Phoenix 초대 EG2XN4DV
