Relational BlockChain



BlockChain is essentially a kind of distributed database.
The point of a blockchain is to ensure that every participant has a local copy of some data which is guaranteed to be the same as the copies held by all other participants.
This means that a blockchain must enforce very strict rules about the validity data which is added to it.
A blockchain must be able to add data in a secure way, but if it acts as a database, surely getting that data out again is equally important.
The strictness of the validity rules in "traditional" blockchains (NoSQL linked lists) means that they have only the most primitive querying support.

Any application software needs a good way to find the data it is interested in.
How much did company A send to company B in 2017?
What is the average value of a transaction sent between the US and Europe?
If the data is stored in a list of transactions, it will probably be necessary to write an application specifically to extract this information.
It will likely be expedient to save that data in a more accessible form (a database) so that it can be reused efficiently.
In short, the blockchain data model is a huge barrier to developing useful and usable applications.




The relational model was a revolution in software development back in the 80s.

Relational databases are everywhere now, behind every organisation, public or private.
The core advantage of a database is the ability to structure and control your data.
Relational databases structure data according to the relational model, which has a set of beneficial characteristics like data independence, no redundancy, and good consistency guarantees.
What is important for relational blockchain is that the features of a relational database management system give us a set of properties called ACID.
This means that every transaction comes with the following guarantees:

  Atomicity Complete execution or complete failure - no mixed states.
  Consistency The database is never left in an invalid state after executing a transaction.
  Isolation Concurrent transactions are executed in way that is consistent with sequentially executed transactions.
  Durability Committed transactions stay committed, even in the event of service interruptions.

These properties mean that we can treat database transactions as deterministic state modifications, and by using blockchain-style consensus to order those transactions in a distributed and fault tolerant way, we can build a relational blockchain.
We have two implementations of relational blockchain, one private and one public.