Introducing ICICLE: An Open-Source GPU Library for Zero Knowledge Acceleration

By Ingonyama

Zero Knowledge Proofs (ZKPs) are considered one of the greatest achievements of modern cryptography. Accordingly, ZKPs are expected to disrupt a number of industries in the upcoming decade including gaming, the Metaverse, financial services, medical care, insurance, online identity, and more.

The foundations of Web3 are built on decentralized computation, and thus present a unique setting for applied ZK to usher in an era of trustless and privacy preserving services and infrastructure. The “Weapon of Choice” by most Web3 protocols and applications building on ZK is the ZK-SNARKs family of protocols. A known tradeoff with SNARKs is that we get a small proof and a fast verifier at the cost of a resource-hungry prover.

Enter Hardware Acceleration

Like earlier game-changing technologies in history, the road to mass adoption and scale goes through hardware. SNARKs exist in the realm of large finite fields which are not supported natively in CPUs. Math primitives such as multi-scalar multiplication (MSM) and polynomial arithmetic, which dominate the time and memory consumption of a SNARK prover, can benefit from parallelism and specialized algorithms. Today, hardware acceleration of ZK primitives is an exciting and growing field — the design space of ZK protocols and cryptography is shifting towards a hardware-friendliness mindset.

GPUs and ZK

There is still a long way to go before ZK ASICs become feasible. We will dedicate a future post to talk about our ZPU and the roadmap to ASICs.

If we want ZK hardware today we have FPGAs or GPUs at our disposal. GPUs can be considered almost commodity hardware at this point in time; due to their success with graphics and AI, they can be found everywhere and are relatively inexpensive. However, the biggest selling point of GPUs is the software. We talk in particular about CUDA, which makes it easy to write code running on Nvidia GPUs, taking advantage of their highly parallel architecture. Together with the widespread availability of these devices, if we can get GPUs to work on ZK workloads, then we have made a giant step towards accessible and efficient ZK provers.

Introducing ICICLE

At Ingonyama we have been experimenting with GPUs since day one. Some of these experiments were fruitful and have been deployed and used in practice. One example is the recent incentivized Aleo testnet for which we have implemented, with a great help from the zksync team, an entire prover code using CUDA. This prover was in charge for approximately 50% of the network hash power, spanning hundreds of thousands of GPUs, including old Ethereum miners.

Today we are releasing ICICLE, a new CUDA-based GPU library, to support ZK acceleration for applications like Aleo and many others. As an example application, we also present “Fast Danksharding”, our Rust implementation of a Danksharding Builder. For more details on our Danksharding code and how to use it, see our companion blogpost.

Our goal is to facilitate ZK adoption and make GPU the standard hardware for ZK applications. We wrote ICICLE with the following design principles:

  • Superb dev experience: We implemented a Rust wrapper and compatibility with existing higher level ZK libraries primitive representations, such as arkworks
  • Multi-field support: we enable easy switching between fields and elliptic curves, reflecting the current status of our industry, which is still fragmented across different prime fields
  • Clean code: We are committed to maintain the code and add features per community demand. We hope to accept contributions in any shape and form. To that end, we made sure ICICLE is readable and accessible.
  • Performance: This is the juice and the reason why we use GPUs to begin with. The good news is that the library is pretty fast on this initial release. The even better news is that we have A TON of optimizations lined up :)

Be the change!

Together with ICICLE we are happy to officially open our Discord server. This is the place to meet and chat with the dev team, talk about features, bugs, redesign and basically everything around GPU acceleration of ZKPs.

Follow Ingonyama





Join us:

Get our RSS feed