Here’s a starting point for the proofs: https://github.com/a16z/evm-powers-of-tau/blob/master/techreport/main.pdf.
You have .
Participant generates , and publishes . This should satisfy:
The following properties need to be proved:
- The prover knows
- The prover correctly used , or at least, consist of a valid powers of tau setup, assuming the did.
The protocol above does 2. with pairings.
Using Maurer Proofs
c.f. my blog post on Maurer proofs
As a starting point, consider the following toy relation:
The tricky aspect is the part. The rest can be done with a Maurer proof.
One way around this is to tweak the relation slightly:
Because , we have , so this relation is equivalent. Notice also that this relation is captured by the homomorphism:
A Maurer proof will work, wherein you check that
We can extend this to the degree case as well:
this time, we use the homomorphism:
with expected output .
Tau Proof
The relation you want to prove is:
(taking the convention )
If you had a vector such that , then you could just use a standard Maurer proof here. The issue with that is that you need to enforce a specific relation between the vector elements.
We can use the proof we developed in the previous section to get around this restriction though.
We publish , and then create a proof for the following relation:
This can be done via a Maurer proof for the following homomorphism:
With the expected output being:
The vector has to be initialized to the powers of .