### Built systems under the Pepper project

In the descriptions below, the *prover* is the
entity that performs a computation. The
*verifier* checks a proof (produced by the
prover) that the computation was performed
correctly.

**Pepper**

**Ginger**

**Zaatar**

**Allspice**

**Pantry**

*stateful*computations: those that work over RAM, or computations for which the verifier does not have the full input. Pantry composes techniques from untrusted storage with existing verifiable computation machinery: the verifier’s explicit input includes a

*digest*of the full input or state, and the prover is obliged to compute over state that matches the digest. The result is to extend verifiability to real applications of cloud computing (MapReduce jobs, queries against remote databases, applications for which the prover’s state is hidden, etc.). Besides the gain in expressiveness, Pantry improves performance: by not handling inputs, the verifier saves CPU and network costs.

**Buffet**

A slightly longer version is available as Cryptology ePrint 2014/674.

**Zebra**

*(Distinguished student paper award.)*

An extended version is available as Cryptology ePrint 2015/1243.

**Giraffe**

*all*protocol costs and makes outsourcing with probabilistic proofs worthwhile for the first time.

Giraffe includes a new probabilistic proof for data-parallel computations that
refines the protocol of Thaler13
to give asymptotically optimal prover cost; this is of independent interest.
Giraffe also develops a *design template* that automatically produces optimized
hardware designs for a wide range of computations and circuit technologies.
It combines this template with program analysis and compiler techniques that extend
the Verifiable ASICs model to a wider range of computations.
Compared to Zebra, Giraffe handles computations that are 500× larger, and it can
automatically outsource *parts* of programs that are not worthwhile to
outsource in full.

A technical report is available as Cryptology ePrint 2017/242.