Bitcoinprivacy is dead – long live bitcoinprivacy!

As you have probably noticed, our block explorer is gone. After many prolonged outages we have decided to take it down for the time being. We’re sorry.

Bitcoin Graph Explorer, the software behind the website, which we have been working on since 2011, has lately been ageing and rotting, and we never seemed to find the time to keep up with its decay. So we pulled the plug for now.

We have learned a lot from this project, and we’re deeply grateful that we took the time to work on it and that people have actually noticed and used our work. Priorities change, though, and it took us some years to realize we weren’t putting in the time needed to keep it running in a way we could be proud of.

Nowadays, every time we look at the code base, we notice there are so many things that we would do very differently if we were to start anew. Plus, today there are many similar projects that do what we have done, and arguably do it better.

So what is next for bitcoinprivacy? To be frank, we don’t know yet. We might just use it as a blog for now. We might try and use a different backend to get the explorer back online. We might come up with a brand new idea.

What is next for Bitcoin Graph Explorer? As they say, we are handing it over to the community. We have no plans to keep maintaining it at the moment, but you are free to take it and build on it, as you always have been.

What is next for us? As Satoshi said we’ve moved on to other things. But don’t worry, we’re still adding our little efforts to the greatest project of our time, Bitcoin.

So long and thanks for all the fish …

February 14, 2019

Posted In: News

Tags: , , ,

Leave a Comment

We’re back online, sorry for the downtime – Here’s why it took so long

After Jorge had dockerized the entire platform and it had been running for a few months, I noticed some dubious stats that didn’t make sense (more wallets than addresses with positive balance, some wallets with a negative balance). I guess our updateBalanceTables code is still not perfect. This is really hard to get right, because it directly works with the databases in order to avoid having to recalculate all the balances every block (which takes about half an hour nowadays!), and there are quite some edge cases. I was actually thinking about rewriting this part in Haskell, but now I’m not sure if BGE is still worth investing so much time in, with alternatives like BlockSci proliferating.

Anyway, unfortunately while trying to debug I noticed an unwanted side effect of docker: the common way of killing docker containers is absolutely brutal and even though we had already spent considerable time making BGE pretty much safe to kill in any state, this brutality was just too much: our databases became corrupted.

That’s a pity because rebuilding everything from scratch takes a few days ATM with the blockchain growing and growing. But what’s really frustrating is when you have just waited 3 days for FastBlockReader to finish and then an assert throws an exception, because somehow some blocks are missing!

Now Jorge had similar issues in the winter when dockerizing and switching servers, and the culprit seems to be somewhere between bitcoind and bitcoinJ. BitcoinJ’s master version is still not being segwit compatible, forcing us to use a rather unmaintained segwit branch. In addition, our assumption that it was safe to use bitcoind’s on-disk block files through a bitcoinJ loader seems to have been unwarranted. We’re still not sure why, but for now the only way to avoid this problem was bootstrapping with the PeerSource giving us the blocks one by one over the internal network. This process takes a bit longer, more like 5 days ATM.

So we really ought to implement saner process killing in our docker containers, completely rewrite BGE in a microservice architecture and finally get away from BitcoinJ. Or just try BlockSci. Which is a little hard as long as our systems are running, because it needs 50G RAM 😉 What do you think?

May 2, 2018

Posted In: Code

Tags: , , ,

Leave a Comment

Notes on the Bitcoin wealth distribution

We have received a few inquiries about the distribution of Bitcoin wealth as implied by our stats and richlist pages. Our site has also been used by some media outlets as a source for this kind of statistics. See, e.g.

We feel that we ought to give some qualifications about this kind of claim. Statistics about the distribution of bitcoin in addresses, or even in the kind of partial wallets we infer, are probably very misleading about the actual wealth distribution, because addresses are not people! This goes both ways: Neither do people just own one address (Most active bitcoin users would own at least hundreds and when they have been using best practices we do not associate these addresses as partial wallets), nor does every address just belong to one person (Consider the richest addresses, which are mostly exchange addresses. These can stand for millions of people!). Andreas has explained this most clearly here:

Before watching this video, I had always somehow assumed that the distribution in addresses can be used as an approximation of the true wealth distribution. But in fact this is highly dubious. Any given distribution (or Gini coefficient) on addresses could easily be transformed into an arbitrary wealth distribution by grouping or splitting addresses: Consider the edge cases where every address belongs to the same person or every address is shared by all users.

Jorge brought up an interesting view on this: The distribution we are measuring is really just the distribution of UTXO values, which could be seen analogously to banknote denominations in traditional money!

As an example, I tried calculating the Gini coefficient for the British Pound denominations given here. If my calculations (pen and paper!) are correct, it’s about 0.2654320. However, should this be read as an indication that British wealth is very evenly distributed? Hardly! It just means that their banknotes values don’t differ across multiple orders of magnitude.

Unlike the Bitcoin UTXO set, which clearly does. There are millions of outputs with just a few satoshis in them, as well as a few that have more than 100,000 BTC, which is about 10 trillion times as much! However, Bitcoin’s Gini coefficient means just that. Outputs vary very widely in value. This does NOT imply anything about the wealth distribution of Bitcoin hodlers.

Personally, the true wealth distribution remains an interesting question for me. In fact, it was what made me start this project. So how could we find more valid approximations? Well, exchanges might have a pretty good idea. Or web wallets. Have any of them published any statistics? Has the Mt.Gox leaked data been analyzed in this direction? If not, then maybe it’s time to do so!


April 27, 2018

Posted In: Uncategorized

Tags: , , , , ,

Leave a Comment

Charts with the BGE-API and dimplejs

Finally it is out! For almost two months we promised it. Due to some open issues in the real life, it was not easy to find spare time to work on it, but finally it is done!

We are proud to present you the first examples of charts using Bitcoin-Graph-Explorer API and dimple.js. Dimple is a Library that uses d3 and exposes a simplified usage of d3.

First of all we need to include d3 and dimple in our page, and jquery for simplicity of the ajax calls:

<script src="">
<script src=""/>
<script src=""/>

With all that included, now we can start using the BGE server:

Continue reading Charts with the BGE-API and dimplejs

November 30, 2016

Posted In: Code

Leave a Comment

Bitcoin Graph Explorer 3.1 is here

As you probably know, our site is based on — and actually a kind of demo site for — our own blockchain analysis server Bitcoin Graph Explorer (BGE). The source code for this has always been available, but to be honest it would have been hard for anyone but us (well, including us) to actually use it.

So we have spent a few weeks thinking about how we could make the code more accessible, adding such niceties as a license, Readme, wrapper scripts, nix packages … in short, we are proud to be finally able to really tell you that Bitcoin Graph Explorer is open source software that we invite you to try out, use and improve with us.

This also means you have less excuses for trusting our website with your data when you don’t want to. Just run your own copy of BGE! Admittedly, it still requires some commitment: Storing and analysing the blockchain takes a lot of memory and time. Blockchains come with a cost, you know. We recommend at least a 512GB SSD (the DB takes about 300G at the moment and grows quickly at about triple the rate of the pure bitcoind blockchain). Populating the DB takes about a day on our server. On a hard disk, that is probably more like a week. You should, however, be able to work with relatively little RAM since we have rebuilt BGE to replace RAM with LMDB where possible.

To summarize, there are now at least three options of using BGE: Directly on, the public API (blog post forthcoming, overview in the github readme) at, and on your own server (preferably via the API though you could also work with the DB directly). We hope you find this useful for your bitcoin projects.

September 26, 2016

Posted In: Code, News


Leave a Comment

Site update 2016

It’s been more than a year since our last update. A lot has changed in this year, although bitcoinprivacy still looks kind of the same. We have focused a lot on making Bitcoin Graph Explorer more stable and more accessible, so other people can enjoy it as well. We are still writing READMEs and comparing licenses, but BGE 3.0 should be out any minute now. OK, within a month. Really. We will let you know here.

But you might have noticed that the site itself has changed a little, as well. The big one is that we are now reading blocks (and rolling them back if they become orphaned out) in real time, as they appear on the network. So you can use bitcoinprivacy as an almost up-to-the-minute (it might be two minutes behind) block explorer and check what the transaction you just pushed has done to your privacy.

Then there have been lots of changes in the background, and we intend to write a series of more technical posts to share our experiences as, for example, we have switched from mysql to postgres.

And then there’s the API. You can reach it at and use it to build your own blockchain intelligence services even if you don’t want to run BGE yourself (I mean, of course you should, but then not everybody has a spare 300G — and growing quickly — SSD server). Jorge is busy writing a tutorial that explains what it can do, so expect that in the coming weeks, as well.

But in the mean time, enjoy, stable and feature complete as never before (we hope!).



August 28, 2016

Posted In: News

Leave a Comment

Look, BitcoinPrivacy is all shiny and new!

OK, so it may have appeared that we didn’t put much work in lately, what with no visible changes and no database updates for weeks. We’re sorry, but the truth is, EVERYTHING has changed in the meantime, and we could hardly keep up with all the work that was necessary to make these changes.

So we are very proud today to present the new! Please, check it out! The major new feature is the built-in blockchain explorer – no more links to! But aside from that …

Not only does the site look nicer (bootstrap 3), but it is much more scalable, performant, safe and extensible, because we rewrote the entire thing in Play! framework with Scala. This will make it much easier to add new features.

We also felt we outgrew sqlite, so we changed to mysql, which caused us major headaches along the way.

And finally we have been on a new server for a while. This was intended to make development easier, but has uncovered lots of little problems that needed to be addressed. Addressed they have been, and we have learned a lot that should help us make BitcoinPrivacy even nicer even faster.

We hope you enjoy the new BitcoinPrivacy and give us some feedback!

May 19, 2015

Posted In: News

Leave a Comment

Stop by and see all the beautiful new features! has seen another few rounds of improvements: we now have (mandatory) https (with a real certificate), the top 100 are now top 1000, a few new stats, and an entire new page:

Distribution of Bitcoin wealth: – not only can you play and find out how many addresses own more than X Bitcoin, and how much of the total bitcoins this is: e.g., there are 311285 addresses with more than 1 bitcoin, totalling 13621839 bitcoins, 98.56% of all bitcoins. Did you know?

We also have finally implemented the one statistic that inspired me to start this project years ago: Gini coefficient (for addresses and for closures, too). Not surprisingly, it is astronomically high at about 0.98, even when capped at the dust limit of 546 satoshi.

All of these fine numbers continually updated about 1 hour behind the blockchain, of course. Enjoy!

February 10, 2015

Posted In: News

Leave a Comment

Tracking the Bitcoin Top 100 – the better bitcoin rich list

We have long been inspired by and have always wanted to generate a rich list of the top entities/address clusters (closures in our terminology) as opposed to single addresses. At you can check out our results:

You can find the traditional address top 100 next to our unique closure top 100 of address clusters that seem to belong to the same entity (read the FAQ for details!). Note that unlike, our list stays almost up-to-date (as the complete site)! Moreover, if you compare the two sites, you will find that the addresses differ in some places (such as No 1 and 3). That is because we correctly identify and display multi signature addresses. As you can see, the age of multi signature has arrived in the top 100!

January 13, 2015

Posted In: News

Leave a Comment

Now featuring … ongoing updates!

They’re not quite live, because we are staying a few blocks behind in order to avoid reorganisations. But, they’re there.
Plus, you might have noticed our new design, and there have been a plethora of changes under the hood. Check github for more on that.
So, what’s next? We are working on some showcase examples that reveal interesting blockchain facts and trivia.  We’ll keep you posted.

October 31, 2014

Posted In: News

Leave a Comment