barryWhiteHat / libzerocash

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

libzerocash: a C++ library implementing the Zerocash protocol

The libzerocash library implements the Zerocash protocol, which provides a privacy-preserving version of Bitcoin (or a similar currency).

Zerocash fixes an inherent weakness of Bitcoin: every user's payment history is recorded in public view on the block chain, and is thus readily available to anyone. While there are techniques to obfuscate this information, they are problematic and ineffective. Instead, in Zerocash, users may pay one another directly, via payment transactions that reveal neither the origin, destination, or amount of the payment. This is a marked improvement compared to Bitcoin (and similar decentralized digital currencies), where every payment's information is made public for the whole world to see.

The basic Zerocash protocol is described in this paper:

It improves on an earlier protocol, Zerocoin, developed by some of the same authors, both in functionality (Zerocoin only hides a payment's origin, but not its destination or amount) and in efficiency (Zerocash transactions are less than 1KB and take less than 6ms to verify).

Zerocash relies on Succinct Noninteractive Arguments of Knowledge (SNARK) proofs, as implemented in the open-source libsnark library by SCIPR Lab.

For more information see the Zerocash web site.

Warning

This is an academic proof-of-concept prototype. This implementation is not ready for production use. It does not yet contain all the features, careful code review, tests and integration that are needed for a deployment. Future changes to the cryptographic protocol and data formats are likely.

Authors

About

License:MIT License


Languages

Language:C++ 97.4%Language:Makefile 1.5%Language:Shell 0.7%Language:C 0.5%