트레이딩
매칭 엔진
매칭 엔진은 어떤 주문이 서로 거래할지 결정합니다. 이 페이지에서는 우선순위 규칙, 정지 트리거, 재시작 동작, 엔진이 적용하는 공정성 불변 조건을 설명합니다.
가격-시간 우선순위
새 주문이 도착하면 엔진은 오더북의 최선 상대 주문과 매칭합니다. 최선은 먼저 가격으로, 그 다음 시간으로 결정됩니다.
- 더 좋은 가격이 먼저 체결됩니다 — 매도자에게는 높은 매수가가 낮은 매수가보다 우선합니다.
- 동일한 가격은 시간 순으로 체결됩니다 — 먼저 들어온 주문이 이깁니다.
- 체결 가격은 신규 주문이 아닌 대기 주문에서 가져옵니다.
정지 트리거
세 가지 이벤트가 마켓 매칭을 중단할 수 있습니다. 정지 중에는 엔진이 신규 주문을 거부하고 대기 주문을 동결합니다.
| 트리거 | 효과 | 재개 |
|---|---|---|
| 서킷 브레이커 — 30%+ 가격 변동 | 신규 주문 정지, 대기 주문 동결, 사용자 알림. | 관리자 검토 + 수동 재개. |
| 결과 발표 정지 — 결과 발표 전 잠금 | 정지 후 마켓을 정산으로 유도. | 정산 후 마켓 종료. |
| 플랫폼 유지보수 창 | 짧은 창 동안 명확한 오류 코드와 함께 주문 거부. | 창이 종료되면 자동 재개. |
재시작 중 발생하는 일
엔진 재시작은 드물지만 발생합니다. SatoriEx는 오더북을 결정론적으로 재생합니다; 사용자는 쓰기 작업에서 잠깐의 중단을 경험하지만 읽기는 항상 가능합니다.
- API가 임시 오류 코드와 함께 신규 주문을 거부합니다.
- 기존 대기 주문이 영속 저장소에서 로드됩니다.
- 오더북 상태가 마지막 커밋된 시퀀스 번호까지 재생됩니다.
- 매칭 재개; 거부된 클라이언트는 동일한 멱등성 키로 재시도해야 합니다.
공정성 불변 조건
엔진은 동일한 가격의 이전 주문보다 나중 주문을 먼저 체결하지 않습니다. 플랫폼 시드 유동성을 포함한 어떤 주문도 우선순위를 부여받지 않습니다 — 주문에는 패스트레인 플래그가 없습니다.
멱등성 키를 사용하십시오
모든 POST /orders 호출은 Idempotency-Key 헤더를 받습니다. 재시작 및 네트워크 이상 시 포지션을 두 배로 늘리지 않고 안전하게 재시도할 수 있습니다.