Bitcoin can arguably be better understood as a graph data structure than as a table. Outputs are created when new blocks are mined and locked to a specific address. These outputs are used (or unlocked) as inputs to new transactions, which will in turn generate their own sets of outputs. Bitcoin is a big network of transactions which use outputs from other transactions to generate their own outputs.
At TokenAnalyst, we believe that although modelling the Bitcoin domain knowledge on a tabular format has its value (and we in fact do it for different use cases), modelling it as a graph gives us extra power to perform analyses that would be otherwise very difficult to achieve on a regular database. Analyses such as Network Centrality, Paths Analysis, Community Detection, and many many more. This is why we decided to implement a Neo4j database for our Bitcoin data store.
In the first part of our talk, we will explain the general architecture of our solution and how after a series of optimisations, we managed to reduce the bootstrap time of a new deployment, to under one day. In the second part, we will discuss some of the advanced analytics that Neo4j enables on the Bitcoin blockchain.