pseudotheos

Posted on Feb 04, 2022Read on Mirror.xyz

Exploring Zero Knowledge: zkSync and the zkEVM

This is part one of a multi-part series diving deeper into the blockchain applications of zero knowledge proofs. There’s been a lot of hype in this space recently, but not a lot of meaningful technical discussion, so this series of articles will explore the applications under the hood. Let’s get started!

zkSync

zkSync, developed by Matter Labs, was created in 2018 by Alex Gluchowski. zkSync’s end goal is to create a fully trustless L2 with L1 guarantees, such as reorg protection and fund security. In addition to simply being secure, it is also developing tooling to provide support for zero-knowledge based smart contracts.

source: zksync.io

zkSync 1.0 initially launched in June 2020 and is fully operational. Currently, it operates using PLONK as the prover. With zkSync 1.1, recursive proofs, subscriptions, fee payments in separate tokens (example: send USDC, pay tx fee in USDC), and ERC-20 minting/burning capabilities were added. With recursive proofs enabled, the current throughput of zkSync is 3,000 TPS.

PLONK

PLONK stands for “Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge”. Initially created by Ariel Gabizon, Zac Williamson and Oana Ciobotaru, it provides some improvements to previous proof protocols (Marlin and SONIC, for example), while still retaining some downsides.

PLONK benefits and improvements:

  • Moves from an application-specific trusted setup to a universal and updateable trusted setup
  • Relies on standardized cryptography
  • Smaller proof sizes (~0.5-1kB vs 0.2 kB)

While not perfect, PLONK is much better than previous implementations. source: vitalik.ca

zkSync v1’s PLONK implemetation relies on the Ignition trusted setup ceremony, organized by Aztec. With trusted setup ceremonies, it is secure if just a single party deletes their entropy (input) provided to generate the setup. With Ignition, 176 participants (including Vitalik himself) from over 30 countries participated, significantly lowering the trust requirements.

Beyond PLONK, zkSync is working on RedShift, which aims to remove the need for a trusted setup ceremony with something that is still in active research and development: transparent SNARKs. Transparent SNARKs would help make PLONK completely trustless by default.

zkSync 2.0

zkSync 2.0's zkEVM allows developers to seamlessly transfer L1 dApps to L2; While not an exact copy of the EVM, zkEVM brings scalability to L1. Let’s explore how it works under the hood!

zkSync Infrastructure

zkSync operates several pieces of infrastructure on top of Ethereum. All infrastructure is currently live and operational, including the zkEVM. However, the zkEVM is still being worked on, and will be made public at a later time.

  • Full Node
    • Executes zkEVM bytecode using the virtual machine
    • Filters incorrect transactions
    • Executes mempool transactions
    • Builds blocks
  • Prover
    • Generates ZK proofs from block witnesses
    • provides an interface for parallel proof generation
    • Scalable (can increase # of provers depending on demand)
  • Interactor
    • The link between L1 Ethereum and L2 zkSync
    • Calculates transaction fees
      • Fees depend on token prices, proof generation, and L1 gas costs
  • Paranoid Monitor
    • Monitors infrastructure and notifies Matter Labs if incidents occur

zkEVM

source: Matter Labs

Yul is an intermediate representation that compiles Solidity into bytecode. It is then passed off into the LLVM, a modular and reusable compiler. By introducing the LLVM, it opens the door for future zkSync smart contract development written in native Rust or Javascript. While Zinc (based on Rust) will be used in the future, Zinc’s development is currently deprioritized in order to complete the zkEVM implementation of Solidity v8 and Vyper v3.

Programmability

While the Scalability Trilemma focuses on the big 3 issues: scalability, decentralization, and security, there is a fourth piece of the puzzle. A chain that solves the scalability trilemma but is incredibly esoteric and difficult to program for is not viable for mass adoption. zkSync solves for this by making the zkEVM easy to transfer existing L1 protocols to, while also opening the door towards native Rust and Javascript smart contract development.

source: Matter Labs

Conclusion

2022 is the year of Layer 2. With so many protocols coming out of research and into the implementation stage, Ethereum will be ready for mass adoption while remaining trustless, secure, and decentralized. In a decade from now, the infrastructure being built today will be the backbone of the next generation of protocols.

#L222

Thanks for reading this article! This is the summation of a lot of research to help bridge the knowledge gap. Follow me on Twitter to get notified about future posts and let me know what you think. My content will remain 100% free, forever, and is licensed under CC BY-SA unless otherwise specified. (Shoutout to Shannon for the proofread!)

Further Reading

https://zksync.io/zkevm/#what-is-zksync-2-0

https://messari.io/asset/zksync/profile

https://zksync.io/dev/contracts/#zkevm

https://blog.matter-labs.io/zksync-2-0-hello-ethereum-ca48588de179

https://vitalik.ca/general/2019/09/22/plonk.html

zkSync