Time Locks & Access Control
Intermediate
1 hourSigma OR Access Control (Either-Or траты)
Spend if key A OR key B or external condition is satisfied
Problem
You need flexible access control where multiple conditions can authorize spending, without revealing which condition was satisfied.
Solution
Sigma Protocol OR compositions allow proving disjunctions (A OR B OR C) without revealing which branch is satisfied. This enables privacy-preserving access control.
How It Works
- 1Define multiple valid spending conditions (A, B, C...)
- 2Combine with || (OR) operator in ErgoScript
- 3Prover satisfies one condition but proof doesn't reveal which
- 4Verifier confirms one condition is met without learning which
- 5Zero-knowledge property preserved - no information leakage
Code Examples
{
// 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.
Use Cases
- →Anonymous voting systems
- →Whistleblower protection
- →Multi-authority access control
- →Recovery mechanisms with timeout
- →Confidential transactions
- →Privacy-preserving authentication
Security Considerations
- !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
Resources
Fee Considerations
OR proofs are slightly larger than single proofs. Expect ~1.5x standard fees.