<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>knowLOG</title>
        <link>https://paragraph.com/@knowlog</link>
        <description>zk compressed.</description>
        <lastBuildDate>Sun, 17 May 2026 01:18:13 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>knowLOG</title>
            <url>https://storage.googleapis.com/papyrus_images/f11045c3ae104cdfdee0fbec7d317e3325c775a7996981bfadecdf95a0dd8597.jpg</url>
            <link>https://paragraph.com/@knowlog</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[zkVerify
]]></title>
            <link>https://paragraph.com/@knowlog/zkverify</link>
            <guid>4E7W0prR3oM9zJHuz5eb</guid>
            <pubDate>Sun, 21 Dec 2025 13:36:47 GMT</pubDate>
            <description><![CDATA[A blockchain that runs no apps, instead, just verify! A one-stop solution for all proof-verification needs.]]></description>
            <content:encoded><![CDATA[<hr><p><strong>okay so what is zkVerify?<br></strong>a one-liner answer would be: it is a one-stop solution for all proof verification needs<br><br>Not running apps… not doing DeFi…<br>Just <em>verifying proofs as fast and cheap as possible.<br><br></em><strong>so… is zkVerify some helper chain or plugin?<br></strong>Nope.<br>It’s an <strong>actual L1 blockchain</strong>, built <em>solely</em> for verification.<br>Meaning:</p><ul><li><p>It has its own validators</p></li><li><p>It has its own consensus</p></li><li><p>It’s optimized only for verifying proofs</p></li></ul><p>instead of asking another L1 to verify proofs on-chain, systems can offload proof-checking to zkVerify<br><br><strong>and what kinds of proofs can it verify?<br></strong>Pretty much <em>all major proof systems</em>, for example:</p><ul><li><p>Groth16</p></li><li><p>EZKL</p></li><li><p>UltraHonk (Noir)</p></li><li><p>UltraPlonk (Noir)</p></li><li><p>Risc0 (STARK-proof)</p></li><li><p>SP1 (STARK-proof)<br> <em>you name it, they have it ;)</em></p></li></ul><p>let’s dive deep into the “how?”<strong><em><br><br>from proof submission → verification → attestation → on-chain confirmation</em></strong><br></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8ce976072bb2867f66b7c57eb71a53cff72ff5e1c4dac648eded8e1e937493d8.png" blurdataurl="data:image/png;base64,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" nextheight="1118" nextwidth="1330" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><strong><em><br></em>1.<em> </em>Proof creation by a client<br></strong>A zkApp, zkRollup, zkBridge, or any ZK-enabled system generates a proof.<br>Example: An <strong>Fflonk</strong> proof created by a zkApp.</p><p><br><strong>2. Proof submission to zkVerify<br></strong>The client sends its proof to zkVerify using the <strong>Proof Submission Interface</strong>.<br><br>This interface accepts:</p><ul><li><p><em>The proof</em></p></li><li><p><em>The verification key (vk)</em></p></li><li><p><em>Public inputs</em></p></li></ul><p>Each proving system (Groth16, Plonk, STARK, Halo2, etc.) has proof specific verification palettes</p><p><strong>3. Native rust verification<br></strong>Once received, zkVerify:</p><ul><li><p>Selects the appropriate <em>verifier module</em></p></li><li><p>Runs <strong>native Rust verification</strong> (faster, safer, and cheaper than Solidity-based verification)</p></li></ul><p><em>If valid → the proof moves to the queue for inclusion.<br>If invalid → the system returns an error.</em></p><p><strong>4. Proof queued for block inclusion<br><em>Both </em></strong>Validated and invalidated proofs are queued on-chain and made available for aggregation according to predefined policies</p><p>This batching:</p><ul><li><p><em>Reduces cost</em></p></li><li><p><em>Allows aggregation of heterogeneous proof types</em></p></li><li><p><em>Leads to a uniform settlement structure</em></p></li></ul><p><strong>4.5 Permissionless Aggregation<br></strong> Aggregation on zkVerify is permissionless.<br> Any network participant can act as an <strong>aggregation publisher</strong> by:</p><ul><li><p>Selecting an aggregation domain</p></li><li><p>Building the Merkle tree off-chain</p></li><li><p>Calling the aggregate extrinsic on zkVerify</p></li></ul><p>Publishers pay the computation cost upfront and are reimbursed using fees collected from proof submitters.<br></p><p><strong>5. Merkle Tree Construction<br></strong>zkVerify exposes a permissionless aggregation mechanism, where any participant (publisher) can aggregate queued proofs into a <strong>Merkle tree</strong> according to predefined aggregation domains and policies, where:</p><ul><li><p>Each leaf represents a verified proof statement</p></li><li><p>Tree contains a mix of proof types (Groth16 + Plonk + STARK + Fflonk, etc.)</p></li><li><p>The root is a compact representation of all included proofs</p></li></ul><p>This is called the <strong>z<em>kVerify Merkle Tree</em></strong><em>.</em></p><p><strong>6. Attestation generation</strong></p><p>Once an aggregation is published, zkVerify <strong>finalizes it on-chain</strong> by emitting an aggregation receipt (Merkle root) and related events. This finalized receipt acts as an <strong>attestation</strong> - a cryptographic commitment by the zkVerify chain that:</p><ul><li><p>These proofs were verified</p></li><li><p>This Merkle root is canonical</p></li></ul><p>Each attestation includes:</p><ul><li><p><em>The </em><strong><em>Merkle root</em></strong><em> of the proof tree</em></p></li><li><p><em>An </em><strong><em>attestation ID</em></strong></p></li><li><p><em>A digital signature</em></p></li></ul><p>It represents “<em>proof that these proofs were verified and recorded.”</em></p><p><strong>7. Relay to Destination Chain<br></strong>A relayer sends the attestation to a smart contract called the <strong>zkVerify L1 Contract</strong> on the user’s chosen destination chain.</p><p>Users pay:</p><ul><li><p>Base zkVerify fee</p></li><li><p>Relayer fee (for posting on their chain of choice)<br></p></li></ul><p><strong>8. Attestation Stored On-Chain<br></strong>The zkVerify L1 Contract:</p><ul><li><p>Stores the attestation</p></li><li><p>Validates its signature</p></li><li><p>Makes it available for public verification</p></li></ul><p>This acts as the <em>source of truth</em> on that chain.</p><p><strong>9. Client Verifies Proof Inclusion<br></strong>The zkApp that originally sent the proof can now:</p><ol><li><p>Fetch the <strong>Merkle path</strong></p></li><li><p>Submit the path to its own smart contract</p></li><li><p>Confirm that:<br><em>The proof → is part of the Merkle tree<br>The Merkle tree → matches an attestation on-chain</em></p></li></ol><p>If both match = the proof is successfully verified by zkVerify, <em>yay </em>!</p><p>Simple job. Done extremely well.</p><p><strong><em>don’t trust, zkVerify ;))</em></strong></p><hr><p>Thanks for reading :)</p><p><br><br></p>]]></content:encoded>
            <author>knowlog@newsletter.paragraph.com (Devisha)</author>
            <author>knowlog@newsletter.paragraph.com (ZKULTURE)</author>
            <category>zk</category>
            <category>zkverify</category>
            <category>proof</category>
            <category>verification</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/235c4fef8f3f7d7dd2aaf2e10abc87c1f9044d914ffe68b2f69a8c0d85c59a5b.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>