BUIP120: Replace LevelDB with an immutable stateless storage design
Proposer: Jonathan Silverblood
Submitted on: 2019-03-28
Status: passed
The purpose of this BUIP is to build a development branch of Bitcoin Unlimited's node software that uses an immutable stateless storage design (such as Bitcrust, CashDB or others) as a storage component for blockchain data and do a real-world study of the performance implications.
This BUIP proposes that we use bitcoin unlimited funds to:
- Pay for the development of a branch of Bitcoin Unlimited that implements an immutable stateless storage design as an alternate storage component.
- Use this branch to study the performance and other practical implications.
The choice of which software to use for this is determined by the lead developer and could either be taking something that is already production ready (like CashDB), taking up something that has significant progress but not quite there yet (like Bitcrust-db) or designing something from scratch.
Going forward it is critical that we remove all significant performance bottlenecks. One such bottleneck is the LevelDB dependency currently used as the storage component for the bitcoin unlimited node software. This dependency on a generic mutable storage is a remnant of the early bitcoin implementations and there are some people that believe that it is practically impossible to achieve global scale with it.
A maximum expenditure cap of $20,000 is proposed for direct development costs incurred to deploy this change to the BU testnet. Due to the uncertain scope of the work, this is an estimate recommended by solex.
Thomas van der Wansem held a presentation during the Mar, 2018 Satoshi's Vision conference illustrating the structure of bitcrust-db. Since then, several other projects have emerged with similar designs (Flowee?, Verde?, CashDB?) and are reaching maturity. https://www.youtube.com/watch?v=69SH5WqMszI
- Bitcrust: https://github.com/tomasvdw/bitcrust
- CashDB: https://github.com/Lokad/CashDB
- Flowee: https://flowee.org/