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

EPIC: Storage Optimizations #869

Closed
4 of 6 tasks
yihuang opened this issue Feb 13, 2023 · 1 comment
Closed
4 of 6 tasks

EPIC: Storage Optimizations #869

yihuang opened this issue Feb 13, 2023 · 1 comment

Comments

@yihuang
Copy link
Collaborator

yihuang commented Feb 13, 2023

The initial target is to reduce disk size requirement of Cronos nodes(#451), as more and more ideas pop up, the target is gradually expanded to be a full-scale storage refactoring, this EPIC issue is created to track the progress.

Phase 1: VersionDB

VersionDB is the earliest plan to reduce disk size requirement of archived full nodes, it's a new storage format designed to store the historical versions of key-value pairs directly instead of go through a merkle tree, it's much more compact than the IAVL merkle tree.

At this stage, versiondb works together with existing IAVL tree, the GRPC query service is served by versiondb while consensus state machine is still served by existing IAVL tree, the archived full nodes can prune the IAVL tree to reclaim disk space, while still support the historical queries.

The main Improvements at this stage:

  • Reduce disk size requirement of archive full node by more than 10x.
  • Improve performance of grpc query service.
    Notably, the performance of several heavy json-rpc endpoints eth_call/eth_estimateGas/debug_traceTransaction will be greatly improved.

It's already merged into release/v1.0.xbranch, and planed to be released in v1.0.4 soon. released in v1.0.4 already.

VersionDB migration doc.

Related issues:

Phase 2: IAVL replacement

There's a plan for an alternative IAVL implementation which is expected to perform tremendously better than existing one. We'll try to make it a drop-in replacement of existing IAVL library.

This phase will greatly improve the storage performance of the consensus state machine.

@yihuang
Copy link
Collaborator Author

yihuang commented Jul 12, 2024

close now, only a few minor issues left.

@yihuang yihuang closed this as completed Jul 12, 2024
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

1 participant