, 6 tweets, 2 min read
My Authors
Read all threads
Finally spent some time studying #Ethereum Merkle Patricia Tree github.com/ethereum/wiki/…
1. It is an elegant data structure for Eth, creating a cryptographically stable merkle root, no matter the data insertion order.
2. Oh boy, it really punishes your hard drive storage.
In my past life at Red Hat, I wrote the ATA (aka IDE) drivers for Linux, so I know a bit about data storage and hard drives.
Here is why Eth is so punishing on data storage, and why SSDs/NVMe are a field requirement for Eth:
Like Bitcoin, Eth has poor cache locality:
* Huge db, which means each Next Page is less likely to be in page/disk cache.
* Keys are hashes, which means each Next Query Key is uniformly random, and therefore equally unlikely to be “close” to any recent past query.
Merkle Patricia trees enhance the "huge hash db" pain:
- A single tree key/value tree query requires several backend DB queries. These lookups are uniformly random & therefore just as unlikely to be in disk cache.
- Worst case is ~63 DB queries for 1 tree lookup.
None of this matters if the working set is all in cache of course. en.wikipedia.org/wiki/Working_s…
Ethereum's full node working set - on geth 1.8.22 as of yesterday - is 400G and growing. Few machines have anywhere near 400G of RAM.
For more on cache locality, see en.wikipedia.org/wiki/Locality_… and examples such as this Cornell course: cs.cornell.edu/courses/cs3110…
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Jeff Garzik

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!