GaiaExGaiaEx
크립토 거래소는 어떻게 작동하는가: 주문 매칭과 커스터디
중급블록체인10 min read

크립토 거래소는 어떻게 작동하는가: 주문 매칭과 커스터디

중앙화 거래소와 분산화 거래소가 거래를 체결하는 방식

게시물 공유

당신이 보지 못하는 거래

매수를 누릅니다. 숫자가 초록색으로 바뀝니다. 마치 자산이 그냥 계정에 나타난 것처럼 즉각적으로 느껴집니다. 하지만 탭한 순간과 그 초록색 숫자가 뜨는 순간 사이, 0.5초도 안 되는 시간 동안 실제로는 정교한 일들이 벌어집니다. 주문이 검증되고, 대기열에 들어가고, 수천 건의 다른 주문과 경쟁하고, 기꺼이 팔려는 상대방과 매칭되고, 정산됩니다. 거래소는 그 경쟁을 초당 수백만 번 실행하면서도, 낯선 사람들이 실제 돈을 맡길 만큼 공정하게 돌아가는 기계입니다.

대부분의 사람들은 그 기계 안을 들여다볼 일이 없습니다 — 그것이 고장 나기 전까지는요. 2014년 마운트곡스(Mt. Gox)는 전체 비트코인 거래의 약 70%를 처리하고 있었는데, 수년에 걸친 미탐지 절도와 부실한 회계로 850,000 BTC가 조용히 지갑에서 빠져나갔습니다. 2022년 11월, 지구상 두 번째로 큰 거래소였던 FTX는 80억 달러 규모의 구멍이 뚫린 채 붕괴했는데, 해킹 때문이 아니라 고객 예치금이 몰래 계열 트레이딩 회사로 흘러갔기 때문이었습니다. 두 사례 모두 마지막 순간까지 거래 화면은 완벽하게 정상으로 보였습니다. 인터페이스는 문제없었습니다. 그 아래의 배관은 거짓이었습니다.

거래소를 현명하게 이용하려면 그 초록색 숫자 뒤에 숨어 있는 두 시스템을 이해해야 합니다. 누가 누구와 거래할지를 결정하는 매칭 엔진과, 실제로 누가 당신의 돈을 보관하는지를 결정하는 커스터디 모델입니다. 이번 레슨에서 이 둘을 모두 분해해 보겠습니다.

두 가지 아키텍처, 두 가지 철학

모든 거래소는 먼저 한 가지 질문에 답합니다. 거래하는 동안 돈은 어디에 놓여 있는가? 이 답이 업계 전체를 두 진영으로 나눕니다.

중앙화 거래소(CEX) — 바이낸스, 코인베이스, 옛 FTX — 는 거래소 데스크를 얹은 은행처럼 작동합니다. 회사가 관리하는 지갑에 암호화폐를 예치하는 순간부터 당신의 "잔고"는 그들의 데이터베이스에 있는 한 행일 뿐입니다. 거래할 때 블록체인 트랜잭션은 발생하지 않습니다. 거래소는 그저 자체 원장에 있는 두 숫자를 편집할 뿐입니다. 내부 데이터베이스 쓰기는 비용이 들지 않고 즉시 확인되므로 이는 엄청나게 빠르고 저렴합니다. 대신 그 대가는 신뢰입니다. 당신은 그 회사가 지급 능력이 있고, 정직하며, 유능하다는 데에 베팅하는 셈인데, 정작 회사의 장부 안은 들여다볼 수 없습니다.

탈중앙화 거래소(DEX) — 유니스왑, 전통적인 온체인 스왑 — 은 이를 뒤집습니다. 거래가 실행될 때까지 자금은 절대 지갑을 떠나지 않고, 거래 자체는 당신이 직접 서명해 블록체인에 브로드캐스트하는 트랜잭션입니다. 코인을 쥐고 있는 회사도 없고, 횡령할 수 있는 공동 자금 더미도 없습니다. 여기서의 대가는 다릅니다. 모든 액션마다 가스 수수료를 내야 하고, 스마트 컨트랙트 버그MEV(봇이 트랜잭션 순서를 재배치해 가치를 가로채는 것)에 노출되며, 잘못 서명했을 때 도와줄 지원 창구도 없습니다.

정직하게 말하면: "안전한" 선택지와 "위험한" 선택지가 따로 있는 게 아니라, 서로 다른 리스크 프로필이 있을 뿐입니다. CEX는 한 운영자의 신뢰성과 지급 능력에 리스크를 집중시킵니다. DEX는 당신이 직접 읽어야 할 코드와 직접 지켜야 할 키에 리스크를 흩어 놓습니다. 관건은 어떤 리스크를 눈을 뜬 채로 관리할지 선택하는 능력입니다.

속도, 깊은 유동성, 법정화폐 온램프 덕분에 거래량은 여전히 CEX 쪽으로 크게 기울어져 있습니다. 하지만 체인이 빨라지고 툴링이 개선되면서 온체인 비중도 꾸준히 성장해 왔고, 둘의 장점을 모두 취하려는 세 번째 범주도 등장했습니다 — 이 이야기는 마지막에 다시 다루겠습니다.

Where money sits CEX deposit → omnibus wallets internal ledger trades withdrawal = on-chain event trust: ops + solvency Classic DEX wallet signs each swap atomic settlement on-chain gas + MEV surface trust: contracts + oracles
당신의 독을 고르세요: 상대방 운영 리스크 vs 체인 + 컨트랙트 노출.

오더북: 수요와 공급의 실시간 지도

매칭이 이뤄지기 전에 거래소에는 점수를 기록할 장소가 필요합니다. 그 장소가 바로 오더북(호가창)입니다 — 특정 시장에 대해 대기 중인 모든 매수·매도 주문을 실시간으로 양쪽에서 보여주는 목록입니다.

오더북은 두 부분으로 이루어져 있습니다. 매수호가(bid)는 매수 주문으로, 가격이 가장 높은 것부터 정렬됩니다 — 현재 누군가 지불할 의사가 있는 가장 높은 가격입니다. 매도호가(ask)는 매도 주문으로, 가격이 가장 낮은 것부터 정렬됩니다 — 현재 누군가 받아들일 의사가 있는 가장 낮은 가격입니다. 최고 매수호가와 최저 매도호가 사이의 간격이 스프레드이며, 이것이 오더북에서 읽어낼 수 있는 가장 유용한 단일 숫자입니다. 좁은 스프레드는 매수자와 매도자의 의견이 거의 일치한다는 뜻으로 유동적이고 건강한 시장을 시사하며, 넓은 스프레드는 거래가 얇고 진입·청산 비용이 더 크다는 뜻입니다.

각 가격대에 대기 중인 물량을 쌓아 보면 시장 심도(market depth)가 나옵니다 — 현재 가격 위아래로 얼마만큼의 물량이 대기하고 있는지를 보여주는 프로필입니다. 큰 매수호가가 몰려 있는 구간은 지지선처럼 작용하는 매수벽을 형성하고, 매도호가가 쌓인 구간은 상승세를 억제하는 매도벽을 형성합니다. 심도는 슬리피지를 결정하는 요인이기도 합니다. 두꺼운 오더북에서는 가격을 크게 움직이지 않고도 많은 물량을 살 수 있지만, 얇은 오더북에서는 하나의 큰 시장가 주문이 체결되기까지 가격을 여러 단계 밀어 올릴 수 있습니다.

거래하기 전에 오더북을 읽으세요, 거래한 후가 아니라. 스프레드는 진입과 청산의 즉각적인 비용을 알려주고, 심도는 큰 주문이 얼마나 심하게 가격을 불리하게 움직일지를 알려줍니다. 얇은 오더북에서 보이는 훌륭한 진입 가격은 대개 신기루입니다 — 정작 원하는 물량이 거기 없기 때문입니다.

정직하게 짚어둘 한 가지는, 눈에 보이는 오더북도 조작될 수 있다는 점입니다. 주문은 밀리초 단위로 올라갔다가 취소될 수 있고, 스푸핑(spoofing)(체결할 의도 없이 큰 주문을 걸어 가짜 수요를 만드는 행위) 같은 전술이 존재하는 이유도 바로 오더북이 그만큼 널리 주시되기 때문입니다. 심도는 증거로 참고하되, 절대적인 진리로 받아들이지 마세요.

매칭 엔진 내부: 주문이 거래가 되는 과정

오더북이 점수판이라면 매칭 엔진은 심판입니다. 들어오는 주문을 대기 중인 오더북과 지속적으로 비교하며, 어떤 거래가 언제 어떤 순서로 체결될지를 결정론적으로 결정하는 소프트웨어입니다. 바쁜 거래소에서는 초당 수천 건의 주문을 엄격하고 감사 가능한 공정성 원칙에 따라 처리합니다 — 그리고 그 공정성을 제대로 구현하는 것이 이 게임의 전부입니다.

주된 규칙은 가격-시간 우선(price-time priority)이며, 두 단계로 작동합니다. 먼저 가격: 항상 최선의 가격이 우선합니다 — 가장 높은 매수호가와 가장 낮은 매도호가가 먼저 매칭됩니다. 그다음 시간: 여러 주문이 같은 가격에 걸려 있을 때는 가장 먼저 도착한 주문이 먼저 체결됩니다(FIFO 큐). 따라서 당신과 다른 트레이더가 둘 다 $100.00에 매수호가를 걸었다면, 밀리초라도 먼저 도착한 주문이 당신보다 앞서 체결됩니다. 프로 트레이더들이 지연 시간에 그토록 신경 쓰는 이유, 그리고 진지한 CEX 엔진들이 손수 튜닝한 자료구조로 C++이나 Rust로 작성되는 이유가 바로 여기에 있습니다. 마지널한 상황에서는 마이크로초가 누가 거래하는지를 결정합니다.

주문 하나가 어떻게 처리되는지 따라가 봅시다. $100.05에 들어온 매수 지정가 주문이, 최선 매도호가가 $100.04인 오더북에 도착합니다. 이 매수 주문이 스프레드를 넘어가기 때문에 대기 중인 매도호가와 즉시 체결됩니다 — 들어온 주문은 테이커(유동성을 제거함)이고, 대기하던 매도자는 메이커(유동성을 공급함)입니다. 들어온 주문이 체결된 매도호가보다 물량이 더 크다면 남은 물량은 사라지지 않고 새로운 메이커 주문으로 오더북에 대기하며 자기 순서를 기다립니다.

이 메이커/테이커 구분은 단순한 용어가 아니라, 거래소가 행동을 유도하는 방식입니다. 대부분의 수수료 체계는 테이커에게는 더 많은 수수료를, 메이커에게는 더 적은 수수료를 부과합니다(때로는 메이커에게 리베이트를 지급하기도 합니다). 메이커가 시장을 쓸모 있게 만드는 상시 유동성을 공급하기 때문입니다. 자신이 어느 쪽에 서 있는지 이해하는 것은 비용을 낮추는 직접적인 길입니다. 대기하는 인내심 있는 지정가 주문은 보통 스프레드를 넘어가는 시장가 주문보다 저렴합니다.

Price-time priority (simplified book) Asks 100.05 — 2.1 (t1) 100.04 — 1.4 (t0 earlier) Bids 100.00 — 5.0 (t2) 99.99 — 3.2 (t3) Incoming aggressive limit crosses best opposite → immediate fill (taker) rests if not fully filled → maker queue same price: earlier time wins
매칭 규칙은 공개되어 있지만, 마지널한 상황에서는 여전히 속도와 수수료가 누가 체결되는지를 결정합니다.

주문 유형과 거래의 전체 생애주기

매칭 엔진을 움직이는 것은 주문 유형입니다 — 각각 체결의 확실성과 가격의 확실성 사이에서 서로 다른 트레이드오프를 나타냅니다. 둘 다를 동시에 얻는 경우는 거의 없습니다.

  • 시장가 주문 — "비용이 얼마든 지금 체결시켜 줘." 스프레드를 넘어가서 즉시 이용 가능한 최선의 가격들을 가져갑니다. 체결은 보장되지만 가격은 보장되지 않으며, 얇은 오더북에서는 슬리피지가 매우 심할 수 있습니다. 항상 테이커입니다.
  • 지정가 주문 — "이 가격 또는 그보다 나은 가격에서만 체결시켜 줘." 받아들일 최악의 가격을 스스로 설정합니다. 스프레드를 넘어가면 즉시 체결되고(테이커), 그렇지 않으면 메이커 주문으로 오더북에 대기하며 기다립니다. 가격은 통제할 수 있지만 영영 체결되지 않을 수도 있습니다.
  • 스톱 주문 — 시장이 트리거 가격을 지나서 거래될 때까지 잠자다가, 그 순간 시장가 또는 지정가 주문으로 발동하는 조건부 주문입니다. 대표적인 용도는 화면을 계속 지켜보지 않고도 손실 포지션을 자동으로 제한하는 스톱로스입니다.

어떤 유형을 선택하든 주문은 동일한 관문을 통과합니다. 제출: 주문이 서명되어 전송됩니다. 검증: 거래소가 잔고가 충분한지, 리스크 한도를 통과하는지 확인합니다. 매칭: 가격-시간 우선 원칙에 따라 오더북과 만납니다. 정산: 잔고가 이동하고 체결이 기록됩니다. 중앙화 거래소에서는 두 번째부터 네 번째 단계까지가 비공개 데이터베이스 안에서 보이지 않게 일어나므로 그 결과를 신뢰해야 합니다. 온체인 오더북에서는 매칭과 정산이 누구나 독립적으로 재계산할 수 있는 공개 원장 이벤트입니다. 생애주기는 같지만 투명성은 완전히 다릅니다.

트레이더의 핵심 트레이드오프: 시장가 주문은 체결의 확실성을 사고 그 대가를 슬리피지와 테이커 수수료로 치릅니다. 지정가 주문은 가격 통제권을 사고 그 대가를 영영 체결되지 않을 위험으로 치릅니다. 주문마다 잘 선택하는 것, 그것이 좋은 체결의 대부분을 이룹니다.

The life of one order 1. Submit signed + sent 2. Validate balance + risk 3. Match price-time book 4. Settle balances move filled CEX: steps 2-4 happen inside a private database. On-chain CLOB: steps 3-4 are public ledger events anyone can recompute.
모든 주문은 동일한 네 단계를 거칩니다 — 다른 것은 그 과정이 눈에 보이는지 여부입니다.

커스터디: 실제로 누가 당신의 키를 쥐고 있는가?

매칭은 당신이 누구와 거래할지를 결정합니다. 커스터디는 거래하는 동안 누가 당신의 돈을 보관하는지를 결정합니다 — 그리고 역사적으로 재앙적인 실패는 바로 이 커스터디에서 일어났습니다. 핵심 질문은 하나입니다. 누가 개인키를 통제하는가?

완전 수탁형(Full custodial). 거래소가 키를 보관하고, 당신의 잔고는 그들의 원장 안의 IOU(채무 증서)입니다. 복구는 쉽습니다 — 비밀번호를 잊어도 지원팀이 도와줄 수 있습니다 — 하지만 통제권을 완전히 넘긴 셈입니다. 해킹, 지급불능, 혹은 단순한 사기가 당신의 자금에는 존재를 좌우하는 위협이 됩니다. 거래소는 이를 관리하기 위해 보유 자산을 핫 월렛(온라인 상태로 빠른 출금이 가능하지만 노출되어 있는 지갑)과 콜드 월렛(오프라인 상태로 예치금 대부분을 보관하며 도난이 훨씬 어려운 지갑)으로 나눕니다. "핫이냐 콜드냐"는 인터넷 노출 여부를 나타낼 뿐, 누가 키를 소유하는지를 나타내지는 않습니다 — 수탁형 거래소는 둘 다를 통제합니다.

자기 수탁(Self-custody). 당신이 키를 직접 보관합니다, 그게 전부입니다. 어떤 상대방도 당신의 자금을 동결하거나, 대출로 굴리거나, 잃어버릴 수 없습니다 — 그리고 그 누구도 당신을 대신해 복구해 줄 수도 없습니다. 시드 문구를 잃어버리면 돈은 영구히 사라집니다. 이는 최대한의 주권과 최대한의 개인 책임을 뜻하며, 인간의 실수를 위한 여지가 전혀 없습니다.

MPC(다자간 연산, Multi-Party Computation). 암호학적 중간 지점입니다. 개인키는 어느 한 곳에 통째로 조합되는 일이 절대 없습니다. 대신 암호화된 조각(shard)으로 나뉘어 서로 독립된 당사자들이 각각 보관하며, 트랜잭션에 서명하는 것은 그 조각들을 아우르는 협업 연산입니다. 단 하나의 서버나 기기, 사람도 완전한 키를 통째로 갖는 일이 없으므로 훔칠 단 하나의 핫 키도 없고 잃어버릴 단 하나의 시드 문구도 없습니다 — 동시에 순수한 콜드 스토리지로는 불가능한 실용적인 복구 절차도 지원합니다.

커스터디는 실제로 당신의 리스크를 결정하는 질문입니다. 당신이 읽는 "크립토 해킹" 대부분은 블록체인이 뚫린 것이 아니라 커스터디가 뚫린 것입니다. 공동 자금, 노출된 핫 월렛, 혹은 잔고를 오용한 운영자 말입니다. 어떤 코인을 고르는지보다 당신의 키가 어떻게 보관되는지가 안전에 훨씬 더 중요합니다.

커스터디가 실패할 때 — 그리고 실패하지 않는지 확인하는 방법

크립토 거래소의 무덤은 커스터디의 무덤입니다. 마운트곡스는 스스로도 눈치채지 못한 보안 및 회계 실패로 수년간 고객 비트코인을 흘려보냈습니다. 비트파이넥스는 2016년 해킹을 당했고, 그 손실을 모든 사용자에게 분산시킨 뒤 회수하는 데 수년을 보냈습니다. FTX는 해킹조차 당하지 않았습니다 — 고객 예치금을 한데 모아 계열 트레이딩 회사로 조용히 빼돌렸다가, 뱅크런이 그 구멍을 드러냈을 뿐입니다. 메커니즘은 다르지만 공통된 실마리는 하나입니다. 적절한 견제 없이 남의 돈을 한곳에 집중해서 통제했다는 것.

업계의 대답은 예치금 증명(Proof of Reserves, PoR)입니다. 머클 트리(Merkle tree)를 이용하면 거래소는 모든 고객 잔고의 합이 실제로 온체인에 보유한 자산으로 1:1 뒷받침된다는 것을 암호학적으로 증명할 수 있고, 당신은 다른 사람의 잔고를 노출하지 않고도 자신의 잔고가 그 안에 포함되어 있는지 검증할 수 있습니다. "그냥 우리를 믿어라"보다는 실질적인 개선입니다. 하지만 약관을 자세히 읽어야 합니다.

  • PoR은 특정 시점의 스냅샷일 뿐, 실시간 보증이 아닙니다. 감사 당일의 예치금을 증명할 뿐, 당신이 출금하는 날의 예치금을 증명하지는 않습니다.
  • PoR은 자산은 증명하지만 부채는 흔히 증명하지 않습니다. 숨겨진 부채가 있는 거래소도 완전한 예치금을 보여주면서 여전히 지급불능 상태일 수 있습니다 — 그래서 PoR은 지급능력 증명과 같지 않습니다.
  • 오래된 수법: 감사 기간 동안 자산을 빌려와서 예치금을 증명한 뒤 돌려주는 방식입니다. 스냅샷은 조작될 수 있습니다.

그래서 진짜 프런티어는 "한 번 증명하기"가 아니라 "항상 명확하게 만들기"입니다. 거래소의 거래 상태가 공개 블록체인에 존재한다면, 예치금과 포지션은 신뢰해야 하는 주기적인 사진이 아니라, 누구든 언제든 원장에서 재계산할 수 있는 실시간 피드가 됩니다. 그것이 감사와 투명성의 차이입니다.

신뢰의 스펙트럼: 불투명한 CEX("우리 데이터베이스를 믿어라") → 주기적인 예치금 증명("우리의 최근 스냅샷을 믿어라") → 실시간 온체인 상태("직접 지금 검증하라"). 오른쪽으로 갈수록 누군가의 말을 믿어야 할 필요가 줄어듭니다.

GaiaEx가 이 토대 위에 세운 것

GaiaEx는 위에서 다룬 모든 내용을 바탕으로 한 단순한 명제 위에 세워졌습니다. 중앙화 거래소의 속도와 사용성은 유지하면서, 모든 대형 붕괴 사례를 무너뜨린 두 가지 단일 실패 지점 — 단일 핫 키와 비공개이며 검증할 수 없는 원장 — 을 제거하는 것입니다.

MPC 커스터디가 키 문제를 해결합니다. 개인키는 어느 한 곳에 통째로 저장되는 일이 없습니다. 암호화된 조각으로 나뉘어 독립된 당사자들에게 분산되며, 서명은 완전한 키를 재구성하지 않고 협업으로 이루어집니다. 공격자가 털어갈 단 하나의 핫 월렛도 없고, 당신이 잃어버릴 시드 문구도 없습니다 — 그러면서도 복구는 여전히 실용적입니다. "마운트곡스 핫 월렛" 유형의 실패는 애초에 일어날 자리가 없습니다.

Hyperliquid L1 위에서 이루어지는 온체인 실행이 원장 문제를 해결합니다. 거래는 초 미만의 최종성을 갖는 진정한 중앙집중형 오더북(CLOB)을 구동하는 목적에 맞게 설계된 블록체인 위에서 매칭되고 정산됩니다. 그래서 익숙한 메이커/테이커, 가격-시간 우선 방식의 경험은 그대로 유지하면서도, 체결·취소·잔고는 신뢰를 요구받는 데이터베이스 안의 항목이 아니라 검증 가능한 원장 이벤트가 됩니다. "FTX 비밀 스프레드시트" 유형의 실패 또한 숨을 곳이 없습니다.

이것이 리스크를 완전히 없애 주지는 않습니다 — 예치금은 여전히 체인과 브릿지를 넘나들고, 당신은 여전히 무엇에 서명하는지 이해해야 합니다. 하지만 GaiaEx에서 하는 거래는 감사할 수 없는 비공개 시스템 안에서 바뀌는 숫자가 아닙니다. 그것은 어느 한 당사자도 훔칠 수 없는 키로 보호되는, 실재하고 공개되어 있으며 재계산 가능한 이벤트입니다. 거래소가 어떻게 작동하는지 이해해야 하는 이유가 바로 여기에 있습니다. 그래야 믿으라고 요구받는 초록색 숫자와, 직접 검증할 수 있는 초록색 숫자를 구별할 수 있습니다.