From Dolt's inception, we shied away from blockchain hype. Dolt looks more like a traditional SQL database with Git-style features than something that could power a digital coin. Dolt is not targeting traditional blockchain use cases. But over the last year or so, the internet has been dragging Dolt and Blockchain closer together. It's time to address the question, is Dolt a blockchain?
Git is a blockchain: The Reformation
I saw the following meme on Twitter. I can't find the original tweet so I recreated it with a meme generator.
I hopped on our company Discord and posted "Dolt is a blockchain". Dolt uses the same commit graph structure, a Merkle dag, as Git. That commit graph sits on top of tables, stored as prolly trees, not files. If Git is a blockchain, Dolt surely is.
Some more searching confirms that "Git is a blockchain" is a flame war, the modern version of clerics debating, with some real arguments behind it.
@balajis: Patron Saint of Blockchain.
Balaji Srinivasan, or as I call him, the patron saint of blockchain, is an insightful, independent thinker on the subject of Bitcoin and all things crypto. These are some of his hot takes I really enjoy.
He wrote about how blockchains are massively multiclient databases. We're biased but it's hard for us here at DoltHub to read this and not want to
s/blockchain/dolt/g; replace all the instances of blockchain for all the non-regex people reading this. For a lot of the blockchain use cases Balaji imagines, Dolt may be a better fit.
Balaji is expanding the definition of blockchain to include Dolt use cases. This made us start to think Dolt may be a blockchain.
Bitcoin whitepaper: The Holy Text
If @balajis is the patron saint of blockchain, Satoshi's seminal whitepaper is the holy text. You even signal your allegiance by posting it in your bio or on your website.
A lot of the debate around what is a blockchain centers on how you interpret the above work. Much like the US Constitution, are you an originalist or a pragmatist? Is there one true blockchain that is Bitcoin? Or are you open to the idea that derivative interpretations of the above work are valid? Where you stand on the above likely influences how you think about Dolt as a blockchain.
What Makes a Blockchain?
This article would be rather boring if we fell in the camp of Bitcoin is the one and only true blockchain, so we'll expand the definition.
So, what defines a blockchain? We'll start simple and work up the stack of features/properties until we have a more complete picture. For each section we'll start at how the concept is defined in the Bitcoin whitepaper and then back up to the most charitable definition as to cast the widest net for what qualifies as blockchain.
Blocks and chains
The Bitcoin whitepaper starts off by defining a digital coin as a chain of digital signatures, or a ledger.
Then, it goes on to define a timestamp server to verify the order of transactions in the ledger. This is meant to solve the "double spend" problem, making sure the same coin is not spent twice.
These two core data structures form the core of the blockchain. Generalizing for the purpose of defining other things other than Bitcoin that may be a blockchain, you have transactions or writes and the write order; the blocks and the chain.
I'm abstracting away a bunch of complexity to figure out what the simplest implementation of the above concept could be considered a blockchain. Consider a transaction log of a traditional relational database. You have all the write operations starting from inception. Is this a blockchain whereas the reified version of the transactions is not? Certainly not, we are still missing some core parts of the blockchain definition.
A core concept we glossed over in the simplification above is signing. Because the Bitcoin whitepaper is defining a digital currency, the transactions are all transfers between owners of the digital coin. Now, the signing implementation in Bitcoin uses public key encryption for identity. Each user's public key is on the chain, meaning that's all you need to transact with them, and that user signs off with their private key.
Being a little more generous with the definition as to extend blockchain out of the realm of digital currency, one could instead insist that blockchains must have not only what transaction was made but also who made them. So, for the above database log to have any chance of being considered a blockchain, it must also include who made the transactions. A key component of blockchain technology is identity and custody of transactions.
"Each timestamp includes the previous timestamp in its hash, forming a chain, with each additional timestamp reinforcing the ones before it".
At blockchain's core, is the concept of immutability. Once you've defined the state of the blockchain it is impossible (or at least very hard) to change. In Bitcoin and other blockchains this is achieved by hashing previous states of the database and using that hash to calculate the current state's hash.
So, if we go back to the traditional database log, what is stopping someone from simply reordering the transactions or adding a new one? Blockchains make this hard and that fact is a key component of what defines a blockchain. If it's easy to change, it's not a blockchain.
Signing and immutability enable a higher level feature in blockchains, distributed writes. Many people can have a copy of a blockchain and make a change to it. Making a change to something you have is usually not that hard. Making a copy of something and knowing what you have is identical to the original is hard. Having a way to sort out how to merge multiple new copies that have been written to is a famously hard problem.
Distributed writes is where blockchains start to become more exclusive from a definition perspective. Can many people write to this database at the same time with the expectation that one or many of those writes will be eventually merged?
It's time for the genius of blockchain. If you are going to have thousands of people writing to a database, how do you decide which one is correct? In Bitcoin consensus is driven by "proof of work" and longest chain. Much of the Bitcoin whitepaper is spent explaining why these mechanisms create a secure digital currency. The linking of minting new coin to being the one that forms the consensus is truly brilliant.
Other digital currencies have implemented different consensus protocols, like proof of stake. But they all have distributed, automatic consensus forming. There is not a human or clearing house reviewing transactions for integrity and deciding which ones get on the chain. Consensus is the differentiating component of what makes a blockchain.
So is Dolt a Blockchain?
Or Git for that matter? This argument all comes down to consensus.
Dolt and Git both implement blocks and chains, signing, immutability, and distributed writes, just like blockchains. Moreover, you get some useful features like diffs and branches that help debug and organize your writes.
Dolt and Git implement consensus through manual merge with conflict detection/resolution. If you implement Continuous Integration on top of Dolt or Git without human review, you are getting closer to consensus in the form of blockchain but still missing the linking of reward to forming consensus. Dolt and Git do not reward you with a digital asset if your branch gets merged into master. At best, you get a thank you from the maintainer.
Personally, I don't think Dolt and Git are blockchains. The innovation that drove the blockchain phenomenon was consensus and linking forming consensus to reward. To call Git or Dolt a blockchain downplays that consensus is the fundamental defining characteristic of blockchains.
Dolt can be used to solve many of the same use cases as blockchain. Dolt shares a lot of the same characteristics of blockchains but it's missing a form of automated consensus. Thus, Dolt is not a blockchain but it's close to one. Disagree? Hit us up on our Discord and let's discuss.