---
title: "What is ZKsync Era? An overview for Ethereum developers"
description: "Learn about ZKsync Era - the EVM-compatible ZK rollup powering Ethereum scaling."
---

# What is ZKsync Era? An overview for Ethereum developers

ZK rollups emerged as a promising solution for blockchain scalability — they improved privacy through zero-knowledge proofs \(ZKPs\), increased transaction speeds, and greatly reduced fees. Yet, **they lacked adoption as ZK rollups were not compatible with the Ethereum Virtual Machine \(EVM\)**.

The EVM is the crux of Ethereum that allows developers to build and deploy [apps](https://www.alchemy.com/dapps/top/defi-dapps) using [Solidity](https://www.alchemy.com/overviews/solidity). As traditional ZK rollups were not EVM-compatible, developers had to rewrite smart contracts altogether for the ZK rollup environment. Consequently, despite its potential upsides, it turned out to be a roadblock for the technology’s adoption. ZKsync aims to change that.

ZKsync by [<u>Matter Labs</u>](https://matter-labs.io/) is a first-of-its-kind layer 2 scaling solution for Ethereum. Within just six months of [<u>unveiling their vision</u>](https://blog.matter-labs.io/matter-labs-raises-2-million-in-seed-round-to-scale-ethereum-with-zkps-95fb3659e1b7) of a trustless and privacy-focused scaling solution for Ethereum, ZKsync stunned the blockchain space by achieving the seemingly impossible: **EVM compatibility**.

Eventually, ZKsync evolved into two; ZKsync Lite and ZKsync Era.

**This article gets into the weeds of ZKsync Era, how it differs from ZKsync Lite, and how it stands out from other ZK-blockchains.**

## What is zkSync era?

[<u>ZKsync</u>](https://zksync.io) is a general-purpose layer 2 Ethereum solution and the world’s first EVM-compatible ZK rollup**.**

It addresses two persistent problems of the [Ethereum mainnet](https://www.alchemy.com/rpc/ethereum): scalability and high transaction fees.

<ImageBlock
  src="https://media.alchemy.com/1715225867-zksync-era-tvl.png"
  alt="A graph of zkSync Era TVL"
  width={1700}
  height={568}
  caption="zkSync Era TVL"
/>

With its LLVM-based compiler, developers building for Ethereum through ZKsync can write smart contracts in languages like Solidity, and Vyper. Most EVM-based smart contracts can be migrated to leverage the full potential of ZK rollups without rewriting a single line of code.

### A primer on zkEVM

EVMs are completely transparent — and for good reason, i.e., verifiability. Only through transparency, could an EVM-based blockchain ensure that all transactions are not only visible but also verifiable by any participant.

This level of openness guarantees that all operations adhere to the consensus rules set by the network, thereby preventing fraud and ensuring that the network remains secure and decentralized.

But the goal was never transparency. It was trustlessness. Transparency was merely the path towards trustlessness before ZK rollups.

For example, an honest actor \(say, a regular user\), might prefer their transactions and other information to remain private as a personal preference. Blockchains, traditionally, did not allow this.

But with zkEVMs, any transaction on the blockchain can be proven probabilistically rather than reveal every piece of information in the transaction.

<ImageBlock
  src="https://media.alchemy.com/1715226005-zkevm-diagram.png"
  alt="A diagram of a zkEVM transaction."
  width={1024}
  height={576}
  caption="zkEVM transaction diagram"
/>

### What is zkSync lite?

Matter Labs’ first iteration of ZKsync was ZKsync 1.0 — a layer 2 solution primarily focused on enabling secure and cost-effective token transfers on Ethereum. It was later renamed “ZKsync Lite”.

ZKsync Lite bundles tractions off-chain to generate validity proofs, which are then submitted on the Ethereum mainnet for verification. However, it does not have full EVM compatibility, hence the array of supported apps is restricted.

**ZKsync Lite’s limitations prompted a second iteration, ZKsync 2.0 that we now know as “ZKsync Era”.**

## zkSync lite vs. zkSync era

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "", dataType: "object" },
      { key: "2", width: 200, title: "", dataType: "object" },
      { key: "3", width: 200, title: "", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>Chain</p>", tooltip: "", icon: "" },
        "2": {
          title: "<h3>ZKsync<strong> Lite</strong></h3>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<h3>ZKsync<strong> Era</strong></h3>",
          tooltip: "",
          icon: "",
        },
        id: 0,
      },
      {
        "1": { title: "<p><strong>Focus</strong></p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>Scalable payments and token transfers</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>Fully programmable scaling solution</p>",
          tooltip: "",
          icon: "",
        },
        id: 1,
      },
      {
        "1": {
          title: "<p><strong>EVM Compatibility</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Limited</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Full</p>", tooltip: "", icon: "" },
        id: 5,
      },
      {
        "1": {
          title: "<p><strong>Smart Contract Support</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>Basic (swaps, transfers)</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>Extensive (DeFi, NFTs, DAOs, etc.)</p>",
          tooltip: "",
          icon: "",
        },
        id: 4,
      },
      {
        "1": {
          title: "<p><strong>Architecture</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Pure ZK rollup</p>", tooltip: "", icon: "" },
        "3": {
          title:
            "<p>Hybrid (ZK rollup and zkPorter for greater scalability)</p>",
          tooltip: "",
          icon: "",
        },
        id: 3,
      },
      {
        "1": {
          title: "<p><strong>Integration Speed</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Fast</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Slower than ZKsync Lite</p>", tooltip: "", icon: "" },
        id: 2,
      },
      {
        "1": {
          title: "<p><strong>Use Cases</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>Payments, simple transactions</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title:
            "<p>Payments, complex apps, DeFi protocols, NFT marketplaces, games, etc.</p>",
          tooltip: "",
          icon: "",
        },
        id: 6,
      },
    ],
  }}
/>

[<u>_Learn more in the documentation._</u>](https://docs.zksync.io/zk-stack/)

## zkSync native account abstraction overview

Older or legacy blockchains struggle to implement <u>account abstraction</u> innovations natively at the protocol level. As they are much more mature, integrating AA tech stack at the protocol level would cause backward compatibility issues.

ZKsync, on the other hand, is a relatively new solution that has enshrined AA through an integration similar to <u>ERC-4337</u>.

Here’s how the protocol natively implements AA:

<ImageBlock
  src="https://media.alchemy.com/1715226946-clave-bundler.png"
  alt="zkSync account abstraction diagram. Source: Clave"
  width={1600}
  height={911}
  caption="zkSync account abstraction diagram"
/>

### Transaction initiation

Transactions are sent from **EOAs** and **contracts** to the **mempool**. This includes regular transfers, contract interactions, and other transaction types.

### **Transaction aggregation**

The **Bundler \(Operator Sequencer\) picks up transactions from the mempool** and bundles them into a batch.

This process includes the generation of cryptographic proofs \(likely zero-knowledge proofs\) by the **Entrypoint \(BootLoader\)** that attest to the validity of all transactions in the batch without revealing underlying transaction data.

### Proof submission and transaction finalization

The bundled transactions and their proofs are submitted to the **Rollup Contract** on Ethereum L1.

The Rollup Contract verifies these proofs and, upon successful validation, finalizes the transactions.

This step effectively writes the results of the Layer 2 computations back to the main Ethereum blockchain.

### Finalization

Once the transactions are confirmed by the **Rollup Contract**, they are considered finalized.

The finality of the block on Ethereum ensures that all included transactions are immutable and officially part of the Ethereum ledger.

## What type of ZK technology is used in zkSync?

<CalloutBlock>
*“ZK tech is the holy grail of scaling. And this is how, eventually, Ethereum and all blockchains will scale.”*

_— _[<u>_Alex Gluchowski_</u>](https://www.youtube.com/watch?v=CROqpQFXL_o)_ \| Co-Founder and CEO of Matter Labs_

</CalloutBlock>

<u>Zero-knowledge proof</u>, specifically recursive ZK-SNARKs, are central to
the technology used in ZKsync.

SNARKs are a specific type of zero-knowledge proof that are both succinct \(meaning they are small in size and quick to verify\) and non-interactive \(requiring no back-and-forth communication between the prover and the verifier\).

Recursive SNARKs expand on this by allowing a SNARK proof to verify another SNARK. This enables the construction of a "proof pyramid," where each layer depends on the validity of the previous one, allowing for scalable and efficient verification of a potentially vast number of computations or transactions.

Therefore, even devices with comparatively low computational power, like smartphones, can verify a large number of transactions with minimal resources.

<ImageBlock
  src="https://media.alchemy.com/1715227163-aggregating-blocks.png"
  alt="A zkSync block verification diagram created by Matter Labs"
  width={887}
  height={579}
  caption="zkSync block verification diagram. Source: Matter Labs"
/>

Supporting ZKsync technology is its framework, [<u>ZK Stack</u>](https://docs.zksync.io/zk-stack/).

### Building with ZK stack: the framework powering zkSync

**[ZK Stack](https://www.alchemy.com/dapps/zksync) is a modular, open-source framework based on the principles of [ZK Credo](https://github.com/zksync/credo) for building ZK-powered Hyperchains.**

These Hyperchains are like standalone blockchains that benefit from seamless interoperability within the ZK Sync ecosystem.

<ImageBlock
  src="https://media.alchemy.com/1715227620-eth-shared-bridge.png"
  alt="A diagram of ZK-powered hyperchain structure."
  width={1999}
  height={1074}
  caption="ZK hyperchain diagram. Source: Matter Labs"
/>

ZK Stack’s modularity provides developers granular control over:

- **Data Availability:** Choose between rollup, validium, or volition configurations for optimal privacy and scalability trade-offs.
- **Tokenomics:** Design your Hyperchain with Ether as the base token, a custom token, or even support multiple tokens.
- **Sequencing:** Implement different sequencer setups for centralized efficiency \(high-frequency trading\) or decentralized permissionless security.

## zkSync vs alternative ZK blockchains

Until a few years ago, the community sought after sidechains and plasma for Ethereum scalability. Now, however, rollups have taken center stage as the technology to scale Ethereum effectively.

Since their introduction in 2018, ZK rollups, in particular, have gathered significant mindshare and adoption with large projects like Polygon adopting them and thought leaders like Vitalik Buterin advocating for them.

<ImageBlock
  src="https://media.alchemy.com/1715227780-zkproofs-scaling.png"
  alt="A ZK Proofs and Scaling Diagram."
  width={1418}
  height={940}
  caption="ZK Proofs and Scaling Diagram. Source: Linea"
/>

According to L2 beat, there are already 11 active ZK rollup-based layer 2 scaling solutions and 14 more coming soon, at the time of writing. Given such a wide array of options, how do development teams make the sound decision of <u>choosing the right rollup to build on</u>?

<ImageBlock
  src="https://media.alchemy.com/1715227890-active-zk-projects.png"
  alt="A list of ZK rollup-based layer 2 scaling solutions."
  width={1999}
  height={1203}
  caption="ZK rollup-based layer 2 scaling solutions. Source: L2Beat"
/>

There are three factors to take into consideration when building an app:

1. **Choosing the Right Chain:** Evaluate scalability, security, and developer support. Select the blockchain that aligns with project needs in these areas.
1. **Considering a Multichain Strategy:** Balance the broader market access and risk mitigation of a multichain approach against increased complexity and costs.
1. **Assessing Engineering Overhead:** Consider integration ease, operational maintenance, and developer skills required. Estimate the total costs and time commitments involved.

Let’s see how ZKsync Era differs from Starknet and Polygon zkEVM.

### zkSync era vs. StarkNet

<u>Starknet</u> is the leading ZK rollup scaling solution for Ethereum \(in
terms of TVL\) and shares a similar goal as ZKsync Era — to scale Ethereum and
facilitate mass adoption.

ZKsync Era focused on backwards compatibility so that developers have an easy time migrating their projects or building with their existing knowledge of Solidity and Vyper.

Starknet, on the other hand, prioritized an approach that could possibly entice newcomers who are not familiar with any of the mainstream blockchain development languages and can continue with the supposedly simpler language, Cairo.

Below is a table that elucidates the difference between ZKsync Era and Starknet.

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "", dataType: "object" },
      { key: "2", width: 200, title: "", dataType: "object" },
      { key: "3", width: 200, title: "", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p><strong>Chain</strong></p>", tooltip: "", icon: "" },
        "2": { title: "<h3>ZKsync Era</h3>", tooltip: "", icon: "" },
        "3": { title: "<h3>Starknet</h3>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": {
          title: "<p><strong>Proof Generation</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>ZK-SNARK</p>", tooltip: "", icon: "" },
        "3": { title: "<p>ZK-STARK</p>", tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": {
          title: "<p><strong>Proof Size</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Small</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Large</p>", tooltip: "", icon: "" },
        id: 7,
      },
      {
        "1": {
          title: "<p><strong>Trustlessness</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Less</p>", tooltip: "", icon: "" },
        "3": { title: "<p>More</p>", tooltip: "", icon: "" },
        id: 6,
      },
      {
        "1": {
          title: "<p><strong>Verification Cost</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>~460,000 gas per batch</p>", tooltip: "", icon: "" },
        "3": {
          title: "<p>Polylogarithmic (lower with EIP-4844)</p>",
          tooltip: "",
          icon: "",
        },
        id: 5,
      },
      {
        "1": {
          title: "<p><strong>EVM Compatibility</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Yes</p>", tooltip: "", icon: "" },
        "3": { title: "<p>No</p>", tooltip: "", icon: "" },
        id: 4,
      },
      {
        "1": {
          title: "<p><strong>Developer Experience</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>Easier for Ethereum devs</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>Learning curve for Ethereum devs</p>",
          tooltip: "",
          icon: "",
        },
        id: 3,
      },
      {
        "1": {
          title: "<p><strong>Programming Languages</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Solidity, Vyper</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Cairo</p>", tooltip: "", icon: "" },
        id: 2,
      },
      {
        "1": {
          title: "<p><strong>Compiler</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>LLVM</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Warp</p>", tooltip: "", icon: "" },
        id: 8,
      },
    ],
  }}
/>

### zkSync era vs. Polygon zkEVM

ZKsync Era and <u>Polygon zkEVM</u> launched less than one week apart and both are based on similar technology with nuanced differences. Particularly, Polygon zkEVM is an EVM-equivalent rollup while ZKsync Era is an EVM-compatible rollup.

“EVM-compatible” means its underlying virtual machine can understand and execute code written for the Ethereum Virtual Machine \(EVM\). Developers can **easily port existing Ethereum smart contracts** to ZKsync Era with minimal modifications.

“EVM-equivalent” means it achieves similar functionality to the EVM but uses a different virtual machine under the hood. Developers might need to **adapt their existing Ethereum smart contracts** to work flawlessly on Polygon zkEVM.

The comparison table below highlights crucial differences between ZKsync Era and Polygon zkEVM.

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "", dataType: "object" },
      { key: "2", width: 200, title: "", dataType: "object" },
      { key: "3", width: 200, title: "", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p><strong>Chain</strong></p>", tooltip: "", icon: "" },
        "2": { title: "<h3>ZKsync Era</h3>", tooltip: "", icon: "" },
        "3": { title: "<h3>Polygon zkEVM</h3>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": {
          title: "<p><strong>Proof Generation</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>ZK-SNARK</p>", tooltip: "", icon: "" },
        "3": { title: "<p>ZK-SNARK and zk-STARK</p>", tooltip: "", icon: "" },
        id: 1,
      },
      {
        "1": {
          title: "<p><strong>Proof Size</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Small</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Large</p>", tooltip: "", icon: "" },
        id: 7,
      },
      {
        "1": {
          title: "<p><strong>Trustlessness</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Less</p>", tooltip: "", icon: "" },
        "3": { title: "<p>More</p>", tooltip: "", icon: "" },
        id: 6,
      },
      {
        "1": {
          title: "<p><strong>EVM Compatibility</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Compatible</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Equivalent</p>", tooltip: "", icon: "" },
        id: 5,
      },
      {
        "1": {
          title: "<p><strong>Developer Experience</strong></p><p><br></p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>Easy migration of Ethereum smart contracts</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>Might require some code adaptation</p>",
          tooltip: "",
          icon: "",
        },
        id: 4,
      },
      {
        "1": {
          title: "<p><strong>Programming Languages</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>Solidity, Vyper</p>", tooltip: "", icon: "" },
        "3": { title: "<p>Solidity</p>", tooltip: "", icon: "" },
        id: 3,
      },
      {
        "1": {
          title: "<p><strong>Compiler</strong></p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>LLVM</p>", tooltip: "", icon: "" },
        "3": { title: "<p>No compiler used</p>", tooltip: "", icon: "" },
        id: 2,
      },
    ],
  }}
/>

## Build with Alchemy

ZKsync is now live on Alchemy.

This integration removes the burden of running and maintaining ZKsync nodes, allowing you to focus on your application's unique value proposition.

Access ZKsync Era's mainnet and testnet RPC endpoints through Alchemy's supernodes. With Alchemy’s APIs, developers get high reliability and a streamlined development experience.

### 3 steps to get started

1. **Sign up for a free account:** Visit [<u>Alchemy</u>](https://www.alchemy.com/) and create your account.
1. **Obtain ZKsync Era RPC Endpoints:** Look for the ZKsync Era \(mainnet and testnet\) endpoints on your Alchemy dashboard.
1. **Start Building:** Integrate these endpoints into your dApp.

_Check out the _[<u>_ZKsync Era API Quickstart documentation_</u>](https://www.alchemy.com/docs/reference/zksync-api-quickstart)_ for more information._

## _Frequently asked questions_

### _What is zkSync era?_

_zkSync Era is a layer 2 Ethereum scaling solution and the world's first EVM-compatible ZK rollup that addresses Ethereum's scalability issues and high transaction fees while maintaining full compatibility with existing Ethereum smart contracts._

### _How does zkSync era differ from zkSync lite?_

_zkSync Lite focuses on scalable payments and token transfers with limited EVM compatibility, while zkSync Era is a fully programmable scaling solution with complete EVM compatibility that supports extensive apps like DeFi protocols, NFT marketplaces, and games._

### _Do developers need to learn new programming languages to build on zkSync era?_

_No, developers can use familiar Ethereum programming languages like Solidity and Vyper, and most EVM-based smart contracts can be migrated without rewriting a single line of code._

### _What type of zero-knowledge technology does zkSync era use?_

_zkSync Era uses recursive ZK-SNARKs, which are succinct and non-interactive zero-knowledge proofs that allow efficient verification of large numbers of transactions with minimal computational resources._

### _What is native account abstraction on zkSync era?_

_zkSync Era has account abstraction enshrined at the protocol level, allowing for advanced wallet functionality and user experience improvements without the backward compatibility issues that older blockchains face._

### _How does zkSync era compare to other ZK rollups like starknet?_

_zkSync Era prioritizes EVM compatibility using Solidity and Vyper for easier migration, while Starknet uses its own Cairo programming language, requiring developers to learn new tools but offering potentially simpler development for newcomers._

### _What is ZK stack and how does it relate to zkSync era?_

_ZK Stack is the modular, open-source framework powering zkSync Era that enables building ZK-powered Hyperchains with granular control over data availability, tokenomics, and sequencing configurations._
