Blockchain Basicsintermediatearticle30 min read

Wholesale Settlement: zkRollup Like a Bến Thành Wholesale Run | ZK Scaling

How zkRollup batches transactions like a wholesale container — fee breakdown, recursive proofs, and why l2 gom giao dịch makes rollup phí rẻ.

Vietcardano teamTeam

Đội ngũ biên tập VietCardanoCommunity — các chuyên gia blockchain và Cardano, cung cấp nội dung giáo dục và nghiên cứu chuyên sâu cho cộng đồng.

Published August 31, 2026Updated August 30, 2026

A zk rollup is the blockchain equivalent of a Bến Thành wholesaler who packs 500 áo sơ mi into one container, ships it once, and splits the freight cost across every shirt — instead of sending each shirt by express mail. The result: zk rollup phí giao dịch drops from dollars to cents, because the expensive part (posting data to Ethereum) is shared.

One sentence: zkRollup gom hàng nghìn giao dịch vào một batch, tạo một bằng chứng ZK duy nhất, và chia chi phí calldata cho tất cả user — nên mỗi người chỉ trả một phần nhỏ.

If you've wondered why l2 gom giao dịch makes fees 10–20x cheaper than Ethereum mainnet, or why rollup phí rẻ is the magic behind zkSync, Starknet, and Linea — this article breaks it down with the wholesale market analogy that makes it click.

Wholesale analogy: retail shipping vs zkRollup batch — 1000 tx share 1 proof + 1 calldata

Figure 1: The Wholesale Container — 1000 transactions share 1 proof and 1 calldata post

The Problem: Retail Shipping Is Expensive

On Ethereum mainnet, every transaction is a separate "express package":

  • You pay for state write (updating the blockchain's ledger)
  • You pay for calldata (publishing your transaction data on-chain)
  • You pay priority fee (tip to validators)
  • Total: $1–$5+ per simple transfer

A zk rollup changes the game: wholesale shipping.

What a zk Rollup Actually Does

  1. Users submit transactions to the L2 operator (sequencer).
  2. Operator batches transactions — hundreds or thousands — off-chain.
  3. Operator generates ONE validity proof (ZK-SNARK or ZK-STARK) proving the entire batch is correct.
  4. Operator posts to Ethereum: the proof + compressed batch data (calldata).
  5. Ethereum verifies the proof — if valid, the new state root is accepted.

The magic: one proof, one calldata post, thousands of transactions. The fixed costs (proof verification ~500k gas, state write) are paid once. The variable cost (calldata) is compressed and split.

The Fee Breakdown: Where Your Money Goes

Cost ComponentEthereum L1 (per tx)zkRollup (per tx, batched)
State write~21,000 gas (fixed)~21,000 gas ÷ batch size
Calldata~100–200 bytes × 16 gasCompressed (index vs address) ÷ batch
Operator feeN/ASmall tip to sequencer
Proof verificationN/A~500,000 gas ÷ batch size
Total$1.00–$5.00+$0.05–$0.20

Real data (l2fees.info): zkSync Era ~$0.07 send ETH, Starknet ~$0.19, Ethereum L1 ~$1.10.

Fee breakdown: zkRollup batch components vs L1 single tx — amortized fixed costs, compressed calldata

Figure 2: Fee Breakdown — fixed costs amortized, calldata compressed, batch wins

Why so cheap?

  • Calldata compression: accounts as 4-byte index instead of 20-byte address (saves 28 bytes/tx). Zero bytes cost 4 gas vs 16 gas for non-zero.
  • Fixed costs amortized: 500k gas proof verification split across 1,000 tx = 500 gas each.
  • No per-tx signature verification on L1: the ZK proof covers the whole batch.

Validity Proofs: The Receipt That Covers Everything

A validity proof (ZK-SNARK or ZK-STARK) is a cryptographic receipt saying: "I verified every transaction in this batch — sender has funds, balances update correctly, no double-spends."

  • ZK-SNARK: small proof (~200 bytes), constant-time verify, needs trusted setup (ceremony). Used by zkSync (Boojum), Polygon zkEVM.
  • ZK-STARK: larger proof (~50–100 KB), transparent (no trusted setup), quantum-resistant, quasilinear scaling. Used by Starknet.

Both are verified on Ethereum by a verifier contract. If proof passes, the new state root is canonical. No re-execution needed.

The Proving Circuit: How the Receipt Is Made

The proving circuit "loops" over every transaction in the batch:

` For each tx in batch: 1. Verify sender account exists in current state root (Merkle proof) 2. Check sender balance ≥ amount 3. Decrease sender balance, increase nonce 4. Hash updated account + Merkle proof → new intermediate state root 5. Verify receiver account exists in intermediate root 6. Increase receiver balance 7. Hash updated account + Merkle proof → new intermediate state root End loop Final state root = post-state root Batch root = Merkle root of all tx in batch `

The circuit outputs: pre-state root, post-state root, batch root, transaction inputs. The verifier checks: proof valid + pre-state matches on-chain root → accept post-state.

Recursive Proofs: Container of Containers

Recursive proofs take this further: instead of verifying one block proof at a time, the circuit verifies multiple block proofs and outputs ONE proof.

` Block 1 proof → Block 2 proof → Recursive circuit → ONE recursive proof → Ethereum verifies once Block 3 proof → ... Block N proof → `

Result: finalize N blocks with one L1 verification. Throughput multiplier. This is how zkVMs (RISC Zero, SP1) and advanced rollups scale further.

Recursive proofs: 4 block proofs → 1 recursive proof → 1 L1 verify → 4 blocks finalized

Figure 3: Recursive Proofs — container of containers, throughput multiplier

Data Compression Tricks

TechniqueSavings
Account index (4 bytes) vs address (20 bytes)28 bytes/tx
Non-zero byte: 16 gas → Zero byte: 4 gasEncode common values as zero
Batch Merkle root onlyO(1) calldata for batch inclusion
Transaction input compressionOnly essential fields posted

zkSync Era's Boojum prover uses Plonk + custom gates for efficient batch proving. Starknet's Cairo VM compiles to STARK-friendly AIR.

Real-World Fee Comparison

NetworkSend ETHSwap TokensType
Ethereum L1$1.10$5.48Base layer
zkSync Era$0.07—ZK-Rollup (SNARK)
zkSync Lite$0.09$0.22ZK-Rollup (SNARK)
Loopring$0.04$0.59ZK-Rollup (SNARK)
Starknet$0.19$0.57ZK-Rollup (STARK)
Polygon zkEVM$0.19$2.75ZK-Rollup (SNARK)
Optimism / Arbitrum$0.09$0.18–$0.27Optimistic Rollup

Source: l2fees.info (live data). ZK-rollups generally cheapest for simple transfers.

The Honest Tradeoff

What you gain:

  • 10–20x cheaper fees
  • Near-instant finality (proof verified → state final)
  • Self-custody: anyone can reconstruct state from calldata + withdraw via Merkle proof

What you give up:

  • Centralized sequencer risk: most rollups use single operator (censorship possible, mitigated by forced exit via L1)
  • Proof generation hardware: specialized GPUs/FPGAs for provers (centralization pressure)
  • Trusted setup (SNARKs): ceremony risk if all participants compromised
  • EVM compatibility: not all opcodes supported equally (Type 1–4 spectrum)

Common Questions About zk Rollup Fees

Why are zk rollup fees so cheap?

Batching splits fixed costs (proof verification, state write) across thousands of transactions. Calldata is compressed (index vs address, zero-byte encoding).

What is "l2 gom giao dịch"?

Vietnamese for "L2 aggregates transactions" — the operator collects many user tx, executes off-chain, proves correctness with one ZK proof, posts one batch to Ethereum.

How does batching reduce calldata cost?

Ethereum charges 16 gas/non-zero byte, 4 gas/zero byte. Rollups compress: 4-byte index instead of 20-byte address, encode repeated values as zeros. 1000 tx → ~10 KB calldata vs ~200 KB raw.

What's the difference between ZK-SNARK and ZK-STARK rollups?

SNARK: small proof, fast verify, trusted setup. STARK: larger proof, transparent, quantum-resistant. Both verify batch correctness on Ethereum.

Can a malicious operator steal funds?

No — validity proof guarantees state transitions are correct. Operator can only censor (omit your tx), not execute invalid ones. Forced exit via L1 protects against censorship.

How do withdrawals work?

User sends tx to burn account on L2. After batch finalized, user submits Merkle proof + batch root + tx data to L1 contract. Contract verifies inclusion → releases funds. Near-instant.

Which zk rollups are live today?

zkSync Era, Starknet, Polygon zkEVM, Scroll, Linea, Taiko, ZKsync Lite, Loopring. zkEVM types range from Type 1 (Ethereum-equivalent, Taiko) to Type 4 (high-level language, zkSync).

What are recursive proofs in rollups?

One proof verifies multiple block proofs. Instead of verifying Block 1, then Block 2, then Block 3 on L1 — recursive circuit verifies all three, outputs one proof. L1 verifies once, finalizes all three.

The Bottom Line

A zk rollup is a wholesale shipping container for transactions. Instead of each user paying full freight (L1 gas), the operator packs thousands of tx into one batch, generates one ZK receipt, posts one compressed calldata blob — and everyone splits the bill.

zk rollup phí giao dịch drops to pennies because:

  1. Fixed costs amortized (proof verification, state write)
  2. Calldata compressed (index, zero-byte encoding)
  3. One proof covers all (validity proof for entire batch)
  4. Recursive proofs multiply (container of containers)

The Ben Thanh wholesaler doesn't care about the shirt design — they care about packing the container full. zkRollup doesn't care about your tx purpose — it cares about packing the batch full. Full container = lowest cost per shirt. Full batch = lowest fee per tx.


Quick Reference

PropertyzkRollup
Core mechanismBatch tx off-chain → 1 ZK proof → 1 calldata post
Fee per tx (simple transfer)~$0.05–$0.20 (vs $1–$5 L1)
Calldata cost16 gas/non-zero byte, 4 gas/zero byte (EIP-1559)
Compression4-byte index vs 20-byte address
Proof verification~500k gas fixed, split across batch
Recursive proofsAggregate N block proofs → 1 L1 verify
FinalityInstant after proof verified on L1
Self-custodyYes — reconstruct state from calldata
Main riskSequencer centralization (censorship)
Live exampleszkSync Era, Starknet, Polygon zkEVM, Scroll, Linea, Taiko

Tags:

zk rollup phí giao dịchl2 gom giao dịchrollup phí rẻ