You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We want to extend our suite of protococl implementations to one using PLONK as the zkSNARK backend. This requires rewriting our gadgets in the language of PLONK gates, using the external library developed against arkworks:
For each of these circuits, we apply roughly the same set of constraints. We have an object called notes or UTXOs that we use to represent private transaction data. We require a prover to prove that they possess a note or a UTXO in order to satisfy the circuit. The proof of knowledge of the note or the UTXO amounts to proving knowledge of the preimage of the hash of the note or UTXO.
Then, we must prove that this note or UTXOcommitment is inside a set of merkle tree roots. This is done by providing a merkle tree proof path, constructing a root, and then providing a set of difference values (needed for the next step) in order to prove that an element, the root, is inside a set of roots.
We have all these gadgets and components implemented in a few places, so there should be enough resources to begin to understand this further.
VAnchor Circuit
The VAnchor circuit is a UTXO based zk-circuit. It verifies that a public input, a set of UTXOs, and a set of output UTXO commitments are properly formatted and ensures the values of inputs match the values of outputs. We then verify that each input is in one of many merkle trees.
The reference implementations for these circuits currently can be found here:
The Anchor circuit is a fixed sized transaction system, meaning it only supports a specific fixed value deposit. This means that notes on this system don't contain asset values. This circuit only verifies that a deposit is formatted correctly and that it exists in one of many merkle trees.
The reference implementations for these circuits currently can be found here:
Overview
We want to extend our suite of protococl implementations to one using PLONK as the zkSNARK backend. This requires rewriting our gadgets in the language of PLONK gates, using the external library developed against arkworks:
We will continue to build out our toolchain in our repo below in a plonk folder.
General Protocol sketches
For each of these circuits, we apply roughly the same set of constraints. We have an object called notes or UTXOs that we use to represent private transaction data. We require a prover to prove that they possess a note or a UTXO in order to satisfy the circuit. The proof of knowledge of the note or the UTXO amounts to proving knowledge of the preimage of the hash of the note or UTXO.
Then, we must prove that this note or UTXO commitment is inside a set of merkle tree roots. This is done by providing a merkle tree proof path, constructing a root, and then providing a set of difference values (needed for the next step) in order to prove that an element, the root, is inside a set of roots.
We have all these gadgets and components implemented in a few places, so there should be enough resources to begin to understand this further.
VAnchor Circuit
The VAnchor circuit is a UTXO based zk-circuit. It verifies that a public input, a set of UTXOs, and a set of output UTXO commitments are properly formatted and ensures the values of inputs match the values of outputs. We then verify that each input is in one of many merkle trees.
The reference implementations for these circuits currently can be found here:
Anchor Circuit
The Anchor circuit is a fixed sized transaction system, meaning it only supports a specific fixed value deposit. This means that notes on this system don't contain asset values. This circuit only verifies that a deposit is formatted correctly and that it exists in one of many merkle trees.
The reference implementations for these circuits currently can be found here:
Notes
generate_constraints
togadget
Checklist
Auxiliary resources
Poseidon implementations
Questions / Issues
The text was updated successfully, but these errors were encountered: