피드로 돌아가기
Build shielded token mint, transfer, and burn flows in Compact
Dev.toDev.to
Security

Fresh-Committed 구분 기반의 Shielded Token 생명주기 설계 및 최적화

Build shielded token mint, transfer, and burn flows in Compact

Ritwika Kancharla2026년 5월 11일16advanced

Context

Shielded Token의 거래 상세 정보를 은닉하면서 가치를 이동시키는 프라이버시 보호 구조 필요성 대두. 기존 Ledger 기반 시스템에서 신규 생성 코인과 이미 커밋된 코인의 처리 방식 차이로 인해 발생하는 런타임 오류 및 Merkle Tree 인덱스 누락 문제 분석.

Technical Solution

  • ShieldedCoinInfo와 QualifiedShieldedCoinInfo의 명확한 구분을 통한 State 관리 최적화
  • 동일 트랜잭션 내 생성 및 소비를 위한 sendImmediateShielded 도입으로 Merkle Index 의존성 제거
  • Ledger에 커밋된 코인 소비 시 Merkle tree index를 포함한 sendShielded 호출 구조 설계
  • evolveNonce와 disclose 함수 결합을 통한 Witness Seed의 보안 유지 및 결정론적 Nonce 유도
  • ShieldedSendResult.change를 통한 잔액 회수 메커니즘 구현으로 토큰 소실 방지
  • shieldedBurnAddress 전송을 통한 특수 목적의 토큰 소멸(Burn) 로직 추상화

- 동일 트랜잭션 내 민팅-전송-소각 발생 시 sendImmediateShielded API 사용 여부 검토 - Ledger 커밋 이후의 토큰 소비 시 QualifiedShieldedCoinInfo 내 mtIndex 포함 여부 확인 - Nonce 파생 시 Raw Seed 노출 방지를 위해 disclose() 래핑 적용 - 전송 결과의 Change Output을 추적하여 애플리케이션 상태에 반영하는 로직 구현

원문 읽기