LibraryPrivacy2013Design paperCorpus record
Pinocchio: Nearly Practical Verifiable Computation
Pinocchio. Bryan Parno, Jon Howell, Craig Gentry and Mariana Raykova.
Compile the program to a quadratic arithmetic program and prove it was satisfied. Verification is a small number of pairings, independent of the program's length, after a trusted setup.
A reading of the public document. Not a copy of it, and not a claim about a later network that reused the name.
A rollup that says 'we use SNARKs' should say who ran the setup and what program the circuit actually encodes.
The five-minute read
The defect
A client wants a server to run a program and return a proof that is cheaper to check than re-running the program.
The rule
Compile the program to a quadratic arithmetic program and prove it was satisfied. Verification is a small number of pairings, independent of the program's length, after a trusted setup.
How it is put together
The setup produces a proving key and a verification key. The prover's work is heavy. The verifier's work is small. The proof shows the computation, not a secret by itself. Secrets are an extra encoding.
Where the claim stops
The setup is trusted. Whoever knows the trapdoor can forge proofs.
One action, walked through
- Turn the program into constraints.
- The prover evaluates the witness.
- The verifier checks a constant-size proof against the verification key.
- Who could have kept the trapdoor?
The argument, unpacked
Why it is still on the desk
A rollup that says 'we use SNARKs' should say who ran the setup and what program the circuit actually encodes.
After the text
Zcash's first ceremony and almost every later pairing-based SNARK sit downstream of this compilation strategy.
What has to be true
- The setup is trusted. Whoever knows the trapdoor can forge proofs.
- Pinocchio is not Groth16, though Groth16 is a descendant.
- It does not make an arbitrary program cheap to prove.
What happened after the paper
Zcash's first ceremony and almost every later pairing-based SNARK sit downstream of this compilation strategy.
What to check before you use the idea
- Who could have kept the trapdoor?
- What program is in the circuit?
- Is verification constant in the program length?
Terms
- QAP
- A way to write a computation as polynomial constraints.
- Trapdoor
- Secret setup randomness that can forge proofs if it survives.
The problem the paper names
A client wants a server to run a program and return a proof that is cheaper to check than re-running the program.
What the design proposes
- The setup produces a proving key and a verification key.
- The prover's work is heavy. The verifier's work is small.
- The proof shows the computation, not a secret by itself. Secrets are an extra encoding.
How the mechanism is specified
- Turn the program into constraints.
- The prover evaluates the witness.
- The verifier checks a constant-size proof against the verification key.
What this page does not treat as proven
- The setup is trusted. Whoever knows the trapdoor can forge proofs.
- Pinocchio is not Groth16, though Groth16 is a descendant.
- It does not make an arbitrary program cheap to prove.
Why a venture studio still reads it
A rollup that says 'we use SNARKs' should say who ran the setup and what program the circuit actually encodes.
This is Blockchain Lab's reading of a public design paper. It is not the paper, not a copy of it, and not an offer of tokens, equity, custody or a partnership. Later network behaviour can diverge from the text. Nothing here is investment, legal or technical advice.
Research status: Design paper. Last reviewed: 1 October 2026. This is a reading of a public paper, not investment, legal or security advice.
