Table of Contents
Fetching ...

Towards Stateless Clients in Ethereum: Benchmarking Verkle Trees and Binary Merkle Trees with SNARKs

Jan Oberst

TL;DR

The paper investigates stateless client designs for Ethereum by benchmarking Verkle trees with vector commitments against binary Merkle trees augmented with SNARKs. It measures proving time, witness size, and verification time across varying tree sizes on two machines, using Rust implementations (rust-verkle, poseidon-merkle, dusk-plonk). Results indicate Verkle trees offer compact witnesses (≈0.8 MB per block) with scalable proving and verification performance, while SNARK-based binary trees incur long proving times though constant, fast verification; overall, Verkle appears more practical for Ethereum's stateless future, with code available on GitHub. These findings inform Ethereum’s stateless roadmap and highlight areas for further optimization and exploration of quantum-resistant alternatives.

Abstract

Ethereum, the leading platform for decentralized applications, faces challenges in maintaining decentralization due to the significant hardware requirements for validators to store Ethereum's entire state. To address this, the concept of stateless clients is under exploration, enabling validators to verify transactions using cryptographic witnesses rather than the full state. This paper compares two approaches currently being discussed for achieving statelessness: Verkle trees utilizing vector commitments and binary Merkle trees combined with SNARKs. Benchmarks are performed to evaluate proving time, witness size, and verification time. The results reveal that the Verkle tree implementation used for benchmarking offers proving and verification times on the order of seconds and proof sizes on the order of one MB. The SNARK-based Merkle trees exhibit slow proof generation times, while offering constant and fast verification time. Overall, the results indicate for Verkle trees to provide a more practical solution for Ethereum's stateless future, but both methods offer valuable insights into reducing the state burden on Ethereum nodes. We make the code used for benchmarking available on GitHub.

Towards Stateless Clients in Ethereum: Benchmarking Verkle Trees and Binary Merkle Trees with SNARKs

TL;DR

The paper investigates stateless client designs for Ethereum by benchmarking Verkle trees with vector commitments against binary Merkle trees augmented with SNARKs. It measures proving time, witness size, and verification time across varying tree sizes on two machines, using Rust implementations (rust-verkle, poseidon-merkle, dusk-plonk). Results indicate Verkle trees offer compact witnesses (≈0.8 MB per block) with scalable proving and verification performance, while SNARK-based binary trees incur long proving times though constant, fast verification; overall, Verkle appears more practical for Ethereum's stateless future, with code available on GitHub. These findings inform Ethereum’s stateless roadmap and highlight areas for further optimization and exploration of quantum-resistant alternatives.

Abstract

Ethereum, the leading platform for decentralized applications, faces challenges in maintaining decentralization due to the significant hardware requirements for validators to store Ethereum's entire state. To address this, the concept of stateless clients is under exploration, enabling validators to verify transactions using cryptographic witnesses rather than the full state. This paper compares two approaches currently being discussed for achieving statelessness: Verkle trees utilizing vector commitments and binary Merkle trees combined with SNARKs. Benchmarks are performed to evaluate proving time, witness size, and verification time. The results reveal that the Verkle tree implementation used for benchmarking offers proving and verification times on the order of seconds and proof sizes on the order of one MB. The SNARK-based Merkle trees exhibit slow proof generation times, while offering constant and fast verification time. Overall, the results indicate for Verkle trees to provide a more practical solution for Ethereum's stateless future, but both methods offer valuable insights into reducing the state burden on Ethereum nodes. We make the code used for benchmarking available on GitHub.

Paper Structure

This paper contains 13 sections, 3 equations, 2 figures, 1 table.

Figures (2)

  • Figure 1: Measured proving times, proof sizes, and verification times for Verkle trees on Machine 1 (top) and Machine 2 (bottom) averaged over ten runs.
  • Figure 2: Measured proving times, proof sizes, and verification times for binary trees with SNARKs on Machine 1 (top) and Machine 2 (bottom) averaged over ten runs.