Folding

Pluto uses folding to combine multiple different circuits together in an efficient and scalable way. Roughly speaking you can imagine that folding allows you to choose a specific sequence of circuits to run where the output of one circuit can be given to the next. Proofs made from folding are verified internally step-by-step and the final output is a proof that the entire computation (including which circuits were used), was done properly. In short, a long running sequence of proofs ends up compressed into one single proof.

Another perk is that we only need a single verifier for each and every Web Proof. Even with different sources, sizes, manifests, or otherwise, you can feed the inputs into our prover and it will do the necessary work for you to provide a proof able to be verified at our endpoint.

Our Implementation

Our three specific circuits plaintext authentication, HTTP verification, and JSON extraction are specifically designed to work with each other in a chain. Each of which is explained on its own page.

Putting it all together, we are able to:

  • use public inputs that contain only insensitive data
  • use private inputs that contain the sensitive data
  • allow for (almost) arbitrary sized requests and responses
  • allow for any manifest