Sigma Protocol #
This file defines a structure type for Σ-protocols.
A sigma protocol for statements in S
and witnesses in W
,
where p : X → W → Bool
is the proposition that is proven by the Σ-protocol.
Commitments are split into private and public parts in PC
and SC
resp.
Verifier challenges are assumed to be drawn uniformly from Ω
.
Provers final proof responses are in P
.
We have two types for the commitments in order to allow for a public part in PC
and secret part in SC
. Only the commitment in PC
is revealed to the verifier,
but the prove
function may still use SC
in generating a proof.
We leave properties like special soundness as seperate definitions for better modularity.
Given a statement
s
, make a commitment to prove that you have a valid witnessw
.Given a previous secret commitment
sc
, repond to the challengeω
Deterministic function to check that the proof
p
satisfies the challengeω
.- sim (s : S) : ProbComp PC
Simulate public commitment generation while only knowing the statement.
Extract a witness to the statement from two proofs.