UTxO-HD release
jasagredo opened this issue · 7 comments
This issue is an aggregate of dangling issues here and there about UTxO-HD, to better reflect the current status of the feature, with updated information.
Current status
The UTxO-HD feature is based currently on the 9.1 cardano-node release.
Repository | Branch |
---|---|
ouroboros-consensus | link |
cardano-api | link |
cardano-cli | link |
cardano-node | link |
- Development work is done. Feature is complete.
- Testing passed on top of the 8.9 node release.
- Benchmarking is taking place on the benchmarking cluster. Should there be regressions, new issues will be opened.
- Reported
CPU > 85% slots
is drastically increased. Seems like this is an artifact of the analysis. The performance team will look into this. - IntersectMBO/ouroboros-consensus#1192
- IntersectMBO/ouroboros-consensus#1193
- Reported
- If benchmarking shows good results, testing will have to be conducted on this version.
- Documentation is lacking IntersectMBO/ouroboros-consensus#126
- Git history is messy. The journey has been long with numerous rebases with hundreds of conflicts each.
High level description of UTxO-HD and features
UTxO-HD reworks the consensus codebase to decouple the LedgerState from the UTxO set, such that the latter can be stored on the disk therefore lowering the memory consumption of the node. It has two modes of operation: in-memory and on-disk, which use the same API so should be indistinguishable from the node's point of view.
The in-memory mode should work in a very similar way to the current node, with similar performance metrics. The on-disk mode will considerably lower the memory usage of the node at the cost of some performance. This is a tradeoff users will have to consider.
Using the on-disk mode, even a node running on a Raspberry Pi 5 (8GB of RAM) was able to follow the chain.
Currently on-disk uses LMDB underneath. In the long run, the LSM-tree library is being developed to provide a more performant on-disk backend.
In terms of functionality, a UTxO-HD node does not have more functionalities than a normal node.
You can try the feature already by building cardano-node
from the utxo-hd-9.0
branch. It should work both with cabal
and with nix
.