오더북
각 종목은 자체 오더북을 가지며, 서로 맞물린 세 가지 구조로 메모리에 보관됩니다.slab arena — 사전 할당된 주문 슬롯 영역
가격 레벨정렬된 맵 · 가격 → 레벨최우선 호가는 훑지 않고 끝으로 이동해 얻음
주문 인덱스주문 ID → 슬롯취소와 정정이 상수 시간
주문
주문
주문
주문
주문
도착 순서대로 꿰는 이중 연결 리스트로, 레벨 안의 우선순위가 계산이 아니라 위치로 정해집니다.
재사용 순서가 고정된 이유해제된 슬롯은 정해진 순서로 재사용되고 인덱스의 시드도 고정입니다. 성능을 위한 선택이 아닙니다. 두 검증자가 슬롯을 다른 순서로 재사용하면 포크가 납니다.
각 레벨의 선두
직접 조회
주문은 slab arena 안에 삽니다. 상수 시간에 할당하고 해제하는 사전 할당 영역입니다. 그래서 오더북 연산은 핫 패스에서 메모리를 할당하지 않고, 해제된 슬롯은 할당기가 마음대로 놓는 자리가 아니라 정해진 순서로 재사용됩니다. 마지막 항목은 성능을 위한 선택이 아닙니다. 두 검증자가 슬롯을 다른 순서로 재사용하면, 슬롯 배치를 관측하는 모든 것이 갈라지기 때문입니다.
같은 원칙이 주문 인덱스에도 적용되어, 인덱스의 시드는 무작위가 아니라 고정입니다. 프로세스마다 시드를 달리하는 해시 맵은 충돌 공격에 대한 표준적인 방어책이지만, 합의 실행 경로 위에서는 포크입니다.
가격은 처음부터 끝까지 정수입니다. 소수가 아니라 서브틱 단위이며, 이 단위가 제출하는 값과 어떻게 대응되는지는 정밀도에 정리되어 있습니다.
우선순위
우선순위는 가격이 먼저이고, 그다음이 그 가격의 체인 안에서의 위치입니다. 여기서 “시간”은 주문이 어느 노드에 도착한 시각이 아니라, 커밋된 블록 순서 안의 정규 위치입니다. 이것이 블록 내부의 지연 경쟁을 없앱니다. 같은 블록에 든 두 주문은 모든 검증자가 동일하게 계산하는 선후 관계를 가지며, 특정 노드에 아무리 가까이 붙어 있어도 그 선후를 바꾸지 못합니다. 블록과 블록 사이에서는 여전히 도착 시각이 중요합니다. 다만 경쟁의 단위가 마이크로초가 아니라 블록입니다. 커널의 단계 순서가 이를 한 번 더 강화합니다. 블록 안에서 취소가 공격적 주문 제출보다 먼저 실행되므로, 취소와 같은 블록에 도착한 주문이 대기 호가를 가져갈 수 없습니다.주문 매칭
들어온 주문
오더북과 교차?
반대편 최우선 레벨 소진
체결 생성
완료
주문 유효기간에 따라 잔량을 대기 또는 거부GTC 대기 · IOC 취소 · FOK 전량 아니면 미체결 · 포스트 온리는 교차 대신 거부
잔량 — 다음 레벨로
잔량 없음
- GTC — 잔량을 오더북에 대기시킵니다.
- IOC — 잔량을 취소합니다.
- FOK — 주문 전량을 채울 수 없으면 아무것도 체결되지 않습니다.
- ALO — 포스트 온리입니다. 주문이 유동성을 가져가게 되면 교차하는 대신 거부됩니다.
자기체결 방지
들어온 주문이 같은 소유자의 대기 유동성과 매칭될 상황이 되면, 그 매칭은 실행되는 대신 억제됩니다. 어느 쪽이 물러날지는 설정할 수 있습니다.
이렇게 취소된 메이커 주문은 매칭 중에 모아 두었다가 같은 블록 안에서 제거되므로, 오더북이 이미 억제된 주문을 계속 들고 있지 않습니다.
이 검사에서의 소유권은 오더북이 추적하는 계정 단위로 판정됩니다. 거래 관점의 설명은 자기체결 방지를 참고하십시오.
매칭이 하지 않는 일
매칭은 수수료를 계산하지 않고, 손익을 실현하지 않고, 포지션을 조정하지 않으며, 증거금을 검사하지 않습니다. 이 모두는 매칭이 낸 체결을 받아 매칭 이후 클리어링 하우스에서 일어납니다. 주문이 존재해도 되는지를 판단하지도 않습니다. 증거금 적정성, 미체결 주문 수 한도, 리듀스 온리 제약, 시장가의 지정가 전환은 주문이 오더북에 닿기 전에 해소됩니다. 매처가 주문을 볼 시점에 남은 질문은 그 주문이 오더북의 어디에 놓이는가뿐입니다.다음으로 읽을 문서
클리어링 하우스
체결이 생긴 뒤 잔액과 포지션에 무슨 일이 일어나는지 설명합니다.
주문 유형
거래 관점의 설명입니다. 무엇을 제출할 수 있고 각 유형이 어떻게 동작하는지 다룹니다.
오더북
깊이와 가격 레벨, 그리고 트레이더 관점에서 오더북을 읽는 법입니다.
IntentionKernel
블록 실행에서 매칭이 놓이는 자리입니다.