Skip to content
This repository

ZKPDL & cashlib: A language-based system for zero-knowledge proofs and electronic cash (e-cash).

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 doc
Octocat-spinner-32 src
Octocat-spinner-32 COPYING
Octocat-spinner-32 README
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.