Zk-SNARKs: Under the Hood

  • A is a linear combination of a set of polynomials {A_1…A_m}
  • B is the linear combination of {B_1…B_m} with the same coefficients
  • C is a linear combination of {C_1…C_m} with the same coefficients
  • G * A_1(t), G * A_1(t) * k_a
  • G * A_2(t), G * A_2(t) * k_a
  • G * B_1(t), G * B_1(t) * k_b
  • G * B_2(t), G * B_2(t) * k_b
  • G * C_1(t), G * C_1(t) * k_c
  • G * C_2(t), G * C_2(t) * k_c
  • π_a = G * A(t), π’_a = G * A(t) * k_a
  • π_b = G * B(t), π’_b = G * B(t) * k_b
  • π_c = G * C(t), π’_c = G * C(t) * k_c
  1. decrypt(old_balance, k) ≥ decrypt(tx_value, k)
  2. decrypt(old_balance, k) - decrypt(tx_value, k) = decrypt(new_balance, k)
  • Dividing (A * B - C) / Z to get H (algorithms based on the Fast Fourier transform can do this in sub-quadratic time, but it’s still quite computationally intensive)
  • Making the elliptic curve multiplications and additions to create the A(t), B(t), C(t) and H(t) values and their corresponding pairs

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

JBoss — Sensitive Information Disclosure | PoC | Lucideus Research

Part 1: Grpc Proto Code Generation Using Protoc for Message

Top Productivity Tools of July on BetaPage That You Must Use

Modal: Design for Enterprise — Part II

You have to read this comparison before you will buy another online programming course!

Unit Testing, How and Why ?

A month in review. . . and looking ahead

Implementing the Health Check API Pattern with Rust

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Vitalik Buterin

Vitalik Buterin

More from Medium

Curve Finance and veCRV

Entropy Raises $1.95M to Build Trustless Decentralized Asset Custody

Warp Finance announces completion of Warp V2 audit by Stela Labs

Introducing Galleon DAO — DeFi Structured Products Methodologists & 17th-Century Roleplay