Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Glossary

Commitment Scheme

A commitment scheme is a cryptographic protocol that allows a party to commit to a chosen value while keeping it hidden, with the ability to later reveal it in a way that is provably bound to the original commitment.
Chainscore © 2026
definition
CRYPTOGRAPHIC PRIMITIVE

What is a Commitment Scheme?

A commitment scheme is a fundamental cryptographic protocol that allows one party to commit to a chosen value while keeping it hidden, with the ability to later reveal it in a verifiable way.

A commitment scheme is a two-phase cryptographic protocol that enforces binding and hiding properties. In the commit phase, a sender (the committer) generates a commitment value from a secret message and sends it to a receiver. This commitment acts as a sealed digital envelope, concealing the original content. In the subsequent reveal phase, the sender discloses the original message and any necessary auxiliary data, allowing the receiver to verify that the revealed value matches the initial commitment. This process ensures the sender cannot change their mind (binding) and the receiver cannot learn the secret prematurely (hiding).

The two core security properties are paramount. The hiding property guarantees that the commitment value reveals no information about the underlying secret message. The binding property ensures that once a commitment is sent, the committer cannot find a different message that produces the same commitment value, preventing them from equivocating later. These properties are typically formalized in computational or information-theoretic security models. Commitment schemes are a foundational building block for more complex protocols like zero-knowledge proofs, secure multi-party computation, and consensus algorithms.

In practice, commitment schemes are often implemented using cryptographic hash functions, a simple form known as a hash commitment. Here, the commitment is C = H(message, nonce), where H is a cryptographic hash function like SHA-256 and the nonce is a random value. To reveal, the sender provides the original message and nonce; the receiver recomputes the hash to verify. More advanced constructions, such as Pedersen commitments or Polynomial commitments, offer additional properties like homomorphism, which is crucial for blockchain scaling solutions and privacy-preserving technologies.

Within blockchain systems, commitment schemes are ubiquitous. They are the engine behind Merkle trees, where leaf node hashes commit to transaction data, enabling efficient proofs of inclusion. In confidential transactions, Pedersen commitments hide transaction amounts while allowing network validation. The verifiable delay function (VDF)-based consensus of networks like Chia uses sequential function evaluations as a form of time-lock commitment. Furthermore, rollup solutions (Optimistic and ZK-Rollups) post compressed transaction data commitments to a Layer 1 chain, relying on these schemes for data availability and state integrity verification.

how-it-works
CRYPTOGRAPHIC PRIMITIVE

How a Commitment Scheme Works

A commitment scheme is a fundamental cryptographic protocol that allows one party to commit to a chosen value while keeping it hidden, with the ability to later reveal it in a way that is provably binding to the original commitment.

A commitment scheme is a two-phase protocol comprising a commit phase and a reveal phase. In the commit phase, a party (the committer) uses a one-way function to generate a commitment string—often called a hash or digest—from a secret value and a random nonce (also called a blinding factor). This commitment is sent to a receiver. Crucially, the properties of the function ensure the receiver cannot feasibly deduce the original secret from the commitment alone, a property known as hiding. The committer must securely store the original secret and nonce for the later reveal.

The second critical property is binding. Once the commitment is sent, the committer cannot change the secret value to a different one later. When the reveal phase occurs, the committer discloses the original secret and the nonce. The receiver can then run the same one-way function (e.g., a cryptographic hash like SHA-256) on the revealed data. If the output matches the originally received commitment, the reveal is valid. This proves the committer was bound to that specific value from the start. If the committer tried to reveal a different value, the hashes would not match, exposing the deception.

These schemes are foundational for protocols requiring fairness and secrecy in multi-step interactions. A canonical example is a sealed-bid auction. All bidders submit commitments of their bids. After the commitment phase closes, they reveal their bids. The hiding property prevents others from seeing a bid prematurely, while the binding property prevents a bidder from altering their bid after seeing others' commitments. This ensures no party gains an unfair advantage during the process.

In blockchain systems, commitment schemes are ubiquitous. They underpin Merkle trees, where data blocks are committed to in a root hash. Verifiable Random Functions (VRFs) use them to generate provably random, yet verifiable, outputs. Zero-knowledge proofs often employ commitments to hide witness data while allowing for verification. The simplicity and security of the commit-reveal pattern make it a versatile tool for coordinating actions between mutually distrusting parties without a trusted third party.

Practical implementation requires careful choice of cryptographic functions. While simple hash functions (commit = H(secret, nonce)) are common, more advanced schemes like Pedersen commitments offer additional properties like homomorphism, allowing commitments to be combined mathematically. This is essential for confidential transactions in cryptocurrencies, where you can prove the sum of inputs equals the sum of outputs without revealing the individual amounts. The nonce is critical; without it, simple values are vulnerable to brute-force dictionary attacks where an attacker guesses the input by pre-computing hashes of common secrets.

key-features
CRYPTOGRAPHIC PRIMITIVES

Key Properties of Commitment Schemes

Commitment schemes are fundamental cryptographic protocols that enable a party to commit to a chosen value while keeping it hidden, with the ability to reveal it later. Their security is defined by two core properties.

01

Hiding

The hiding property ensures the commitment value (the commitment) reveals no information about the original secret message. An adversary cannot distinguish between commitments to different messages. This is typically achieved using cryptographic hash functions or random blinding factors.

  • Computational Hiding: Security relies on computational assumptions (e.g., discrete log).
  • Perfect Hiding: Information-theoretic security; the commitment reveals zero information, even to a computationally unbounded adversary.
02

Binding

The binding property guarantees that once a commitment is published, the committer cannot change the underlying secret message. They are bound to the original value and cannot open the commitment to a different value later.

  • Computational Binding: It is computationally infeasible to find two different messages that produce the same commitment.
  • Perfect Binding: It is impossible (information-theoretically) to open a commitment to more than one value.
03

Common Constructions

Different cryptographic constructions prioritize one property over the other, creating a trade-off.

  • Hash-based (SHA-256): Computationally binding and hiding. Simple: commitment = H(secret || nonce).
  • Pedersen Commitment: Used in confidential transactions. Offers perfect hiding and computational binding.
  • ElGamal Commitment: Another discrete-log based scheme that can be configured for perfect hiding or perfect binding, but not both simultaneously.
04

The Hiding-Binding Trade-off

A fundamental theorem states that a commitment scheme cannot be both perfectly hiding and perfectly binding. One property must be computational.

  • Choice Determines Use Case:
    • Perfect Hiding, Computational Binding: Prioritizes secrecy of the committed value (e.g., voting, sealed-bid auctions).
    • Perfect Binding, Computational Hiding: Prioritizes immutability of the commitment (less common). Most practical schemes, like Pedersen commitments, opt for perfect hiding and computational binding.
05

Applications in Blockchain

Commitment schemes are a core building block for privacy and scalability.

  • Confidential Transactions: Hide transaction amounts while proving they are valid (e.g., Mimblewimble).
  • ZK-SNARKs / ZK-STARKs: The prover commits to a witness before generating a proof.
  • Verifiable Random Functions (VRFs): Used in consensus (Algorand) and lotteries.
  • Merkle Trees: A leaf commitment can be a hash commitment to data, with the root acting as a binding commitment to the entire set.
06

Formal Security Game

The properties are formally defined through security games between a challenger and an adversary.

  • Hiding Game: The adversary chooses two messages. The challenger commits to one at random. The adversary must guess which message was committed to. Success probability should be negligibly better than 1/2.
  • Binding Game: The adversary creates a commitment. They must then produce two valid opening pairs (different messages, same commitment) that verify. Success probability should be negligible. These games provide a rigorous framework for proving a scheme's security.
common-types
CRYPTOGRAPHIC PRIMITIVES

Common Types of Commitment Schemes

Commitment schemes are foundational cryptographic protocols that enable a party to commit to a value while keeping it hidden, with the ability to reveal it later. Different schemes offer varying trade-offs in security assumptions, computational efficiency, and proof size.

01

Hash-Based Commitments

The simplest and most widely used type, where a commitment is the cryptographic hash of the secret value and a random nonce (or salt).

  • Properties: Computationally binding, perfectly hiding (if the hash function is modeled as a random oracle).
  • Example: commitment = SHA256(value || nonce). To reveal, the committer provides the original value and nonce.
  • Use Case: The basis for many blockchain data structures like Merkle trees and simple on-chain commitments.
02

Pedersen Commitments

An information-theoretically hiding and computationally binding scheme based on elliptic curve cryptography.

  • Properties: Perfectly hiding, meaning the commitment reveals zero information about the value, even to a computationally unbounded adversary.
  • Mechanism: A commitment to value v is computed as C = v*G + r*H, where G and H are public generator points and r is a secret blinding factor.
  • Use Case: Fundamental to confidential transactions (e.g., Monero, Mimblewimble) and various zero-knowledge proof systems where hiding is paramount.
03

Polynomial Commitments

A scheme that allows committing to a polynomial, enabling efficient proofs about its evaluations without revealing the polynomial itself.

  • Properties: Enables succinct proofs (e.g., KZG commitments) where the proof size is constant, independent of the polynomial's degree.
  • Key Operation: Allows a prover to generate a proof that a committed polynomial evaluates to a specific value at a given point.
  • Use Case: Core building block for zk-SNARKs (e.g., in PLONK, Marlin) and data availability schemes like Ethereum's Proto-Danksharding (EIP-4844).
04

Vector Commitments

A commitment to an ordered list (vector) of values, with the ability to open the commitment at specific positions.

  • Properties: Provides position binding, guaranteeing that an opened value corresponds to a specific index in the original vector.
  • Examples: Merkle trees are a common form of vector commitment. More advanced schemes like RSA Accumulators offer constant-sized commitments and proofs.
  • Use Case: Verifying element inclusion in a list, such as proving a transaction is in a block (Merkle proof) or credential revocation lists.
05

Commitment to Multiple Values

Schemes like Bulletproofs that allow committing to a vector of values and later proving complex statements about them in a single, short proof.

  • Properties: Zero-knowledge and short proofs. The commitment size is logarithmic in the number of values committed.
  • Core Ability: Enables efficient range proofs and proof of inner-product relations on committed vectors.
  • Use Case: Confidential transactions with multiple inputs/outputs, verifying asset balances fall within a valid range without revealing them.
06

Feldman / Chaum-Pedersen

A verifiable secret sharing scheme that acts as a commitment with homomorphic properties.

  • Properties: Allows a dealer to commit to a secret and distribute shares, with the commitment enabling verification that shares are consistent.
  • Mechanism: Based on discrete logarithm assumptions. The commitment is a set of public parameters (g^s, h^s) derived from the secret s.
  • Use Case: Secure multi-party computation (MPC) setups, distributed key generation (DKG), and threshold cryptography where participants must verify the correctness of shared secrets.
blockchain-examples
CRYPTOGRAPHIC PRIMITIVES

Commitment Schemes in Blockchain & Cryptography

A commitment scheme is a fundamental cryptographic protocol that allows one party to commit to a chosen value while keeping it hidden, with the ability to later reveal it in a verifiable way. They are essential for privacy, security, and scalability in blockchain systems.

01

Core Properties

Every commitment scheme must satisfy two key properties:

  • Hiding: The commitment value does not reveal any information about the original secret. It is computationally infeasible for an observer to guess the committed value.
  • Binding: Once a commitment is made, the committer cannot change the original secret to a different value when they later reveal it. The commitment is cryptographically bound to the original input.
02

Hash-Based Commitments

The simplest and most common form, where a cryptographic hash function (like SHA-256) is used. To commit to a value v, the committer calculates C = H(v, r), where r is a random nonce (salt). The commitment C is published. Later, to reveal, they publish v and r, allowing anyone to verify that H(v, r) equals C. This is binding due to hash function collision resistance and hiding due to the randomness of r.

03

Pedersen Commitments

An advanced, information-theoretically hiding scheme widely used in confidential transactions (e.g., Monero, Mimblewimble). It uses elliptic curve cryptography. A commitment to a value v is computed as C = v*G + r*H, where G and H are public generator points and r is a secret blinding factor. It is perfectly hiding—the commitment reveals zero information about v—and computationally binding under the discrete log assumption. Allows for homomorphic addition of commitments.

04

Applications in Blockchain

Commitment schemes are foundational for numerous blockchain features:

  • Merkle Trees: Leaf nodes are commitments to data, and the root hash commits to the entire dataset.
  • Zero-Knowledge Proofs (ZKPs): Used to commit to secret witness data before generating a proof (e.g., in zk-SNARKs).
  • Scalability Solutions: Data availability schemes like Data Availability Sampling (DAS) in modular blockchains rely on commitments (e.g., KZG polynomial commitments) to prove data exists without publishing it fully.
  • Randomness Generation: Commit-Reveal schemes are used in decentralized random beacons (e.g., RANDAO).
05

KZG Polynomial Commitments

A specialized scheme crucial for modern ZK-Rollups and Proto-Danksharding (EIP-4844). It allows a prover to commit to a polynomial P(x) with a single elliptic curve point. The committer can later generate a short proof that P(z) = y for a given point z (an evaluation proof). Key properties include:

  • Constant-sized commitments and proofs.
  • Support for batch verification.
  • Required trusted setup, which is a significant cryptographic ceremony to generate initial parameters.
06

Commit-Reveal Schemes

A two-phase protocol pattern built on top of a commitment scheme, used to prevent front-running and ensure fairness.

  1. Commit Phase: All participants submit a commitment (e.g., H(secret_value)) to the network.
  2. Reveal Phase: After a deadline, participants must reveal their original secret_value. The protocol only accepts reveals that match a previously submitted commitment.

This ensures choices (like votes or random numbers) are made before they are known, preventing last-second manipulation. Used in blockchain voting, auctions, and random number generation.

visual-explainer
CRYPTOGRAPHIC PRIMITIVE

Visualizing the Commit-and-Reveal Flow

A step-by-step breakdown of how a commitment scheme operates in practice, from initial secret concealment to final verification.

A commit-and-reveal scheme is a two-phase cryptographic protocol where a party first sends a commitment—a scrambled, irreversible value that binds them to a secret—and later discloses the original secret and any necessary proof. The first phase, the commit phase, uses a one-way function like a cryptographic hash (e.g., keccak256) to generate a commitment hash from the secret and a random salt or nonce. This hash is published to the blockchain, locking in the prover's choice without revealing it. The second phase, the reveal phase, occurs later when the prover publicly discloses the original secret data and the salt, allowing anyone to verify that hashing these inputs reproduces the previously published commitment.

This mechanism is fundamental for enabling fair and verifiable interactions in a trustless environment. Its core properties are hiding (the commitment reveals no information about the secret) and binding (the committer cannot later reveal a different secret that produces the same commitment). In blockchain applications, this prevents front-running and ensures procedural fairness. For example, in a decentralized random number generator like Chainlink VRF, a request includes a commitment to a seed. The oracle later reveals the seed and the generated random number, allowing the user to cryptographically verify that the number was indeed derived from the committed seed and was not manipulated after the fact.

The commit-and-reveal pattern is deployed across numerous blockchain use cases. It secures blind auctions, where bidders commit hashes of their bids to prevent others from copying them, only revealing the bid amount after the bidding period closes. It is used in fair coin tosses or voting schemes, and in scaling solutions for privacy-preserving transactions. A critical implementation detail is the salt. Without a sufficiently random salt, an attacker could brute-force simple secrets (like a low number) by precomputing hashes, breaking the hiding property. Therefore, the salt must be a cryptographically secure random value.

From a developer's perspective, a basic Solidity implementation involves a function to commit(bytes32 _hash) that stores the hash in a mapping, and a later function to reveal(uint256 _secret, bytes32 _salt) that recalculates keccak256(abi.encodePacked(_secret, _salt)) and checks it against the stored commitment. This pattern introduces a delay between commitment and reveal, which is a necessary trade-off for security. Systems requiring instant reveals, like many voting mechanisms, must employ more advanced cryptographic primitives like zk-SNARKs or use a trusted setup to avoid this latency, highlighting the commit-and-reveal scheme's role as a foundational, if sometimes temporally constrained, building block for blockchain cryptography.

CRYPTOGRAPHIC PRIMITIVES

Frequently Asked Questions About Commitment Schemes

A commitment scheme is a fundamental cryptographic protocol that allows one party to commit to a chosen value while keeping it hidden, with the ability to later reveal it. This section answers the most common technical questions about their operation and applications in blockchain systems.

A cryptographic commitment scheme is a two-phase protocol that allows a party (the committer) to bind themselves to a secret value without revealing it, and later reveal that value in a verifiable way. In the commit phase, the committer uses a one-way function to produce a commitment string from the secret value (often combined with a random nonce or blinding factor). This commitment is published. In the subsequent reveal phase, the committer discloses the original value and the nonce, allowing anyone to run the same function to verify that the commitment matches the revealed data. This provides the core properties of hiding (the secret remains concealed until reveal) and binding (the committer cannot change the secret after committing).

COMMITMENT SCHEME

Common Misconceptions

Clarifying fundamental misunderstandings about cryptographic commitment schemes, which are core to blockchain privacy, scalability, and consensus mechanisms.

No, a commitment scheme is fundamentally different from encryption. Encryption is designed for confidentiality, allowing a ciphertext to be decrypted back to the original message using a key. A commitment scheme is designed for binding and hiding; it allows you to publish a sealed value (the commitment) that you cannot later change, and which reveals nothing about the original data until you choose to open it with the original data and a proof (often a random nonce or salt). You cannot 'decrypt' a commitment; you can only verify that an opening matches it.

Key Difference:

  • Encryption: Ciphertext → (with key) → Original Message.
  • Commitment: (Message + Salt) → Commitment → (later) Verify(Message, Salt, Commitment) = True/False.
ENQUIRY

Get In Touch
today.

Our experts will offer a free quote and a 30min call to discuss your project.

NDA Protected
24h Response
Directly to Engineering Team
10+
Protocols Shipped
$20M+
TVL Overall
NDA Protected Directly to Engineering Team
Commitment Scheme: Cryptographic Hiding & Binding Explained | ChainScore Glossary