Zero Knowledge Proofs (ZKPs) are considered one of the greatest achievements of modern cryptography. Accordingly, ZKPs are expected to disrupt a number of industries and will usher in an era of trustless and privacy preserving services and infrastructure.
We believe GPUs are as important for ZK as for AI.
ICICLE is a CUDA implementation of general functions widely used in ZKP.
[!NOTE] Developers: We highly recommend reading our documentation
[!TIP] Try out ICICLE by running some examples using ICICLE in C++ and our Rust bindings
[!NOTE] It is possible to use CUDA 11 for cards which don't support CUDA 12, however we don't officially support this version and in the future there may be issues.
If you don't have access to an Nvidia GPU we have some options for you.
Checkout Google Colab. Google Colab offers a free T4 GPU instance and ICICLE can be used with it, reference this guide for setting up your Google Colab workplace.
If you require more compute and have an interesting research project, we have bounty and grant programs.
ICICLE has three build systems.
ICICLE core always needs to be built as part of the other build systems as it contains the core ICICLE primitives implemented in CUDA. Reference these guides for the different build systems, ICICLE core guide, ICICLE Rust guide and ICICLE Golang guide.
Running ICICLE via Rust bindings is highly recommended and simple:
cargo build --release
to build or cargo test
to build and execute testsIn any case you would want to compile and run core icicle c++ tests, just follow these setps:
We offer a simple Docker container so you can simply run ICICLE without setting everything up locally.
docker build -t <name_of_your_choice> .
docker run --gpus all -it <name_of_your_choice> /bin/bash
Join our Discord Server and find us on the icicle channel. We will be happy to work together to support your use case and talk features, bugs and design.
If you are changing code, please make sure to change your git hooks path to the repo's hooks directory by running the following command:
git config core.hooksPath ./scripts/hooks
In case clang-format
is missing on your system, you can install it using the following command:
sudo apt install clang-format
You will also need to install codespell to check for typos.
This will ensure our custom hooks are run and will make it easier to follow our coding guidelines.
For help and support talk to our devs in our discord channel "ICICLE"
ICICLE is distributed under the terms of the MIT License.
See LICENSE-MIT for details.