Scripts · manifast-platform

스크립트

manifast-platform 루트에서 실행. 용도별로 묶어 두었습니다. 같은 파일이라도 플래그에 따라 하는 일이 다릅니다.

경로 manifast-platform/scripts

온체인 · 상장

Zenith 프로그램에 마켓을 새로 만들 때. 기존 Manifest 마켓 주소는 안 따라온다.

  • Zenith 프로그램에 3페어 마켓 생성

    create-zenith-markets.ts

    DOGEK/SOL · SOL/USDC · SPEPE/USDT 를 우리 Core 프로그램에 새로 만든다. 호가는 0부터.

    이럴 때 · Zenith Core·Wrapper를 메인넷에 배포한 뒤, LISTED_MARKETS 주소를 바꿀 때

    • 미리보기

      npx tsx scripts/create-zenith-markets.ts --dry-run

      RPC로 rent만 보고 전송하지 않음. 마켓 키는 매번 새로 뽑힘

      체인을 안 바꿈. 출력 주소는 실제 배포와 다름

    • npx tsx scripts/create-zenith-markets.ts

      createAccount+createMarket 전송. 새 마켓 주소를 출력

      메인넷에 마켓이 생김. WALLET_SECRET_KEY·SOL 필요

    • 출력 address를 packages/shared LISTED_MARKETS 에 넣는다
    • 옛 Manifest 마켓·차트·체결은 이 주소와 무관

차트 · 체결 데이터

로컬 Mongo. 차트 볼륨이 비었거나, 테스트 페어 과거 데이터를 지울 때.

  • 차트 볼륨 · 체결 채우기

    backfill-fills.ts

    차트 하단 막대는 체결량이다. 이미 있는 fills로 봉을 다시 쌓거나, 체인에서 체결을 새로 가져온다.

    이럴 때 · 볼륨이 비었을 때, 또는 체결을 지운 뒤 다시 넣을 때

    • 추천 · 수 초

      npx tsx scripts/backfill-fills.ts --market dogek-sol --candles-only

      Mongo fills만 읽고 차트 OHLC·볼륨을 다시 쌓음. RPC 없음

      체결은 안 건드림. 볼륨 채우기는 이 명령

    • 느림 · 몇 시간

      npx tsx scripts/backfill-fills.ts --market dogek-sol

      체인 서명을 한 건씩 긁어 fills 넣은 뒤 캔들도 재구성

      RPC+250ms/건. Ctrl+C 해도 커서 이어서 재개. --max-sigs N으로 상한

    • npx tsx scripts/backfill-fills.ts --market dogek-sol --no-candles

      체인에서 체결만 넣음

      차트(candle_bars)는 안 만짐

    • 날짜 컷

      npx tsx scripts/backfill-fills.ts --market spepe-usdt --since 2026-08-06

      2026-08-06 0시(KST) 이후 체결을 체인에서 가져와 fills+차트 볼륨 구성

      그 이전 서명은 안 긁음. 날짜 없으면 계정 처음부터. Ctrl+C 후 같은 --since로 재개

    • --market sol-usdc | dogek-sol | spepe-usdt 로 마켓만 바꾸면 됨
    • 느린 명령은 마지막 페이지까지가 끝. 커서는 .backfill-fills-<id>.cursor.json
  • 차트 · 체결 삭제

    delete-market-data.ts

    그 마켓 Mongo 체결·캔들을 지운다. 화면 상장(페어 목록)은 그대로.

    이럴 때 · 테스트 페어 과거 데이터를 비울 때

    • 미리보기

      npx tsx scripts/delete-market-data.ts --market sol-usdc --dry-run

      지울 건수만 출력

      DB는 안 지움

    • 실제 삭제

      npx tsx scripts/delete-market-data.ts --market sol-usdc --yes

      fills + candle_bars 삭제

      --yes 없으면 거부. 차트만 남기고 체결만 지우는 옵션은 없음

    • --market dogek-sol | sol-usdc | spepe-usdt 로 마켓만 바꾸면 됨
  • 체결에 페어 이름 붙이기

    label-fills.ts

    구 fills에 marketId/pair가 없을 때 라벨만 채움.

    이럴 때 · Compass에서 주소만 보일 때

    • npx tsx scripts/label-fills.ts

      상장 마켓 fills에 pair 라벨 $set

      체인·삭제 없음. 필드만

부하테스트

실측은 Railway load-sse / load-test 기동. 로컬 숫자는 참고만.

  • 접속 부하 (SSE)

    load-sse.ts

    가상 탭 N개가 realtime에 붙는다. --full-tab이면 Trade 화면과 같은 SSE 세트.

    이럴 때 · 동접·Online 숫자를 재볼 때

    • 실측 추천

      npx tsx scripts/load-sse.ts --count 500 --full-tab --ramp 100/2s

      2초마다 100탭 × SSE 5, 500유저 후 1분 유지

      동시 몰림 완화. Railway: railway up --service load-sse

    • npx tsx scripts/load-sse.ts --count 100 --hold 60

      Online(presence)만 100연결

      full-tab보다 가볍다

    • npx tsx scripts/load-sse.ts --count 10 --dry-run

      URL만 출력

      연결 없음

    • count=가상 탭 수. full-tab ≈ 탭당 SSE 5
    • dev만. presence마다 daily_visitors +1 → 끝나면 realtime 재시작
  • 주문 부하

    load-orders.ts

    서버 지갑으로 limit 주문을 count건 동시에 보낸다. HTTP 서버 없음.

    이럴 때 · 주문 RPC·체결 한도를 재볼 때

    • npx tsx scripts/load-orders.ts --count 10 --market sol-usdc

      소액 limit 10건 동시 전송

      --market dogek-sol | spepe-usdt 가능. 실측은 railway up --service load-test

    • npx tsx scripts/load-orders.ts --count 10 --dry-run

      파라미터만 출력

      체인·지갑 안 씀

    • WALLET_SECRET_KEY 필요(아래 변환 스크립트). UI 주문은 Phantom이라 trade-api에 키 불필요
  • 지갑 키 → JSON

    wallet-secret-to-json.ts

    base58 개인키를 Railway WALLET_SECRET_KEY용 숫자 배열로 출력. 1회.

    이럴 때 · load-orders / load-test 키를 넣을 때

    • npx tsx scripts/wallet-secret-to-json.ts "paste-base58-key-here"

      stdout에 [1,2,…] 한 줄

      PowerShell은 따옴표 필수(< > 금지). 출력·키 커밋 금지