As of November 2020, we are no longer actively developing or supporting BlockSci. Please be aware that as cryptocurrencies continue to evolve, they may lose compatibility with BlockSci and might break it in unexpected ways.
The Bitcoin blockchain — currently 280 GB and growing — contains a massive amount of data that can give us insights into the Bitcoin ecosystem, including how users, businesses, and miners operate. BlockSci enables fast and expressive analysis of Bitcoin’s and many other blockchains. The accompanying paper explains its design and applications: https://www.usenix.org/system/files/sec20-kalodner.pdf.
Current tools for blockchain analysis depend on general-purpose databases that provide "ACID" guarantees. But that’s unnecessary for blockchain analysis where the data structures are append-only. We take advantage of this observation in the design of our custom in-memory blockchain database as well as an analysis library. BlockSci’s core infrastructure is written in C++ and optimized for speed. (For example, traversing every transaction input and output on the Bitcoin blockchain takes only 1 second on our r5.4xlarge EC2 machine.) To make analysis more convenient, we provide Python bindings and a Jupyter notebook interface.
This repository contains research code that is no longer actively maintained, may contain bugs and errors and may break in unexpected ways. We are an academic team and aren’t able to provide the level of QA and support that you might expect from a commercial project.
We provide instructions in our online documentation:
- Installation instructions
- Using BlockSci
- Guide for the fluent interface
- Module reference for the Python interface
- Troubleshooting
Our FAQ contains additional useful examples and tips.
Version 0.7.0 is based on the development branch v0.6, but requires a full reparse.
Version 0.7.0 comes with a new fluent Python interface for fast and expressive blockchain queries. It contains a number of important bug fixes as well as many smaller improvements. We recommend upgrading to the latest version of BlockSci and no longer use v0.5.
We no longer provide an AMI for BlockSci.
Please make sure to check the list of Frequently Asked Questions as well as the issue tracker first. If you've encountered a bug or have a question about using BlockSci not already answered, the best way to get help is to open a GitHub issue. We are an academic team and aren't able to provide the standard of support that you might expect for a commercial project.
BlockSci was created by Harry Kalodner, Malte Möser, Kevin Lee, Steven Goldfeder, Martin Plattner, Alishah Chator, and Arvind Narayanan at Princeton University. It is supported by NSF grants CNS-1421689 and CNS-1651938, an NSF Graduate Research Fellowship under grant number DGE-1148900 and a grant from the Ripple University Blockchain Research Initiative. We've released a paper describing BlockSci's design and a few applications that illustrate its capabilities (an updated version of the paper has been accepted at Usenix Security and will be available soon). You can contact the team at [email protected].