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:

  1. The prover knows
  2. 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 .