Polymarket V2 출시, 유령 주문은 해결되었나?
- 핵심 의견: Polymarket은 V2 업그레이드를 통해 '유령 주문' 문제의 주요 원인(nonce 메커니즘)을 제거했지만, 문제를 완전히 근절하지는 못했습니다. 오프체인 매칭, 온체인 결제 모델이 유지되는 한 주문의 불확실성은 완전히 사라지지 않습니다.
- 핵심 요소:
- '유령 주문'이란 오프체인에서 체결된 것으로 표시된 주문이 최종적으로 온체인에서 결제되지 않는 현상을 말하며, 주요 원인은 오프체인 매칭과 온체인 결제 간의 시간 차이에 있습니다.
- V1 버전에서는 공격자가 incrementNonce 메커니즘을 이용해 매우 낮은 가스 비용으로 이미 매칭된 주문을 온체인에서 무효화할 수 있었고, 이로 인해 사용자의 거래 결과가 불안정해졌습니다.
- V2는 전역 nonce 메커니즘을 제거하고 단일 주문 해시(order hash)를 통한 주문 취소 방식으로 변경하여, 공격자가 대량으로 대기 주문을 파괴할 수 있는 영향 범위와 수익 공간을 대폭 낮췄습니다.
- V2는 가장 명백한 공격 경로를 수정했지만, 오프체인과 온체인 간의 상태 차이(잔액, 승인, 컨트랙트 실행 등)는 여전히 존재하며, '유령 주문'이 발생할 수 있는 근본적인 조건은 변하지 않았습니다.
- 기타 업데이트로는 담보 스테이블코인 PUSD 도입, 새로운 CLOB-Client SDK 및 1271 서명 지원이 포함되어 시스템 안정성과 기관 접근성을 높이는 데 기여합니다.
原创 | Odaily 星球日报(@OdailyChina)
作者 | Asher(@Asher_ 0210)

어젯밤, Polymarket이 유지보수 창에 진입하여 거래를 중단하고 오더북을 비운 후, 공식적으로 CLOB V2를 출시했습니다.
공식 측이 이전에 공개한 바에 따르면, 이번 업그레이드에는 새로운 계약, 새로운 오더북, 새로운 담보 토큰 Polymarket USD, 그리고 새로운 CLOB-Client SDK가 포함됩니다. 사용자 입장에서는 PUSD, SDK, 주문 구조 등의 변화가 즉시 크게 와닿지 않을 수 있습니다. 하지만 가장 먼저 주목해야 할 점은 Polymarket을 오랫동안 괴롭혀 온 '고스트 필(Ghost Fills)', 즉 커뮤니티에서 흔히 말하는 '유령 주문' 문제입니다.
V2는 실제로 이 문제를 처리했습니다. 이전에 가장 악용되기 쉬웠던 nonce 메커니즘이 제거되었고, 주문 구조와 주문 취소 방식도 변경되었습니다. 하지만 이것이 유령 주문이 완전히 사라졌다는 것을 의미하지는 않습니다. 왜냐하면 Polymarket의 핵심 거래 모델은 여전히 오프체인 매칭, 온체인 결제이기 때문입니다. 이 두 프로세스 사이에 시간 차이가 존재하는 한, 유사한 문제가 완전히 제거되기는 어렵습니다.
주문이 체결된 것으로 표시되는데, 왜 최종적으로 실패할까?
소위 유령 주문이란, 간단히 말해 오프체인에서는 주문이 이미 매칭된 것으로 보이지만, 최종적으로 온체인에서 결제가 완료되지 않는 경우를 말합니다.
Polymarket은 오프체인 오더북 매칭 후, 온체인에서 결제를 완료하는 방식을 채택합니다. 이 디자인의 장점은 분명합니다. 거래 속도가 더 빠르고 비용이 낮아지며, 5분 마켓과 같은 단기 주기, 고빈도 예측 시장에 더 적합합니다.
문제는 바로 이 시간 차이에서 발생합니다. 오프체인 오더북에 체결되었다고 표시된다고 해서 온체인 결제가 반드시 성공하는 것은 아닙니다. 일부 단기 주기 시장에서 사용자는 주문이 체결된 것으로 표시되는 것을 보고 자신이 해당 방향을 샀다고 생각할 수 있습니다. 하지만 거래가 실제로 온체인에 제출될 때 결제가 실패합니다. 방금 전까지만 해도 완료된 것처럼 보였던 거래가, 잠시 후 시스템에 의해 취소되는 것입니다.
사용자에게 이러한 경험의 가장 나쁜 점은 단순한 실패가 아니라 불확실성입니다. 매수 또는 매도가 완료되었다고 생각했는데 결과적으로 체결되지 않은 것입니다. 다시 주문을 넣을 때쯤이면 가격이 이미 변해있고, 거래 기회를 놓쳤을 수도 있습니다.
구버전의 문제는 주문 취소 비용이 너무 낮았다는 점
V1에서 유령 주문이 가장 쉽게 악용될 수 있었던 경로는 incrementNonce였습니다. nonce는 주문의 상태 식별자로 이해할 수 있습니다. 원래는 시스템이 주문을 관리하는 데 도움을 주기 위한 것이었지만, 구버전에서는 공격자가 incrementNonce를 호출하여 오래된 nonce를 가진 특정 주소의 주문이 온체인 결제 시 무효화되도록 할 수 있었습니다.
이것은 공격자에게 시간 차이를 이용할 수 있는 여지를 주었습니다. 공격자는 먼저 주문이 오프체인에서 매칭되도록 하여 시스템에 '체결이 발생했다'고 표시하게 한 후, 결제가 실제로 온체인에 올라가기 전에 nonce를 업데이트하여 해당 주문이 최종적으로 실행되지 않도록 할 수 있었습니다. 결과적으로, 거래가 체결된 것처럼 보였지만 실제로 온체인에서 완료되지 않았습니다.
문제의 핵심은 이러한 작업의 비용이 극히 낮으면서도 여러 주문에 영향을 미칠 수 있다는 점입니다. 공격자는 매우 적은 가스 비용만 지불하면 체결되어야 할 주문이 결제 단계에서 실패하도록 만들 수 있었습니다. 프론트엔드에서는 주문이 먼저 체결되고 나중에 실패한 것으로 보이지만, 실제로는 거래 결과의 불안정성을 초래하고 사용자가 원래의 체결 가격과 거래 기회를 놓치게 만듭니다.
유령 주문 문제는 단순한 프론트엔드 표시 오류도, 산발적인 온체인 실패도 아닌, 사용자의 거래 결과에 대한 신뢰에 직접적인 영향을 미치는 문제입니다.
V2는 수정했지만, 완전히 근절한 것은 아니다
이번 V2의 가장 중요한 변화는 기존의 글로벌 nonce 설계를 제거한 것입니다. 즉, 과거처럼 incrementNonce를 통해 여러 오래된 주문에 한 번에 영향을 미치는 방식은 차단되었습니다. 동시에 V2는 주문 구조를 단순화하고 주문 취소를 더 세분화된 단일 주문 해시(order hash)로 전환했습니다. 구버전과 비교하여 주문 취소의 영향 범위가 현저히 축소되어, 공격자가 저비용 작업으로 대량의 지정가 주문을 무효화하기가 훨씬 어려워졌습니다.
이는 유령 주문 문제에 대한 실질적인 수정입니다. 과거의 문제는 공격 비용이 낮고 영향 범위가 넓으며 재현门槛이 낮지 않다는 점이었습니다. V2 이후에는 가장 악용되기 쉬웠던 경로가 제거되었습니다. 공격자가 계속해서 유사한 문제를 일으키려면 더 높은 비용을 지불해야 하며, 특정 시스템 응답에 더 의존해야 합니다. 또한, pauseUser와 같은 메커니즘에 지연이 추가되어 매칭 및 결제 창 내에서 특정 상태 변경이 즉시 악용될 가능성을 줄였습니다.
전반적으로 V2의 방향성은 분명합니다. 가장 먼저 공격자에게 악용되기 쉬운 부분을 처리하고, 유사한 공격의 이익 공간을 줄이는 것입니다.
하지만 이것이 유령 주문이 완전히 해결되었다는 것을 의미하지는 않습니다. 그 이유는 Polymarket이 여전히 오프체인 매칭, 온체인 결제의 기본 모델을 변경하지 않았기 때문입니다. 주문이 동일한 환경에서 매칭되고 결제되지 않는 한, 오프체인과 온체인 사이에는 항상 상태 차이가 존재합니다. 잔액 변동, 승인 문제, 주문 상태 변경, 주문 취소 행위 또는 계약 실행 실패는 오프체인에서 이미 매칭된 주문이 최종적으로 온체인에서 체결되지 못하게 할 수 있습니다.
즉, V2는 구버전에서 가장 명백하고 악용되기 쉬운 공격 경로를 해결한 것이지, 유령 주문이 발생하는 근본적인 조건 자체를 제거한 것은 아닙니다.
기타 업데이트는 거래 시스템의 기반을 강화하기 위한 것
유령 주문 외에도, V2는 PUSD, SDK 및 1271 서명과 같은 업데이트를 가져왔습니다:
- PUSD는 새로운 담보 스테이블코인으로, Polymarket이 USDC.e에서 USDC에 1:1로 지원되는 Polymarket USD로 마이그레이션되었습니다. 일반 사용자는 거의 느끼지 못하지만, 기저 자산 처리는 더욱 통일됩니다.
- 새로운 CLOB-Client SDK는 주로 마켓 메이커, 봇 및 시스템 통합자를 대상으로 합니다. V2 이후 관련 사용자는 클라이언트를 업그레이드하고 새로운 주문 구조로 주문에 다시 서명해야 합니다.
- 1271 서명 지원은 스마트 컨트랙트 지갑, 다중 서명 계정, 기관 계정 및 더 복잡한 봇 지갑이 Polymarket에 더 원활하게 연결될 수 있음을 의미합니다.
전반적으로, Polymarket은 단순히 하나의 취약점을 수정하는 것이 아니라, 예측 시장 애플리케이션에서 거래소에 더 가까운 기반 시스템으로 스스로를 변모시키고 있습니다. 마켓 메이커, API 사용자 및 자동화된 트레이더가 점점 더 많아짐에 따라, 주문이 안정적으로 체결, 결제 및 정산될 수 있는지 여부는 '시장이 충분히 재미있는지'보다 더 중요해질 것입니다.
V2는 끝이 아니라 지속적인 수정의 시작
V2 출시 후, Polymarket은 적어도 유령 주문의 가장 명백한 공격 경로 하나를 차단했습니다. 과거와 같은 저비용 주문 취소 및 대량 주문 영향 방식은 더 이상 동일한 방식으로 재현되기 어렵습니다. 빠르게 확장 중인 거래 플랫폼에게 이는 반드시 완료해야 할 단계입니다.
그러나 유령 주문의 근본 원인은 한 번의 버전 업그레이드로 완전히 사라지지 않을 것입니다. Polymarket이 계속해서 오프체인 매칭, 온체인 결제 방식을 채택하는 한, 시스템은 오프체인 상태와 온체인 결과 간의 차이를 지속적으로 처리해야 합니다. V2는 첫 걸음에 가깝습니다. 가장 명백하고 악용되기 쉬운 문제를 먼저 해결하고, 이후 업데이트를 통해 매칭, 결제, 모니터링 및 위험 관리 역량을 계속 보강하는 것입니다.
예측 시장은 본질적으로 불확실성을 거래하는 곳입니다. 주문 자체마저도 불확실성으로 가득 차 있다면, 사용자가 직면하는 것은 더 이상 시장 위험만이 아니라 시스템 위험입니다.


