ERGO
Time Locks & Access Control
Intermediate
1 hour

Sigma OR Access Control (Either-Or Spend)

Spend if key A OR key B or external condition is satisfied

문제

You need flexible access control where multiple conditions can authorize spending, without revealing which condition was satisfied.

솔루션

Sigma Protocol OR compositions allow proving disjunctions (A OR B OR C) without revealing which branch is satisfied. This enables privacy-preserving access control.

작동 방식

  1. 1Define multiple valid spending conditions (A, B, C...)
  2. 2Combine with || (OR) operator in ErgoScript
  3. 3Prover satisfies one condition but proof doesn't reveal which
  4. 4Verifier confirms one condition is met without learning which
  5. 5Zero-knowledge property preserved - no information leakage

코드 예제

{
  // Any of three authorities can spend
  // Observer cannot tell which one signed
  
  val authority1 = PK("9f...")
  val authority2 = PK("9g...")  
  val authority3 = PK("9h...")
  
  // OR composition - ZK proof reveals nothing about signer
  proveDlog(authority1) || proveDlog(authority2) || proveDlog(authority3)
}

Three authorities can spend, but the signature doesn't reveal which one. Native Sigma Protocol feature, not a hash-based trick.

사용 사례

  • Anonymous voting systems
  • Whistleblower protection
  • Multi-authority access control
  • Recovery mechanisms with timeout
  • Confidential transactions
  • Privacy-preserving authentication

보안 고려사항

  • !OR proofs are computationally sound, not information-theoretic
  • !Ring size affects privacy level (larger = more privacy)
  • !Consider timing attacks in implementation
  • !Avoid reusing keys across different rings

실제 구현 사례

ErgoMixer

Non-interactive mixing using Sigma protocols

ErgoScript 실력을 향상시키세요

새로운 패턴, 튜토리얼, 개발자 리소스 알림을 받으세요.

Follow for daily updates