You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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:
Notably, the performance of several heavy json-rpc endpoints
eth_call
/eth_estimateGas
/debug_traceTransaction
will be greatly improved.It's already merged intoreleased inrelease/v1.0.x
branch, and planed to be released inv1.0.4
soon.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.
The text was updated successfully, but these errors were encountered: