<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zk-STARKs on kenji.blog</title><link>http://kenji.blog/en/tags/zk-starks/</link><description>Recent content in Zk-STARKs on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 19:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/en/tags/zk-starks/index.xml" rel="self" type="application/rss+xml"/><item><title>How Zero-Knowledge Proofs (ZKP) Work and Their Latest Applications in Web3 and Security</title><link>http://kenji.blog/en/p/zero-knowledge-proofs-zkp-web3-security/</link><pubDate>Fri, 11 Sep 2026 19:00:00 +0900</pubDate><guid>http://kenji.blog/en/p/zero-knowledge-proofs-zkp-web3-security/</guid><description>&lt;img src="http://kenji.blog/p/zero-knowledge-proofs-zkp-web3-security/img/eyecatch.jpg" alt="Featured image of post How Zero-Knowledge Proofs (ZKP) Work and Their Latest Applications in Web3 and Security" />&lt;h2 id="introduction">Introduction
&lt;/h2>&lt;p>In modern digital society, data privacy and scalability have become two of the most critical challenges. As the risks of personal information leaks and unauthorized use increase, there is a strong demand for technology that allows you to &amp;ldquo;prove that you have certain information without revealing the information itself to the other party.&amp;rdquo; This is realized by &lt;strong>Zero-Knowledge Proofs (ZKP)&lt;/strong>.&lt;/p>
&lt;p>Zero-Knowledge Proofs is a concept in cryptography first proposed in the 1980s by Shafi Goldwasser, Silvio Micali, and Charles Rackoff, but for a long time, it remained primarily a theoretical research topic. However, with the rise of blockchain technology and Web3, the situation completely changed. ZKP has suddenly been thrust into the spotlight as the &amp;ldquo;magic wand&amp;rdquo; that simultaneously solves the scalability problems (limits of processing capacity) and privacy problems (the fact that all transactions are public) faced by public blockchains like Ethereum.&lt;/p>
&lt;p>In this article, we will provide a highly detailed and technically deep explanation, ranging from the basic concepts of Zero-Knowledge Proofs to the profound mathematical and cryptographic mechanisms of the currently mainstream &lt;strong>zk-SNARKs&lt;/strong> and &lt;strong>zk-STARKs&lt;/strong>, and finally to the latest application examples in Web3 and security, such as ZK-Rollups and Decentralized Identity (DID).&lt;/p>
&lt;hr>
&lt;h2 id="what-is-a-zero-knowledge-proof-zkp">What is a Zero-Knowledge Proof (ZKP)?
&lt;/h2>&lt;p>A Zero-Knowledge Proof (ZKP) refers to a protocol in which a prover can prove to a verifier that a certain proposition is true, &amp;ldquo;without transmitting any information other than the fact that the proposition is true.&amp;rdquo;&lt;/p>
&lt;h3 id="the-3-requirements-for-zkp">The 3 Requirements for ZKP
&lt;/h3>&lt;p>To be established as a ZKP, the following three properties must be strictly satisfied:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Completeness&lt;/strong>
If the proposition is true, and both the prover and the verifier follow the protocol correctly, the verifier must accept the proof with an overwhelming probability.&lt;/li>
&lt;li>&lt;strong>Soundness&lt;/strong>
If the proposition is false, no matter how computationally powerful and malicious the prover is, it is impossible (except for a negligibly small probability) to deceive the verifier into accepting the proof.&lt;/li>
&lt;li>&lt;strong>Zero-Knowledge&lt;/strong>
If the proposition is true, the verifier cannot obtain any information from the proof process other than the fact that &amp;ldquo;the proposition is true.&amp;rdquo; From the verifier&amp;rsquo;s perspective, this is proven by the mathematical definition that it is possible to simulate the proof process (a simulator exists).&lt;/li>
&lt;/ol>
&lt;h3 id="interactive-and-non-interactive-proofs">Interactive and Non-Interactive Proofs
&lt;/h3>&lt;p>There are two types of ZKPs: &lt;strong>Interactive Proofs&lt;/strong>, where the prover and verifier communicate multiple times, and &lt;strong>Non-Interactive Proofs&lt;/strong>, where the prover sends the proof data only once.&lt;/p>
&lt;h4 id="interactive-zkp">Interactive ZKP
&lt;/h4>&lt;p>Early ZKPs were designed as interactive protocols. The famous &amp;ldquo;Ali Baba&amp;rsquo;s Cave&amp;rdquo; allegory falls under this category. The general flow of the protocol is as follows:&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant Prover as "Prover"
participant Verifier as "Verifier"
Note over Prover, Verifier: "Basic Flow of the Interactive Proof Protocol"
Prover->>Verifier: "1. Send Commitment"
Verifier->>Prover: "2. Send Random Challenge"
Prover->>Verifier: "3. Calculate and Send Response"
Note over Verifier: "Verify the Response"
Verifier-->>Prover: "4. Accept / Reject"
Note over Prover, Verifier: "* Repeat this dozens of times to increase certainty"&lt;/div>
&lt;p>This method is powerful, but the verifier must be online, making it inconvenient to apply to asynchronous distributed systems like blockchains. In a blockchain, anyone must be able to verify past proofs at any time.&lt;/p>
&lt;h4 id="fiat-shamir-heuristic-and-non-interactivity">Fiat-Shamir Heuristic and Non-Interactivity
&lt;/h4>&lt;p>A breakthrough technique for converting interactive proofs into Non-Interactive Zero-Knowledge Proofs (NIZK) is the &lt;strong>Fiat-Shamir Heuristic&lt;/strong>.&lt;/p>
&lt;p>Instead of the &amp;ldquo;random challenge&amp;rdquo; sent by the verifier, the prover self-generates a &amp;ldquo;pseudo-random challenge&amp;rdquo; using their own commitment and the hash value of public information. Assuming that a cryptographic hash function (such as SHA-256 or Keccak) functions as a random oracle, the prover cannot predict or manipulate the challenge in advance, allowing the proof to be completed with a single message transmission while maintaining the same level of security as an interactive proof.&lt;/p>
&lt;hr>
&lt;h2 id="technical-details-of-zk-snarks">Technical Details of zk-SNARKs
&lt;/h2>&lt;p>Currently, the most widely used ZKP is &lt;strong>zk-SNARKs&lt;/strong> (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge). As the name suggests, it is an Argument of Knowledge that has zero-knowledge properties (zk), features very small proof sizes and fast verification (Succinct), and is Non-Interactive.&lt;/p>
&lt;p>The foundation of zk-SNARKs is advanced algebraic geometry and cryptography. It converts the execution and computation of programs into the verification of specific polynomial equations.&lt;/p>
&lt;h3 id="1-conversion-to-arithmetic-circuits-and-r1cs-rank-1-constraint-system">1. Conversion to Arithmetic Circuits and R1CS (Rank-1 Constraint System)
&lt;/h3>&lt;p>First, any computation you want to prove (such as an algorithm or smart contract logic) is converted into an &lt;strong>Arithmetic Circuit&lt;/strong> consisting of addition and multiplication gates.&lt;/p>
&lt;p>Next, this arithmetic circuit is converted into a set of matrix equations called &lt;strong>R1CS (Rank-1 Constraint System)&lt;/strong>. R1CS is the problem of finding matrices $A, B, C$ that satisfy the following constraint for a variable vector $x$:&lt;/p>
$$ (A \cdot x) \circ (B \cdot x) = C \cdot x $$
&lt;p>Here, $\circ$ represents the Hadamard product (element-wise product). This constraint ensures that all logic gates (especially multiplication gates) in the circuit are calculated correctly.&lt;/p>
&lt;h3 id="2-conversion-to-qap-quadratic-arithmetic-program">2. Conversion to QAP (Quadratic Arithmetic Program)
&lt;/h3>&lt;p>Since there are countless R1CS matrix constraints, verifying them individually is highly inefficient. Therefore, Lagrange interpolation is used to compress these constraints into a single polynomial equation. This is the &lt;strong>QAP (Quadratic Arithmetic Program)&lt;/strong>.&lt;/p>
&lt;p>Through the conversion to QAP, the problem to be proven is reduced to the question: &amp;ldquo;Is a specific polynomial $P(x)$ divisible by another known polynomial $Z(x)$?&amp;rdquo;&lt;/p>
$$ P(x) = L(x) \cdot R(x) - O(x) $$
&lt;p>Here, $L(x), R(x), O(x)$ are combinations of polynomials corresponding to each row of matrices $A, B, C$, respectively. If the prover knows the correct solution (Witness), the value becomes 0 at each root (evaluation point) of $P(x)$, so $P(x)$ will have the target polynomial $Z(x)$ as a factor. In other words, there exists a polynomial $H(x)$ such that the following equation holds:&lt;/p>
$$ P(x) = H(x) \cdot Z(x) $$
&lt;p>The verifier only needs to check whether this equation $P(s) = H(s) \cdot Z(s)$ holds at a certain random secret point $s$ to instantly verify that the entire computation was performed correctly. This is the secret of its &amp;ldquo;Succinctness.&amp;rdquo;&lt;/p>
&lt;h3 id="3-elliptic-curve-cryptography-and-bilinear-pairings">3. Elliptic Curve Cryptography and Bilinear Pairings
&lt;/h3>&lt;p>However, if the verifier knows the secret point $s$, it would be possible for the prover to fabricate a fake polynomial to satisfy the equation (a collapse of soundness). Therefore, it is necessary to perform computations while keeping $s$ encrypted (using homomorphic encryption) so that no one knows it.&lt;/p>
&lt;p>This is achieved using &lt;strong>Bilinear Pairings&lt;/strong> on elliptic curves.
A pairing $e$ is a special function that can calculate a value equivalent to the encryption of the product of two encrypted values.&lt;/p>
$$ e(g_1^a, g_2^b) = e(g_1, g_2)^{ab} $$
&lt;p>Even without knowing $s$ itself, the prover calculates the encrypted values of the polynomials $P(s)$ and $H(s)$ using encrypted values of powers of $s$ (this is called the CRS: Common Reference String). The verifier uses the pairing function to verify whether the relationship $P(s) = H(s) \cdot Z(s)$ holds while the values remain encrypted.&lt;/p>
&lt;h3 id="4-trusted-setup">4. Trusted Setup
&lt;/h3>&lt;p>The biggest weakness of zk-SNARKs (especially early ones like Groth16) is that they require a process to generate the secret point $s$, known as a &lt;strong>Trusted Setup&lt;/strong>. If the creator of $s$ retains the value without destroying it, they can generate arbitrary fake proofs (the Toxic Waste problem).&lt;/p>
&lt;p>To prevent this, a ritual called a &amp;ldquo;Ceremony&amp;rdquo; is conducted using Multi-Party Computation (MPC). Numerous participants cooperate to provide randomness, and as long as at least one participant honestly destroys their random value, the security of the entire system is maintained. However, research to eliminate this dependency has been ongoing for many years.&lt;/p>
&lt;hr>
&lt;h2 id="technical-details-of-zk-starks">Technical Details of zk-STARKs
&lt;/h2>&lt;p>&lt;strong>zk-STARKs&lt;/strong> (Zero-Knowledge Scalable Transparent Argument of Knowledge) emerged as an answer to the reliance on trusted setups and the risk of elliptic curve cryptography being decrypted by quantum computers.&lt;/p>
&lt;p>Developed by Eli Ben-Sasson and others, STARKs feature no need for a trusted setup, living up to the name &amp;ldquo;Transparent,&amp;rdquo; and maintain efficient proof sizes and verification times even as the amount of computation increases, living up to the name &amp;ldquo;Scalable.&amp;rdquo;&lt;/p>
&lt;h3 id="1-polynomial-commitments-and-the-fri-protocol">1. Polynomial Commitments and the FRI Protocol
&lt;/h3>&lt;p>zk-STARKs base their security entirely on &lt;strong>hash functions&lt;/strong>, rather than elliptic curve cryptography. Therefore, they have the properties of Post-Quantum Cryptography.&lt;/p>
&lt;p>Computation verification is performed by utilizing the properties of one-dimensional or multi-dimensional polynomials after being converted into a format called AIR (Algebraic Intermediate Representation). The core of STARKs lies in the &lt;strong>FRI (Fast Reed-Solomon Interactive Oracle Proof of Proximity)&lt;/strong> protocol.&lt;/p>
&lt;p>The FRI protocol is a technique for verifying &amp;ldquo;whether a certain function is sufficiently close to a polynomial of a specific degree (Proximity).&amp;rdquo; The prover commits the polynomial&amp;rsquo;s values as leaves of a Merkle Tree (Polynomial Commitment).&lt;/p>
&lt;div class="mermaid">graph TD
Root["Merkle Root (Commitment)"] --> Node0["Node 0"]
Root --> Node1["Node 1"]
Node0 --> Leaf0["P(x_0)"]
Node0 --> Leaf1["P(x_1)"]
Node1 --> Leaf2["P(x_2)"]
Node1 --> Leaf3["P(x_3)"]&lt;/div>
&lt;p>The verifier requests the disclosure of several random points and uses Merkle proofs to confirm that they are included in the commitment. By repeating this recursively, it guarantees with overwhelming probability that the original polynomial actually has a low degree.&lt;/p>
&lt;h3 id="comparison-of-zk-snarks-and-zk-starks">Comparison of zk-SNARKs and zk-STARKs
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Feature&lt;/th>
&lt;th style="text-align:left">zk-SNARKs&lt;/th>
&lt;th style="text-align:left">zk-STARKs&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Cryptographic Assumptions&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Elliptic curves, Pairings&lt;/td>
&lt;td style="text-align:left">Collision-resistant hash functions&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Trusted Setup&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Required (Universal for Plonk, etc.)&lt;/td>
&lt;td style="text-align:left">Not required (Transparent)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Quantum Resistance&lt;/strong>&lt;/td>
&lt;td style="text-align:left">No&lt;/td>
&lt;td style="text-align:left">Yes&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Proof Size&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Very small (~200 Bytes)&lt;/td>
&lt;td style="text-align:left">Somewhat large (Tens of KB)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Proof Generation Computational Cost&lt;/strong>&lt;/td>
&lt;td style="text-align:left">High&lt;/td>
&lt;td style="text-align:left">Relatively lower than SNARKs&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Verification Cost (Gas Fee)&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Very low (Constant)&lt;/td>
&lt;td style="text-align:left">Low (Increases logarithmically)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>In recent years, SNARKs that &amp;ldquo;do not require a trusted setup, or only require it once&amp;rdquo; like Plonk and Halo2 have appeared, and the boundary between SNARKs and STARKs is gradually blurring, but the fundamental difference in mathematical approaches remains important.&lt;/p>
&lt;hr>
&lt;h2 id="latest-applications-of-zero-knowledge-proofs-in-web3-and-security">Latest Applications of Zero-Knowledge Proofs in Web3 and Security
&lt;/h2>&lt;p>Having transitioned from theory to practice, ZKPs are now sparking a revolution at the forefront of Web3 and cybersecurity.&lt;/p>
&lt;h3 id="1-ultimate-scaling-of-ethereum-with-zk-rollups">1. Ultimate Scaling of Ethereum with ZK-Rollups
&lt;/h3>&lt;p>L1 (Layer 1) blockchains like Ethereum have significant constraints on scalability (the trilemma) due to their emphasis on decentralization and security. The definitive L2 (Layer 2) solution to solve this is &lt;strong>ZK-Rollups&lt;/strong>.&lt;/p>
&lt;p>In a ZK-Rollup, thousands of transactions are executed and processed off-chain (L2), generating a &amp;ldquo;single ZKP (Validity Proof)&amp;rdquo; indicating that they were all executed correctly. The smart contract on the L1 chain only needs to verify this proof.&lt;/p>
&lt;div class="mermaid">flowchart LR
Users["Users (Tx Submission)"] --> Sequencer["Sequencer (Tx Collection &amp; Execution)"]
Sequencer --> Prover["Prover (ZKP Generation)"]
Sequencer --> L1Contract["L1 Smart Contract (Tx Data Publication)"]
Prover --> L1Contract["ZKP (Proof) Submission"]
L1Contract --> Verify["Verification &amp; State Update"]&lt;/div>
&lt;p>The biggest advantage of ZK-Rollups is that, unlike Optimistic Rollups (such as Arbitrum and Optimism), they do not require a challenge period (typically 7 days) for Fraud Proofs. Because correctness is cryptographically guaranteed, fund withdrawals to L1 (Finality) are completed the moment the proof is verified. Currently, projects like zkSync, Starknet, Scroll, and Polygon zkEVM are engaged in fierce development competition, and the realization of &lt;strong>zkEVMs&lt;/strong>, which are compatible with the EVM (Ethereum Virtual Machine), is driving rapid ecosystem growth.&lt;/p>
&lt;h3 id="2-privacy-preserving-identity-zkp-for-identity">2. Privacy-Preserving Identity (ZKP for Identity)
&lt;/h3>&lt;p>The nature of personal authentication in the digital world will also be fundamentally changed by ZKPs.
For example, in response to the question, &amp;ldquo;Are you 18 or older?&amp;rdquo;, conventional systems required presenting a driver&amp;rsquo;s license or passport, handing over unnecessary personal information like name and address to the other party.&lt;/p>
&lt;p>By using ZKPs, based on a digital certificate (Verifiable Credential) issued by a public institution, it becomes possible to &lt;strong>mathematically prove only the fact&lt;/strong> that &amp;ldquo;calculated from my date of birth, I am 18 or older on the current date.&amp;rdquo; The verifier only needs to verify the certificate&amp;rsquo;s signature and the ZKP, without knowing the user&amp;rsquo;s date of birth or identity.&lt;/p>
&lt;p>Projects for Proof of Personhood like Worldcoin also incorporate a mechanism to prove only that one is a &amp;ldquo;unique human&amp;rdquo; using ZKPs, rather than storing and sharing iris data directly.&lt;/p>
&lt;h3 id="3-confidential-smart-contracts-and-enterprise-use">3. Confidential Smart Contracts and Enterprise Use
&lt;/h3>&lt;p>The property of public blockchains that &amp;ldquo;all data is public&amp;rdquo; has been a major barrier for companies handling confidential transactions and supply chain information on the blockchain.&lt;/p>
&lt;p>By using ZKP technology (such as privacy-focused networks like Aleo and Aztec), the input values, output values of transactions, and even the smart contract logic executed can be kept encrypted, while only the validity of state updates is etched onto the public chain. This makes it possible to prevent front-running (MEV) in DeFi (Decentralized Finance) and to build confidential consortium networks among enterprises, all while enjoying the high security of public chains.&lt;/p>
&lt;hr>
&lt;h2 id="future-challenges-and-prospects-for-zkp">Future Challenges and Prospects for ZKP
&lt;/h2>&lt;p>While ZKPs are undoubtedly a next-generation foundational technology, several challenges remain.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Proof Generation Computational Costs and Hardware Acceleration&lt;/strong>
Generating a ZKP requires massive polynomial operations, FFT (Fast Fourier Transform), and MSM (Multi-Scalar Multiplication). Currently, research into dedicated hardware (FPGAs and ASICs) to accelerate this proof generation, known as &lt;strong>ZKP Mining&lt;/strong> (Prover Networks), is rapidly advancing.&lt;/li>
&lt;li>&lt;strong>Standardization and Improvement of Developer Experience (DX)&lt;/strong>
Dedicated languages for writing ZKP circuits, such as Circom, Cairo, Noir, and Leo, are proliferating. A standard unifying these and the maturation of compilers that automatically generate ZKP circuits from existing languages like Rust and C++ will be key to general software engineers adopting ZKPs.&lt;/li>
&lt;/ol>
&lt;h2 id="conclusion">Conclusion
&lt;/h2>&lt;p>Zero-Knowledge Proofs (ZKP) have evolved from merely a &amp;ldquo;technology to enhance cryptocurrency anonymity&amp;rdquo; to a &amp;ldquo;general-purpose technology redefining trust across the internet.&amp;rdquo; Small proofs calculated deep within mathematics and cryptography will infinitely scale blockchain capabilities and act as a strong shield protecting our privacy.&lt;/p>
&lt;p>Towards true mass adoption of Web3 and the construction of a secure and private next-generation internet, Zero-Knowledge Proofs will continue to function as the most crucial piece. We must keep a close eye on the future evolution of ZKP technology.&lt;/p>
&lt;hr>
&lt;p>&lt;em>References and Related Links&lt;/em>&lt;/p>
&lt;ul>
&lt;li>Groth, J. (2016). &amp;ldquo;On the Size of Pairing-based Non-interactive Arguments&amp;rdquo;&lt;/li>
&lt;li>Ben-Sasson, E., et al. (2018). &amp;ldquo;Scalable, transparent, and post-quantum secure computational integrity&amp;rdquo;&lt;/li>
&lt;li>Vitalik Buterin&amp;rsquo;s blog on zk-SNARKs and zk-STARKs&lt;/li>
&lt;/ul></description></item></channel></rss>