Polymarket 주문 경로에서 오프그리드 가격 오류 수정
(dev.to)
Polymarket의 Python SDK에서 가격이 최소 단위인 틱 사이즈에 부합하는지 검증하지 못하던 버그를 발견하여, 잘못된 주문으로 인한 서명 무효화 및 거래 거절 문제를 해결했습니다.
이 글의 핵심 포인트
- 1Polymarket py-sdk에서 가격 검증 시 틱 사이즈(tick size)가 아닌 소수점 자形成的 자릿수만 확인하던 버그 발견
- 20.005, 0.0025와 같은 하프 스텝(half step) 틱 환경에서 유효하지 않은 가격(예: 0.007)이 통과되는 문제 발생
- 3EIP-712 서명 특성상 서버가 가격을 수정할 수 없어, 잘못된 주문은 결국 거래 거절로 이어짐
- 4가격의 모듈로 연산(price % tick_size != 0)을 통한 정확한 그리드 멤버십 체크 로직 도입
- 5약 23,000개의 케이스를 전수 조사하여 오탐 및 미탐이 없음을 입증하는 테스트 수행
이 글에 대한 공공지능 분석
왜 중요한가?
금융 및 예측 시장과 같이 자산이 이동하는 '머니 패스(money path)' 코드에서 발생하는 검증 오류는 단순한 불편을 넘어 시스템의 신뢰도를 직접적으로 타격합니다. 특히 서명된 데이터의 불변성을 전제로 하는 환경에서는 클라이언트 측의 잘못된 검증이 불필리한 연산 비용과 거래 실패를 초래하기 때문입니다.
어떤 배경과 맥락이 있나?
Polymarket은 EIP-712 표준을 사용하여 주문에 서명하며, 이 방식은 가격 등 핵심 데이터가 서명에 포함되어 서버 측에서 임의로 수정할 수 없게 만듭니다. 따라서 클라이언트 SDK 단계에서 틱 사이즈(0.005, 0.0025 등)에 정확히 일치하는지 확인하는 사전 검증이 필수적입니다.
업계에 어떤 영향을 주나?
이번 사례는 DeFi 및 Web3 인프라 개발 시 '대리 지표(proxy)'를 통한 검증의 위험성을 경고합니다. 소수점 자릿수라는 간편한 지표 대신, 실제 규칙인 '틱 사이즈의 배수' 여부를 확인하는 불변량(invariant) 중심의 테스트 설계가 얼마나 중요한지 보여줍니다.
한국 시장에 어떤 시사점이 있나?
알고리즘 트레이딩이나 자동화된 주문 시스템을 구축하는 국내 핀테크 및 블록체인 스타트업들은 소수점 단위가 복잡한 자산(예: 암호화폐, 정밀 금융 상품)을 다룰 때, 단순 수치 비교를 넘어선 엄격한 경계값 테스트와 전수 검증 프로세스를 구축해야 합니다.
이 글에 대한 큐레이터 의견
이번 버그 수정 사례는 소프트웨어 엔지니어링의 기본 원칙인 '불변량(Invariant) 검증'의 중요성을 다시 한번 일깨워줍니다. 개발자는 종란을 피하기 위해 실제 규칙 대신 계산하기 쉬운 대리 지표를 사용하는 유혹에 빠지기 쉽지만, 이는 시스템이 복잡해지는 순간 치명적인 결함으로 돌아옵니다.
물론, 이러한 정밀한 검증 로직을 추가하는 것은 연산 비용을 미세하게 증가시킬 수 있다는 트레이드오프가 존재합니다. 하지만 EIP-712와 같이 데이터 수정이 불가능한 환경에서는 '잘못된 서명을 생성하여 네트워크 자원을 낭비하고 거래를 실패시키는 비용'이 검증 로직의 오버헤드보다 훨씬 큽니다.
스타트업 창업자들은 제품의 초기 출시 속도(Speed to Market)만큼이나, 핵심 비즈니스 로직에 대한 '적대적 검토(Adversarial Review)'와 '전수 조사 테스트'를 개발 문화로 정착시켜야 합니다. 이번 사례처럼 23,000개의 케이스를 전수 조사한 철저함이 곧 서비스의 안정성과 직결됩니다.
댓글
아직 댓글이 없습니다. 첫 댓글을 남겨보세요.