icicle-gnark

ICICLE version for gnark integration

https://github.com/ingonyama-zk/icicle-gnark

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 41 committers (2.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.2%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

ICICLE version for gnark integration

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

README.md

ICICLE for Gnark

[!WARNING] This is a standalone version of ICICLE specifically meant for integration with the Gnark codebase. It is NOT meant to be used together with the main ICICLE repo.

If you are looking for the main ICICLE repo, you can find it here

ICICLE is a high-performance cryptographic acceleration library designed to optimize cryptographic computations across various hardware platforms, including CPUs, GPUs, and other accelerators.


ICICLE



Chat with us on Discord Follow us on LinkedIn Follow us on Twitter

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 that ICICLE will be a cornerstone in the acceleration of ZKPs:

  • Versatility: Supports multiple hardware platforms, making it adaptable to various computational environments.
  • Efficiency: Designed to leverage the parallel nature of ZK computations, whether on GPUs, CPUs, or other accelerators.
  • Scalability: Provides an easy-to-use and scalable solution for developers, allowing them to optimize cryptographic operations with minimal effort.

Getting Started

Prerequisites

  • Any compatible hardware: CPU or Nvidia GPU.
  • CMake, Version 3.18 or above. Latest version recommended
  • CUDA Toolkit, Required only if using NVIDIA GPUs (version 12.0 or newer).
  • Clang
  • User permissions to create directories in GOMODCACHE
  • User permissions to install libraries in /usr/local/lib

[!NOTE] For older GPUs that only support CUDA 11, ICICLE may still function, but official support is for CUDA 12 onwards.

Building from source

Gnark includes icicle-gnark as a direct dependency. Before gnark can use icicle-gnark, the c++ libraries need to be built. Follow these instructions to build the libs.

  1. Run go mod tidy to pull all the dependecies.
  2. Navigate to the icicle-gnark dependency in your GOMODCACHE and build the c++ libraries there.

    sh cd $(go env GOMODCACHE)/github.com/ingonyama-zk/icicle-gnark/v3@<version>/wrappers/golang chmod +x build.sh ./build.sh -curve=bn254

  3. Double check that the following frontend libs are located in /usr/local/lib.

    1. libiciclecurvebn254.so
    2. libiciclefieldbn254.so
    3. libicicle_device.so
  4. Double check that the following backend libs are located in /usr/local/lib/backend/**.

    1. libiciclebackendcudacurvebn254.so
    2. libiciclebackendcudafieldbn254.so
    3. libiciclebackendcuda_device.so
  5. Finally, export the ICICLE_BACKEND_INSTALL_DIR environment variable to the location with the backend libraries

sh export ICICLE_BACKEND_INSTALL_DIR=/usr/local/lib/backend

[!TIP] By default, the above steps build both the CPU and CUDA backends. You can switch the device by using the CreateDevice API.

[!NOTE] To specify a curve, use the flag -curve=<curve>, where <curve> can be one of the following: bn254, bls12377, bls12381, or bw6_761.

Currently, Gnark only has support for bn254 with icicle-gnark

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

Please see the main ICICLE repo for contributing.

Help & Support

For help and support talk to our devs in our discord channel #ICICLE or contact us at support@ingonyama.com.

License

This version of ICICLE is distributed under the terms of the MIT License.

See LICENSE-MIT for details.

Owner

  • Name: Ingonyama
  • Login: ingonyama-zk
  • Kind: organization
  • Email: hi@ingonyama.com

Shipping the world's fastest provers

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: 4
  • Delete event: 1
  • Member event: 1
  • Push event: 10
  • Pull request event: 3
  • Create event: 7
Last Year
  • Watch event: 4
  • Delete event: 1
  • Member event: 1
  • Push event: 10
  • Pull request event: 3
  • Create event: 7

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 412
  • Total Committers: 41
  • Avg Commits per committer: 10.049
  • Development Distribution Score (DDS): 0.779
Past Year
  • Commits: 104
  • Committers: 18
  • Avg Commits per committer: 5.778
  • Development Distribution Score (DDS): 0.75
Top Committers
Name Email Commits
Jeremy Felder j****1@g****m 91
yshekel y****l@g****m 51
DmytroTym d****1@g****m 34
ImmanuelSegol 3****s@g****m 29
ChickenLover R****1@g****m 29
release-bot r****t@i****m 19
Otsar 1****u 18
Vitalii Hnatyk v****k@g****m 18
stas s****y@i****m 15
Leon Hibnik 1****k 13
HadarIngonyama 1****a 12
Miki 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
Koren-Brand 1****d 4
Koh Wei Jie c****t@k****m 4
Vitalii v****i@i****m 3
Shanie Winitz 1****z 3
Vlad 8****p 3
danny-shterman 1****n 3
Alex Xiong a****h@g****m 2
Guillermo Oyarzun g****n@b****s 2
Karthik Inbasekar 6****t 2
liu l****6@b****n 2
BigSky77 s****2@g****m 2
Emir Soyturk e****k@g****m 2
yanziseeker 1****7 1
vuittont60 8****0 1
and 11 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 0
  • Total pull requests: 2
  • Average time to close issues: N/A
  • Average time to close pull requests: 23 days
  • Total issue authors: 0
  • Total pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 2
  • Average time to close issues: N/A
  • Average time to close pull requests: 23 days
  • Issue authors: 0
  • Pull request authors: 2
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
  • LeonHibnik (2)
  • leopardracer (1)
Top Labels
Issue Labels
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 3
proxy.golang.org: github.com/ingonyama-zk/icicle-gnark/v3
  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.9%
Average: 6.1%
Dependent repos count: 6.3%
Last synced: 10 months ago

Dependencies

.github/workflows/codespell.yml actions
  • actions/checkout v4 composite
  • codespell-project/actions-codespell v2 composite
.github/workflows/cpp.yml actions
  • actions/checkout v4 composite
.github/workflows/golang.yml actions
  • actions/checkout v4 composite
  • actions/setup-go v5 composite
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