OpenViSTAI · Agents · Blockchain · Crypto
Menu
ZK & Privacy

Icicle

Icicle is an MIT-licensed C++ cryptographic acceleration library that provides hardware-aware primitives for compute-intensive workloads, including zero-knowledge proof computations, across CPUs, Nvidia GPUs and other accelerators.

Independent OpenViST project profile, based on linked sources.

Icicle — OpenViST project profile in ZK & Privacy.
OpenViST project illustration. See the linked sources for product details.
Understand the project

Practical overview

When it fits

Use Icicle when a self-hosted cryptographic or zero-knowledge application needs accelerator-aware computation and the team can configure the required native toolchain and hardware.

Who it is for

  • Developers building zero-knowledge proof systems.
  • Blockchain infrastructure teams integrating native cryptographic acceleration.
  • Researchers and engineers working with CPU or GPU cryptography.
  • C++, Rust and Go developers who can manage native build dependencies.

Documented uses

  • Accelerate compute-intensive cryptographic operations.
  • Integrate MSM, NTT and related cryptographic workloads into blockchain infrastructure.
  • Build CPU- or GPU-enabled zero-knowledge computation tools.
  • Compile language bindings for use in C++, Rust or Go applications.
Before you choose

Requirements & limits

The repository is public, open source and MIT licensed. It is provided as a self-hosted library rather than a hosted application. Documented hardware access includes local supported hardware and a Google Colab T4 GPU setup.

  • CMake 3.18 or newer is required when building from source.
  • Nvidia GPU use requires CUDA Toolkit 12.0 or newer; CUDA 11 hardware may function but is not the stated official target.
  • The project provides build paths for C++, Rust and Go.
  • Dependent applications must be able to locate the installed ICICLE libraries at runtime.
  • The Go bindings require a selected supported curve or field during the documented build process.

Check current requirements in the official documentation. Source-based guidance does not mean OpenViST has run or independently tested this project.

Source-based practical guide

Build Icicle’s Go bindings for a selected curve

Build the Go bindings from a cloned ICICLE repository for the BN254 curve.

Before you start

  • Go project using ICICLE v3
  • A cloned ICICLE repository or ICICLE v3 available as a Go dependency
  • A supported build environment
  • A selected curve such as BN254

Steps

  1. Clone the ICICLE repository, or add ICICLE v3 to the Go module and locate it in the Go module cache.

  2. Navigate to wrappers/golang.

  3. Make the supplied build script executable.

  4. Run the build script with the curve flag for BN254.

  5. Import the required runtime, core and curve packages into the Go application.

Expected outcome

The Go bindings are built for the selected curve and can be added to a Go application through the documented packages.

Guide limitations

  • The guide documents the binding build process, not a complete proof-generation workflow.
  • The field and curve must be selected from the values supported by the project documentation.
  • ICICLE libraries must be available for dependent applications to locate at runtime.
Evidence and transparency

Sources & review

Source record details
Source availability
Active
Sources checked
3 October 2026
Original website title
ingonyama-zk/icicle · Official homepage title · retained in its source language