Paper 2023/1250

Revealable Functional Commitments: How to Partially Reveal a Secret Function

Bharath Namboothiry, Stanford University

A revealable functional commitment allows a prover to commit to a secret polynomial size function $f$. Later, the prover has the ability to (1) prove that $y = f(x)$ for public $x, y$ and (2) open a small window into $f$'s machinery, via an encoded set of constraints - all without divulging any other information about $f$. In this way, revealable functional commitments allow the operator of a proprietary function to prove desired predicate about the function. For example, a government can commit to a bail decision algorithm, and prove that the same algorithm is being used for all defendants. They can also quell concerns about bias, and increase transparency processes by revealing windows into what their function does - while keeping most of their function secret to prevent exploitation. To build a revealable functional commitment, we introduce a 'proof of reveal', to show that a set of constraints, combined with a set of guarantees about those constraints, is consistent with a committed secret function. We show that combining a algebraic holomorphic proof (AHP), a 'proof of function relation' (PFR), and a proof of reveal yields a secure revealable functional commitment scheme. Additionally, we construct proof of reveals for two popular PFR-equipped AHPs, and obtain two instantiations of revealable functional commitments. Towards that end, we also develop interactive protocols that prove properties of committed polynomials, which may have independent value.

Available format(s)
Cryptographic protocols
Publication info
Commitment SchemesZero Knowledge Protocols
Contact author(s)
brn @ stanford edu
2023-08-21: approved
2023-08-18: received
See all versions
Short URL
Creative Commons Attribution


      author = {Bharath Namboothiry},
      title = {Revealable Functional Commitments: How to Partially Reveal a Secret Function},
      howpublished = {Cryptology ePrint Archive, Paper 2023/1250},
      year = {2023},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.