ICICLE Cryptography Library

website·Indexed 34 days ago

https://dev.ingonyama.com/

A high-performance cryptography library designed for accelerated computing across various hardware devices. ICICLE provides an abstraction layer for CPU, CUDA, and Metal backends with API bindings for C++, Rust, and Go. Key features include support for MSM, bilinear pairings, vector operations, and Merkle tree structures. Documentation covers versions 3.4.0 through 4.0.0, including programmer guides for multi-device programming and integration instructions for provers.

Tokens
478.1K
Snippets
2.4K
Records
3.1K
Agent score
38%

What's inside ICICLE

  1. Overview of ICICLE v3 Cryptography Library

    ICICLE v3 is a backend-agnostic cryptography library designed to accelerate Zero-Knowledge Proof (ZKP) operations. It allows developers to build ZK provers and cryptographic applications that can run on various hardware backends, enabling development on CPUs and deployment on high-performance accelerators. Key supported operations include elliptic curve operations, Multi-Scalar Multiplication (MSM), Number Theoretic Transform (NTT), and Poseidon hash.
    # ICICLE v3 Source Code
    https://github.com/ingonyama-zk/icicle
  2. Overview of ICICLE Poseidon Implementation

    ICICLE implements the Poseidon hash function based on the optimized Filecoin version. It is specifically designed for ZK circuits to minimize multiplicative operations and constraints. Unlike standard implementations, ICICLE Poseidon is optimized for GPUs by parallelizing across multiple pre-images (hash-sums) rather than processing a single input vector block-by-block.
  3. Overview of ICICLE device library

    The ICICLE device library acts as an abstraction layer for interacting with hardware devices. It manages device-level tasks including setting the active device, querying memory (free and total), determining the number of available devices, and handling memory allocation. It also provides functionality for copying data to/from devices and managing task queues (streams) to optimize device utilization.
  4. Overview of the FRI Protocol

    The Fast Reed-Solomon Interactive Oracle Proof of Proximity (FRI) protocol is used to verify that a given polynomial has a bounded degree. The Prover provides oracle access to a Reed-Solomon (RS) codeword representing evaluations of a polynomial $F(x)$ of degree $d$ over a domain $L$ of size $n=2^l$. The protocol uses a Fiat-Shamir (FS) scheme to generate non-interactive proofs.
  5. Overview of ICICLE Hashing System

    ICICLE provides a flexible and efficient hashing system optimized for both general-purpose and cryptographic operations (e.g., commitments, Merkle trees, Sumcheck protocol). It supports both CPU and GPU backends with transparent selection. The system allows processing data as strings, arrays, or field elements, with output buffers that automatically adapt to the hashed data size.
  6. Overview of ICICLE core cryptographic primitives

    ICICLE provides a set of core cryptographic primitives optimized for performance, with implementations available for C++, Rust, and Go. The supported primitives include:

    • Multi-Scalar Multiplication (MSM)
    • Number Theoretic Transform (NTT)
    • Vector Operations
    • Polynomials
    • Hashing algorithms
    • Merkle-tree commitment
    • Sumcheck
  7. Overview of ICICLE v3 CUDA backend

    The CUDA backend in ICICLE v3 is a high-performance, closed-source component used to accelerate cryptographic computations on NVIDIA GPUs. It provides optimized libraries for operations including Multi-Scalar Multiplication (MSM), Number Theoretic Transform (NTT), and elliptic curve operations.
  8. Overview of ICICLE Sumcheck Implementation

    ICICLE provides a non-interactive Sumcheck protocol implementation available on both CPU and CUDA backends. It allows a Prover to prove that the sum of a multilinear polynomial (or a combination of multiple multilinear polynomials via a combine function) over the Boolean hypercube equals a specific scalar value. Polynomials must be provided in MLE (evaluation representation) form.

    Implementation Constraints:

    • Polynomial size must be a power of 2.
    • Maximum polynomial size ($2^n$) is limited by the number of polynomials and available device memory (e.g., a 24GB GPU can handle up to $2^{29}$ for 4 polynomials).
    • Generating challenges ($\alpha$) in an extension field is currently unsupported; use_extension_field must be set to false.
  9. Overview of ICICLE v3 Cryptography Library

    ICICLE v3 is a versatile, backend-agnostic cryptography library designed to accelerate Zero-Knowledge Proof (ZKP) operations. It allows developers to build ZK provers and cryptographic applications that can run across various compute backends, including CUDA and CPU, with future support planned for Metal, WebGPU, Vulkan, and ZPU. The library is optimized for compute-intensive operations such as elliptic curve operations, Multi-Scalar Multiplication (MSM), Number Theoretic Transform (NTT), and Poseidon hashing. It supports cross-language compatibility with C++, Rust, and Go (and potentially Python).
    # ICICLE v3 source code is available on GitHub
    https://github.com/ingonyama-zk/icicle
  10. Overview of the ICICLE Polynomial API

    The Polynomial API provides a flexible, backend-agnostic framework for polynomial operations (arithmetic, evaluation, and manipulation). It is designed using modern C++ and abstracts computation and storage specifics, allowing it to work across different hardware backends (e.g., CUDA) without requiring hardware-specific code changes.
  11. Overview of ICICLE v3 GPU Backends

    ICICLE v3 provides high-performance GPU backends for NVIDIA GPUs (via CUDA) and Apple Silicon GPUs (via Metal). These backends accelerate cryptographic computations, specifically optimized libraries for Multi-Scalar Multiplication (MSM), Number Theoretic Transform (NTT), and elliptic curve operations.
  12. Overview of ICICLE cryptography library

    ICICLE is a cryptography library designed to accelerate core cryptographic operations—specifically for Zero-knowledge proofs—across diverse compute backends including CPUs, GPUs, Apple Silicon, and ZPU™. It provides acceleration for Multi-Scalar Multiplication (MSM), Number Theoretic Transform (NTT), modular multiplication, and hashing. It supports a wide range of field, curve, vector, polynomial, MSM, NTT, FRI, and hashing operations across native, extension, and RNS fields.