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.
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.
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
Clone the ICICLE repository, or add ICICLE v3 to the Go module and locate it in the Go module cache.
Navigate to wrappers/golang.
Make the supplied build script executable.
Run the build script with the curve flag for BN254.
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.
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

