피드로 돌아가기
Dev.toSecurity
원문 읽기
Midnight ZK-Proof 기반 Commit-Reveal 구조로 On-Chain RPS 치팅 원천 차단
Mathematically Prohibiting 'Cheating' in On-Chain RPS: A Midnight ZK dApp Case Study
AI 요약
Context
퍼블릭 레저의 투명성으로 인해 상대방의 선택을 미리 읽을 수 있는 Front-running 문제가 발생함. 기존 Commit-Reveal 패턴은 Salt 관리 및 공정성 검증 로직의 복잡도로 인해 구현 난도가 높음.
Technical Solution
- Public State와 Private State를 분리하여 사용자 선택 정보를 로컬에 격리한 Midnight 아키텍처 채택
- Compact 언어를 활용한 ZK Circuit 설계로 Commit 단계의 데이터 기밀성과 무결성을 수학적으로 증명
- Hashed value 제출을 통한 Commit-Reveal scheme 구축으로 상대방의 Move 스니핑을 원천적으로 방지
- levelPrivateStateProvider 도입을 통한 브라우저 리로드 시 ZK Proof 생성 데이터 및 선택값 손실 방지
- Proof Server(v8.0.3)와 Compact Compiler(v0.2.0) 간의 버전 동기화를 통한 ZK Proving/Verification Key 일관성 확보
실천 포인트
- ZK Proof 생성 시 발생하는 대기 시간(약 10초)을 고려한 비동기 UX 처리 설계 - Compact 컴파일러 및 Proof Server 버전 불일치로 인한 Proof 생성 실패 가능성 상시 점검 - Private State 저장 유실 방지를 위한 Persistent Storage Provider 설정 여부 확인 - ZK dApp 설계 시 사용자의 이탈로 인한 컨트랙트 잠김(Griefing Attack) 방지를 위한 Timeout 메커니즘 검토