Skip to content

Document historical use of LevelDB in the Execution Layer#479

Merged
taxmeifyoucan merged 3 commits intoeth-protocol-fellows:mainfrom
ParthSinghPS:docs/el-leveldb-storage-overview
Feb 19, 2026
Merged

Document historical use of LevelDB in the Execution Layer#479
taxmeifyoucan merged 3 commits intoeth-protocol-fellows:mainfrom
ParthSinghPS:docs/el-leveldb-storage-overview

Conversation

@ParthSinghPS
Copy link
Contributor

This PR adds a concise, learning-focused overview of LevelDB as a historical
storage backend used by early Ethereum execution clients.

The documentation explains:

  • How LevelDB was used by the Execution Layer to store blockchain data, state,
    and indices
  • A brief explanation of LevelDB’s internal LSM-tree design relevant to EL
    workloads
  • How the Execution Layer Specification (EELS) abstracts storage as a generic
    key–value database, with a reference code snippet
  • The key limitations that made LevelDB unsuitable as Ethereum scaled and why
    major clients migrated to alternative storage engines

The intent is to provide historical context for learners without suggesting
LevelDB as a viable option for modern execution clients.

@github-actions
Copy link

Hi @ParthSinghPS,

⚠️ Potential typos found in your pull request:

  • 📄 ./docs/eps/week1.md (line(s) 134):
    1. ❌ resleased
  • 📄 ./docs/eps/schedule.md (line(s) 35):
    1. ❌ Rakita
  • 📄 ./docs/wiki/testing/consensus-spec-tests.md (line(s) 15):
    1. ❌ symlinks
  • 📄 ./docs/wiki/testing/consensus-spec-tests.md (line(s) 23):
    1. ❌ incorect
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 3,5,6,9,15,17,19,29,57,83,99,110,186):
    1. ❌ ectra
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 59,63,65,121,150,152,186,197,199):
    1. ❌ sys
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 152,199):
    1. ❌ asm
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 51,114,140,152,199,237,241):
    1. ❌ eas
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 59,63,65,121,150,152,186,197,199):
    1. ❌ sys
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 152,199):
    1. ❌ asm
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 51,114,140,152,199,237,241):
    1. ❌ eas
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 13):
    1. ❌ orginally
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 29):
    1. ❌ multiaddress
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 31):
    1. ❌ Multiaddress
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 31):
    1. ❌ Multiaddress
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 66):
    1. ❌ negociation
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 75):
    1. ❌ Multiaddrs
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 80):
    1. ❌ proactivily
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 56,82,128,279):
    1. ❌ kad
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 91):
    1. ❌ multihashes
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 91,97,281):
    1. ❌ multihash
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 101):
    1. ❌ Multihash
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 107):
    1. ❌ multibase
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 109):
    1. ❌ establised
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 126):
    1. ❌ Multicast
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 128,131):
    1. ❌ multiaddrs
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 128,131):
    1. ❌ multiaddrs
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 149):
    1. ❌ mututal
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 159):
    1. ❌ rount
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 163):
    1. ❌ Gossibhub
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 160,171):
    1. ❌ gossibsub
  • 📄 ./docs/wiki/EL/el-specs.md (line(s) 747):
    1. ❌ OOG
  • 📄 ./docs/wiki/EL/el-specs.md (line(s) 767):
    1. ❌ bn
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 317):
    1. ❌ memtable
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 317):
    1. ❌ memtable
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 334):
    1. ❌ backends

ℹ️ How to fix this error:

  1. If these are actual typos:

    • Open the files at the specified line numbers and fix them
  2. If these are names or one-off nouns:

    • Wrap them in <name> tags
    • Example: <name>Alex Pereira</name>
    • Use this for people's names or unique terms that appear rarely
  3. If these are valid terms:

    • Add them to wordlist.txt (one word per line)
    • Terms must be plain text without spaces/special chars
    • The list is case-insensitive
  4. If these are code terms:

    • Wrap them in backticks (`) in your markdown

ℹ️ Checking for typos locally

  1. Install aspell for your platform
  2. Navigate to project root and run:
for f in **/*.md ; do echo $f ; aspell --lang=en_US --mode=markdown --home-dir=. --personal=wordlist.txt --ignore-case=true --camel-case --add-sgml-skip nospellcheck list < $f | sort | uniq -c ; done

Learn more about wordlist format

@taxmeifyoucan
Copy link
Contributor

Thanks for the PR! It's great to have more details on LevelDB and pebble in #480, but they are just database backend. I would be more clear about difference between Ethereum state as it's specified and its storage implementation with an overview across clients. LevelDB is not maintained, that's why geth switched to pebble. And as it evolves, it also provides better performance

@ParthSinghPS
Copy link
Contributor Author

Thanks for the feedback , I understand the difference now and will revise the PR to be more Ethereum-centric and clearer about spec vs client implementation.

I had one follow-up question though: would you prefer to keep or remove the sections that explain the internal architecture of the storage engines (e.g., LSM trees)? Because while they do help explain why certain backends were chosen, they may go deeper into database internals than is necessary for Ethereum-focused documentation.

I’m happy to trim this down or keep only minimal context.

@github-actions
Copy link

Hi @ParthSinghPS,

⚠️ Potential typos found in your pull request:

  • 📄 ./docs/wiki/testing/consensus-spec-tests.md (line(s) 15):
    1. ❌ symlinks
  • 📄 ./docs/wiki/testing/consensus-spec-tests.md (line(s) 23):
    1. ❌ incorect
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 3,5,6,9,15,17,19,29,57,83,99,110,186):
    1. ❌ ectra
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 59,63,65,121,150,152,186,197,199):
    1. ❌ sys
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 152,199):
    1. ❌ asm
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 51,114,140,152,199,237,241):
    1. ❌ eas
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 59,63,65,121,150,152,186,197,199):
    1. ❌ sys
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 152,199):
    1. ❌ asm
  • 📄 ./docs/wiki/pectra-faq.md (line(s) 51,114,140,152,199,237,241):
    1. ❌ eas
  • 📄 ./docs/wiki/EL/el-specs.md (line(s) 747):
    1. ❌ OOG
  • 📄 ./docs/wiki/EL/el-specs.md (line(s) 767):
    1. ❌ bn
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 305):
    1. ❌ backends
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 313):
    1. ❌ memtable
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 313):
    1. ❌ memtable
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 315):
    1. ❌ reimplementations
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 13):
    1. ❌ orginally
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 29):
    1. ❌ multiaddress
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 31):
    1. ❌ Multiaddress
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 31):
    1. ❌ Multiaddress
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 66):
    1. ❌ negociation
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 75):
    1. ❌ Multiaddrs
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 80):
    1. ❌ proactivily
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 56,82,128,279):
    1. ❌ kad
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 91):
    1. ❌ multihashes
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 91,97,281):
    1. ❌ multihash
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 101):
    1. ❌ Multihash
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 107):
    1. ❌ multibase
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 109):
    1. ❌ establised
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 126):
    1. ❌ Multicast
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 128,131):
    1. ❌ multiaddrs
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 128,131):
    1. ❌ multiaddrs
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 149):
    1. ❌ mututal
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 159):
    1. ❌ rount
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 163):
    1. ❌ Gossibhub
  • 📄 ./docs/wiki/CL/cl-networking.md (line(s) 160,171):
    1. ❌ gossibsub
  • 📄 ./docs/eps/schedule.md (line(s) 35):
    1. ❌ Rakita
  • 📄 ./docs/eps/week1.md (line(s) 134):
    1. ❌ resleased

ℹ️ How to fix this error:

  1. If these are actual typos:

    • Open the files at the specified line numbers and fix them
  2. If these are names or one-off nouns:

    • Wrap them in <name> tags
    • Example: <name>Alex Pereira</name>
    • Use this for people's names or unique terms that appear rarely
  3. If these are valid terms:

    • Add them to wordlist.txt (one word per line)
    • Terms must be plain text without spaces/special chars
    • The list is case-insensitive
  4. If these are code terms:

    • Wrap them in backticks (`) in your markdown

ℹ️ Checking for typos locally

  1. Install aspell for your platform
  2. Navigate to project root and run:
for f in **/*.md ; do echo $f ; aspell --lang=en_US --mode=markdown --home-dir=. --personal=wordlist.txt --ignore-case=true --camel-case --add-sgml-skip nospellcheck list < $f | sort | uniq -c ; done

Learn more about wordlist format

@taxmeifyoucan taxmeifyoucan merged commit 775709f into eth-protocol-fellows:main Feb 19, 2026
1 of 2 checks passed
@github-actions
Copy link

Hi @ParthSinghPS,

⚠️ Potential typos found in your pull request:

  • 📄 ./docs/readme.md (line(s) 7,23):
    1. ❌ annualy
  • 📄 ./docs/readme.md (line(s) 7,23):
    1. ❌ annualy
  • 📄 ./docs/wiki/EL/el-specs.md (line(s) 1093):
    1. ❌ Finalisation
  • 📄 ./docs/wiki/EL/el-data-structures-summary.md (line(s) 8,21):
    1. ❌ prev
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 305):
    1. ❌ backends
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 313,322):
    1. ❌ memtable
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 313,322):
    1. ❌ memtable
  • 📄 ./docs/wiki/EL/el-architecture.md (line(s) 315):
    1. ❌ reimplementations

ℹ️ How to fix this error:

  1. If these are actual typos:

    • Open the files at the specified line numbers and fix them
  2. If these are names or one-off nouns:

    • Wrap them in <name> tags
    • Example: <name>Alex Pereira</name>
    • Use this for people's names or unique terms that appear rarely
  3. If these are valid terms:

    • Add them to wordlist.txt (one word per line)
    • Terms must be plain text without spaces/special chars
    • The list is case-insensitive
  4. If these are code terms:

    • Wrap them in backticks (`) in your markdown

ℹ️ Checking for typos locally

  1. Install aspell for your platform
  2. Navigate to project root and run:
for f in **/*.md ; do echo $f ; aspell --lang=en_US --mode=markdown --home-dir=. --personal=wordlist.txt --ignore-case=true --camel-case --add-sgml-skip nospellcheck list < $f | sort | uniq -c ; done

Learn more about wordlist format

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants