In zero-knowledge proof (ZKP) systems, a Proof Request is the formal specification issued by a verifier to a prover. It defines the exact statement to be proven, known as a circuit or relation, without revealing the underlying private data. This request typically includes the public inputs or parameters against which the proof will be validated, effectively asking, "Can you prove you know a secret x such that F(x, public_data) = true, without revealing x?" Common frameworks like zk-SNARKs and zk-STARKs rely on precisely defined proof requests to initiate the proving process.
Proof Request
What is a Proof Request?
A Proof Request is a structured query for a Zero-Knowledge Proof (ZKP), specifying the data and computational logic a prover must satisfy to generate a valid cryptographic attestation.
The structure of a proof request is critical for interoperability and security. It is often serialized into a machine-readable format, such as a JSON schema or a protocol-specific binary encoding. Key components include the circuit identifier (specifying the logical constraints), the public inputs (known data points for verification), and potentially a nonce or challenge to ensure proof freshness and prevent replay attacks. In decentralized identity systems like W3C Verifiable Credentials, a proof request is the mechanism by which a relying party asks a holder to present a credential with specific attributes and a valid cryptographic proof.
From an architectural perspective, handling proof requests involves several steps. First, the verifier's application logic defines the necessary claim. This is then formatted into a standard request and transmitted to the prover's wallet or agent. The prover's system evaluates the request against its private data vault, computes the required proof using a proving key, and returns a verifiable presentation. This flow enables use cases like proving age without revealing a birthdate, demonstrating solvency without exposing total assets, or verifying a transaction's validity in a zk-rollup without processing the entire chain history.
Different ZKP ecosystems implement proof requests in varied ways. In Circom and snarkjs, the request is implied by the circuit's public input declaration. RISC Zero uses a receipt request format. For JSON Web Tokens (JWT) with ZK proofs, the request is embedded in the authentication challenge. The evolution of standards, such as potential extensions to OAuth or OpenID Connect, aims to create universal formats for proof requests, facilitating their adoption across web2 and web3 applications for privacy-preserving authentication and authorization.
How a Proof Request Works
A proof request is the formal mechanism by which a verifier asks a holder to present cryptographic evidence of claims, initiating the core flow of verifiable credential exchange.
A proof request is a structured query, typically formatted as a JSON object, sent by a verifier to a holder. It specifies the exact set of claims or attributes the verifier needs to see, along with the required cryptographic proof type—such as a BBS+ signature or a CL signature—and any constraints or policies (e.g., the issuer must be a trusted authority, or a credential's issuance date must be after a certain time). This request defines the "rules of engagement" for the subsequent proof presentation.
Upon receiving the request, the holder's wallet or agent software evaluates its contents against the verifiable credentials stored in its digital wallet. The holder selects credentials that satisfy the request's criteria. Crucially, the system employs zero-knowledge proof (ZKP) or selective disclosure techniques, allowing the holder to generate a cryptographically verifiable proof that they possess credentials meeting the request without necessarily revealing the entire credential or other unrelated personal data.
The final step is the creation and submission of a verifiable presentation. This is a new, signed data package that contains the requested proofs, often bundled with metadata for context. The verifier receives this presentation and cryptographically verifies the signatures of both the holder (proving the presentation is fresh and from the correct party) and the original issuer(s) (proving the claims are authentic). This entire request-response protocol enables trusted, privacy-preserving interactions without relying on direct calls to the original issuers.
Key Features of a Proof Request
A Proof Request is a structured query from a Verifier to a Holder, specifying the exact claims and conditions required for access or verification. It defines the rules of the trust interaction.
Claim Specification
The core of a request, detailing the specific attributes or claims needed from a Verifiable Credential (VC). This includes the credential type (e.g., ProofOfAgeCredential) and the required data fields (e.g., dateOfBirth, ageOver). It ensures the Holder knows precisely what to present.
Presentation Definition
A formal schema (e.g., a W3C Presentation Definition) that standardizes the request format. It defines:
- Input Descriptors: What credentials are acceptable.
- Constraints: Rules for specific claim values.
- Format: Supported proof and signature types (e.g., JWT, JSON-LD).
Selective Disclosure
A privacy-preserving feature allowing the Holder to reveal only the necessary claims, not the entire credential. For example, proving you are over 21 without revealing your exact birth date. This is often enabled by zero-knowledge proofs (ZKPs) or BBS+ signatures.
Challenge & Nonce
Security mechanisms to prevent replay attacks.
- Nonce: A unique, random number included in the request.
- Challenge: A time-bound or context-specific prompt. The Holder must cryptographically sign their response incorporating these elements, proving the proof is fresh and intended for this specific Verifier.
Verifier Policy & Trust Registry
The request encodes the Verifier's trust framework. It specifies which Issuers or Decentralized Identifiers (DIDs) are trusted sources for the required credentials. This policy is often checked against an on-chain or off-chain Trust Registry to validate issuer authority.
Presentation Submission
The Holder's response to the request, containing the Verifiable Presentation (VP). This is a wrapper package that includes:
- The disclosed credentials or derived proofs.
- Proofs satisfying the request's cryptographic challenges.
- Metadata linking it to the specific Proof Request.
Common Components of a Proof Request
A Proof Request is a structured query for verifiable credentials. It specifies the exact claims a Verifier needs and the cryptographic proofs required to validate them. This breakdown covers the essential elements that define what a prover must submit.
Requested Credentials
The core of the request, specifying the Verifiable Credential types and the specific claims (attributes) required from each. This defines the 'what' of the proof.
- Credential Schema ID: A unique identifier (e.g., a DID URL) pointing to the schema that defines the credential's structure.
- Required Attributes: The specific data fields requested, such as
dateOfBirth,degreeEarned, oraccountBalance. - Optional Constraints: Conditions on attribute values, like
issuanceDateafter a certain date.
Proof Requirements
This section defines the cryptographic and logical conditions the proof must satisfy, ensuring its integrity and authenticity. It answers 'how' the proof must be constructed.
- Proof Type: Specifies the zero-knowledge proof system (e.g., BBS+, CL-Signatures) or digital signature scheme to be used.
- Challenge/Nonce: A random value supplied by the Verifier to prevent replay attacks, ensuring the proof is fresh and generated specifically for this request.
- Domain Separation: A context string to bind the proof to this specific interaction, preventing misuse in other contexts.
Verifier Information
Metadata identifying the entity making the request, allowing the Prover to make an informed consent decision. This establishes the request's origin and purpose.
- Verifier DID: The Decentralized Identifier of the requesting service, providing a cryptographically verifiable identity.
- Purpose Statement: A human-readable explanation of why the data is being requested (e.g., 'To verify age for service access').
- Privacy Policy URI: A link to the Verifier's data handling and retention policies.
Selective Disclosure Rules
Rules governing how much information the Prover must reveal, enabling privacy-preserving proofs. This is a key feature of advanced ZK-proof systems.
- Attribute Disclosure: Specifies which of the requested attributes can be revealed as predicates (e.g.,
age >= 21is proven without revealing the exactdateOfBirth). - Predicate Proofs: Requests for range proofs, set memberships, or equality proofs without revealing the underlying value.
- Unlinkability Guarantees: Ensures multiple proofs from the same credential cannot be linked together by the Verifier.
Proof Request Protocols: A Comparison
A feature and performance comparison of major protocols for requesting and verifying verifiable credentials (VCs) and zero-knowledge proofs (ZKPs).
| Feature / Metric | W3C Verifiable Credentials | IETF BBS+ Signatures | zk-SNARKs (e.g., Circom, Halo2) | IETF SD-JWT |
|---|---|---|---|---|
Core Proof Type | JSON Web Signatures (JWS) | BBS+ Signature Proofs | Zero-Knowledge Succinct Proofs | Selective Disclosure JWT |
Selective Disclosure | ||||
Zero-Knowledge Property | ||||
Proof Size | ~1-2 KB | ~1-3 KB | ~0.2-1 KB | ~1-2 KB |
Verification Speed | < 10 ms | ~50-100 ms | ~10-50 ms | < 10 ms |
Post-Quantum Resistant | ||||
Standardization Body | W3C | IETF | Community / Research | IETF |
Common Use Case | Basic credential presentation | Privacy-preserving employee attestations | Private financial transactions | Age verification with minimal disclosure |
Common Use Cases for Proof Requests
Proof requests are the mechanism by which a Verifier asks a user to provide cryptographic evidence of specific claims. These requests are foundational to privacy-preserving identity and access control across Web3 and enterprise systems.
Credit Scoring & Financial Underwriting
In DeFi or traditional finance, a lender can request a proof of a user's credit score range or income bracket. The user's wallet generates a ZKP from a credential issued by a credit bureau, proving their score is above a certain threshold (e.g., >700) or their income falls within a specific bracket. The lender receives cryptographic assurance of creditworthiness without accessing the raw score, transaction history, or personal financial details, enabling privacy-preserving underwriting.
Proof of Membership & Gated Content
Proof requests control access to gated communities, content, or events. A website or DAO tool can request proof that a user holds a specific Non-Fungible Token (NFT) or membership credential. The proof verifies ownership or membership status directly from the user's wallet without requiring a wallet connection that exposes all assets. This is used for:
- Token-gated websites and Discord servers.
- Exclusive event ticketing.
- Access to premium software features for verified holders.
Compliance Proofs for Institutions
Financial institutions and regulated entities use proof requests to satisfy regulatory requirements like Anti-Money Laundering (AML) and Travel Rule compliance in a privacy-enhanced manner. A user can prove they are not on a sanctions list or that their wallet address is associated with a verified identity, without continuously streaming all their transaction data to the institution. The proof is a one-time, cryptographically verifiable attestation that meets the compliance check.
Privacy and Selective Disclosure
This section covers the mechanisms that enable users to prove specific claims from their credentials without revealing the entire document or their full identity, a core principle of self-sovereign identity (SSI).
A Proof Request is a structured query, typically issued by a Verifier, that asks a Holder to present cryptographic evidence supporting specific claims about their identity, qualifications, or attributes. It defines the precise data points required (e.g., "age over 18," "accreditation status") and the rules for how they must be proven, such as the type of digital signature or the trusted issuers (Issuer) of the underlying credentials. This mechanism enables Selective Disclosure, allowing the holder to share only the necessary information.
The technical foundation of a proof request relies on Zero-Knowledge Proofs (ZKPs) and BBS+ signatures. Instead of presenting a full credential, the holder can generate a cryptographic proof that they possess a valid credential from an authorized issuer and that it contains attributes satisfying the verifier's predicates—all without revealing the credential's actual data or identifier. For example, a proof can demonstrate that a driver's license is valid and that the holder's birth date is before a certain year, without disclosing the exact date or license number.
Common formats for proof requests include W3C Verifiable Presentation requests and the AnonCreds Presentation Request format. These schemas specify the requested claims, any constraints on the issuing Decentralized Identifiers (DIDs), and the proof type required. This interoperability allows different SSI ecosystems to communicate. The holder's wallet software processes this request, locates the relevant credentials in its storage, and generates the corresponding Verifiable Presentation as a response.
This architecture provides critical privacy benefits. It minimizes data exposure, reducing surveillance and phishing risks. It also supports unlinkability, meaning multiple presentations from the same credential to different verifiers cannot be correlated, preventing the construction of a comprehensive activity profile. This stands in contrast to traditional systems where entire documents are copied and stored, creating persistent data liabilities for both the user and the verifying service.
Practical applications are widespread. In decentralized finance (DeFi), a proof request can verify a user's accredited investor status without revealing their net worth. In enterprise settings, it can confirm an employee's security clearance for building access. In digital communities, it can prove membership or reputation scores. Each interaction is minimized to the exact data necessary for the transaction, upholding the principle of data minimization enshrined in regulations like GDPR.
Proof Request
A proof request is a formal query for cryptographic evidence, such as a Zero-Knowledge Proof (ZKP), to verify a specific claim without revealing underlying data. This section details the critical security and trust mechanisms involved in its lifecycle.
Verifier Authentication & Trust
The verifier (the party requesting the proof) must be authenticated to prevent malicious or spam requests. Trust is established through:
- On-chain verification: The verifier's identity is often a smart contract address with known permissions.
- Off-chain protocols: Requests may be signed using the verifier's private key, ensuring non-repudiation.
- Selective disclosure: The prover can cryptographically verify the requestor's right to ask for specific data, a core principle of Verifiable Credentials.
Schema & Circuit Integrity
The security of a proof request hinges on the integrity of the underlying circuit (for ZKPs) or schema (for credentials). Critical considerations include:
- Deterministic Verification: The verification logic must be publicly auditable and immutable.
- Code Is Law: The circuit defines the exact claim being proven; a bug or backdoor compromises all proofs.
- Trusted Setup: For some ZK systems (e.g., Groth16), a secure and verifiable trusted setup ceremony is required to generate the proving/verification keys.
Prover Privacy & Data Minimization
A core security goal is to minimize data exposure. A well-designed proof request ensures:
- Zero-Knowledge Property: The prover reveals only the truth of the statement, not the supporting data.
- Selective Disclosure: The prover can satisfy the request by revealing only specific attributes from a larger credential.
- Unlinkability: Multiple proof requests for the same credential should not be linkable to each other or to the prover's identity, preventing tracking.
Request Freshness & Replay Attacks
Proof requests must guard against replay attacks, where an old proof is reused. Mitigations include:
- Nonces: Incorporating a unique, time-bound challenge (nonce) from the verifier into the proof request.
- Timestamps: Binding the proof to a specific time window or block height.
- Revocation Checks: The request should mandate a check against a revocation registry to ensure the prover's credential is still valid.
Trust Assumptions & Threat Models
Understanding the threat model is essential. Key trust assumptions include:
- Honest Verifier: Most ZK protocols assume the verifier follows the protocol but may be curious (Honest-Verifier Zero-Knowledge).
- Secure Hardware: The prover's environment must be trusted to not leak secret inputs during proof generation.
- Oracle Reliability: If the proof depends on external data (e.g., a price feed), the security of those oracles becomes critical.
Implementation & Side-Channel Risks
Security failures often occur in implementation, not theory. Risks to manage:
- Side-Channel Attacks: Proof generation time or power consumption could leak secrets.
- Malicious Inputs: Verifiers must validate that the proof's public inputs conform to expected ranges and formats.
- Gas Limits & DoS: On-chain verification must be gas-efficient to prevent denial-of-service via expensive proof requests.
Frequently Asked Questions (FAQ)
A Proof Request is a formal query for verifiable credentials, enabling privacy-preserving identity verification. This FAQ covers its core mechanics, use cases, and technical implementation.
A Proof Request is a structured query issued by a Verifier to request specific claims or attributes from a Holder of a Verifiable Credential (VC), without requiring the Holder to reveal the credential's full contents. It defines the exact data points and the cryptographic proof requirements needed for verification. The Holder's wallet uses a Zero-Knowledge Proof (ZKP) or Selective Disclosure mechanism to generate a Verifiable Presentation that satisfies the request, proving the claims are valid and issued by a trusted Issuer without exposing unnecessary personal data. This process is fundamental to decentralized identity frameworks like W3C Verifiable Credentials and Decentralized Identifiers (DIDs).
Get In Touch
today.
Our experts will offer a free quote and a 30min call to discuss your project.