Pinocchio-based adaptive zk-SNARK and distributed computation
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
ate-pairing @ 67adba9
tueviff-fp-inlinecb @ 6deff06
xbyak @ 570a6aa


Implementation of the system described in this paper

Remark This is an implementation of the proceedings version of the paper, that has a bug in the way constant values are handled. The current eprint version of the paper corrects this. This will be fixed in the next release of this prototype.


  • A Unix-like environment (e.g., Linux, mingw-w64)
  • GCC compiler, GMP development libraries
  • CodeBlocks IDE (optional, for re-building on Windows)
  • Python 2.7 with Twisted and GMPY

For instance, on Amazon Linux the following commands install the required dependencies:

sudo yum install gcc-c++ gmp-devel
pip install --upgrade pip
sudm pip install twisted gmpy scipy

Installation instructions

  • After cloning the repository, download the dependencies:
git submodule init
git submodule update
  • Compile the ate-pairing library with SNARK support:
cd ate-pairing
  • On Unix, compile the C++ library and tools by running run make from the main directory

  • On Windows (64-bits), binaries are included so building is not necessary; to re-build, open qaps.workspace in CodeBlocks and choosing "Rebuild Workspace" (also works on Unix)

  • Install our customized VIFF version:

cd tueviff-fp-inlinecb
python install

Running examples

  • For generic examples, see,, and in the viff directory. Edit and run from the bin directory to run these examples
  • For the "aggregate" and "logrank" examples from the paper, edit and run and, respectively


This work is part of projects that have received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No 643964 (SUPERCLOUD) and No 731583 (SODA).