<?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 ZKM on Medium]]></title>
        <description><![CDATA[Stories by ZKM on Medium]]></description>
        <link>https://medium.com/@ProjectZKM?source=rss-91f33735bd6a------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*oG8Pk6KDzzvAZU_IV5N_qA.png</url>
            <title>Stories by ZKM on Medium</title>
            <link>https://medium.com/@ProjectZKM?source=rss-91f33735bd6a------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 31 May 2026 14:37:05 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@ProjectZKM/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[ZKM Prover — STARK to SNARK]]></title>
            <link>https://medium.com/@ProjectZKM/zkm-prover-stark-to-snark-ed8c65ca7a6b?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/ed8c65ca7a6b</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Wed, 25 Jun 2025 17:23:39 GMT</pubDate>
            <atom:updated>2025-06-25T17:23:39.325Z</atom:updated>
            <content:encoded><![CDATA[<h3>ZKM Prover — STARK to SNARK</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*AkFSOW3gH-igQ3pQ.png" /></figure><p>The conversion from STARK to SNARK begins with the construction of recursive circuits. These recursive circuits are designed to compress the original large STARK proof into a smaller SNARK proof. The process involves several key components: the <strong>root circuit</strong>, the <strong>aggregation circuit</strong>, and the <strong>block circuit</strong>. Below is an introduction to the roles of each of these circuits:</p><h3>1. Root Circuit</h3><p>The root circuit is the core component for compressing STARK proofs. It aggregates recursive proofs from multiple tables and ultimately generates a SNARK proof. The root circuit collects recursive proofs from all tables and ensures that their public inputs meet the required conditions.</p><p>Code implementation:</p><p>The key to the root circuit is how it compresses each table’s recursive proof into a final proof and checks their consistency. In this structure, proof_with_pis stores each table’s recursive proof, while index_verifier_data and public_values are used to verify these proofs.</p><h3>2. Aggregation Circuit</h3><p>The purpose of the aggregation circuit is to compress two proofs into one. During the STARK-to-SNARK conversion, the aggregation circuit is typically used to merge the root circuit proof with other intermediate proofs into the final proof. By aggregating multiple recursive proofs, it reduces the overall proof size.</p><p>Code implementation:</p><p>The aggregation circuit compresses two proofs into a single final proof using lhs and rhs sub-circuits. Each sub-circuit can either be a ZKVM root proof or another aggregated proof. In implementation, lhs and rhs represent the left and right sides of the aggregation, respectively.</p><h3>3. Block Circuit</h3><p>The block circuit is similar in function to the aggregation circuit, but it not only compresses proofs — it also verifies the consistency between two proofs (e.g., an aggregation proof and a parent block proof). This circuit ensures blockchain validity and consistency.</p><p>When processing proofs, the block circuit verifies both the parent block proof and the aggregation root proof. If there is no parent block proof available, a dummy parent proof is used instead.</p><p>Next, we focus on the process of compressing each STARK proof into a single SNARK proof. This includes determining the <strong>recursive circuit chain</strong> (i.e., the order in which recursive proofs are performed), handling the <strong>challenge sets</strong> and <strong>public inputs</strong>, and finally executing the conversion from a STARK proof to a SNARK proof, as follows:</p><h3>3.1 Step-by-Step Compression of the Recursive Circuit Chain</h3><p>The key to the recursive circuit chain is the step-by-step compression of each table’s recursive proof. Each table’s recursive circuit contains multiple sub-circuits, with the degree of each decreasing progressively until it reaches a preset threshold THRESHOLD_DEGREE_BITS.</p><p>RecursiveCircuitsForTable constructs a recursive circuit chain for each table, where each circuit in the chain has a different size. The recursion ends once the size of the circuit falls below the preset threshold THRESHOLD_DEGREE_BITS. This chain is implemented through RecursiveCircuitsForTableSize.</p><h3>3.2 Handling of Challenge Sets and Public Inputs</h3><p>In each recursive step, the challenge set and public inputs are used to ensure the validity of the proof. The public inputs provide verification data for each proof, while the challenge set is used to verify the challenge values of each proof. With the help of RecursiveChallenger, we can observe and verify these challenge values.</p><p>During each recursive step, RecursiveChallenger is used to observe the challenge values in the public inputs and ensure their consistency. This guarantees that each proof is valid and eligible for further compression.</p><h3>3.3 Final Conversion from STARK to SNARK</h3><p>Once all recursive steps are completed, the final conversion from STARK to SNARK is achieved by progressively compressing the STARK proof into a smaller SNARK proof through multiple recursive circuit chains. The proof for each table is gradually reduced and eventually merged into a single root proof.</p><p>In the final conversion, prove_root processes each table’s proof one by one, compresses them using the shrink method, and generates the final SNARK proof by setting the public inputs.</p><p>The core function of shrink is to compress a large STARK proof into a smaller one suitable for recursive verification, while preserving the original proof’s integrity and soundness. This not only reduces proof complexity but also improves the efficiency of subsequent recursive circuits. The process involves the following steps:</p><ol><li>First, shrink calls the proving function within the initial_wrapper to perform an initial compression of the STARK proof. This crucial step maps the original large proof into a smaller circuit.</li><li>Then, it iteratively calls each recursive circuit in the shrinking_wrappers to further compress the initially shrunk proof, until the proof’s size fits the target circuit constraints (e.g., the recursive gate size defined by THRESHOLD_DEGREE_BITS).</li><li>Finally, it returns a compressed ProofWithPublicInputs structure that contains the public inputs and the compressed proof, which can be directly consumed by smaller recursive circuits.</li></ol><p>‍</p><p><em>Subscribe to the ZKM Blog to stay updated with the latest research by ZKM. If you have any questions about the article, you can contact the ZKM team on discord: </em><a href="http://discord.com/zkm"><em>discord.com/zkm</em></a></p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/zkm-prover-stark-to-snark"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ed8c65ca7a6b" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ZKM: The Journey So Far]]></title>
            <link>https://medium.com/@ProjectZKM/zkm-the-journey-so-far-102c4c10e1ac?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/102c4c10e1ac</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Wed, 25 Jun 2025 17:23:03 GMT</pubDate>
            <atom:updated>2025-06-25T17:23:03.410Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xb92_C7Asyf4xEOg.png" /></figure><p>ZKM began as an internal research-driven effort to integrate zero-knowledge proofs into blockchain infrastructure. In 2022, as discussions around Ethereum scaling intensified, the idea of hybrid rollups began to take shape. Rather than abandoning the Optimistic Rollup model, the proposal was to combine it with zk-proofs to create a hybrid architecture that could deliver both developer flexibility and cryptographic finality. This would later evolve into the vision behind our MIPS-based zkVM.</p><p>The decision to adopt the MIPS instruction set was deliberate: while less in-trend than RISC-V, MIPS offered denser opcodes, smaller circuit footprints, and predictable performance characteristics. On the other hand, the opcode complexity made MIPS the more difficult development choice, but the payoff became evident in later benchmarks.</p><p>In early 2024, the vision expanded. Rather than stop at hybrid rollups, ZKM committed to solving the deeper issue of liquidity fragmentation. The Entangled Rollup paper outlined how our zkVM could serve as the foundation for a new kind of rollup, acting as a verification layer across chains and enabling unified liquidity without centralized bridges. That vision became the core strategic roadmap: build real infrastructure that connects fragmented chains through ZK validity.</p><p>The focus shifted to Bitcoin as the first integration target. With BTC holding the largest idle liquidity in the ecosystem, it was the natural place to begin the Entangled Rollup journey. GOAT Network was born as a Bitcoin-native rollup bringing BTC assets on-chain in a sustainable, yield-enabled framework — utilizing ZKM as its proving backend.</p><p>This infrastructure-driven approach contrasts sharply with the surface-level integrations pursued by many zkVM teams. ZKM didn’t prioritize optics or rapid integrations. Instead, we prioritized depth, performance, and full-stack ownership.</p><p>Recently, the 1.0 version of our zkVM launched with leading CPU-based benchmarks, outperforming other zkVMs like SP1 and R0VM in standard workloads. But that was just the beginning. The next major update unlocks GPU acceleration and distributed proving. For the first time, ZKM becomes performant enough for latency-sensitive, high-throughput applications. Developers no longer need to choose between general-purpose flexibility and practical cost.</p><p>We’re building for a future where zero-knowledge infrastructure isn’t a marketing layer — it’s the very core of cross-chain computation. MIPS was the harder path, but it’s proving to be the right one.</p><p>In a nutshell, this is the ZKM journey so far. And there’s much more to come.</p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/zkm-the-journey-so-far"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=102c4c10e1ac" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why ZKM? Choosing the Right zkVM for Your Application]]></title>
            <link>https://medium.com/@ProjectZKM/why-zkm-choosing-the-right-zkvm-for-your-application-e98cc6b78128?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/e98cc6b78128</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Wed, 25 Jun 2025 17:22:29 GMT</pubDate>
            <atom:updated>2025-06-25T17:22:29.142Z</atom:updated>
            <content:encoded><![CDATA[<p>As the number of zkVMs continues to grow, the choice facing developers is no longer <em>whether</em> to use one — but rather <em>which </em>to use. With an ever-growing number of zkVMs offering different tradeoffs, it’s becoming increasingly difficult to tell which zkVM actually delivers what matters.</p><p>At ZKM, we’ve taken a different approach: rather than targeting as many integrations as possible, our focus is on a few truly high-quality applications that can scale across architectures, chains, and domains.</p><p>This piece is all about why ZKM may also be the right foundation for what you’re building.</p><h3>MIPS ISA: A Stable, Portable Target</h3><p>Unlike RISC-V or custom bytecodes, MIPS is a mature, stable instruction set architecture that is easy to compile to and reason about. It’s been used in production hardware and software systems for decades.</p><ul><li><strong>Toolchain Maturity</strong>: You can use standard Rust without needing to learn custom compilers or bytecode environments.</li><li><strong>Low Abstraction Overhead</strong>: The instruction set is simple, predictable, and has a clear mapping to constraints — making performance optimization easier.</li><li><strong>Smaller circuit footprint</strong>: Denser opcodes result in fewer instructions and simpler decoding logic.</li><li><strong>Hardware-Aware</strong>: MIPS is compatible with emulation and co-processor integrations, which is critical for our next phase of GPU acceleration.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*7bIYN7gK5kpBttBr.png" /></figure><p>The choice of the MIPS instruction set isn’t aesthetic. It reflects a deliberate tradeoff: MIPS enables clean constraint systems, highly parallelizable logic, and predictable performance on real workloads. It also aligns well with upcoming acceleration targets such as GPU-based proving. <strong>‍</strong></p><h3>Now Prover-Optimized</h3><ul><li>Fibonacci, SHA2, SHA3, and memory-intensive benchmarks show ZKM outperforming SP1 and RISC Zero (v2.0.1) on AWS r6a.8xlarge.</li><li>Our upcoming GPU-enabled prover will further improve proof generation times and enable real-world usage for apps with latency sensitivity.</li></ul><p>With its recent pipeline upgrades, our 1.0 version is optimized for fast, scalable proof generation, outperforming many general-purpose zkVMs across standard workloads:</p><p>For a benchmarking vs other leading zkVMs across CPU, see <a href="https://www.zkm.io/blog/zkmips-1-0-benchmarking-the-fastest-zkvm-on-cpu">https://www.zkm.io/blog/zkmips-1-0-benchmarking-the-fastest-zkvm-on-cpu</a></p><p>Our next major release will include GPU acceleration for proof generation, enabling the capability to power high-throughput applications.</p><p>This update addresses one of the biggest bottlenecks for developers today: proof generation costs. GPU proving slashes runtime and compute overhead, enabling support of latency-sensitive use cases like real-time settlement, high-frequency trading, and composable applications.</p><h3>Designed for Modularity and Developer-Centric Simplicity</h3><ul><li><strong>Chain Agnostic</strong>: Can be deployed to Ethereum, Bitcoin (via BitVM2), modular L2s, and support coming for more L1s.</li><li><strong>Co-Processor Friendly</strong>: Engineered for recursive composition and TEE/MPC delegation.</li><li><strong>Proof System Flexibility</strong>: Though initially based on STARKs, the architecture is modular enough to support Groth16 or Plonk-style backends.</li></ul><p>Our zkVM provides a general-purpose computation layer that can integrate with any chain, proof system, or co-processor.</p><ul><li>Write standard Rust code.</li><li>Compile directly to MIPS.</li><li>Use our zkMIPS SDK to generate proofs or deploy smart contracts with verifiers.</li></ul><p>It has also been designed to minimize friction for developers:</p><p>There’s no need to learn a new domain-specific language or deal with complex bytecode structures — everything is deterministic, debuggable, and inspectable.</p><h3>​​Depth Over Hype</h3><p>While other zkVMs seek rapid integrations for visibility, ZKM prioritizes depth. We focus on a small number of high-impact deployments where we can integrate tightly and support fully.</p><p>GOAT Network exemplifies this. It’s not another generic Bitcoin L2 — it introduces a decentralized sequencer model with sustainable, native BTC yield. Our zkVM isn’t just plugged in; it’s co-engineered.</p><ul><li><strong>Architectural integration</strong>: ZKM sits at the protocol core.</li><li><strong>Full-stack support</strong>: We collaborate on provers, verification, and optimization.</li><li><strong>Performance alignment</strong>: Block time, cost, and latency tuned from day one.</li></ul><p>This approach enables:</p><p>Fewer integrations. Higher fidelity. Real usage, not surface-level support.</p><p>As developers shift from asking <em>“Can I integrate this?”</em> to <em>“Is this built to last?”</em>, we think the answer will increasingly favor focused, production-grade zkVM deployments like ours.</p><h3>Proof Markets Will Decide — We’re Ready for That</h3><p>We’re not claiming our zkVM is better in every way. Each has its own strengths. But as proof markets mature and systems begin choosing zkVMs dynamically based on workload, cost, and latency, we believe ZKM will prove to be one of the most cost-efficient, high-throughput options available.</p><ul><li>A clear and stable instruction set architecture</li><li>Proof generation at practical cost and latency</li><li>Deep integration with real protocols solving hard problems in a uniquely optimal way</li><li>Transparent engineering focus on scale, not optics</li></ul><p>Very few other zkVMs can offer:</p><p>The goal isn’t to win in every category — but to be the best choice for the high-quality applications that demand real performance, deeper integration, and closer support.</p><p>If you’re just experimenting with proofs, any zkVM will do. But if you’re building production-grade, cross-domain, performance-sensitive ZK applications — ZKM is ready to go.</p><p>Get started with ZKM: <a href="https://docs.zkm.io/">ZKM Docs</a></p><p>Build with ZKM: <a href="https://docs.zkm.io/">ZKM Github</a></p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/why-zkm-choosing-the-right-zkvm-for-your-application"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e98cc6b78128" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Offline memory checking in zkVM]]></title>
            <link>https://medium.com/@ProjectZKM/offline-memory-checking-in-zkvm-ed14d7981691?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/ed14d7981691</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Wed, 25 Jun 2025 17:21:00 GMT</pubDate>
            <atom:updated>2025-06-25T17:21:00.070Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xaxnb3hytRXtaY9r.png" /></figure><p>Memory checking in a zkVM is used to allow a prover to demonstrate to a verifier that read/write memory operations are performed correctly. In such a memory system, a value v can be written to an address a, and later retrieved from address a by the program. This technique enables the verifier to efficiently confirm that the prover has followed memory access rules-specifically, that any read returns the latest value written to that memory address.</p><p>The term <strong>offline memory checking</strong> refers to a technique in zkVM proofs where the correctness of all read operations is checked at once, after all read values have been committed. Offline checking does not immediately determine whether each read is correct at the moment it happens. Instead, it verifies the correctness of all reads in a single batch after all operations are done. This contrasts with <strong>online memory checking</strong> techniques, such as Merkle hashing, which confirm read correctness immediately by requiring an authentication path for every read. Merkle hashing imposes higher proof costs on the prover for each read operation, whereas offline memory checking is more suitable for zkVM scenarios.</p><p>We construct two sets, the read set RS and the write set WS, where each element is a tuple Esto es un ejemplo: \( (a, v, c) \) representing the address, value, and instruction count. They are constructed as follows:</p><p><strong>Initialization:</strong></p><ul><li>\(RS = WS = \emptyset ;\)</li><li>If the memory \(a_i\) is to be initialized with value \(v_i\), then the initial tuple is added to the write set: \(WS = WSU(a_i, v_i, 0)\).</li></ul><p><strong>Memory Read and Write Operations:</strong></p><ul><li>When reading from address \(a\), find the last tuple \((a, v, c)\) in \(WS\) for that address (i.e., with the largest instruction count \(c\)). Update: \(RS = RSU(a, v, c)\) and \(WS = WSU(a, v, c_{\text{now}})\), where \(c_{\text{now}}\) is the current instruction count.</li><li>When writing value \(v’\) to address \(a\), find the last tuple \((a, v, c)\) in \(WS\) for address \(a\). Update: \(RS = RSU(a, v, c)\) and \(WS = WSU(a, v’, c_{\text{now}})\).</li></ul><p><strong>Post-processing:</strong></p><p>If the following conditions are met, then the prover has followed the memory rules and read the correct values from memory:</p><p>1. The read and write sets are correctly initialized;</p><p>2. For each address \(a_i\), the instruction counts added to \(WS\) strictly increase over time;</p><ul><li>For read operations, the tuples added to \(RS\) and \(WS\) must have the same value;</li><li>For read-write operations, the tuple added to \(RS\) must have a lower instruction count than the one added to \(WS\);</li></ul><p>3. After post-processing, \(RS = WS.\).</p><p><strong>Brief Proof:</strong> Consider the first faulty memory read operation. Suppose a read operation is expected to return the tuple \((a, v, c)\) but instead erroneously returns \((a, v’ \neq v, c’)\), which is added to \(RS\). Note that all tuples in \(WS\) are unique. After adding \((a, v’, c_{\text{now}})\) to \(WS\), both \((a, v, c)\) and \((a, v’, c_{\text{now}})\) are not in \(RS\). According to condition 2, after each read/write operation, there are always at least two tuples in \(WS\) that are not in \(RS\), which means post-processing cannot make \(RS = WS\).</p><p>There are two methods for enforcing the final equality of \(WS\) and \(RS\): <strong>multiset hashing</strong> and<strong> lookup tables</strong> (e.g., LogUp).</p><p>Multiset hashing allows a (multi)set to be hashed into a short string such that it is computationally difficult to find two different sets with the same hash. The hash is computed incrementally-one element at a time. A key property is that the final hash value is independent of the order in which elements are hashed. This lets us compare sets constructed in different orders.</p><p>Let the group \(G\) be the set of points on an elliptic curve defined by \(y² = x³ + Ax + B\) (including the point at infinity). We can implement multiset hashing using group hashing. To hash a set element into a point on the elliptic curve, we first map the element to an \(x\)-coordinate. Since this may not yield a valid curve point, we add an 8-bit adjustment value \(t\) and use hash operations to avoid collisions. Additionally, we apply constraints (e.g., ensuring the \(y\)-coordinate is a quadratic residue or adding range checks) to prevent flipping the sign of the y-coordinate.</p><p>For example, during zkVM execution, we can construct the following columns and corresponding constraints:</p><p><strong>Columns:</strong></p><ul><li>\(a\): operation address;</li><li>\(v_r, v_w\): values added to the read/write set;</li><li>\(c_r, c_w\): program counters added to the read/write set;</li><li>\(t_r, t_w\): 8-bit adjustments;</li><li>\(x_r, x_w\): x-coordinates, satisfying \(x = \text{hash}(a | |v| | |c| | t);\)</li><li>\(y_r, y_w\): y-coordinates;</li><li>\(z_r, z_w\): satisfying \(y = z²\), used to ensure that \(y\) is a quadratic residue;</li><li>\(h_r, h_w\): current hash values of the read/write sets.</li></ul><p><strong>Constraints:</strong></p><ol><li>Perform range checks on \(a, v, c, t\);</li><li>\(c_{\text{now}} = c_w &gt; c_r\) (you can introduce \(d = c_w — c_r\) and range-check \(d\));</li><li>\(x = \text{hash}(a||v||c||t)\), \(y² = x³ + Ax + B\), \(y = z²\);</li><li>\(h = h_{\text{old}} + (x, y)\);</li><li>At the end, ensure \(h_r = h_w\).</li></ol><p>To prove that two multisets \(A = a_i\) and \(B = b_i\) are equal, it is sufficient to prove that for a randomly chosen challenge \(\gamma\), the following holds:</p><p>\[\sum_{i} \frac{1}{a_i + \gamma} = \sum_{i} \frac{1}{b_i + \gamma}\]</p><p>We can construct the following columns and constraints:</p><p><strong>Columns:</strong></p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/offline-memory-checking-in-zkvm"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ed14d7981691" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ZKM Prover — Memory & Logic Stark]]></title>
            <link>https://medium.com/@ProjectZKM/zkm-prover-memory-logic-stark-316caf16ac08?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/316caf16ac08</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Wed, 25 Jun 2025 17:15:28 GMT</pubDate>
            <atom:updated>2025-06-25T17:15:28.233Z</atom:updated>
            <content:encoded><![CDATA[<h3>ZKM Prover — Memory &amp; Logic Stark</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*dckSezdxFBf3BxTN.png" /></figure><p>The MemoryStark proving process mainly includes <strong>Trace Generation</strong>, <strong>Constraints Evaluation</strong>, and <strong>ZK Circuit Evaluation</strong>. The core goal of the entire process is to <strong>ensure that memory access operations occur in order of time and address, and that the value read is consistent with the previously written value.</strong> Details are as follows:</p><h3>1. Trace Generation</h3><ul><li>Collect MemoryOp and convert to Trace rows (into_row)</li><li>Sort (generate_trace_row_major)</li><li>Generate First Change Flags and RANGE_CHECK (generate_first_change_flags_and_rc)</li><li>Process data format (generate_trace_col_major)</li></ul><h3>2. Constraints Evaluation</h3><ul><li>Constrain FILTER to only be 0 or 1</li><li>Ensure address changes follow the rules</li><li>Ensure timestamps are strictly increasing</li><li>Ensure read data matches the most recent write</li></ul><h3>3. ZK Circuit Evaluation</h3><ul><li>Perform the same checks in eval_ext_circuit</li><li>Constrain all variables to boolean values</li><li>Ensure range_check is computed correctly</li></ul><h3>4. Lookup Constraints</h3><p>The memory operations MemoryOp record all read/write activities, including:</p><ul><li>Access address (context, segment, virtual address)</li><li>Access timestamp timestamp</li><li>Accessed data value</li><li>Access type Read/Write</li><li>Whether the operation is valid filter</li></ul><p>Each MemoryOp represents one memory access and is converted into an array of length NUM_COLUMNS, where:</p><ul><li>FILTER indicates if the row is valid</li><li>ADDR_CONTEXT, ADDR_SEGMENT, ADDR_VIRTUAL record the access address</li><li>TIMESTAMP records when the operation occurred</li><li>IS_READ indicates whether it is a read (1) or write (0)</li><li>VALUE stores the accessed data</li></ul><h3>1.1.2 Processing and Sequencing MemoryOp</h3><ul><li>Sort MemoryOp by (context, segment, virtual address, timestamp)</li><li>Call fill_gaps to ensure timestamp and address changes stay within the range_check bounds</li><li>Call generate_first_change_flags_and_rc to generate First Change Flags and RANGE_CHECK constraints</li></ul><h3>1.1.3 Generating First Change Flag</h3><ul><li>CONTEXT_FIRST_CHANGE: Did the context change in this row?</li><li>SEGMENT_FIRST_CHANGE: Did the segment change in this row?</li><li>VIRTUAL_FIRST_CHANGE: Did the virtual address change in this row?</li><li>RANGE_CHECK: Ensures differences between adjacent rows do not exceed the max limit</li></ul><h3>1.1.4 Processing Data Format</h3><ul><li>Generate a COUNTER used for range checks</li><li>Calculate FREQUENCIES, which store the occurrence count of RANGE_CHECK values</li></ul><h3>1.2 Constraint Evaluation</h3><p>In STARK proofs, we must ensure:</p><ul><li>Access timestamps are <strong>increasing</strong></li><li>Access addresses <strong>change in order</strong></li><li><strong>Values read must match the most recent write</strong></li><li>FILTER must be either 0 or 1</li></ul><h3>1.2.1 Constraint Evaluation</h3><h3>Constraint Logic</h3><p>In STARK proofs, we not only need conventional constraints, but must also perform the same checks at the <strong>circuit level</strong> to be compatible with zk-SNARKs.</p><p>To efficiently handle RANGE_CHECK, <strong>Lookup Arguments</strong> are used.</p><p>LogicSNARK is a proof system for <strong>basic logical operations</strong>. The process includes <strong>trace generation, constraint construction, STARK proof generation, and recursive circuit verification</strong>, ultimately allowing for efficient proofs of correctness for logical operations. The STARK proof process typically consists of the following stages:</p><h3>1. Trace Generation</h3><ul><li>Compute all operations and store the computation path.</li><li>Generate polynomial representations suitable for STARK proofs.</li></ul><h3>2. Constraint Construction</h3><ul><li>Ensure correctness of logical operations and define constraints.</li><li>Constraints ensure correctness of input → operation → result.</li></ul><h3>3. Polynomial Commitment (PCS) and FRI Proofs</h3><h3>4. Recursive Proofs (Optional)</h3><p>In the STARK proof system, <strong>the trace</strong> is the core of the computation process. It records the inputs, computation steps, and outputs, and is ultimately used to generate polynomial representations.</p><p>The code first defines the four supported logical operations:</p><ul><li>The Op enum defines <strong>AND, OR, XOR, and NOR</strong> operations.</li><li>The result() method computes the result of a logical operation on two u32 values.</li></ul><p>The Operation struct stores a logical operation:</p><ul><li>Operation::new creates a new logical operation and computes its result.</li><li>The struct stores input0, input1, and the computed result, which will be used in the STARK proof.</li></ul><p>The trace is a 2D array where each row represents a logical operation:</p><ul><li>Trace rows are organized by <strong>input, computation, and result</strong>, with each row having NUM_COLUMNS fields.</li><li>The trace is padded to a <strong>power of two</strong> size for FFT compatibility in STARK proofs.</li></ul><p><strong>Constraints</strong> are the core of STARK proofs, ensuring that logical operations follow the correct mathematical rules throughout computation.</p><p><strong>During STARK evaluation, each logical operation must satisfy:</strong></p><ul><li>INPUT0 and INPUT1 store <strong>bit decompositions of input values</strong>.</li><li>RESULT stores the <strong>final result</strong>.</li></ul><p>\[\text{result} = \text{sum\_coeff} \cdot (\text{input0} + \text{input1}) + \text{and\_coeff} \cdot (\text{input0} \&amp; \text{input1}) + \text{not\_coeff} \cdot \text{MASK}\]</p><p>Where: sum_coeff, and_coeff, and not_coeff are determined by the values in IS_AND, IS_OR, etc.</p><ul><li>Calculates sum_coeff, and_coeff, and not_coeff.</li><li>Computes the theoretical result x_op_y and constrains it against the actual result.</li></ul><p>Constraint implementation:</p><p>This part follows from earlier documentation in this series.</p><ul><li>CircuitBuilder handles recursive SNARK constraints.</li><li>Computes x_op_y and ensures that the result is computed correctly.</li></ul><p>Recursive circuits are used to <strong>efficiently verify STARK proofs</strong>:</p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/zkm-prover-memory-logic-stark"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=316caf16ac08" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The ZKM May Update]]></title>
            <link>https://medium.com/@ProjectZKM/the-zkm-may-update-039741e738ec?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/039741e738ec</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Wed, 25 Jun 2025 17:14:52 GMT</pubDate>
            <atom:updated>2025-06-25T17:14:52.869Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4I7MY0jcRhg3jIDh.png" /></figure><p>May was the biggest month in ZKM’s history to date. We launched zkMIPS 1.0 — the first production-ready MIPS-based zkVM — while deepening integrations across Ethereum and Bitcoin, advancing our work through live deployments, industry benchmarks, and research publications.</p><h3>zkMIPS 1.0 Is Live</h3><p>ZKM released zkMIPS 1.0, a complete re-architecture of our zkVM with production-grade performance. This version introduces support for MIPS32r2, Plonky3 integration over the Koala prime field, multiset hashing for memory consistency, and a modular chip-based circuit architecture. These upgrades deliver up to 20x speedup over v0.3.0 across standard CPU benchmarks. zkMIPS 1.0 is now actively proving Ethereum mainnet blocks as part of the Ethereum Foundation’s<a href="https://x.com/@Eth_Proofs"> @Eth_Proofs</a> program and powers<a href="https://x.com/@GOATRollup"> @GOATRollup</a>, the first Bitcoin Layer 2 using BitVM2. This dual deployment validates our design goal: a zkVM capable of servicing both Ethereum and Bitcoin at the infrastructure layer.</p><p>Full launch article:<a href="https://www.zkm.io/blog/zkmips-1-0-production-ready-performance-optimized-and-open-for-developers"> https://www.zkm.io/blog/zkmips-1-0-production-ready-performance-optimized-and-open-for-developers</a></p><h3>Benchmarking the Fastest zkVM on CPU</h3><p>We published detailed benchmarking results comparing zkMIPS 1.0 to zkMIPS 0.3.0, Succinct’s SP1, and Risc Zero’s R0VM. Across workloads such as SHA-2, Fibonacci, and Big-Memory, zkMIPS 1.0 consistently outperformed previous versions and most other zkVMs in its category. This confirmed not only raw performance gains but also the advantage of our system-level architectural improvements.</p><p>Benchmark article:<a href="https://www.zkm.io/blog/zkmips-1-0-benchmarking-the-fastest-zkvm-on-cpu"> https://www.zkm.io/blog/zkmips-1-0-benchmarking-the-fastest-zkvm-on-cpu</a></p><h3>Community and Industry Response</h3><p>ZKM’s May work sparked strong engagement from leaders across the ecosystem, particularly regarding our article comparing MIPS vs RISC-V:<a href="https://www.zkm.io/blog/why-zkm-chose-mips32r2-over-risc-v-for-zkmips"> https://www.zkm.io/blog/why-zkm-chose-mips32r2-over-risc-v-for-zkmips</a>.</p><p><a href="https://x.com/@EliBenSasson">@EliBenSasson</a>, co-founder of<a href="https://x.com/@StarkWareLtd"> @StarkWareLtd</a>, weighed in on our MIPS decision, noting he had once considered building STARKs for MIPS himself. This led to further dialogue between ZKM, StarkWare, and other ecosystem figures such as<a href="https://x.com/@ClementWalter"> @ClementWalter</a> of<a href="https://x.com/@Kakarotzkevm"> @Kakarotzkevm</a>. ZKM’s leadership — CEO<a href="https://x.com/@KevinLiub"> @KevinLiub</a> and CTO<a href="https://x.com/@sd_eigen"> @sd_eigen</a> — publicly responded, emphasizing our rationale grounded in hardware and trace optimization.</p><p>ZKM was also featured across key publications and Twitter ecosystems including<a href="https://u.today/"> U.Today</a>,<a href="https://x.com/@AlignedLayer"> @AlignedLayer</a> ‘s ZK-Newsflash, and various others. The broader ZK community has responded with high interest across Twitter, Discord, and GitHub.</p><h3>Developer Activation</h3><p>Following the launch of zkMIPS 1.0, we launched the final phase of our Early Contributor Program with the ZKM Developer Track — a call for developers to build with zkMIPS, contribute to the toolchain, and expand onboarding resources. This track is the gateway to building verifiable applications using zkMIPS and participating in the next wave of scalable, cross-chain infrastructure.</p><p>Program details:<a href="https://www.zkm.io/blog/zkm-developer-track-a-call-to-builders"> https://www.zkm.io/blog/zkm-developer-track-a-call-to-builders</a></p><h3>Thought Leadership</h3><p>ZKM CEO Kevin Liu published a five-part BTCFi series, outlining a foundational thesis for Bitcoin-native financial infrastructure:</p><ol><li>BTCFi hasn’t begun — the opportunity is ahead.</li><li>GOAT Network’s vertical integration enables security.</li><li>BTCFi must serve real user demand.</li><li>Native yield comes from L2 gas.</li><li>Bitcoin L2s are economic amplifiers.</li></ol><p>Full recap:<a href="https://x.com/ProjectZKM/status/1923339874985238848"> https://x.com/ProjectZKM/status/1923339874985238848</a></p><p>We also published a breakdown of zkMIPS’s integration with BitVM2 in GOAT Network. The thread outlines our novel proving architecture (Root, Aggregation, SNARK), cryptoeconomic design (dual-layer slashing), and latency breakthrough (sub-1-day finality). This positions zkMIPS as the first zkVM deployed in a trust-minimized Bitcoin L2.</p><p>Thread:<a href="https://x.com/ProjectZKM/status/1922580611249684885"> https://x.com/ProjectZKM/status/1922580611249684885</a></p><p>Finally, we contributed to defining the Bitcoin-native L2 standard. Alongside GOAT Network, we outlined core and optional principles for trustless Bitcoin L2s — from permissionless exits to proof-based bridges. This is a call to reclaim the integrity of the term “Layer 2”.</p><p>Proposal:<a href="https://x.com/kevinliub/status/1924948457443172731"> https://x.com/kevinliub/status/1924948457443172731</a></p><h3>GOAT Network Milestones</h3><p>GOAT Network released the BitVM2 whitepaper, showcasing how zkMIPS enables faster finality and enforces security through recursive proofs and decentralized sequencers. Shortly after, they launched the first permissionless BitVM2 testnet, powered by zkMIPS 1.0. This marks a new era for BTCFi — delivering real Bitcoin-native security, finality, and yield.</p><p>Try the testnet:<a href="https://bitvm2.testnet3.goat.network/bridge/inWhitepaper"> https://bitvm2.testnet3.goat.network/bridge/inWhitepaper</a>:<a href="https://drive.google.com/file/d/1ewves_XtJnOmDiNgzSciyBIgrUXiouVE/view"> https://drive.google.com/file/d/1ewves_XtJnOmDiNgzSciyBIgrUXiouVE/view</a></p><h3>Talks and Events</h3><p>We participated in key technical spaces this month:</p><p>In parallel, House of ZK hosted a ZKM special covering zkMIPS 1.0’s architecture and role in powering GOAT Network.<a href="https://hozk.io/journal/zkm-report"> https://hozk.io/journal/zkm-report</a> <a href="https://x.com/HouseofZK/status/1927031440568451093">— https://x.com/HouseofZK/status/1927031440568451093</a></p><h3>On the Road</h3><p>ZKM made appearances at the Bitcoin Economy Conference, where Ming and Stephen explained the foundational design of both ZKM and GOAT. We’ll also be sponsoring and speaking at House of ZK’s upcoming Ethproofs Summit in Berlin, and hosting ZK Morning Coffee during EthCC alongside<a href="https://x.com/@Starknet"> @Starknet</a>,<a href="https://x.com/@Hyli_org"> @Hyli_org</a>, and<a href="https://x.com/@thzkcloud"> @thzkcloud</a> — a casual gathering for serious builders.</p><p>Register for ZK Morning Coffee:<a href="https://lu.ma/71jtlhzi"> https://lu.ma/71jtlhzi</a></p><p>That wraps up May — a true milestone month for ZKM. We launched zkMIPS 1.0, expanded into real-world deployments, defined ecosystem standards, and began energizing the developer community. June will build on this momentum.</p><p>Follow us at<a href="https://x.com/@ProjectZKM"> @ProjectZKM</a> to stay ahead of what’s next 🟠</p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/the-zkm-may-update-2025"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=039741e738ec" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[zkMIPS 1.0: Built for Ethereum. Built for Bitcoin]]></title>
            <link>https://medium.com/@ProjectZKM/zkmips-1-0-built-for-ethereum-built-for-bitcoin-36b50a781143?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/36b50a781143</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Wed, 25 Jun 2025 17:13:34 GMT</pubDate>
            <atom:updated>2025-06-25T17:13:34.710Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*oAi7xvRoPHewRTE1.png" /></figure><p>Zero-knowledge systems are quickly moving from research to production, and the industry is converging around a core assumption: ZK is the cryptographic foundation for how trustless systems will operate at scale.</p><p>This past week, ZKM released zkMIPS 1.0 — the first production-ready zkVM built on the MIPS32r2 architecture. It delivers up to 19x faster proving over its prior version and outperforms other major zkVMs on CPU benchmarks across standard workloads. But beyond performance, what matters is where zkMIPS 1.0 is being deployed: Ethereum and Bitcoin. In both ecosystems, it’s being primed to enable trust-minimized execution with real-world stakes and real-time constraints.</p><h3>ZK for Ethereum: Enshrining Proofs</h3><p><a href="https://x.com/@ethereumfndn">@ethereumfndn</a> has made it clear: zero-knowledge proofs will become a native part of its consensus in the long term. The <a href="https://x.com/@eth_proofs">@eth_proofs</a> initiative is the testbed for that future, shaping up to be the most important benchmarking environment for zkVMs. With over 20 zkVMs now lining up to participate, <a href="https://x.com/@ethereum">@ethereum</a> is about to become the proving ground for verifiable compute infrastructure.</p><p>ZKM is one of the few teams already submitting proofs of Ethereum mainnet blocks through EthProofs, and zkMIPS 1.0 is now fully integrated. The proving architecture supports Groth16, PLONK, and compressed STARKs, giving flexibility across verification cost, recursion compatibility, and hardware environments.</p><p>Upcoming GPU prover support and circuit improvements are expected to drive proof time and cost even lower — opening the door to <strong>real-time proving </strong>of Ethereum L1 execution.</p><h3>ZK for Bitcoin: Native Security, Finally Possible</h3><p>At the same time, zkMIPS 1.0 is live on <a href="https://x.com/@GOATRollup">@GOATRollup</a> — a Bitcoin Layer 2 that uses BitVM2 and zkMIPS to provide sustainable, native BTC yield through a fully trust-minimized decentralized sequencer and execution architecture.</p><p>Bitcoin has long lacked credible L2 systems with native BTC security. BitVM2 changes this: enabling arbitrary computation on Bitcoin without L1 changes. <strong>But it’s only viable in practice when paired with a performant, stable zkVM. That’s where zkMIPS comes in.</strong></p><p>GOAT BitVM2, introduced this week, solves key production challenges — double-spend risk, slow challenge resolution, and misaligned incentives — by combining zkMIPS proofs with a decentralized sequencer layer and a fully cryptoeconomically secure challenge protocol. The result: finality in under 24 hours and a real path to native Bitcoin execution.</p><h3>Two Foundations, One Objective</h3><p>While zkMIPS was built for generality, its supporting infrastructure has been engineered with two specific outcomes in mind.</p><p>Ethereum’s roadmap demands scale, modularity, and recursive efficiency. Bitcoin’s demands native settlement, minimal trust, and economic security. <strong>zkMIPS 1.0 is built to meet both.</strong></p><p>The team has repeatedly chosen the more difficult path — opting for a mature fixed ISA (MIPS32r2) over the more popular but evolving RISC-V. That decision now shows its payoff: smaller programs, simpler constraint systems, and performance gains that translate directly into lower cost and higher speed.</p><p>More integrations are on the way — from Rollup upgrades to verifying AI systems — and the ZKM team shows no signs of slowing down.</p><h3>Developer Track</h3><p>If you’ve been waiting for the right moment to start building with zkMIPS, this is it.</p><p>We’re inviting developers to create zkMIPS-powered applications, contribute to the zkMIPS toolchain or example projects, and produce educational content to help onboard others.</p><p>This is your chance to help shape the zkVM ecosystem from the ground up.</p><p>‍</p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/zkmips-1-0-built-for-ethereum-built-for-bitcoin"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=36b50a781143" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ZKM Developer Track: A Call to Builders]]></title>
            <link>https://medium.com/@ProjectZKM/zkm-developer-track-a-call-to-builders-0d78604f4239?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/0d78604f4239</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Wed, 25 Jun 2025 17:13:05 GMT</pubDate>
            <atom:updated>2025-06-25T17:13:05.005Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*HAHesvfMmaiCfIJJ.png" /></figure><p>With the release of zkMIPS 1.0, ZKM has opened up a new paradigm. After months of intensive engineering, zkMIPS is now production-ready, performance-optimized, and actively proving Ethereum mainnet blocks and powering Bitcoin-native applications like GOAT Network. But this milestone isn’t the end — it’s the beginning. And we want YOU to be a part of it.</p><p>The ZKM Early Contributor Program now enters its third and final phase, focused entirely on builders. While previous phases invited users to generate proofs and contribute to the growing ZK ecosystem through community content, Phase 3 is aimed squarely at developers who want to explore and implement the benefits of verifiable computation into their applications.</p><h3>Why Contribute Now?</h3><p>Phase 3 coincides with the most technically mature point in ZKM’s journey to date. zkMIPS 1.0 delivers 6x to 19x improvements over the previous version across benchmarks, and for the first time, developers have access to a full SDK, patched libraries, and a working toolchain designed for real-world use.</p><p>But more importantly, ZKM is not just another zkVM. It’s the only production-ready VM based on MIPS — a fixed, stable instruction set chosen for its alignment with efficient proof generation, trace compactness, and long-term compatibility. This makes zkMIPS uniquely suited to developers who want to go beyond experimentation and build applications meant to last.</p><h3>What Can Developers Do in Phase 3?</h3><p>ZKM is calling on developers to engage in three core ways:</p><ol><li><strong>Build a Real zkMIPS App</strong></li></ol><ul><li>Use the provided ZKM SDK, compiler toolchain, and template to build a verifiable application (zkApp) running on zkMIPS.</li><li>Focus areas include identity, AI-verification, Bitcoin L2s, or novel trust-minimized systems.<br>‍</li></ul><ol><li><strong>Improve the Tooling</strong></li></ol><ul><li>Contribute to ZKM’s open-source repos by improving tooling, documentation, or templates.</li><li>Star and fork the GitHub repo to show support and help raise visibility.<br>‍</li></ul><ol><li><strong>Run and Optimize Proofs</strong></li></ol><ul><li>Deploy the ZKM Prover locally or via the Proof Network and experiment with custom circuits or verification logic.</li><li>Submit benchmarks or optimization PRs to help shape the next proving iteration.</li></ul><h3>Why It Matters</h3><p>This is more than just another ZK program. ZKM is building verifiable compute infrastructure that already works — on Ethereum, on Bitcoin, and soon across chains. <strong>By contributing now, developers get a chance to work with what is arguably the most performant zkVM stack currently available.</strong></p><p>If you believe in the long-term impact of zero-knowledge infrastructure, and if you want to work with a team that’s been prioritizing the building of superior tech over hollow marketing campaigns, now is the time.</p><p>Ready to build? View our ECP task board here: <a href="https://zealy.io/cw/zkm/invite/S4hu8psK84F5XtAHTvohi">Tasks &amp; Submissions</a></p><p>Try it. Fork it. Prove it.</p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/zkm-developer-track-a-call-to-builders"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=0d78604f4239" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[zkMIPS 1.0 — Production-Ready, Performance-Optimized, and Open for Developers]]></title>
            <link>https://medium.com/@ProjectZKM/zkmips-1-0-production-ready-performance-optimized-and-open-for-developers-7d6508cea03f?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/7d6508cea03f</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Tue, 06 May 2025 13:53:20 GMT</pubDate>
            <atom:updated>2025-05-06T13:53:20.203Z</atom:updated>
            <content:encoded><![CDATA[<h3>zkMIPS 1.0 — Production-Ready, Performance-Optimized, and Open for Developers</h3><p>zkMIPS 1.0 is here — our most significant leap toward real-time proving, following months of careful engineering and system-level breakthroughs.</p><p>We’ve been heads-down refining every layer of the stack — now it’s ready: the first production-ready version of our MIPS-based zkVM. This upgrade delivers a 6x-19x performance improvement over zkMIPS 0.3.0 and is a major breakthrough in our attempt to build the most simple, stable, and scalable foundation for real-time verifiable computation.</p><p>zkMIPS 1.0 is the result of a full-stack overhaul: new architecture support, optimized proving systems, memory checking mechanisms, chip decomposition, and precompile strategy. Together, these updates make zkMIPS a highly performant proving infrastructure for the next generation of verifiable applications.</p><h3>Key Upgrades in zkMIPS 1.0</h3><p><strong>Support for MIPS32r2<br></strong> We’ve upgraded from MIPS2 to the MIPS32r2 ISA, unlocking access to a broader opcode set (e.g. MADDU) and compiler-level optimizations. This reduces program size, enabling more efficient execution and smaller trace matrices during proof generation.</p><p><strong>Powered by Plonky3 and Koala Prime Field<br></strong> zkMIPS now leverages Plonky3 — an advanced STARK backend using the FRI protocol — and adapts SP1’s circuit builder and recursion infrastructure. The KoalaBear 31-bit prime significantly accelerates arithmetic operations compared to the previous 64-bit Goldilocks setup.</p><p><strong>Multiset Hashing for Memory Consistency<br></strong> We’ve replaced Merkle trees with multiset hashing for memory consistency checks. This reduces witness size, minimizes communication overhead, and enables parallel verification.</p><p><strong>Area-Minimized Chip Design<br></strong> zkMIPS partitions circuits into modular ‘chips’ that minimize constraint layout area. This reduces proof generation costs while preserving completeness. Applied across CPU and memory subsystems.</p><p><strong>Precompiles for Hot Paths<br></strong> Heavy operations like Keccak and field arithmetic are abstracted into precompiles, reducing constraint payload and speeding up verification.</p><h3>Benchmarking the Performance Gains</h3><p>We benchmarked zkMIPS 1.0 against zkMIPS 0.3.0 using the zkVM-benchmarks suite ( <a href="https://github.com/zkMIPS/zkvm-benchmarks">https://github.com/zkMIPS/zkvm-benchmarks</a>), running on AWS r6a.8xlarge.</p><p>Results below (lower is better):</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Z9lN57IR4NXyAPqi.png" /></figure><p>Across a wide variety of workloads, zkMIPS v1.0 consistently delivers 6x-19x improvements in performance over v0.3.</p><p>For a performance comparison with other leading zkVM’s, see: <a href="https://docs.zkm.io/introduction/performance.html#performance-of-zkmips">https://docs.zkm.io/introduction/performance.html#performance-of-zkmips</a></p><h3>A Developer Toolkit</h3><p>zkMIPS 1.0 ships with a full toolchain and SDK, including:</p><ul><li>A compiler toolchain targeting mipsel-zkm-zkvm-elf</li><li>A zkm_sdk Rust crate for local proof generation and verification</li><li>Support for Core, Compressed, Groth16, and PLONK proofs</li><li>A network prover integration with the ZKM Proof Network</li><li>Guest patches and precompile support for common cryptographic libraries</li></ul><p>Developers can get started in minutes with:</p><p>curl — proto ‘=https’ — tlsv1.2 -sSf <a href="https://raw.githubusercontent.com/zkMIPS/toolchain/refs/heads/main/setup.sh">https://raw.githubusercontent.com/zkMIPS/toolchain/refs/heads/main/setup.sh</a> | sh</p><h3>Ecosystem Readiness</h3><p>zkMIPS 1.0 is already integrated into the ZKM Proof Network and is live-proving Ethereum mainnet blocks as part of the Ethereum Foundation’s EthProofs initiative.</p><p>It’s also in production with GOAT Network, a Bitcoin L2 powered by BitVM2 and built entirely on zkMIPS. This demonstrates the first real-world deployment of zkMIPS as a trust-minimized Bitcoin execution environment, with further integrations underway across AI, Optimistic Rollup upgrades, and more. <strong>‍</strong></p><h3>Using zkMIPS 1.0 on the ZKM Proof Network</h3><p>The same 6x-19x performance improvements achieved in local benchmarks now apply to network proving as well, enabling significantly faster proof generation for supported programs.</p><p>zkMIPS 1.0 introduces a new circuit architecture, so verifier keys must be regenerated. Proofs generated with zkMIPS 1.0 are not compatible with previous versions.</p><p>All proof types — Groth16, PLONK, and compressed STARKs — are supported with zkMIPS 1.0 on the ZKM Proof Network.</p><p>If you are already using the ZKM Project Template ( <a href="https://github.com/zkMIPS/zkm-project-template">https://github.com/zkMIPS/zkm-project-template</a>), you don’t have to change anything on the prover side to use zkMIPS 1.0. For verification, just regenerate the verification key.</p><p>If you’re using the local prover, zkMIPS 1.0 support is coming soon. In the meantime, follow thisguide to get started: <a href="https://docs.zkm.io/dev/prover.html#prover">https://docs.zkm.io/dev/prover.html#prover</a></p><p>Make sure to pull the latest zkm_sdk crate (from the main branch) to ensure compatibility with the zkMIPS 1.0 toolchain.</p><p>We also provide a set ofpatched crates to speed up proof generation: <a href="https://docs.zkm.io/dev/patched-crates.html">https://docs.zkm.io/dev/patched-crates.html</a></p><h3>What Comes Next</h3><p>zkMIPS will continue to evolve. More patches, better cost models, broader precompile support, and deeper integration into rollups and trustless bridges are underway.</p><p>We’re building toward a unified proving infrastructure — one that can support multiple chains, multiple proof types, and radically improved developer experience.</p><p>zkMIPS 1.0 is the milestone that makes that real, but there is much more to come.</p><p><strong>Try it. Fork it. Prove it.</strong></p><h3>Developer Track</h3><p>With the release of zkMIPS 1.0, we’re entering the final phase of the ZKM Early Contributor Program — focused on developers. If you’ve been waiting for the right moment to start building with zkMIPS, this is it.</p><p>Key tasks include building and publishing zkMIPS-powered applications, contributing to the zkMIPS toolchain or example projects, and producing educational content to help onboard others.</p><p>This is your chance to help shape the zkVM ecosystem from the ground up — earning ZKM POINTS in the process.</p><p><strong><em>Get started with zkMIPS 1.0: </em></strong><a href="https://docs.zkm.io/"><strong><em>ZKM Docs</em></strong></a></p><p><strong><em>Build with zkMIPS 1.0: </em></strong><a href="https://github.com/zkMIPS/zkMIPS"><strong><em>ZKM Github</em></strong></a></p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/zkmips-1-0-production-ready-performance-optimized-and-open-for-developers"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7d6508cea03f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ZKM April Update]]></title>
            <link>https://medium.com/@ProjectZKM/zkm-april-update-2e48f0c45d93?source=rss-91f33735bd6a------2</link>
            <guid isPermaLink="false">https://medium.com/p/2e48f0c45d93</guid>
            <dc:creator><![CDATA[ZKM]]></dc:creator>
            <pubDate>Tue, 06 May 2025 09:03:32 GMT</pubDate>
            <atom:updated>2025-05-06T09:03:32.358Z</atom:updated>
            <content:encoded><![CDATA[<p>zkMIPS 1.0 is almost here — the momentum is building and the industry is starting to take notice. The ZKM team has been heads-down, hardcore building, ready for an explosive May. But April has still been a notable month, with new research releases on provers and hash circuits, and appearances across global events.</p><p><strong>zkMIPS 1.0 is near.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/836/0*e8OevTRd3mcAP34l.png" /></figure><p>This release will bring the most advanced performance and architecture upgrades to date:</p><ul><li>6–20x increased prover performance compared to zkMIPS 0.3</li><li>Integration of MIPS32r2, a fixed, efficient ISA that reduces circuit complexity and improves execution trace density</li><li>Migration to Plonky3, our next-gen proving backend</li><li>New optimizations: multiset hashing, chip decomposition, and high-efficiency precompiles</li><li>Designed for real-world use: powering GOAT Network (Bitcoin L2), proving Ethereum blocks (via Ethproofs), and upcoming integrations with Metis, LazAI &amp; more</li><li>Unlike zkVMs based on RISC-V, zkMIPS uses a stable, 20+ year standardized ISA, purpose-built for verifiable computation</li></ul><p>zkMIPS 1.0 is ZKM’s biggest step to-date toward real-time, trust-minimized execution across blockchain ecosystems — starting with Bitcoin and Ethereum.</p><p>This month, we continued delivering deep technical breakdowns of the ZKM Prover:</p><ul><li><strong>Arithmetic Operations and CPU Operations</strong>: Explore how arithmetic and CPU operations work in the ZKM Prover, and what that means for developers optimizing for performance →<a href="https://zkm.io/blog/zkm-prover-arithmetic-operations-and-cpu-operations"> Read the article</a></li><li><strong>Cross-Table Lookups</strong>: How the ZKM Prover uses CTLs to ensure consistency across execution layers — CPU, memory, arithmetic — enabling modular, scalable proofs → <a href="https://zkm.io/blog/zkm-prover-cross-table-lookups">Read the article</a></li><li><strong>Poseidon in STARK</strong>: A deep dive on PoseidonStark, our custom Poseidon hash implementation for STARKs. It covers round computations, constraint design, and witness generation. A practical reference for developers optimizing hash functions in ZK circuits →<a href="https://www.zkm.io/blog/zkm-prover-poseidon-stark">Read the article</a></li><li><strong>Why MIPS?</strong>: In perhaps the standout piece of the month, this article explains why ZKM chose the road less traveled by building zkMIPS on MIPS32r2 instead of RISC-V. This deep dive explains how a richer, more mature instruction set leads to shorter traces, lower proof overhead, and a more performant zkVM → <a href="https://www.zkm.io/blog/why-zkm-chose-mips32r2-over-risc-v-for-zkmips">Read the article</a></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*gaf7BKPYm7AhRD3E.png" /></figure><p><em>An Architectural Comparison between MIPS32r2 and RISC-V</em></p><h3>Global Events</h3><ul><li><strong>The ZK/AI Summit (Token2049, Dubai)</strong>: ZKM Co-founder and Chief Scientist Ming Guo participated in multiple panels at House of ZK’s recent event in Dubai. The summit reached full capacity and received over 200k livestream views. Catch up on the action here →<a href="https://x.com/HouseofZK/status/1916747313638211921">Watch now</a></li><li><strong>Web3 Festival, Hong Kong</strong>: ZKM Developer Lead Stephen Duan joined the panel “The ZK Road to Enshrinement”, where he shared how zkMIPS is expanding beyond EVM chains, unlocking cross-ecosystem verifiability and enabling trust-minimized computation →<a href="https://www.youtube.com/watch?v=njOye6IivF4">Watch now</a></li><li><strong>zkVM Meetup (Shanghai)</strong>: Stephen also gave a deep-dive into zkMIPS’ modular STARK-to-SNARK pipeline and why a fixed ISA like MIPS offers unmatched ZK performance, during the Shanghai zkVM meetup.</li><li><strong>Zero-Knowledge &amp; Bitcoin College Tour</strong>: Presenting to blockchain clubs from Yale, Princeton, Columbia, and NYU, Ming talked about ZKM’s Entangled Rollup Design and highlighted the role of zkMIPS in powering GOAT Network, the first Bitcoin Layer 2 to offer sustainable native yield. The recording will be available soon.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*nu2emdB2RVxS1qkx.jpeg" /></figure><p><em>Will Corcoran of the Ethereum Foundation giving a ZKM shoutout at the College Tour</em></p><p>April saw ZKM’s core team participate in multiple ZK gatherings around the world:</p><h3>Ethproofs</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*d0bSlexDF-Jimaz-.png" /></figure><p>In the first ever Ethproofs builders call, ZKM Developer Lead Stephen Duan joined Justin Drake and the Ethproofs community to discuss the upcoming zkMIPS 1.0 upgrade, sharing how zkMIPS 1.0 delivers a 6–20x performance boost over v0.3, and outlining ZKM’s path toward real-time Ethereum block proving.</p><p>Justin expressed his excitement about the progress being made by ZKM, and rightfully so. The dark horse of the zkVM race is about to get much, much faster.</p><ul><li>Final performance benchmarks and public rollout of <strong>zkMIPS 1.0</strong>.</li><li>Expanded dev tutorials and precompiles.</li><li>Deeper integrations with Ethproofs — we’ll let the data do the talking.</li><li>More IRL events and workshops.</li></ul><h3>Looking Ahead</h3><p>As our big zkVM upgrade is prepared for launch, May is shaping up to be the most exciting month in ZKM’s history:</p><p>The future of verifiable computation is fast, flexible, and finally here.</p><p>Let’s build together.</p><p>🔗 <a href="https://x.com/ProjectZKM">Follow us on X</a></p><p>📚 <a href="https://www.zkm.io/blog">Explore our research</a></p><p>💬 <a href="https://discord.com/invite/zkm">Join the community</a></p><p><em>Originally published at </em><a href="https://www.zkm.io/blog/zkm-april-update-2025"><em>https://www.zkm.io</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2e48f0c45d93" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>