/tachyon

Super Fast Open ZKP(Zero Knowledge Proof) library

Primary LanguageC++MIT LicenseMIT







Tachyon is a ZKP accelerator using CUDA.

Prerequisites

Bazel

Please follow the instructions here.

Ubuntu

> sudo apt install libgmp-dev libomp-dev

Macos

> brew install gmp

Getting started

Build

Build on Linux

> bazel build --config linux //...

Build on Macos arm64

> bazel build --config macos_arm64 //...

Build on Macos x64

> bazel build --config macos_x86_64 //...

NOTE:: MacOS v14.0.0 or later is recommended.

In certain versions of MacOS (prior to v13.5.1), a bug related to incorrect Bigint divide operations has been detected in the field generator when using the optimized build (-c opt).

The issue will be fixed as soon as possible.

Test

Test on Linux

> bazel test --config linux //...

Test on Macos arm64

> bazel test --config macos_arm64 //...

Test on Macos x64

> bazel test --config macos_x86_64 //...

Configuration

GMP backend prime field

  • --//:gmp_backend: Enable gmp prime field backend.

    > bazel build --//:${os} --//:gmp_backend //...

Polygon zkEVM backend prime field

NOTE:: Only x86_64 is supported.

  • --//:polygon_zkevm_backend: Enable goldilocks and zkevm-prover prime field backend.

    > bazel build --config ${os} --config avx512_${os} --//:polygon_zkevm_backend //...

Hardware acceleration

CUDA backend

  • --config cuda: Enable cuda backend.

    > bazel build --config ${os} --config cuda //...

ROCm backend

  • --config rocm: Enable rocm backend.

    > bazel build --config ${os} --config rocm //...

Matplotlib

Pyenv

If you are using pyenv, don't forget to add a option --enable-shared.

> CONFIGURE_OPTS=--enable-shared pyenv install <version>

Python dependencies

> pip install matplotlib

Frequently Asked Questions

Debugging on macOS

Please add this line to your .bazelrc.user.

build --spawn_strategy=local

Build on Ubuntu 20.04

Please update g++ version and try build again! The default g++-9 is not working.

> sudo apt install g++-10
> export CC=/usr/bin/gcc-10
> export CXX=/usr/bin/g++-10
> export GCC_HOST_COMPILER_PATH=/usr/bin/gcc-10

Build CUDA with rust toolchain

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
error: linking with `external/local_config_cuda/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc` failed: exit status: 127
...
  = note: /usr/bin/env: 'python': No such file or directory

Please make your python point to python interpreter to be run.

> sudo apt install python-is-python3

Plus, please include these lines to your .bazelc.user.

build --action_env=PATH=/usr/bin:/usr/local/bin
build --host_action_env=PATH=/usr/bin:/usr/local/bin