ICICLE Overview
What is ICICLE?
ICICLE is a math library designed to accelerate high-speed cryptography—starting with zero-knowledge proofs (ZKPs)—across multiple compute backends, including GPUs, CPUs, Apple Silicon, and more. Its key strength lies in ultra-fast implementations of cryptographic primitives, enabling developers to significantly reduce proving times with minimal effort.
Key Features
- High-Speed Cryptographic Math: ICICLE delivers optimized performance for core primitives like elliptic curve operations, MSM, NTT, and Poseidon hash—essential building blocks in modern cryptographic protocols.
- Set of Libraries: ICICLE includes a comprehensive set of libraries supporting various fields, curves, and other cryptographic needs.
- Cross-Language Support: Available bindings for C++, Rust, Go, and potentially Python make ICICLE accessible across different development environments.
- Backend Agnosticism: Develop on CPU and deploy across various backends, including GPUs, Metal, specialized hardware, and emerging platforms, based on your project's needs.
- Extensibility: Built for seamless integration and expansion, ICICLE enables you to develop and deploy custom backends and cryptographic primitives.
Evolution from v2 to v3
Originally focused solely on GPU acceleration, ICICLE has evolved. With the release of v3, it now supports multiple backends, making it more versatile and adaptable across diverse hardware environments. Whether you're harnessing the power of GPUs or exploring alternative compute platforms, ICICLE v3 is built to meet your needs.
Who Uses ICICLE?
ICICLE has been successfully integrated and used by leading cryptography companies such as Brevis, Gnark, Zircuit, zkWASM, Kroma Network and others to enhance their ZK proving pipelines.
Don't Have Access to a GPU?
We understand that not all developers have access to GPUs. With ICICLE’s support for CPU and Metal, you can still start building today. To truly experience ICICLE's acceleration, here are some ways to gain access to GPUs:
Grants
At Ingonyama, we are committed to accelerating progress in ZK and cryptography. If you're an engineer, developer, or academic researcher, we invite you to check out our grant program. We can provide access to GPUs or even fund your research.
Google Colab
Google Colab is a great way to start experimenting with ICICLE right away. It provides free access to NVIDIA T4 GPUs—sufficient enough for prototyping and exploring ICICLE’s capabilities.
For a detailed guide on setting up Google Colab with ICICLE, refer to this article.
Vast.ai
Vast.ai offers a global GPU marketplace where you can rent different types of GPUs by the hour at competitive prices. Whether you need on-demand or interruptible rentals, Vast.ai provides flexibility for various use cases. Learn more about their rental options here.
What Can You Do with ICICLE?
ICICLE can be used much like any other cryptography library with the added benefit of acceleration. Thanks to multiple integrations, it's already proven effective across a range of use cases:
Boost Your ZK Prover Performance
If you're a circuit developer facing performance bottlenecks, integrating ICICLE into your prover could offer immediate relief. ICICLE is already integrated with popular ZK frameworks like Gnark and Halo2, enabling GPU acceleration without requiring changes to your existing code.
Integrate with Existing ZK Provers
ICICLE supports selective acceleration, allowing you to target and optimize specific bottlenecks in your prover without a full rewrite.
Build Custom ZK Provers
If you’re building a ZK prover from scratch, ICICLE offers a powerful foundation for creating optimized, scalable systems. Its ability to scale across multiple GPUs and machines makes it ideal for high-performance environments like data centers.
Develop Proof-of-Concepts
ICICLE is also great for prototyping and smaller projects. With bindings for Golang and Rust, you can quickly build libraries implementing specific cryptographic primitives—like a KZG commitment scheme—with minimal overhead.
Get Started with ICICLE
Explore the full capabilities of ICICLE by diving into the Architecture, Getting Started Guide and the Programmer's Guide to learn how to integrate, deploy, and extend ICICLE across different backends.
If you have any questions or need support, feel free to reach out on Discord, GitHub or via support email. We're here to help you accelerate your ZK development with ICICLE.