Skip to content


Subversion checkout URL

You can clone with
Download ZIP
ZKPDL & cashlib: A language-based system for zero-knowledge proofs and electronic cash (e-cash).
C++ C
Failed to load latest commit information.
doc add new docs from Sarah
src getting rid of some residual debugging stuff
COPYING add license
README add new docs from Sarah


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 <>
Sarah Meiklejohn <>

The Brownie Points project
Something went wrong with that request. Please try again.