Flowee Indexer

A service that provides fast indexes on the Blockchain

The Hub has the full historical history of payments and you can find all the details of each transaction using it. This concerns a lot of transactions, though. Around 270 million at the time of writing this. An on-disk usage of around 150GB. To allow any sort of historical investigation you will want to use a Flowee Indexer service.

Indexer is a stand-alone service you can deploy on one (or more) machines and they create an index of the most important details of the transactions database that The Hub stores.

This allows you to “follow the money”, as it were. Any department that wants to do any sort of client followup towards payments will want to have access to an Indexer. Developers doing anything of relevance with Bitcoin Cash will definitely want to access this data as well.

There are a set of websites that provide similar data to the public, you can trust those to never lie to you and never be offline. And if your business is small enough that may be fine. For everyone else there is the Indexer.

TxId index

Also known as “Transaction-Id” index. On Bitcoin Cash a “transaction-ID” is defined as being the sha256 hash of the transaction-data. The benefit of this is that this ID is unique worldwide and likely for the entire lifetime of Bitcoin Cash. That makes these IDs quite useful as incoming payments can now be identified by the transaction-id and we can then quickly find information like the payment actually having been mined.

The original chain does not in actual fact contain any of these IDs. They are calculated by hashing the individual transactions. As such to find all IDs it is needed to read and hash all 150GB of historical blockchain. Very impractical.

The Indexer creates an index of transaction IDs which allows near instant lookup of transactions by transaction ID.

Please note that the actual transaction still is stored in the database owned by the Hub, as such reading a transaction is a two step process where you use the Indexer to look up the location and then ask the Hub for the actual transaction.

Address index

The majority of transactions are transfers of money to some bitcoin-address. For instance bitcoincash:qpgn5ka4jptc98a9ftycvujxx33e79nxuqlz5mvxns.

As a very simplistic explanation you can think of addresses like bank-account numbers and anyone can send money to your address while you are the only one that can spend those coins.

In a view on the Bitcoin Cash world where addresses are central we end up needing a simple way to find all transactions that sent money to a specific address because we want to see the history, for instance. Or how much money has arrived and when did it arrive.

All these questions can be answered by using the address-index component from the Indexer, a simple way where an address is given and a list of transaction-outputs is returned.

Please note that the actual transaction data is still only stored in the database owned by the Hub. A lookup of an address returns a list of outputs.
Each output is a triplet (3 integers) of 1) blockheight, 2) offset-in-block and 3) index of output that used the address.
The first two can be used to instantly address the transaction from the Hub.