Abstract Polynomial Commitment Schemes #
This file extends the abstract commitment scheme with evaluation opening: the prover can demonstrate that a committed polynomial evaluates to a claimed value at a given point, without revealing the polynomial.
Main definitions #
PolyCommitScheme— ExtendsCommitmentSchemewith evaluation witness creation and verificationEvalCorrect_Game— Evaluation correctness gameEvalBinding_Game— Evaluation binding gamePolyBinding_Game— Polynomial binding game
References #
- SSProve/Commitments — PolyCom.v
- [Kate, Zaverucha, Goldberg, 2010 — §3.2]
Polynomial Commitment Scheme Structure #
An abstract polynomial commitment scheme.
Extends CommitmentScheme with:
- An evaluation point type
- An evaluation value type
- A witness type for evaluation proofs
create_witness: creates a proof thatφ(z) = yverify_eval: checks the evaluation proof
- instFintypeKey : Fintype self.Key
- instNonemptyKey : Nonempty self.Key
- instDecEqKey : DecidableEq self.Key
- instFintypeMessage : Fintype self.Message
- instNonemptyMessage : Nonempty self.Message
- instDecEqMessage : DecidableEq self.Message
- instFintypeOpening : Fintype self.Opening
- instNonemptyOpening : Nonempty self.Opening
- instDecEqOpening : DecidableEq self.Opening
- setup : Core.SPComp self.Key
- commit : self.Key → self.Message → Core.SPComp (self.Commitment × self.Opening)
- Point : Type
Evaluation point type
- Value : Type
Evaluation value type
- Witness : Type
Evaluation witness type
- instDecEqPoint : DecidableEq self.Point
- instDecEqValue : DecidableEq self.Value
- instDecEqWitness : DecidableEq self.Witness
Create evaluation witness: given key, polynomial, and point, produce witness and value
Verify evaluation proof
Instances For
Evaluation Correctness #
Evaluation correctness game: setup, commit, create witness, verify eval.
Returns true if verify_eval accepts the honest evaluation proof.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Polynomial Binding #
Polynomial binding adversary: given key, output two different polynomials that have the same commitment
Equations
- CatCrypt.Examples.Commitments.PolyBindingAdversary PS = (PS.Key → CatCrypt.Core.SPComp (PS.Message × PS.Opening × PS.Message × PS.Opening × PS.Commitment))
Instances For
Polynomial binding game: adversary finds two polynomials with the same commitment.
Same as Binding_Game for the underlying commitment scheme.
Equations
Instances For
Evaluation Binding #
Evaluation binding adversary: given key, output a commitment and two valid evaluation openings at the same point with different values
Equations
- CatCrypt.Examples.Commitments.EvalBindingAdversary PS = (PS.Key → CatCrypt.Core.SPComp (PS.Commitment × PS.Point × PS.Value × PS.Witness × PS.Value × PS.Witness))
Instances For
Evaluation binding game: adversary finds two valid evaluation openings at the same point with different values for the same commitment
Equations
- One or more equations did not get rendered due to their size.
Instances For
Evaluation binding advantage
Equations
Instances For
Knowledge Soundness #
Knowledge soundness adversary: given key, output commitment C and evaluation proof (z, y, w). Extractor must recover the committed polynomial.
- run : PS.Key → Core.SPComp (PS.Commitment × PS.Point × PS.Value × PS.Witness)
Adversary produces commitment and evaluation opening