Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 36 committers (2.8%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.6%) to scientific vocabulary
Last synced: 7 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: cd4761
  • License: mit
  • Language: C++
  • Default Branch: main
  • Size: 20.2 MB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation

README.md

ICICLE

ICICLE is a library for ZK acceleration using CUDA-enabled GPUs.

ICICLE

Chat with us on Discord Follow us on Twitter GitHub Release

Background

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.

  • GPUs are a perfect match for ZK compute - around 97% of ZK protocol runtime is parallel by nature.
  • GPUs are simple for developers to use and scale compared to other hardware platforms.
  • GPUs are extremely competitive in terms of power / performance and price (3x cheaper).
  • GPUs are popular and readily available.

Getting Started

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

Prerequisites

  • CUDA Toolkit version 12.0 or newer.
  • CMake, version 3.18 and above. Latest version is recommended.
  • GCC version 9, latest version is recommended.
  • Any Nvidia GPU (which supports CUDA Toolkit version 12.0 or above).

[!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.

Accessing Hardware

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.

Build systems

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.

Compiling ICICLE

Running ICICLE via Rust bindings is highly recommended and simple: - Clone this repo - go to our Rust bindings - Enter a curve implementation - run cargo build --release to build or cargo test to build and execute tests

In any case you would want to compile and run core icicle c++ tests, just follow these setps: - Clone this repo - go to ICICLE core - execute the small script to compile via cmake and run c++ and cuda tests

Docker

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

Contributions

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.

Development Contributions

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:

sh git config core.hooksPath ./scripts/hooks

In case clang-format is missing on your system, you can install it using the following command:

sh 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.

Hall of Fame

  • Robik, for his ongoing support and mentorship
  • liuxiao, for being a top notch bug smasher
  • gkigiermo, for making it intuitive to use ICICLE in Google Colab
  • nonam3e, for adding Grumpkin curve support into ICICLE
  • alxiong, for adding warmup for CudaStream
  • cyl19970726, for updating go install source in Dockerfile
  • PatStiles, for adding Stark252 field

Help & Support

For help and support talk to our devs in our discord channel "ICICLE"

License

ICICLE is distributed under the terms of the MIT License.

See LICENSE-MIT for details.

icicle

Owner

  • Name: jason hwang
  • Login: cd4761
  • Kind: user
  • Company: Onther Inc.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Ingonyama"
title: "ICICLE: GPU Library for ZK Acceleration"
version: 1.0.0
date-released: 2024-01-04
url: "https://github.com/ingonyama-zk/icicle"

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 344
  • Total Committers: 36
  • Avg Commits per committer: 9.556
  • Development Distribution Score (DDS): 0.788
Past Year
  • Commits: 14
  • Committers: 3
  • Avg Commits per committer: 4.667
  • Development Distribution Score (DDS): 0.214
Top Committers
Name Email Commits
Jeremy Felder j****1@g****m 73
DmytroTym d****1@g****m 34
ImmanuelSegol 3****s@g****m 29
ChickenLover R****1@g****m 28
yshekel y****l@g****m 26
Vitalii Hnatyk v****k@g****m 18
release-bot r****t@i****m 17
stas s****y@i****m 15
Otsar 1****u 12
Leon Hibnik 1****k 12
cd4761 c****1@g****m 11
HadarIngonyama 1****a 11
Shlomtz o****s@g****m 9
nonam3e 7****e 7
Guy Weissenberg g****y@i****m 6
Stas Polonsky s****s@i****m 5
Koh Wei Jie c****t@k****m 4
Vlad 8****p 3
Vitalii v****i@i****m 3
Alex Xiong a****h@g****m 2
Guillermo Oyarzun g****n@b****s 2
liu l****6@b****n 2
BigSky77 s****2@g****m 2
yanziseeker 1****7 1
vuittont60 8****0 1
omer shlomovits o****h@o****l 1
sukrucildirr s****r@g****m 1
robik75 r****5@g****m 1
omahs 7****s 1
liuxiao 1****7@q****m 1
and 6 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 0
  • Total pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Total issue authors: 0
  • Total pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/check-changed-files.yml actions
  • actions/checkout v4 composite
  • tj-actions/changed-files v39 composite
.github/workflows/codespell.yml actions
  • actions/checkout v4 composite
  • codespell-project/actions-codespell v2 composite
.github/workflows/cpp_cuda.yml actions
  • actions/checkout v4 composite
.github/workflows/deploy-docs.yml actions
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
  • peaceiris/actions-gh-pages v3 composite
.github/workflows/examples.yml actions
  • actions/checkout v4 composite
.github/workflows/golang.yml actions
  • actions/checkout v4 composite
  • actions/setup-go v5 composite
.github/workflows/release.yml actions
  • actions/cache v4 composite
  • actions/checkout v4 composite
.github/workflows/rust.yml actions
  • actions/checkout v4 composite
.github/workflows/test-deploy-docs.yml actions
  • actions/checkout v3 composite
  • actions/setup-node v3 composite
examples/rust/msm/Cargo.toml cargo
examples/rust/ntt/Cargo.toml cargo
examples/rust/polynomials/Cargo.toml cargo
examples/rust/poseidon/Cargo.toml cargo
wrappers/rust/Cargo.toml cargo
wrappers/rust/icicle-core/Cargo.toml cargo
  • criterion 0.3 development
  • serial_test 3.0.0 development
  • ark-ec 0.4.0
  • ark-ff 0.4.0
  • ark-poly 0.4.0
  • ark-std 0.4.0
  • criterion 0.3
  • hex 0.4
  • rayon 1.8.1
wrappers/rust/icicle-cuda-runtime/Cargo.toml cargo
wrappers/rust/icicle-curves/icicle-bls12-377/Cargo.toml cargo
  • ark-bls12-377 0.4.0 development
  • ark-ec 0.4.0 development
  • ark-ff 0.4.0 development
  • ark-poly 0.4.0 development
  • ark-std 0.4.0 development
  • criterion 0.3 development
  • serial_test 3.0.0 development
  • ark-bls12-377 0.4.0
  • criterion 0.3
wrappers/rust/icicle-curves/icicle-bls12-381/Cargo.toml cargo
  • ark-bls12-381 0.4.0 development
  • ark-ec 0.4.0 development
  • ark-ff 0.4.0 development
  • ark-poly 0.4.0 development
  • ark-std 0.4.0 development
  • criterion 0.3 development
  • serial_test 3.0.0 development
  • ark-bls12-381 0.4.0
  • criterion 0.3
wrappers/rust/icicle-curves/icicle-bn254/Cargo.toml cargo
  • ark-bn254 0.4.0 development
  • ark-ec 0.4.0 development
  • ark-ff 0.4.0 development
  • ark-poly 0.4.0 development
  • ark-std 0.4.0 development
  • criterion 0.3 development
  • serial_test 3.0.0 development
  • ark-bn254 0.4.0
  • criterion 0.3
wrappers/rust/icicle-curves/icicle-bw6-761/Cargo.toml cargo
  • ark-bw6-761 0.4.0 development
  • ark-ec 0.4.0 development
  • ark-ff 0.4.0 development
  • ark-poly 0.4.0 development
  • ark-std 0.4.0 development
  • criterion 0.3 development
  • serial_test 3.0.0 development
  • ark-bw6-761 0.4.0
  • criterion 0.3
wrappers/rust/icicle-curves/icicle-grumpkin/Cargo.toml cargo
  • ark-ec 0.4.0 development
  • ark-ff 0.4.0 development
  • ark-poly 0.4.0 development
  • ark-std 0.4.0 development
  • criterion 0.3 development
  • criterion 0.3
wrappers/rust/icicle-fields/icicle-babybear/Cargo.toml cargo
  • criterion 0.3 development
  • risc0-core 0.21.0 development
  • risc0-zkp 0.21.0 development
  • serial_test 3.0.0 development
wrappers/rust/icicle-fields/icicle-m31/Cargo.toml cargo
wrappers/rust/icicle-fields/icicle-stark252/Cargo.toml cargo
  • lambdaworks-math 0.6.0 development
wrappers/rust/icicle-hash/Cargo.toml cargo
Dockerfile docker
  • nvidia/cuda 12.0.0-devel-ubuntu22.04 build
examples/c++/msm/.devcontainer/Dockerfile docker
  • nvidia/cuda 12.0.0-devel-ubuntu22.04 build
examples/c++/multiply/.devcontainer/Dockerfile docker
  • nvidia/cuda 12.2.0-devel-ubuntu22.04 build
examples/c++/ntt/.devcontainer/Dockerfile docker
  • nvidia/cuda 12.0.0-devel-ubuntu22.04 build
examples/c++/polynomial_multiplication/.devcontainer/Dockerfile docker
  • nvidia/cuda 12.0.0-devel-ubuntu22.04 build
examples/rust/msm/.devcontainer/Dockerfile docker
  • nvidia/cuda 12.0.0-devel-ubuntu22.04 build
examples/rust/ntt/.devcontainer/Dockerfile docker
  • nvidia/cuda 12.0.0-devel-ubuntu22.04 build
examples/rust/poseidon/.devcontainer/Dockerfile docker
  • nvidia/cuda 12.0.0-devel-ubuntu22.04 build
go.mod go
  • github.com/bits-and-blooms/bitset v1.7.0
  • github.com/consensys/bavard v0.1.13
  • github.com/consensys/gnark-crypto v0.12.1
  • github.com/davecgh/go-spew v1.1.1
  • github.com/kr/text v0.2.0
  • github.com/mmcloughlin/addchain v0.4.0
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/rogpeppe/go-internal v1.12.0
  • github.com/stretchr/testify v1.8.2
  • golang.org/x/sys v0.9.0
  • gopkg.in/yaml.v3 v3.0.1
  • rsc.io/tmplfunc v0.0.3
go.sum go
  • github.com/bits-and-blooms/bitset v1.7.0
  • github.com/consensys/bavard v0.1.13
  • github.com/consensys/gnark-crypto v0.12.1
  • github.com/creack/pty v1.1.9
  • github.com/davecgh/go-spew v1.1.0
  • github.com/davecgh/go-spew v1.1.1
  • github.com/google/subcommands v1.2.0
  • github.com/kr/pretty v0.3.1
  • github.com/kr/text v0.2.0
  • github.com/leanovate/gopter v0.2.9
  • github.com/mmcloughlin/addchain v0.4.0
  • github.com/mmcloughlin/profile v0.1.1
  • github.com/pmezard/go-difflib v1.0.0
  • github.com/rogpeppe/go-internal v1.12.0
  • github.com/stretchr/objx v0.1.0
  • github.com/stretchr/objx v0.4.0
  • github.com/stretchr/objx v0.5.0
  • github.com/stretchr/testify v1.7.1
  • github.com/stretchr/testify v1.8.0
  • github.com/stretchr/testify v1.8.2
  • golang.org/x/sys v0.9.0
  • gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405
  • gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c
  • gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c
  • gopkg.in/yaml.v3 v3.0.1
  • rsc.io/tmplfunc v0.0.3
docs/package-lock.json npm
  • 1096 dependencies
docs/package.json npm
  • prettier ^3.2.4 development
  • @docusaurus/core 2.0.0-beta.18
  • @docusaurus/preset-classic 2.0.0-beta.18
  • @mdx-js/react ^1.6.22
  • clsx ^1.1.1
  • hast-util-is-element 1.1.0
  • mdx-mermaid ^1.2.2
  • mermaid ^9.1.2
  • prism-react-renderer ^1.3.1
  • react ^17.0.2
  • react-dom ^17.0.2
  • rehype-katex 5
  • remark-math 3