ZKPDL & cashlib: A language-based system for zero-knowledge proofs and electronic cash (e-cash).
Clone or download
Latest commit 8820b95 Mar 22, 2016
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc add new docs from Sarah Aug 12, 2010
src getting rid of some residual debugging stuff Jan 31, 2011
.editorconfig Add .editorconfig Mar 22, 2016
COPYING add license Jun 2, 2010
README add new docs from Sarah Aug 12, 2010


ZKPDL and Cashlib

ZKPDL (Zero-Knowledge Proof Description Language) is a high-level
language designed for specifying cryptographic operations and in
particular zero-knowledge proofs.  Its corresponding interpreter will,
given a program and a set of inputs, output a proof when acting as the
prover and verify a proof when acting as the verifier.

The Cashlib library provides functionality for endorsed e-cash and
fair exchange protocols.  Classes are provided for withdrawing,
spending, and depositing e-coins, as well as for bartering for files
using an e-coin only as a placeholder.  Resolution protocols are
provided as well.

For a detailed description of this software please see our paper in
USENIX Security 2010:

Pseudocode descriptions of the cryptographic protocols used are
available in the "doc/pseudocodes" directory.

A short manual describing our language syntax can also be found in the
"doc/manual" directory.

These documents are still under development and should improve in the

Many example programs are available in the "src/ZKP/examples" directory.

We would love to hear about your interest in ZKPDL and Cashlib.  Feel
free to contact us if you have any questions or comments!

Chris Erway <cce@cs.brown.edu>
Sarah Meiklejohn <smeiklej@cs.ucsd.edu>

The Brownie Points project