BUIP120: Replace LevelDB with an immutable stateless storage design
Proposer: Jonathan Silverblood
Submitted on: 2019-03-28
Status: passed


## Summary

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.

## Proposal

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.

## Motivation

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.

## Budget

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.

## Background

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.