Popular cryptocurrencies continue to face serious scalability issues due to their ever-growing blockchains. Modern blockchain designs thus began to prune historic data from old blocks and rely on recent snapshots for the initial synchronization instead. Unfortunately, established systems are often considered incapable of adopting these improvements. In this work, we present CoinPrune, our block-pruning scheme with full Bitcoin compatibility, to revise this popular belief. CoinPrune bootstraps joining nodes via snapshots that are periodically created from Bitcoin's set of unspent transaction outputs (UTXO set). Our scheme establishes trust into these snapshots by relying on CoinPrune-supporting miners to mutually reaffirm the correctness of a snapshot on the blockchain. This way, snapshots remain trustworthy even if adversaries attempt to tamper with them. Our scheme maintains its retrospective deployability by relying on positive feedback only, i.e., blocks containing invalid reaffirmations are not rejected, but invalid reaffirmations are outpaced by the benign ones created by an honest majority among CoinPrune-supporting miners. Already today, CoinPrune reduces the storage requirements for Bitcoin nodes by two orders of magnitude, as joining nodes only need to fetch and process 6 GiB instead of 271 GiB of data in our evaluation, reducing the synchronization time of powerful devices from currently 7 h to 51 min, with even larger potential drops for less powerful devices. CoinPrune is further aware of higher-level application data, i.e., it conserves otherwise pruned application data and allows nodes to obfuscate objectionable and potentially illegal blockchain content from their UTXO set and the snapshots they distribute.

Publications

Information on CoinPrune can be found in the following scientific publications:
  • How to Securely Prune Bitcoin's Blockchain (IFIP NETWORKING 2020)
    @inproceedings{2020-networking-matzutt-bitcoin-pruning,
       author = {Matzutt, Roman and Kalde, Benedikt and Pennekamp, Jan and Drichel, Arthur and Henze, Martin and Wehrle, Klaus},
       title = {{How to Securely Prune Bitcoin's Blockchain}},
       year = {2020},
       publisher = {IFIP},
       booktitle = {Proceedings of the 2020 {IFIP} Networking Conference},
    }
    
  • CoinPrune: Shrinking Bitcoin's Blockchain Retrospectively (IEEE Transactions on Network and Service Management)
    @article{2021-ieeetnsm-matzutt-coinprune-v2,
        author = {Matzutt, Roman and Kalde, Benedikt and Pennekamp, Jan and Drichel, Arthur and Henze, Martin and Wehrle, Klaus},
        title = {{CoinPrune: Shrinking Bitcoin's Blockchain Retrospectively}},
        year = {2021},
        journal = {IEEE Transactions on Network and Service Management},
        volume = {18},
        number = {3},
        pages = {3064--3078},
        doi = {10.1109/TNSM.2021.3073270},
    }
    

Source Code

The proof-of-concept implementation of CoinPrune, based on Bitcoin Core v0.17.1, is available at Github!

Additionally, we provide Python scripts for the basic parsing of our CoinPrune snapshots in a separate Github repository.

Data Set

Here, we publish the snapshots we created during our evaluation using our research prototype. Each snapshot is available as an uncompressed tarball, each containing the snapshot metafile as well as the individual chunks.

Contact

In case of any questions or comments, please send an email to: blockchain [ät] comsys.rwth-aachen.de

Postal and Visiting Address

Chair of Communication and Distributed Systems - COMSYS - Informatik 4
RWTH Aachen University
Ahornstraße 55 - building E3
52074 Aachen
Germany

Partners / Research Institutes

Funding

This work has been funded by the German Federal Ministry of Education and Research (BMBF) under funding reference numbers 16KIS0443, 16DHLQ013, and Z31 BMBF Digital Campus. The funding under reference number Z31 BMBF Digital Campus has been provided by the German Academic Exchange Service (DAAD). The responsibility for the content of this publication lies with the authors.