피드로 돌아가기
Shielded Token Contracts on Midnight: Real Errors, Real Fixes
Dev.toDev.to
Security

Midnight ZK-Proof 서버 오류 해결을 위한 Shielded Token 단일 맵 구조 설계

Shielded Token Contracts on Midnight: Real Errors, Real Fixes

Elliot lucky2026년 7월 1일14advanced

Context

Midnight의 Zswap 프로토콜 기반 Shielded Token 모델은 EVM의 계정 기반 모델과 상이한 UTXO 구조를 가짐. 기존의 개별 자산별 Ledger 필드 설계 방식은 Proof 서버의 Public Mismatch 오류와 Ledger 상태 불일치를 유발하는 한계가 존재함.

Technical Solution

  • 단일 Map<Bytes<32>, QualifiedShieldedCoinInfo> 구조를 도입하여 모든 Shielded 자산의 Custody를 통합 관리하는 Single Source of Truth 설계
  • ShieldedCoinInfo를 Circuit Parameter로 전달하여 Wallet이 Zswap Ownership Proof를 생성할 수 있도록 Balance 제약 조건 사전 정의
  • receiveShielded 호출 후 mergeCoinImmediate를 통해 통합 밸런스 맵으로 자산을 병합하는 수신 패턴 적용
  • 동일한 QualifiedShieldedCoinInfo에 접근하는 Receive와 Send 로직을 서로 다른 Circuit으로 분리하여 Proof 생성 충돌 방지
  • 단순 민팅이나 소각과 같이 밸런스 맵을 수정하지 않는 작업에 한해 Circuit 결합을 허용하는 예외 처리 구조 설계

1. Shielded 자산 관리 시 개별 필드가 아닌 Coin Color 기반의 단일 Map 구조를 사용하고 있는가?

2. Circuit 내에서 동일한 QualifiedShieldedCoinInfo를 수신하고 동시에 송신하는 로직이 포함되어 있지는 않은가?

3. Wallet의 Zswap Proof 생성을 위해 필요한 ShieldedCoinInfo가 Circuit Parameter로 정확히 전달되는가?

4. Ledger 상태 변경과 실제 자산 이동 로직이 Proof 서버의 제약 사항에 맞게 Circuit 단위로 분리되었는가?

원문 읽기