From 0fd812b73b20cfe33a1453f6400a8143e73b9a2c Mon Sep 17 00:00:00 2001 From: Justin Martin Date: Sat, 9 Oct 2021 16:37:02 -0700 Subject: [PATCH] s/intermediary/intermediate/ --- circuits.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/circuits.md b/circuits.md index 2115d96..38814a9 100644 --- a/circuits.md +++ b/circuits.md @@ -92,7 +92,7 @@ compacted, and their bodies disposed of as you please. In the context of a PLONK circuit, a witness is the set of values that need to be generated from the inputs to the circuit, based on the circuit design, to satisfy all of the constraints imposed by the circuit. You can think of the witness generator produced by Circom as a circuit-specific decompression function which runs your inputs through the -circuit, and snapshots all of the various intermediary values that are produced along the way. +circuit, and snapshots all of the various intermediate values that are produced along the way. With this expanded form generated from your inputs, you know which values must be assigned to the constraints specified by the R1CS in order to construct a valid proof. @@ -103,14 +103,14 @@ When you think of a "proof", you probably imagine that it's an incontrovertible However, in the context of a SNARK, a "proof" actually represents an *argument* that something is *almost certainly* true. If we were to try to transmit the solution to every single polynomial constraint imposed by a circuit, we would end up with proofs that were orders of magnitude larger than if we simply show that certain sorts of relationships hold -true between the intermediary values of state within the circuit. +true between the intermediate state values within the circuit. It's possible that for any given circuit, someone with sufficient computing power could generate a proof that satisfies the circuit's constraints in a malformed way, but this would be roughly equivalent in difficulty to [factoring large primes](https://en.wikipedia.org/wiki/RSA_Factoring_Challenge). So, when generating a proof for a SNARK circuit, you're calculating the intermediate states of your circuit for a given -input (witness generation), and then calculating the relationships between your inputs, the intermediary states, and +input (witness generation), and then calculating the relationships between your inputs, the intermediate states, and the circuit's outputs. Once you have the proof that you've satisfied the necessary set of constraints, you can then publish that proof and @@ -120,6 +120,9 @@ are what would be expected to correspond to your proof. ## Circuits +With that understanding of ZK proving circuits well-in-hand, let's delve into how Tornado.cash uses some very simple +circuits to enable you to privately + ### Deposit ### Tornado Trees