<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Ingonyama on Medium]]></title>
        <description><![CDATA[Stories by Ingonyama on Medium]]></description>
        <link>https://medium.com/@ingonyama?source=rss-c8015c09c44------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*iPFrmnikwFFMJScYzad5Cw.jpeg</url>
            <title>Stories by Ingonyama on Medium</title>
            <link>https://medium.com/@ingonyama?source=rss-c8015c09c44------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 22 Jun 2026 19:15:44 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@ingonyama/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[ZEROBASE X ICICLE: Accelerating Real-Time ZK Applications at Scale]]></title>
            <link>https://medium.com/@ingonyama/zerobase-x-icicle-accelerating-real-time-zk-applications-at-scale-b0b9451b4172?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/b0b9451b4172</guid>
            <category><![CDATA[zkp]]></category>
            <category><![CDATA[zerobase]]></category>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <category><![CDATA[zkapps]]></category>
            <category><![CDATA[hardware-acceleration]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Thu, 29 May 2025 17:34:46 GMT</pubDate>
            <atom:updated>2025-05-30T05:57:27.154Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/685/1*5RyrzIEYOrmUMMWWdavg4Q.png" /></figure><h3>Introduction</h3><p><a href="https://zerobase.pro/">ZEROBASE</a> is a modular infrastructure stack for building real-time, privacy-preserving zero-knowledge applications. Its composable zkApp framework simplifies deploying scalable Web3 experiences by integrating identity, proof generation, and secure compute.</p><p>Its architecture is built around reusable modules, including proving networks, DSL Circuits and standardized ZK Products, each optimized for interoperability and performance.</p><p>As adoption of its products grew, Zerobase faced scalability challenges in real-time proof generation. To meet these demands, the team integrated <a href="https://dev.ingonyama.com/">ICICLE</a>, Ingonyama’s hardware-accelerated high speed cryptography library, resulting in significantly faster proving times, reduced infrastructure overhead and improved user experience across its applications.</p><h3>Real-Time Proofs at Scale for Consumer-Facing ZK Apps</h3><p>ZEROBASE’s key offerings targets mainstream usage where latency and reliability matter:</p><ul><li><strong>Solana SIM:</strong> Global eSIM with seamless Internet access, which uses ZKPs to verify identity or session continuity without revealing metadata.</li><li><strong>Tako Protocol:</strong> Modular decentralized social layer, which leverages ZKPs for content validation and moderation transparency.</li><li><strong>Firefly:</strong> Web3-native social aggregator, which uses ZKPs to aggregate and rank content in a censorship-resistant way.</li><li><strong>Staking Network:</strong> Zerobase’s staking network leverages real-time ZK proofs to ensure all funds remain in risk-neutral, overcollateralized arbitrage positions. This design enforces capital efficiency and on-chain verifiability. Think of it as a zk-native version of Ethena, optimized for transparency and trust-minimized yield.</li><li><strong>AnySearch:</strong> Privacy-preserving search for Telegram, which relies on ZKPs to verify queries are untampered and anonymous.‍</li><li><strong>zkLogin:</strong> Enables seamless, passwordless authentication by proving control over Web2 accounts (like Google or Apple) using Zero-Knowledge Proofs. It offers a smooth onboarding experience without compromising user privacy, ideal for bringing mainstream users into ZK-powered apps.‍</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*9cj3Vk9I0Eri5_JV.png" /></figure><h3>Key Constraints</h3><ul><li>Sub-second proof times required</li><li>Varying circuit sizes and proving systems</li><li>Users span mobile, edge, and desktop devices‍</li><li>Need for scalable GPU infrastructure without in-house low-level engineering</li></ul><h3>Solution: Integrating ICICLE for Fast, Flexible ZK Acceleration</h3><p>The Zerobase engineering team embedded ICICLE into the proof generation pipeline powering these products.</p><p><strong>Integration highlights:</strong></p><ul><li>Plug-and-play GPU proving across multiple zk backends (e.g., Groth16 for Solana SIM)</li><li>Integration with Zerobase’s web backends and real-time mobile gateways, enabling seamless support for trusted setups and identity primitives like zkPassports.</li><li>No need for manual CUDA tuning, lower level PTX tuning as well; all handled by ICICLE</li></ul><p><strong>Support from Ingonyama included:</strong></p><ul><li>Custom circuit profiling and tuning</li><li>Multi-GPU orchestration help‍</li><li>Continuous performance optimization</li></ul><h3>Results: Real-Time Proving Achieved at Scale</h3><p>Thanks to ICICLE, Zerobase now powers production-grade real-time ZK use cases across its suite.</p><p>‍</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*-alSw422KJDCbCW9.png" /></figure><p><strong>‍Solana SIM: </strong>With ICICLE, proof generation for identity/session verification now fits within a single Solana block — enabling seamless real-time onboarding with minimal delay.</p><p><strong>zkLogin: </strong>zkLogin experienced a 40% latency reduction, dropping from ~400ms to just 250ms. This sub-400ms threshold is critical for creating responsive, privacy-preserving authentication flows based on Web2 credentials.</p><p><strong>Staking Network: </strong>The staking engine saw a 25% speed-up, reducing proving latency while maintaining capital efficiency. This enables timely execution of risk-neutral arbitrage in volatile market conditions.‍</p><blockquote><em>‍</em>“ICICLE gave us the proving power to make our real-time ZK vision possible. Our apps now run faster, cheaper, and at global scale.” — Mirror, CEO, ZEROBASE</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/749/0*TtC2VwGACCUkCWGa" /><figcaption><a href="https://dev.ingonyama.com/">ICICLE Dev Docs</a></figcaption></figure><h3>‍‍Future Plans</h3><p>The Zerobase team plans to deepen its integration of ICICLE across new and upcoming products, with a focus on real-world utility, privacy preservation, and user income generation.</p><ul><li><strong>zkPCDN:</strong> A peer-to-peer content delivery network that leverages ZKPs to fix identity leakage issues while rewarding users for sharing bandwidth — targeting up to $1/day per user.</li><li><strong>Support for Larger Circuits:</strong> Enabling more complex applications with high-throughput proving.</li><li><strong>Cosnarks (as they mature):</strong> Integration planned for decentralized, recursive ZK workflows.</li><li><strong>Next-Gen SNARK/STARK Compatibility:</strong> Continued expansion into emerging proof systems to maintain interoperability and future-proof performance.</li></ul><h3>About Zerobase</h3><p>Zerobase envisions zero-knowledge technology as a tool to empower users in the developing world by building robust, censorship-resistant systems that serve not only as financial rails but also as full-fledged decentralized databases. Learn more at <a href="http://zerobase.pro/">zerobase.pro</a></p><h3>About Ingonyama</h3><p>Ingonyama is the leader in high-speed cryptography acceleration, building the infrastructure and libraries needed to scale Fancy Cryptography. <a href="https://dev.ingonyama.com/">ICICLE</a> is its flagship open-source proving engine, optimized for throughput, developer ergonomics, and hardware abstraction. Learn more at <a href="http://ingonyama.com">Ingonyama.com</a></p><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/career</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b0b9451b4172" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ingonyama and Cornami Announce Strategic Collaboration to Accelerate High-Speed Cryptography]]></title>
            <link>https://medium.com/@ingonyama/ingonyama-and-cornami-announce-strategic-collaboration-to-accelerate-high-speed-cryptography-af2ddb22d765?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/af2ddb22d765</guid>
            <category><![CDATA[zpu]]></category>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <category><![CDATA[zkp]]></category>
            <category><![CDATA[hardware-accelerator]]></category>
            <category><![CDATA[hardware-acceleration]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Wed, 28 May 2025 10:03:50 GMT</pubDate>
            <atom:updated>2025-05-29T04:37:32.104Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Major Leap Forward in Zero-Knowledge Prover Performance through Hardware - Software Integration to Deliver Best-of-Class Solutions</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L4WULlaMh482s9rlY661_w.png" /></figure><p>Tel Aviv, Israel — May 28, 2025 — <em>Ingonyama</em>, a leader in cryptographic acceleration, and <em>Cornami, Inc</em>., the inventor of a next-generation high-performance computing architecture, are pleased to announce a new collaboration that delivers a major leap forward in high-speed cryptography — beginning with Zero-Knowledge Prover (ZKP) acceleration.</p><p>At the center of this partnership is the integration of <strong>Cornami’s FracTLcore® computing fabric</strong>, a massively parallel, dynamically reconfigurable compute architecture, with <strong>Ingonyama’s ICICLE</strong>, a leading cryptographic acceleration library. The result is a solution achieving <strong>10× to 100× improvements</strong> in throughput and energy efficiency compared to GPU-based accelerators, all while preserving a lower total cost of ownership. Together, the companies aim to address the growing computational demands of zero-knowledge proofs and future-proof cryptographic systems, including post-quantum algorithms.</p><h3><strong>Technical Highlights:</strong></h3><p><strong>• ICICLE Cryptographic Acceleration Framework<br></strong>Ingonyama’s ICICLE provides a highly optimized software stack for high-speed cryptography, with an emphasis on zero-knowledge proofs, including pluggable arithmetic backends and algebraic libraries.</p><p><strong>• FracTLcore® Compute Fabric<br></strong>Cornami’s FracTLcore computing fabric is a scalable, instruction-set programmable architecture designed for massive parallelism and compute density. Its reconfigurable nature allows dynamic adaptation to the dataflow and branching characteristics of ZK proofs, overcoming the limitations of SIMD-based GPU and fixed-function ASIC designs.</p><p><strong>• System-Level Optimization<br></strong>The solution integrates tightly across the hardware-software boundary to deliver high utilization efficiency even under complex circuit topologies and large-scale multi-proof batching scenarios.</p><p>“Our software is purpose-built for high performance cryptography, and when paired with the right hardware, it delivers a best-in-class solution,” said Omer Shlomovits, CEO of Ingonyama. “Cornami’s architecture unlocks the parallelism that ZKPs demand. As a hardware backend within our modular ICICLE framework, it forms a solution we call the ZPU™. In essence, it’s our software, powered by Cornami’s computing fabric, delivering acceleration and scale for cryptographers working at the frontier of fancy cryptography.”</p><p>“The Cornami architecture is uniquely designed to meet the complexity demands of next-generation post-quantum cryptographic algorithms,” said Paul Master, CTO of Cornami. “When combined with highly tuned compute intensive algorithms such as zero knowledge proofs via Ingonyama’s ICICLE, our FracTLcore Computational Fabric delivers unprecedented scalability for performance and efficacy — delivering solutions for secure communication, identity, and data protection in a post-quantum world. As cryptographic standards evolve, our technology provides the flexibility and computational power needed to stay ahead of both performance requirements and evolving standards.”</p><p>Zero-knowledge proofs are increasingly critical to decentralized systems, privacy-preserving technologies, and blockchain scalability — but their intensive computational requirements have been a barrier to adoption. The partnership also lays the groundwork for broader cryptographic cooperation, including lattice-based and post- quantum cryptographic protocols. Both companies are actively engaging with ecosystem partners, enterprises, and early adopters to define and deliver compelling solutions for high-performance cryptography. One such collaborator is Brevis <a href="https://docs.brevis.network/">Pico</a>, who joins as the first design partner to help validate and extend ZPU’s capabilities to ZKVMs. These partnerships are critical to driving the industry forward at a time when the world is demanding real-time, more efficient, and privacy-preserving computation.</p><p>This collaboration marks a major step forward in the evolution of dedicated cryptographic solutions.</p><p><strong>Learn more about ICICLE:</strong> <a href="https://dev.ingonyama.com/">https://dev.ingonyama.com</a></p><p><strong>Learn more about Cornami:</strong> <a href="https://cornami.com/fractlcore">https://cornami.com/fractlcore</a></p><p>Interested in early access to the ZPU solution? Apply to join our Design Partner Program: <a href="http://zpu@ingonyama.com">zpu@ingonyama.com</a></p><h4>About Cornami</h4><p>Cornami is focused on the deployment of intelligent computing in real-time environments. The company has developed a highly parallel, reconfigurable computational fabric to address the shift in computing needs for the ever-increasing massive datasets of today, and into the future. This game-changing, software-defined technology delivers unprecedented linear scalability from thousands of cores on a single chip to millions across a system to meet performance, cost, and power requirements for customers and partners. Learn more at <a href="http://www.cornami.com.">www.cornami.com.</a></p><h4>About Ingonyama</h4><p>Ingonyama combines expertise in hardware, software, and algorithms to enable the deployment of privacy-preserving technologies at production scale. Learn more at <a href="http://www.ingonyama.com.">www.ingonyama.com.</a></p><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/career</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=af2ddb22d765" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Updated! Ingonyama Research Grants 2025]]></title>
            <link>https://medium.com/@ingonyama/updated-ingonyama-research-grants-2025-455984201f3a?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/455984201f3a</guid>
            <category><![CDATA[cryptography]]></category>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <category><![CDATA[grant]]></category>
            <category><![CDATA[grant-programs]]></category>
            <category><![CDATA[acceleration]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Sun, 06 Apr 2025 11:01:28 GMT</pubDate>
            <atom:updated>2025-04-23T07:41:14.018Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/685/0*8NYu4pQNzziEVLyS.png" /></figure><blockquote><strong><em>April 2025 Update: <br>We’ve added two new case studies to this announcement, highlighting real-world applications of ICICLE, made possible through our Research Grants.</em></strong></blockquote><p>‍</p><blockquote><strong><em>Feb 2025 Update:</em></strong><em> We have added a special bonus for algorithms leveraging </em><a href="https://dev.ingonyama.com/icicle/primitives/sumcheck"><em>ICICLE sumcheck</em></a><em>.</em>‍</blockquote><p>In early 2024, we launched our inaugural <a href="https://medium.com/@ingonyama/icicle-for-researchers-grants-challenges-9be1f040998e">grants program</a>, offering $100,000 to support research involving our high-speed cryptography library, ICICLE.</p><p>Now, we’re excited to announce our second grants program — another $100,000 dedicated to researchers. <em>Details below!</em>‍</p><h3>Background: Who Are We? and What Is ICICLE?</h3><p>Ingonyama is a next-generation hardware acceleration company committed to democratizing access to high-speed cryptography and advancing privacy-enhancing technologies.</p><p><a href="https://dev.ingonyama.com/icicle/overview"><strong>ICICLE</strong></a> is our flagship product — a new math library designed for cryptographers to implement algorithms and protocols for high-speed cryptography, offering exceptional performance and a seamless developer experience.</p><p>Its design is straightforward:</p><ul><li><strong>Frontend APIs:</strong> We offer a comprehensive set of APIs, including vectors, polynomials, and hash functions, alongside specialized operations like MSMs, NTTs, Sumchecks, FRI, ECNTT, and more.</li><li><strong>Access Options:</strong> These APIs are accessible directly in C++ or through Golang and Rust wrappers, ensuring flexibility for diverse development needs.</li><li><strong>Backend:</strong> ICICLE supports multiple hardware devices and accelerators, including ARM, x86, NVIDIA GPUs, Apple Silicon, and more — all delivering maximum performance. It is embarrassingly simple to switch, offering instant multi-platform support.‍</li></ul><p>With ICICLE, every line of code has the flexibility to run on different target hardware as needed. Onboarding is seamless — start by writing your code locally on your machine. The real magic unfolds when you see that same code, unchanged, achieve orders-of-magnitude performance on data center GPUs — or run effortlessly on an iPhone.‍</p><h3>The Goal: Outperform Existing Research Benchmarks</h3><p>We’re looking for a collaborative adventure! Choose any research paper you like, identify an algorithm implemented in the paper with reported benchmarks, and re-implement it using ICICLE. The greater your improvement over the original paper’s implementation, the larger the grant you’ll receive.‍</p><h3>How to Apply</h3><p>Applying is straightforward. Here’s how it works:</p><ol><li>Applying is straightforward. Here’s how it works:</li><li><strong>Fill out the form:</strong> Start by telling us about your idea through the <a href="https://forms.monday.com/forms/d0ed9699146d61e3b5a649b56ba2c663?r=use1">form</a>, which will ask you to briefly describe your proposal, e.g., “I want to implement Whir in ICICLE” (note: this one’s already taken by Giacomo).</li><li><strong>Collaborate:</strong> We’ll discuss and finalize the performance milestones together. Expect some back-and-forth to align on the project goals.</li><li><strong>Approval:</strong> Once we’re aligned, we’ll greenlight the project.</li><li><strong>Get started:</strong> Begin your work with our support and drive it toward success!</li></ol><p>Just like last year’s grants program, our team is here to provide end-to-end support on your journey to success. From access to hardware and ongoing support from our developers to collaborating with our research group on algorithms, we’ve got you covered. We also value detailed write-ups, and promise to showcase your work across our social channels to give it the recognition it deserves.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4-I-UmOfqbJp2zzySgAvYA.png" /></figure><h3>Case Study 1: Accelerating Threshold Encryption with ICICLE</h3><p>The papers Batched Threshold Encryption (<a href="https://eprint.iacr.org/2024/1516">https://eprint.iacr.org/2024/1516</a>) and Silent Threshold Encryption (<a href="https://eprint.iacr.org/2024/263">https://eprint.iacr.org/2024/263</a>) introduce a practical protocol to achieve <strong>mempool privacy</strong>, ensuring transaction content remains hidden until it is included in a block. Two core innovations of the protocol are:</p><ul><li><strong>Silent Threshold Encryption</strong> — Clients encrypt their transactions independently, without interacting with decryption servers or leaking metadata. This results in a non-interactive and unlinkable submission process.</li><li><strong>Batched Threshold Decryption</strong> — Once a batch of transactions is selected, each server computes a single partial decryption share for the entire batch. These shares are then combined to recover the plaintexts, keeping communication efficient and fixed regardless of batch size.</li></ul><p>The authors began by implementing threshold encryption techniques using the Arkworks ecosystem in Rust. After benchmarking their solution, they applied for a research grant from Ingonyama to accelerate performance using ICICLE. The implementation work was done by <a href="https://x.com/gvamsip">Guru Vamsi Policharla</a> from University of California, Berkeley,</p><p>The threshold encryption protocols rely heavily on pairing-based cryptography and operations like multi-scalar multiplication (MSM) and fast Fourier transforms (FFT) over fields and elliptic curves — precisely the type of workload ICICLE’s CUDA backend is optimized for.</p><p>After migrating their code to ICICLE, Vamsi achieved up to <strong>80x</strong> speedup over their original single-threaded Rust implementation. And they’re not stopping there — With native pairing support coming soon to ICICLE, they anticipate<strong> 150–200x</strong> performance improvements in the near future.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*pkwZ1d5d_AGB_rkb.png" /></figure><p>Guru shared, “<em>The vision of ICICLE is great — allowing GPU speedups without GPU experience.” This is exactly what we had in mind when building ICICLE: empowering cryptographers with simple, portable access to high performance</em>.‍</p><h3>Case Study 2: Collaborative zk-SNARKs with ICICLE</h3><p>To enable scalable and efficient delegation of ZKPs, a team of researchers from Zhejiang University, led by <a href="https://scholar.google.com.hk/citations?user=d168JmUAAAAJ&amp;hl=zh-CN">Xuanming Liu</a> (Hins), introduced a fully distributed collaborative zk-SNARK protocol. Their system, presented in the paper <a href="https://eprint.iacr.org/2024/940">“Scalable Collaborative zk-SNARK and Its Application to Fully Distributed Proof Delegation”</a>, allows multiple cloud servers to jointly compute zk-SNARK proofs without relying on a centralized, powerful prover. The paper introduces several new primitives for collaborative proof generation:</p><ul><li><strong>Collaborative Sumcheck</strong> — enabling joint computation of polynomial sums across multiple parties</li><li><strong>Collaborative Productcheck</strong> — a protocol for verifying product constraints in distributed settings</li><li><strong>Collaborative Multilinear Polynomial Commitments </strong>— allowing distributed commitment and opening of multivariate polynomials</li><li><strong>Distributed PST (Permcheck)</strong> — used to verify permutation constraints in parallel</li></ul><p>These primitives serve as building blocks for a collaborative version of HyperPlonk, where the prover is no longer a single entity but a distributed network of participants — bringing zk proof generation to a more scalable and resilient architecture.</p><p>To put this into practice, the team turned to ICICLE for GPU acceleration. When Hins approached us, he shared, “I plan to use ICICLE to implement collaborative zk-SNARKs for HyperPlonk. This project serves both engineering and academic purposes. With ICICLE acceleration, we can develop a truly practical industrial solution.”</p><p>Their plan involved rewriting key components using ICICLE leveraging its optimized support for field arithmetic and MSM. ICICLE already supports the elliptic curves the project depends on — BN254 and BLS12–381 — ensuring full compatibility.</p><p>After porting parts of the system, the team observed at the MLE commitment up to <strong>60x</strong> speedup and at the MLE open up to <strong>6x</strong> speedup compared to their Arkworks-based version.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/962/0*w-Q3S8DMBhYqhjtU.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/890/0*BeAMP5FbGoOQPF4T.png" /></figure><p>MLE (Multilinear Extension) Commitment refers to the process of committing to a multivariate polynomial that represents a computation over a large domain, typically in the Sumcheck or Productcheck protocol. It allows a prover to compactly represent an entire computation trace.</p><p>MLE Open is the step where the prover reveals and proves the value of the committed polynomial at a specific point, enabling the verifier to check its correctness without seeing the full polynomial.</p><p>Hins shared, “<em>We found that the GPU indeed achieves a significant speedup, indicating that hardware acceleration is feasible. We are pleased to see that the GPU’s performance is quite satisfactory</em>”.</p><h3>FAQ</h3><p><strong>Q: What should be the length of a project?</strong><br><strong>A: </strong>There’s no strict rule for project length — it can span a weekend or extend across multiple months and iterations.‍</p><p><strong>Q: How much is the average grant amount?</strong><br><strong>A: </strong>This will be determined on a case-by-case basis, as we consider multiple factors when evaluating the quality of a proposal. That said, it would be exciting if we ended up with a linear scale: for example, a 1x improvement might earn $1k, while a 10x improvement could receive $10k.‍</p><p><strong>Q: In what currency will grants be paid?</strong><br><strong>A:</strong> USDC.‍</p><p><strong>Q: If I am authoring novel research and want to use ICICLE, can I apply?</strong><br><strong>A: </strong>The grant is intended for new implementations of existing literature. However, you are welcome to apply as the author of the original paper. If you’re writing a new research paper and not considering ICICLE as your default, we’d love to hear why and improve.‍</p><p><strong>Q: What’s in it for Ingonyama?</strong><br><strong>A: </strong>This is a great question, so we asked Omer, our CEO. Here’s what he said:<em> “We stand on the shoulders of giants: There is nothing that brings us more joy than reinvesting our earned money into cryptography research. We believe we’ve built a product that can help cryptographers achieve better results while saving time and costs. The most important part of ICICLE’s development lifecycle is user feedback. So, in a way, this grant is part of our tuition.”</em>‍</p><p><strong>Q: Is ICICLE good enough?</strong><br><strong>A:</strong> There’s only one way to find out! :) On a more serious note, ICICLE has come a long way and now supports a <a href="https://www.ingonyama.com/blog/icicle-case-study-accelerating-zk-proofs-with-brevis">large</a> <a href="https://www.ingonyama.com/blog/how-icicle-helps-grow-the-zkwasm-ecosystem">and</a> <a href="https://www.ingonyama.com/blog/icicle-case-study-accelerating-zk-proofs-with-kroma-network">growing</a> ecosystem of applications. Even a performance gain of less than 1x — especially if it highlights areas where ICICLE can be improved — will still be rewarded.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*S3ZM3dbjSypDZcFuuFNX6w.png" /></figure><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/career</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=455984201f3a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[BaseFold±: A Simple Improvement to BaseFold’s Multilinear Polynomial Commitment Scheme using…]]></title>
            <link>https://medium.com/@ingonyama/basefold-a-simple-improvement-to-basefolds-multilinear-polynomial-commitment-scheme-using-e150e0f13d85?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/e150e0f13d85</guid>
            <category><![CDATA[fri-protocol]]></category>
            <category><![CDATA[polynomial]]></category>
            <category><![CDATA[cryptography]]></category>
            <category><![CDATA[sum-check-protocol]]></category>
            <category><![CDATA[commitment-scheme]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Sun, 06 Apr 2025 08:51:33 GMT</pubDate>
            <atom:updated>2025-04-06T08:51:33.298Z</atom:updated>
            <content:encoded><![CDATA[<h3><strong>BaseFold±:</strong> A Simple Improvement to BaseFold’s Multilinear Polynomial Commitment Scheme using Point-Check</h3><p>By <a href="https://x.com/yuval_domb">Yuval Domb</a></p><p>In <a href="https://eprint.iacr.org/2023/1705">BaseFold</a>, the authors make a key observation about the connection between multilinear and univariate polynomials, and the <a href="https://drops.dagstuhl.de/storage/00lipics/lipics-vol107-icalp2018/LIPIcs.ICALP.2018.14/LIPIcs.ICALP.2018.14.pdf">FRI</a> protocol, leading to the construction of a new <strong>multilinear</strong> Polynomial Commitment Scheme (PCS).</p><p><a href="https://hackmd.io/@Ingonyama/point-check">Read the full blogpost on HackMD</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QORnSN5LOp91T1DYs_5nKA.png" /></figure><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/careers</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e150e0f13d85" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Hardware-friendliness of HyperPlonk, Part2]]></title>
            <link>https://medium.com/@ingonyama/hardware-friendliness-of-hyperplonk-part2-9799518ab733?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/9799518ab733</guid>
            <category><![CDATA[zkp]]></category>
            <category><![CDATA[hardware]]></category>
            <category><![CDATA[gpu]]></category>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <category><![CDATA[sum-check-protocol]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Tue, 01 Apr 2025 13:42:57 GMT</pubDate>
            <atom:updated>2025-04-01T13:42:57.444Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QrzLs0IAk_I5a9jTFbCE7A.png" /></figure><p>This article is a follow-up to our <a href="https://hackmd.io/@omershlo/rJhgKJPtj">earlier post</a> on the hardware-friendliness of HyperPlonk, expanding on claims made about the Sumcheck protocol. In that post, we argued that the performance bottleneck in Sumcheck stems not from raw computation, but from memory access patterns. This is a critical distinction: ideally, cryptographic protocols like Sumcheck should be compute-bound rather than memory-bound, since modern hardware — particularly GPUs and specialized accelerators — is optimized for high-throughput arithmetic but often struggles when constrained by memory bandwidth.</p><p>This memory-bound behavior is especially evident in the use of Number Theoretic Transforms (NTTs), a fundamental building block for polynomial operations in Sumcheck. Although NTTs are highly parallelizable, they require frequent and structured access to large arrays of field elements, placing significant pressure on memory subsystems and cache hierarchies. As a result, even when the underlying arithmetic is relatively inexpensive, memory access overhead can dominate overall performance.</p><p>Addressing this limitation calls for optimized memory layouts, hardware-aware scheduling strategies, and rethinking systems design to push hardware toward its computational limits, not its memory ceilings.</p><p>This follow-up aims to empirically validate our earlier claim by profiling the Sumcheck implementations within <a href="https://github.com/ingonyama-zk/icicle">ICICLE</a>. Through this analysis, we offer concrete evidence that memory access is indeed the dominant bottleneck, and provide insights that can inform future optimization and hardware acceleration strategies for Sumcheck and similar protocols.</p><p><a href="https://hackmd.io/@Ingonyama/Hardware-Friendliness-HyperPlonk-Part2">Read the full post on HackMD</a></p><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/careers</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9799518ab733" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ICICLE-Snark: The Fastest Groth16 Implementation in the World]]></title>
            <link>https://medium.com/@ingonyama/icicle-snark-the-fastest-groth16-implementation-in-the-world-00901b39a21f?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/00901b39a21f</guid>
            <category><![CDATA[rustlang]]></category>
            <category><![CDATA[zkp]]></category>
            <category><![CDATA[prover]]></category>
            <category><![CDATA[groth16]]></category>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Tue, 18 Mar 2025 14:21:07 GMT</pubDate>
            <atom:updated>2025-03-18T16:42:48.100Z</atom:updated>
            <content:encoded><![CDATA[<p>By <a href="https://x.com/0xemirsoyturk">Emir Soytürk</a></p><p><a href="http://github.com/ingonyama-zk/icicle-snark">ICICLE-snark</a> is now the <strong>fastest Groth16 prover implementation</strong>, delivering record-breaking performance that unlocks new possibilities for ZK applications. This note contains benchmarks, manual and other treats.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*n57IoqnNEVAC-1DksI0e2g.png" /></figure><h3>Intro</h3><p>Zero-knowledge proofs have rapidly advanced in recent years, with Groth16 emerging as one of the most widely used proving systems with characteristics ideal for blockchains:</p><ul><li>Verification requires only three pairings, making it one of the fastest ZK proofs to verify.</li><li>It generates constant-size proofs, in just three group elements, which reduces on-chain storage and transaction costs compared to other proving systems.</li><li>While the prover side is computationally heavy, hardware acceleration dramatically speeds it up, making Groth16 feasible even for high-throughput applications.</li></ul><p>The biggest trade-off of <strong>Groth16</strong> is that a trusted setup is required per circuit. While this disadvantage remains popular, it makes Groth16 ideal for blockchain applications and beyond — a single proof can attest to the correctness of a complex computation without revealing inputs, and anyone can verify it with only three pairings.</p><h3>How Groth16 Works</h3><p>Generating a Groth16 proof requires performing intensive arithmetic over large prime fields and elliptic curves​. In the scope of this blog, we won’t delve into QAP and R1CS. We can divide the rest of the prover into 2 steps: evaluate quotient and proof. As we can see these two steps contain 3 IFFT, 3 FFT, and 5 MSM. In addition to these, there is also element-wise multiplication and subtraction. These 2 big primitives (MSM and NTT) dominate the proving process. Multi-scalar multiplication (<strong>MSM</strong>) and Fast Fourier Transform-based polynomial evaluation (FFT/NTT). These two primitives are responsible for most of the execution time. <a href="https://www.ingonyama.com/blog/hardware-review-gpus-fpgas-and-zero-knowledge-proofs#:~:text=Proof%20systems%20contain%20two%20main,30">MSM can consume ~60% of proving time and FFT about ~30%​</a>.</p><p>The prover needs two files: witness and zkey.</p><ul><li>The witness file contains the intermediate values for a given input, based on the circuit. This file contains both public and private inputs. This file is unique per input.</li><li>The zkey file is a combination of the circuit, trusted setup, proving, and verification keys. This file is generated during the trusted setup phase and is unique per circuit.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*PzoKC_J1munMCtTx" /></figure><h3>The State of Existing Groth16 Implementations</h3><p>Currently there are many Groth16 implementations. The most popular ones are:</p><ul><li><a href="http://github.com/iden3/snarkjs">SnarkJS</a> with accessibility and ease of use. It also provides developers with 3 different zkSNARK proof systems and also setup and verification commands.</li><li><a href="http://github.com/iden3/rapidsnark">Rapidsnark</a> is a prover written with c++ and assembly. This is approximately 4–10x faster than snarkjs implementation.</li><li><a href="http://github.com/arkworks-rs/groth16">Arkworks</a></li><li><a href="https://github.com/lambdaclass/lambdaworks/tree/main/provers/groth16">Lambdaworks</a></li><li><a href="https://github.com/Consensys/gnark">Gnark</a></li></ul><h3>Breaking the Speed Barrier with ICICLE</h3><p><a href="https://dev.ingonyama.com/icicle/overview">ICICLE</a> is a cutting-edge cryptography library engineered to accelerate advanced algorithms and protocols — starting with ZKPs — across diverse compute backends, including GPUs, CPUs, Metal, and more. It supports multiple frontends in C++, Rust, and Go, allowing seamless integration across different development environments. With a single codebase, you can leverage three popular languages and run on multiple hardware platforms.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*764MxLUce3vEJJoi" /></figure><h4><strong>Accelerating Groth16</strong></h4><p>We first approached this problem by only integrating MSM and NTT. However, due to data transfer and data conversion, we couldn’t reach the performance we wanted. As a solution, we decided to build a Groth16 prover using ICICLE from scratch. The reference code was <a href="http://github.com/iden3/snarkjs">snarkjs</a> repository built by <a href="http://github.com/iden3">iden3</a> team. This allowed us to build an optimized prover that can work with existing zkey files. So anyone can easily switch to <a href="http://github.com/ingonyama-zk/icicle-snark">ICICLE-snark</a> from snarkjs or rapidsnark. The primitives explained in the “How Groth16 Works” section are already implemented and well-optimized in the ICICLE library.</p><p>Another problem with existing tools is that they are designed to be used as CLI. That means if you’re using these tools to prove the same circuits multiple times then there are many values you can cache and reuse like the proving key, bases, and NTT domain. To utilize this cache trick we developed our prover as a background worker and Rust library.</p><h4>Data Conversion and Data Transfer</h4><p>One of the biggest problems with moving any code to the GPU is data transfer and conversion. To be able to use ICICLE and utilize CUDA you need to convert your data to ICICLE type and move it to the device. In most cases preparing data for the CUDA kernel will take lots more time than executing the kernel itself.</p><p>Data conversion can take too much time due to calling `from` functions 2^n times. In most cases it’s possible and better to alter the memory directly with `transmute` calls in Rust. This allows the developer to change the type of the existing memory if the developer can guarantee it’s okay to use. It’s practically 100% speedup because `transmute` calls take only 20–30 ns while the same conversion takes 100ms when done in a naive way.</p><p>Data transfer speed is limited by your hardware. So it’s crucial to avoid data transfer if it’s possible. This was the initial motivation for us to build Groth16 from scratch instead of simply replacing MSM and NTT calls in existing implementations.</p><h4>MSM and NTT</h4><p>MSM and NTT are cryptographic primitives that are being used in many proving systems like Groth16, Hyrax, Plonk and Libra. ICICLE is providing fast implementations for multiple backends (CPU, CUDA, Metal, and more are upcoming). Replacing 5 MSMs with ICICLE MSM gave 63x improvement on average (size=2²²) and replacing 3 IFFTs and 3 FFTs with ICICLE FFT API gave 320x improvement on average (size=2²²)</p><h4>VecOps</h4><p>There are many places we need to multiply and subtract two vectors element-wise. These tasks are highly parallelizable on GPU. Calling <a href="https://dev.ingonyama.com/icicle/primitives/vec_ops">VecOps API</a> in ICICLE instead of using CPU to processes long arrays gave 200x boost on average (size 2²²)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/928/1*Fl-o-pWDtHXrdYC8WtFF2w.png" /></figure><h4>Cache</h4><p>In many applications (like a proving service or L2 rollup), you’ll reuse the same circuit and proving key for many proofs. ICICLE utilizes this by keeping the data in device memory and caching computations To take advantage of this we introduced CacheManager. It first computes values that are dependent on zkey file and save it by mapping with zkey file. If it’s computed previously then the code is using it again without computing.</p><p><strong>CACHE Improvement</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1_J5co60FMYLCYU_vnmD6A.png" /></figure><h3>Performance Benchmarks &amp; Results</h3><p>We benched the code on 2 different setups:</p><ul><li>4080 &amp; i9–13900K</li><li>4090 &amp; Ryzen 9 9950X</li></ul><p>We used the circuits in the MoPro’s benchmark <a href="https://github.com/zkmopro/benchmark-app/tree/main/mopro-core/examples/circom">repository</a> to compare the proving systems.</p><ul><li>Complex Circuits: These circuits are for pure benchmarking purposes. It allows us to compare the performance of the provers based on a number of constraints.</li><li><a href="https://documentation.anon-aadhaar.pse.dev/docs/intro">Anon Aadhaar</a>: Anon Aadhaar is a zero-knowledge protocol that allows Aadhaar ID owners to prove their identity in a privacy preserving way.</li><li><a href="https://aptos.dev/en/build/guides/aptos-keyless/introduction">Aptos Keyless</a>: Aptos Keyless lets users create self-custodial Aptos accounts with OIDC credentials (e.g., Google, Apple) instead of secret keys or mnemonics.</li></ul><p>As mentioned before, in production it’s more likely that a project is going to prove the same circuits. To utilize this we are using the Cache system. However the other tools we compare are CLI so they terminate after one proving. To keep things fair we provide both benchmarks with and without cache.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*LuSNQC2z0B6QsHun" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xKxXbePhgZH369du" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3RUfn2l1QIuktjYg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*XX2n0gT0eK4R8vuq" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*nCSWFqORWPrvI_sT" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0rfB-YpyO2677jrK" /></figure><h3>How to Integrate ICICLE</h3><p>You can now start integrating ICICLE-snark into your codebase. Depending on your codebase you have two options.</p><h3>Use it in Rust Project</h3><p>If your codebase is written in Rust then best practice is to use the prover as Rust Crate. You just need to add it to your dependencies by calling `cargo add ICICLE-snark`. After that you can import the proving function and create a CacheManager instance then start proving by providing paths of witness and zkey files.</p><pre>use icicle_snark::{groth16_prove, CacheManager};<br><br>fn main() {<br>    let mut cache_manager = CacheManager::default();<br>    <br>    let witness = &quot;witness.wtns&quot;;<br>    let zkey = &quot;circuit_final.zkey&quot;;<br>    let proof = &quot;proof.json&quot;;<br>    let public = &quot;public.json&quot;;<br>    let device = &quot;CUDA&quot;; //replace with CPU or METAL if needed<br>        <br>    groth16_prove(<br>        &amp;witness, <br>        &amp;zkey, <br>        &amp;proof, <br>        &amp;public, <br>        device, <br>        &amp;mut cache_manager<br>    ).unwrap();<br>}</pre><h3>Use it in Other Programming Languages</h3><p>If your codebase is written in a different programming language you can still use ICICLE prover. In this way you need to fetch the repository and run it in `worker` mode then communicate with it in any codebase. We shared an example of how to do that under <a href="http://github.com/ingonyama-zk/icicle-snark">ICICLE-snark/examples</a> directory.</p><h3>ICICLE Grant Program</h3><p>We’re here to support innovative projects using ICICLE. If you have a unique idea, let’s <a href="https://www.ingonyama.com/blog/ingonyama-research-grants-2025">explore the possibility of a grant</a> to accelerate your work.</p><p>Choose any research paper, identify an algorithm with reported benchmarks, and re-implement it using ICICLE. The more you improve upon the original implementation, the larger the grant you’ll receive.</p><p>👉 <a href="https://dev.ingonyama.com/icicle/overview">ICICLE Developer Docs</a></p><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/career</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=00901b39a21f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ICICLE Goes Metal: v3.6]]></title>
            <link>https://medium.com/@ingonyama/icicle-goes-metal-v3-6-163fa7bbfa44?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/163fa7bbfa44</guid>
            <category><![CDATA[apple]]></category>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <category><![CDATA[gpu]]></category>
            <category><![CDATA[merkle-tree]]></category>
            <category><![CDATA[metal]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Mon, 17 Mar 2025 13:14:28 GMT</pubDate>
            <atom:updated>2025-03-18T09:26:33.623Z</atom:updated>
            <content:encoded><![CDATA[<p>We are excited to introduce <a href="https://dev.ingonyama.com/"><strong>ICICLE v3.6</strong></a>, bringing support for the Metal backend! This update expands ICICLE’s multi-backend capabilities, making it even more versatile across diverse hardware platforms.</p><p>For macOS users, ICICLE now leverages Metal acceleration, allowing seamless performance improvements without any code modifications — your existing APIs will run smoothly on Metal.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*WQGi8PCejR_rlGwzX5L2cg.png" /></figure><h3>Getting Started is Simple</h3><p>1. Download &amp; extract ICICLE v3.6<br>2. Set the ICICLE_BACKEND_INSTALL_DIR environment variable<br>3. Run your existing code — now accelerated with Metal.<br>4. Enjoy the performance boost.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/930/1*tgFB1Y7wYDApSLHXuRDtxQ.png" /><figcaption>ICICLE’s new logo</figcaption></figure><h3>What’s New in ICICLE v3.6</h3><h4>Metal Backend Support:</h4><ul><li>Now operable with C++ and Rust frontends.</li><li>Supported operations on Metal: MSM, NTT, and Sumcheck.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0lXh3vhXi9z4WQqI" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*91FbPjMqv8sjKRPH" /><figcaption>MSM and NTT: CPU vs Metal in v3.6</figcaption></figure><h4><strong>Current limitations</strong></h4><p>○ API implementations for Poseidon &amp; Poseidon2 hashes, Merkle tree, Sumcheck, and G2 Montgomery conversions are not yet included but will be added in future updates.</p><p>○ Performance Optimizations — We are actively working on refining these primitives to further enhance efficiency in upcoming versions.</p><h4>Sumcheck Enhancements:</h4><ul><li>Full API coverage on Program — The Rust wrapper now supports any user-defined Program as a combination function for the Sumcheck protocol.</li><li>Improved CPU Sumcheck — Optimized algorithm delivers significantly better performance.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ZjpV6TU4E5a7OgRy" /></figure><ul><li>ICICLE Sumcheck Grant — We’re excited to support innovative projects leveraging Sumcheck! If you have a unique idea, <a href="https://www.ingonyama.com/blog/ingonyama-research-grants-2025">let’s discuss the possibility</a> of a special grant for your work.</li></ul><h4>Lattice Advancements</h4><ul><li>LaBRADOR protocol ring, RNS VecOps, and NTT have already been integrated.</li><li>These enhancements pave the way for further lattice-based cryptographic developments.</li></ul><p>For more details, check out <a href="https://github.com/ingonyama-zk/icicle/releases/tag/v3.6.0">the full release notes</a>.</p><h3>Future Releases and Upcoming Work</h3><p>The initial Metal components are now in place, marking a major milestone in ICICLE’s expansion. In upcoming releases, support for Merkle trees and hash functions will be added, along with further optimizations to enhance overall performance.</p><p>On the lattice development front, we are focusing on expanding ring APIs, including decomposition, matrix multiplication, and advancements in the Greyhound ring. These improvements will strengthen ICICLE’s capabilities, paving the way for more efficient lattice-based cryptographic applications.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FeG3Z6YyZHQI%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DeG3Z6YyZHQI&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FeG3Z6YyZHQI%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/130a5af25ceb23b14af2f38b0915565a/href">https://medium.com/media/130a5af25ceb23b14af2f38b0915565a/href</a></iframe><h4>Exploring Groth16 with ICICLE</h4><p>Our next blog post will dive into Groth16, the most widely used ZK proving scheme. We’ll showcase how ICICLE delivers the fastest implementation available. Stay tuned — this one is worth the wait!</p><h4>Upcoming ICICLE Release</h4><ul><li>ICICLE v3.7 — Introducing FRI support! Want to experiment with the next version? Reach out to us at <a href="mailto:hi@ingonyama.com">hi@ingonyama.com</a>.</li></ul><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/career</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=163fa7bbfa44" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Barrett-Montgomery duality and a New Multi-Precision Modular Reduction Scheme with only n2+1…]]></title>
            <link>https://medium.com/@ingonyama/the-barrett-montgomery-duality-and-a-new-multi-precision-modular-reduction-scheme-with-only-n2-1-b40ede4792da?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/b40ede4792da</guid>
            <category><![CDATA[cryptography]]></category>
            <category><![CDATA[breakthrough]]></category>
            <category><![CDATA[ingonyama]]></category>
            <category><![CDATA[algorithms]]></category>
            <category><![CDATA[reduction-techniques]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Thu, 06 Mar 2025 12:36:39 GMT</pubDate>
            <atom:updated>2025-03-06T12:38:02.747Z</atom:updated>
            <content:encoded><![CDATA[<h3>The Barrett-Montgomery duality and a New Multi-Precision Modular Reduction Scheme with only n²+1 Digit Multiplications</h3><p>by Yuval Domb<br>Yuval@ingonyama.com</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JEFqRgZ-cnLyentC3geM5Q.png" /></figure><p>Multiplication in prime fields with large unstructured primes is a fundamental building block of modern cryptography. Modular multiplication of two field elements <em>a,b∈Fₚ</em> requires computing their full product <em>ab</em> and reducing it modulo <em>p</em>. The two most widely used reduction algorithms are due to <a href="https://en.wikipedia.org/wiki/Barrett_reduction">Barrett</a> and <a href="https://en.wikipedia.org/wiki/Montgomery_modular_multiplication">Montgomery</a>, with the latter operating in a permuted coset of the field (Montgomery form).</p><p>Single-precision implementations of both algorithms typically require three full multiplications: one for <em>ab</em> and two for the reduction. With schoolbook multiplication, each full multiplier costs <em>n²</em> digit multiplications, resulting in a total of <em>2n²</em> for the reduction. Faster methods like <a href="https://en.wikipedia.org/wiki/Karatsuba_algorithm">Karatsuba</a> can decrease the number of digit multiplications but introduce significant overhead in additions and complex internal dependencies, making them less suitable for CPU-based implementations.</p><p>Multi-precision approaches (operand scanning), particularly with Montgomery reduction, are the most widely used today. The best known algorithm (at least to us and <a href="https://chatgpt.com/">ChatGPT</a>) achieves reduction in <em>n²+n</em> digit multiplications without increasing additions or introducing complex dependencies, making it highly efficient for CPU-based systems.</p><p>In this note, we aim to explore modular reduction from a fresh perspective, balancing conciseness with an informal approach. Specifically, let us:</p><ul><li>Introduce an alternative way to conceptualize modular reduction, revealing a natural duality between Barrett and Montgomery methods.</li><li>Present the <em>n²+n</em> Montgomery reduction algorithm.</li><li>Derive the dual <em>n²+n</em> Barrett reduction counterpart.</li><li>Explain why Montgomery reduction is inherently better suited for CPU-based implementations.</li><li>Introduce a new <em>n²</em>+1 algorithm, demonstrating its applicability to both Montgomery and Barrett reductions.</li><li>Show how Barrett and Montgomery reductions can often be used interchangeably in key cryptographic primitives.</li></ul><p>As far as we are aware, much of this content is novel, providing new insights into the structure and efficiency of modular reduction techniques.</p><p>Read the <a href="https://hackmd.io/@Ingonyama/Barret-Montgomery">full technical note on HackMD.</a></p><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/career</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b40ede4792da" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Case Study: Accelerating Zircuit’s Zero-Knowledge Proofs with ICICLE]]></title>
            <link>https://medium.com/@ingonyama/case-study-accelerating-zircuits-zero-knowledge-proofs-with-icicle-a86beaca7fbe?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/a86beaca7fbe</guid>
            <category><![CDATA[zkrollup]]></category>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <category><![CDATA[zircuit]]></category>
            <category><![CDATA[hardware-accelerator]]></category>
            <category><![CDATA[case-study]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Mon, 03 Mar 2025 11:41:40 GMT</pubDate>
            <atom:updated>2025-03-03T11:42:38.366Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*iiXmTBuMDoD0ORRe" /></figure><h3>Introduction</h3><p><a href="https://www.zircuit.com/">Zircuit</a> is an EVM-compatible ZK rollup designed to enhance the scalability and security of Web3 applications. By combining the OP Stack with Zero-Knowledge proofs (ZKPs), Zircuit enables efficient transaction processing and secure state updates. This case study explores how Zircuit integrated Ingonyama’s <a href="https://dev.ingonyama.com/icicle/overview">ICICLE</a> software library to accelerate its cryptographic computations, improving performance and reducing costs.</p><h4>Zircuit: A Faster, More Secure ZK Rollup</h4><p>Zircuit employs proprietary proof aggregation for parallel processing, significantly enhancing efficiency while reducing the computational overhead associated with generating ZK proofs. The system maintains Ethereum compatibility, ensuring that gas fees are paid in ETH and that existing Ethereum tools, wallets, and dApps require minimal adaptation.</p><h4>Key Features of Zircuit</h4><ul><li><strong>Sequencer-Level Security:</strong> Monitors the mempool for malicious transactions and prevents their inclusion in blocks.</li><li><strong>Secure Native Bridge:</strong> Provides a robust, easy-to-use canonical bridge for asset transfers.</li><li><strong>Ethereum Compatibility:</strong> Supports Ethereum-native development tools with minimal changes required for integration.</li></ul><p>Zircuit’s mission is to provide a scalable, secure, and developer-friendly layer-2 solution, advancing the capabilities of decentralized applications through efficient ZK rollup technology.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*e8-dDf67pDrkirz-" /></figure><h3>Implementing ICICLE: Addressing Performance Bottlenecks</h3><p>Zircuit’s prover relies on computationally intensive mathematical operations to generate ZK proofs efficiently within a strict time window corresponding to block production. A key bottleneck was the high computational cost of core cryptographic operations, which increased latency and operational expenses. To address this, Zircuit sought a hardware acceleration solution capable of offloading demanding computations to GPUs. Ingonyama’s ICICLE emerged as a promising option, offering specialized support for GPU-accelerated ZK-proof primitives.</p><h3>The Most Valuable Features of ICICLE for Zircuit</h3><p>Zircuit identified the following ICICLE functionalities as crucial for optimizing its proving system:</p><h4>Number Theoretic Transform (NTT) Optimization</h4><ul><li><strong>Domain caching</strong> to reduce redundant computations</li><li><strong>Fast twiddles</strong> for improved efficiency</li><li><strong>Mixed-radix algorithm support</strong> to enhance flexibility</li></ul><h4>Multi-Scalar Multiplication (MSM) Optimization</h4><ul><li><strong>Base caching</strong> to speed up calculations</li><li><strong>Customizable Pippenger’s window bit size</strong> for performance tuning</li><li><strong>Pre-computation factors</strong> to optimize large-scale operations</li></ul><h3>Seamless Integration with Zircuit’s Proving System</h3><p>The integration of ICICLE into Zircuit’s prover was smooth and efficient. ICICLE’s versatility in handling both Montgomery and non-Montgomery representations eliminated costly data conversions, simplifying the implementation process.</p><p>Additionally, ICICLE’s well-structured API allowed Zircuit to implement advanced optimizations, including:</p><ul><li><strong>Multi-GPU Distribution:</strong> Spreading NTT and MSM computations across multiple GPUs for better workload parallelization.</li><li><strong>Cross-Backend Support:</strong> The ability to run across multiple environments (CPU, CUDA, and Metal) with minimal adjustments.</li></ul><p>These capabilities enabled Zircuit to seamlessly incorporate ICICLE into its proving pipeline, maximizing efficiency while maintaining flexibility.</p><h3>Speed Improvements in ZK Proving</h3><p>ICICLE’s optimized primitives contributed significantly to reducing proof generation times. Initially, before implementing additional GPU kernels, Zircuit observed <strong>a 20–30% speedup</strong> in key cryptographic operations.</p><p>To maximize ICICLE’s potential, Zircuit further optimized its prover architecture by:</p><ul><li><strong>Batching multiple NTT operations</strong> to minimize computational overhead</li><li><strong>Distributing workloads across multiple GPUs</strong> for parallel execution</li><li><strong>Implementing caching strategies</strong> to reduce redundant computations and improve memory transfer efficiency</li></ul><p>As a result, ICICLE played a foundational role in Zircuit’s broader performance improvements, laying the groundwork for further GPU acceleration innovations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*NBiLHqVWxuSH1M3A" /><figcaption><a href="https://github.com/ingonyama-zk/icicle">ICICLE Github</a></figcaption></figure><h3>Collaboration with Ingonyama</h3><p>Zircuit’s collaboration with Ingonyama was characterized by a high level of technical support and responsiveness. Ingonyama’s team actively engaged in the integration process, offering insights and optimizations tailored to Zircuit’s specific needs. Their proactive approach ensured that the expected performance gains were achieved efficiently.</p><h4>Future Plans for ICICLE in Zircuit</h4><p>Looking ahead, Zircuit plans to further optimize its proving pipeline, with a focus on improving:</p><ul><li><strong>GPU memory management</strong> to minimize data transfer bottlenecks</li><li><strong>Precision resource allocation</strong> for optimized workload balancing</li><li><strong>Expansion of GPU acceleration</strong> to additional cryptographic primitives</li></ul><p>These enhancements will be introduced as part of Zircuit’s upcoming <strong>Garfield update</strong>, scheduled for testnet launch in the week of <strong>February 24, 2025</strong>. Users can expect further optimizations and improved performance as the integration with ICICLE continues to evolve.</p><h3>Influence on Zircuit’s Development Roadmap</h3><p>ICICLE’s integration has also influenced Zircuit’s broader engineering strategy. Inspired by its optimized primitives, Zircuit has developed in-house CUDA GPU kernels to address additional computational bottlenecks beyond NTT and MSM. This iterative approach to GPU acceleration has significantly enhanced proof generation times and resource utilization.</p><h3>The Acceleration Continues…</h3><p>ICICLE has played a critical role in accelerating Zircuit’s ZK proof generation, providing a strong foundation for GPU-based optimizations. By integrating ICICLE, Zircuit has achieved substantial performance gains, paving the way for continued scalability improvements.</p><p>The partnership with Ingonyama has not only enhanced Zircuit’s proving capabilities but also inspired further innovation in GPU-accelerated cryptography. As Zircuit continues to refine its architecture, ICICLE remains an essential component in its pursuit of high-performance, scalable, and secure ZK rollups.</p><p>For more information, visit:<br><a href="http://docs.zircuit.com"><strong>docs.zircuit.com<br></strong></a><a href="http://github.com/ingonyama-zk"><strong>github.com/ingonyama-zk</strong></a></p><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/career</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a86beaca7fbe" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ICICLE V3.5: Sumcheck with Lambda Functions]]></title>
            <link>https://medium.com/@ingonyama/icicle-v3-5-sumcheck-with-lambda-functions-5f17d88910cb?source=rss-c8015c09c44------2</link>
            <guid isPermaLink="false">https://medium.com/p/5f17d88910cb</guid>
            <category><![CDATA[cuda]]></category>
            <category><![CDATA[sum-check-protocol]]></category>
            <category><![CDATA[zero-knowledge-proofs]]></category>
            <category><![CDATA[gpu]]></category>
            <category><![CDATA[acceleration]]></category>
            <dc:creator><![CDATA[Ingonyama]]></dc:creator>
            <pubDate>Mon, 17 Feb 2025 18:03:07 GMT</pubDate>
            <atom:updated>2025-02-17T18:25:14.044Z</atom:updated>
            <content:encoded><![CDATA[<p>Introducing a fully CUDA-optimized implementation of the non-interactive Sumcheck protocol for arbitrary functions over multilinear polynomials.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qdkvO9DIrMhO8llsVi4fSg.png" /></figure><h3><strong>What is ICICLE</strong></h3><p><a href="https://dev.ingonyama.com/icicle/overview">ICICLE</a> is our software library built to empower cryptographers in implementing advanced algorithms and protocols — starting with Zero-Knowledge Proofs (ZKPs) — with exceptional performance and ease of use. It marks a major step toward hardware-agnostic cryptographic solutions, ensuring seamless compatibility across diverse hardware platforms with zero switching costs.</p><h3><strong>Highlights: What’s New in V3.5</strong></h3><p>The key highlight of V3.5 is the new Sumcheck API. Below, we’ll dive into the details of how to use this interface and the Program engine, which enables the user to generate sumcheck proof for any statement expressed as an arbitrary function of MLE (Multi Linear Extensions).</p><p>We also implemented proof-of-work in this version to accelerate grinding in FRI-like protocols — shoutout to Eylon Yogen and Giacomo Fenzi for requesting this feature! Additionally, we added the Poseidon2 sponge function and fixed bugs in:</p><ul><li>get_device_count() now correctly returns the actual value instead of 0 — thanks to Zircuit for reporting this!</li><li>The vecops Rust wrapper now supports batch sizes greater than 1.</li><li>Fixed host-math inv2() by disabling the no-aliasing optimization.</li></ul><p>For further information, see the full <a href="https://github.com/ingonyama-zk/icicle/releases/tag/v3.5.0">release notes</a>.</p><h3><strong>Program — Lambda Functions</strong></h3><p>The <a href="https://dev.ingonyama.com/icicle/primitives/program">Program</a> class enables users to define expressions on vector elements, which ICICLE compiles into a fused implementation for the backends. This approach mitigates memory bottlenecks while allowing users to customize algorithms like Sumcheck. Program exclusively supports element-wise lambda functions and currently includes two <a href="https://dev.ingonyama.com/icicle/primitives/program#pre-defined-programs">predefined</a> programs: (A(X) * B(X) — C(X)) and eq(X) * (A(X) * B(X) — C(X)), with more to come in future updates. The Rust API currently supports only these predefined functions, with full API coverage planned for the next releases.</p><h3><strong>Program Use Case: Sumcheck API</strong></h3><p>Sumcheck is a fundamental protocol with broad applications in ZKPs. Its most common use case is in the R1CS system (<a href="https://github.com/microsoft/Spartan/blob/7e8cc9f946f200bdd4c0dc061cacdf76ab156444/src/sumcheck.rs#L183)">Spartan</a>), where it efficiently verifies constraints of the form eq(X) * (A(X) * B(X) — C(X)), encapsulating degree-two relations. A year ago, we started our journey with a <a href="https://github.com/ingonyama-zk/papers/blob/b432a0bbba5a5a06c20e7600a2a571ed12b2288d/sumcheck_201_book.pdf">research paper</a> where we developed parallelizable algorithms for arbitrary product sumcheck. Following which, we released an Arkworks based <a href="https://github.com/ingonyama-zk/super-sumcheck">POC</a> that enables users to prove sumcheck for arbitrary functions of MLE’s.</p><p>Applications such as the <a href="https://github.com/a16z/jolt">Jolt VM</a> — use Sumcheck with <a href="https://github.com/a16z/jolt/blob/783da5d32010e707f85085d59ae0451f6d8a6b25/jolt-core/src/subprotocols/sumcheck.rs#L100">arbitrary products and linear combinations</a> of these products. Notably, in Jolt’s <a href="https://eprint.iacr.org/2023/1216.pdf">LASSO</a> lookup arguments, the primary Sumcheck function depends on the <a href="https://github.com/a16z/jolt/blob/main/jolt-core/src/lasso/surge.rs#L418-L422">lookup table structure</a> defined by the user’s application.</p><p>Another key application is <a href="https://eprint.iacr.org/2022/1355.pdf">HyperPlonk</a>, which allows users to define <a href="https://github.com/EspressoSystems/hyperplonk/tree/main/subroutines/src/poly_iop">custom gates</a> for high-degree constraints and leverage Sumcheck for efficient proof generation.</p><p>With the Program class, ICICLE users can now <strong>generate Sumcheck proofs for arbitrary functions</strong>, enabling scalable and flexible proof generation across various cryptographic protocols.</p><p>Note: This is the first time Fiat-Shamir is being run in ICICLE. As a result, both Sumcheck CUDA and Sumcheck CPU are currently undergoing an audit. If you’re considering incorporating Sumcheck into a production system, we’d be happy to share our design documents and audit report (which will be made public in the future).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*N9DChy1jUcH3_EMhkCy2cg.png" /></figure><h3><strong>Full Example</strong></h3><p>In this section, we demonstrate the Sumcheck C++ API.</p><p>First, we define the parameters for the polynomials, such as their size and number. Specifically, we use the function eq(X) * (A(X) * B(X) — C(X)), which involves four polynomials. In this example, these polynomials are generated randomly.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lGudko1G79DSZZ1xNH4AkA.png" /></figure><p>In this step, we compute the sum of the polynomials:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dC-rZYJ7Cb18L7lJozeK0g.png" /></figure><p>In this example, the calculation is performed using the CPU backend, but you can also use the GPU backend to generate the Sumcheck proof:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QXzrbtR_ShSif3mPsYzR0A.png" /></figure><p>Next, we create the <strong>transcript configuration</strong> with default values. The transcript is essential for the Fiat-Shamir scheme, as both the Prover and Verifier use it to ensure consistency.</p><p>Next, we set up the <strong>Sumcheck Prover</strong>, which uses the function eq(X) * (A(X) * B(X) — C(X)). Since this function is commonly used, it has a predefined type, allowing it to run faster.</p><p>Next, we create the Sumcheck configuration object and an empty <strong>proof object</strong> to store the proof generated by the Prover.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sXgA-58T9M52Ldx4NW9MlQ.png" /></figure><p>At this stage, the <strong>proof</strong> is generated. The Sumcheck Prover produces the proof, which is then stored in the sumcheck_proof object. This proof will later be sent to the Verifier.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YwZ53BZVLrk60uohLmtLzA.png" /></figure><p>Once the proof is ready, we proceed to the <strong>Verifier</strong> side. Here, a new <strong>Sumcheck object</strong> is created for verification. We also define a boolean variable to store the verification result.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4hVlEL_EwwlHMB6xQ8tfog.png" /></figure><p>This line of code executes the verification process. After execution, the verification_pass variable is set to true if the proof is valid, or false otherwise.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jT2ulzE2226LpaixxeJCuA.png" /></figure><p>It’s important to note that the <strong>transcript</strong> used by both the Prover and Verifier must be identical to ensure the Fiat-Shamir scheme produces consistent results on both sides.</p><p>Our Fiat-Shamir implementation closely follows the <a href="https://github.com/zkcrypto/merlin">Merlin library</a> implementation. Specifically, we append relevant metadata to the Prover’s messages, and challenges are generated using the strong Fiat-Shamir protocol.</p><h3><strong>Future Work and Upcoming Releases</strong></h3><p>In V3.5, the Sumcheck API supports only large fields. Since large fields have seen greater adoption than small fields, we have prioritized their support. Small fields will be added in a future release.</p><p>As mentioned above, while the C++ Sumcheck API is fully featured, the Rust implementation currently supports only predefined functions, and Golang support is not available. Full Rust and Go support will be provided in upcoming releases.</p><p>ICICLE V3.6 will introduce a new backend: <strong>Metal</strong> support! This will enable all ICICLE code to run efficiently on Apple Silicon.<strong> If you’d like to experiment with the next version, send us an email at </strong><a href="mailto:hi@ingonyama.com"><strong>hi@ingonyama.com</strong></a><strong>.</strong></p><h3>Follow Ingonyama</h3><p>Twitter / X: <a href="https://twitter.com/Ingo_zk">https://twitter.com/Ingo_zk</a></p><p>YouTube: <a href="https://www.youtube.com/@ingo_zk">https://www.youtube.com/@ingo_zk</a></p><p>GitHub: <a href="https://github.com/ingonyama-zk">https://github.com/ingonyama-zk</a></p><p>LinkedIn: <a href="https://www.linkedin.com/company/ingonyama">https://www.linkedin.com/company/ingonyama</a></p><p>Join us: <a href="https://www.ingonyama.com/careers">https://www.ingonyama.com/career</a></p><p>Snark Chocolate: <a href="https://open.spotify.com/show/73VPmr716AjCJRNsP86J1g?si=310776039a1c41fb">Spotify</a> / <a href="https://podcasts.apple.com/us/podcast/snark-chocolate/id1778236148">Apple Podcasts</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5f17d88910cb" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>