Python library for ethsnarks
Zero-Knowledge proofs are coming to Ethereum and Dapps in 2019!
EthSnarks is a collection of zkSNARK circuits and supporting libraries to use them with Ethereum smart contracts, it aims to help solve one of the biggest problems facing zkSNARKS on Ethereum - cross-platform on desktop, mobile and in-browser, cheap enough to run on-chain, and with algorithms that significantly reduces the time it takes to run the prover.
The notable advantages of using EthSnarks are:
- Reduced cost, 500k gas with 1 input, using Groth16.
- Prove zkSNARKs in-browser, with WebAssembly and Emscripten
- Linux, Mac and Windows builds
- Solidity, Python and C++ support in one place
- A growing library of gadgets and algorithms
EthSnarks is participating in the Ethereum Foundation's grants program, development will continue full-time and we will be working with companies and developers to help overcome the common challenges and hurdles that we all face. Get in-touch for more information.
WARNING: EthSnarks is beta quality software, improvements and fixes are made frequently, and documentation doesn't yet exist
- Miximus - a self-service coin mixer and anonymous transfer method for Ethereum
- Hopper: an Open-Source Mixer for Mobile-friendly private transfers on Ethereum
- Example implementations of ethsnarks
- An example of a zero-knowledge-proof of a SHA256 pre-image for Ethereum
Unix Flavours (Linux, OSX, Ubuntu, CentOS etc.)
The following dependencies are required to build Ethsnarks:
- g++ or clang++
- npm / nvm
Check-out the source-code using:
git clone firstname.lastname@example.org:HarryR/ethsnarks.git && cd ethsnarks
After checking-out the repository you need to install the necessary dependencies, the
Makefile includes pre-determined rules for different platforms, you need to run this as
root or an administrator user (i.e. for Brew on OSX):
make fedora-dependencies(CentOS, Fedora, RHEL etc. requires
make ubuntu-dependencies(Ubuntu, Debian etc. requires
make mac-dependencies(OSX, requires Homebrew)
Then install the Python dependencies, via Pip, into the local user directory:
Then build and test the project:
git submodule update --init --recursive
Install MSYS2 from https://www.msys2.org/ then open the MSYS2 Shell and run:
pacman --noconfirm -S make gmp gmp-devel gcc git cmake git clone email@example.com:HarryR/ethsnarks.git cd ethsnarks git submodule update --init --recursive cmake -E make_directory build cmake -E chdir build cmake -DCMAKE_BUILD_TYPE=Debug .. cmake --build build
Building under 32-bit MinGW32, MSYS (not MSYS2) and Microsoft Visual Studio may be supported in future depending upon demand, but currently it's probably broken...
WASM / Browser
Requests and Contributions
This project aims to help create an ecosystem where a small number of well tested but simple zkSNARK circuits can be easily integrated into your project without having to do all of the work up-front.
If you have any ideas for new components, please Open an issue, or submit a pull request.
We are surely increasing the range of gadgets, supporting libraries, available documentation and examples; at the moment the best way to find out how to use something is to dig into the code or ask questions via a new issue
The following gadgets are available
- 2-bit lookup table
- 3-bit lookup table
- MiMC hash and cipher
- Poseidon hash function
- Miyaguchi-Preneel one-way function
- Merkle tree
- SHA256 (Ethereum compatible, full round)
- Shamir's Secret Sharing Scheme
- 'Baby JubJub' twisted Edwards curve
- Pedersen hash
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for ethsnarks-0.0.1-py3-none-any.whl