One gadget we’ll need is a way to have ZK proofs for the following relation: (with kept secret).
In other words, one needs to prove knowledge of the discrete logarithm of with regards to .
The notation we’ll use here is for generating a proof (with some arbitrary context string ), using the public statement and the witness , as well as: for verifying that proof, using the same context and statement.
The proof should fail to verify if the context or statement don’t match, or if the proof wasn’t produced correctly, of course.
(You can safely skip this part, if you don’t actually need to know how they work).
These are standard Maurer / Schnorr-esque proofs, making use of a hash function modelled as a random oracle.