Accepted
QuorumProof needs to support conditional verification of credentials — allowing verifiers to check specific claims (e.g., "has a Mechanical Engineering degree") without accessing the full credential data (e.g., GPA, transcript details).
This is essential for privacy-preserving verification where credential holders want to prove specific attributes without revealing unnecessary personal information.
The question is: how should we implement zero-knowledge (ZK) verification on Soroban?
How can we enable privacy-preserving credential verification where:
- Verifiers can confirm specific claims without accessing full credential data
- Credential holders control what information is revealed
- The system is efficient enough for real-time verification
- The implementation is practical on Soroban (a resource-constrained environment)
- Description: Verifiers receive the complete credential data and verify it themselves
- Pros:
- Simple to implement
- No cryptographic overhead
- Verifiers have full transparency
- Cons:
- Reveals all credential data to verifiers
- No privacy for credential holders
- Verifiers must trust their own verification logic
- Not suitable for sensitive information (GPA, medical history, etc.)
- Description: Credential holder provides specific fields and their hashes; verifier checks hashes match
- Pros:
- Simple to implement
- Efficient
- Supports selective disclosure
- Works well on resource-constrained systems
- Cons:
- Verifier can brute-force small fields (e.g., degree types)
- Does not provide cryptographic proof of knowledge
- Requires trust in credential holder's hashing
- Description: Credential holder generates a ZK proof that a claim is true without revealing the underlying data
- Pros:
- Strong privacy guarantees
- Cryptographically sound
- Verifier cannot brute-force or infer additional information
- Supports complex claims (e.g., "degree in engineering AND GPA > 3.5")
- Industry standard for privacy-preserving verification
- Cons:
- More complex to implement
- Higher computational overhead
- Requires careful circuit design
- Proof generation can be slow on resource-constrained devices
- Description: Use a TEE (e.g., Intel SGX) to verify credentials privately
- Pros:
- Hardware-backed security
- Efficient verification
- Supports complex logic
- Cons:
- Requires specialized hardware
- Not available on all platforms
- Introduces centralized trust point
- Difficult to audit and verify
Implement Zero-Knowledge Proofs (ZKPs) for conditional credential verification.
The system will use a dedicated zk_verifier contract that:
- Accepts a credential ID and a claim type
- Accepts a ZK proof from the credential holder
- Verifies the proof without accessing the underlying credential data
- Returns true/false based on proof validity
-
Privacy Preservation: ZKPs provide the strongest privacy guarantees. Verifiers cannot infer any information beyond the specific claim being verified.
-
Cryptographic Soundness: ZKPs are mathematically proven to be secure. Unlike hashing or selective disclosure, they cannot be broken by brute-force or inference attacks.
-
Flexibility: ZKPs support complex claims (e.g., "degree in engineering AND GPA > 3.5") that cannot be expressed with simple hashing.
-
Industry Standard: ZKPs are the industry standard for privacy-preserving verification. Using them aligns with best practices and allows integration with other ZK systems.
-
Credential Holder Control: Credential holders can choose which claims to prove and which to keep private. This gives them full control over information disclosure.
-
Verifier Efficiency: Proof verification is fast and efficient, even on resource-constrained systems like Soroban.
- Strong privacy guarantees for credential holders
- Cryptographically sound verification
- Supports complex conditional claims
- Aligns with industry standards
- Enables selective disclosure
- Verifiers cannot infer additional information
- More complex to implement and understand
- Proof generation requires computational resources
- Requires careful circuit design to avoid bugs
- Proof generation can be slow on resource-constrained devices
- Requires education for users on how to generate proofs
-
Claim Types: The system supports specific claim types:
HasDegree: Credential holder has a degreeHasLicense: Credential holder has a professional licenseHasEmployment: Credential holder has employment historyHasSkill: Credential holder has a specific skill- Custom claims can be added
-
Proof Generation: Credential holders generate proofs using:
- The credential metadata
- The claim type
- A ZK circuit specific to the claim
- Their private key (for authentication)
-
Proof Verification: The
zk_verifiercontract:- Receives the credential ID, claim type, and proof
- Verifies the proof using the ZK circuit
- Returns true if the proof is valid, false otherwise
-
Circuit Design: Each claim type has a corresponding ZK circuit that:
- Takes the credential metadata as input
- Checks the specific claim
- Outputs a boolean result
- Ensures no information leakage
-
Integration with Credential Verification: The
verify_engineerfunction:- Checks that the credential exists and is attested
- Calls the
zk_verifierto verify the specific claim - Returns true only if both checks pass
-
Circuit Correctness: ZK circuits must be carefully designed and audited to ensure they correctly implement the claim logic without information leakage.
-
Proof Soundness: The ZK system must use a sound proof system (e.g., zk-SNARKs, zk-STARKs) to ensure proofs cannot be forged.
-
Credential Binding: Proofs must be bound to the specific credential to prevent proof reuse across different credentials.
-
Replay Protection: The system must prevent proof replay attacks by including a nonce or timestamp in the proof.
-
Recursive Proofs: Support proofs that verify other proofs, enabling complex multi-credential verification.
-
Aggregated Proofs: Allow multiple claims to be verified in a single proof for efficiency.
-
Threshold Proofs: Support proofs like "at least 2 of 3 credentials have claim X".
-
Expressive Circuits: Support more complex claims (e.g., "degree in engineering AND GPA > 3.5 AND graduated after 2020").