본문으로 건너뛰기

트레이딩

매칭 엔진

매칭 엔진은 어떤 주문이 서로 거래할지 결정합니다. 이 페이지에서는 우선순위 규칙, 정지 트리거, 재시작 동작, 엔진이 적용하는 공정성 불변 조건을 설명합니다.

가격-시간 우선순위

새 주문이 도착하면 엔진은 오더북의 최선 상대 주문과 매칭합니다. 최선은 먼저 가격으로, 그 다음 시간으로 결정됩니다.

  • 더 좋은 가격이 먼저 체결됩니다 — 매도자에게는 높은 매수가가 낮은 매수가보다 우선합니다.
  • 동일한 가격은 시간 순으로 체결됩니다 — 먼저 들어온 주문이 이깁니다.
  • 체결 가격은 신규 주문이 아닌 대기 주문에서 가져옵니다.

정지 트리거

세 가지 이벤트가 마켓 매칭을 중단할 수 있습니다. 정지 중에는 엔진이 신규 주문을 거부하고 대기 주문을 동결합니다.

트리거효과재개
서킷 브레이커 — 30%+ 가격 변동 신규 주문 정지, 대기 주문 동결, 사용자 알림. 관리자 검토 + 수동 재개.
결과 발표 정지 — 결과 발표 전 잠금 정지 후 마켓을 정산으로 유도.정산 후 마켓 종료.
플랫폼 유지보수 창 짧은 창 동안 명확한 오류 코드와 함께 주문 거부. 창이 종료되면 자동 재개.

재시작 중 발생하는 일

엔진 재시작은 드물지만 발생합니다. SatoriEx는 오더북을 결정론적으로 재생합니다; 사용자는 쓰기 작업에서 잠깐의 중단을 경험하지만 읽기는 항상 가능합니다.

  1. API가 임시 오류 코드와 함께 신규 주문을 거부합니다.
  2. 기존 대기 주문이 영속 저장소에서 로드됩니다.
  3. 오더북 상태가 마지막 커밋된 시퀀스 번호까지 재생됩니다.
  4. 매칭 재개; 거부된 클라이언트는 동일한 멱등성 키로 재시도해야 합니다.

공정성 불변 조건

엔진은 동일한 가격의 이전 주문보다 나중 주문을 먼저 체결하지 않습니다. 플랫폼 시드 유동성을 포함한 어떤 주문도 우선순위를 부여받지 않습니다 — 주문에는 패스트레인 플래그가 없습니다.

멱등성 키를 사용하십시오

모든 POST /orders 호출은 Idempotency-Key 헤더를 받습니다. 재시작 및 네트워크 이상 시 포지션을 두 배로 늘리지 않고 안전하게 재시도할 수 있습니다.