Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can this be plugged into reth or geth? #5

Open
chrisco512 opened this issue Jan 21, 2025 · 2 comments
Open

Can this be plugged into reth or geth? #5

chrisco512 opened this issue Jan 21, 2025 · 2 comments

Comments

@chrisco512
Copy link

Do you have an example of using this as a backend for geth or reth? How difficult would it be to make it compatible?

@jumanzii
Copy link

+1 here. I guess it might be compatible for reth? is there anyone on this task?

@absolute0kelvin
Copy link
Contributor

Maybe you cannot easily "plug" QMDB into reth or geth.

Both reth and geth use a "two-layer" architecture. The base layer is a normal kvdb (leveldb or MDBX) and all kinds of storages are built on this layer, such as:

  1. A flat KV to fast read/write world state
  2. An ADS (Merkle Patricia Trie) to calculated the world state root. Its leaves are hashes of the values in the flat KV
  3. The historical block/transaction/events data for serving web3 rpc

QMDB is a single-layer architecture. It combines three functions (a kvdb, a flat world state and an ADS) into an integrated design. Only in this way it can reach very high performance.

So geth/reth must be changed largely to use QMDB.

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

No branches or pull requests

3 participants