Why is Git not considered a "block chain"?

The reason why Git and blockchains appear similar is because they are both using merkle trees as their underlying data structure. A merkle tree is a tree where each node is labeled with the cryptographic hash value of their contents, which includes the labels of its children.

Git’s directed acyclic graph is exactly that, a merkle tree where each node (tag, commit, tree, or blob object) is labeled with the hash of its content and the label of its “child”. Note that for commits, the “child” term conflicts a bit with Git’s understanding of parents: Parent commits are the children of commits, you just need to look at the graph as a tree that keeps growing by re-rooting it.

Blockchains are very similar to this, since they also keep growing that way, and they are also using its merkle tree property to ensure data integrity. But usually, blockchains are understood as way more than just merkle trees which is where they are separating from the “stupid content tracker” Git. For example, blockchains usually also means having a highly decentralized system on a block level (not all blocks need to be in the same place).

Understanding blockchains is kind of difficult (personally, I’m still far away from understanding everything about it), but I consider understanding Git internals as a good way to understand merkle trees which definitely helps understanding a fundamental part about blockchains.


The question reads: Why is Git not considered a “block chain”? So this is asserting that there is a wide-spread opinion that Git is not a blockchain (an assertion that is illustrated and corroborated by the answers preceding mine on this page) and asking for the reason of the prevalence of this opinion. This is a good question.

Taking the question literally, the answer could be that the blockchain term and concept gained popularity as part of the digital currency operation called “Bitcoin”, and hence came to be associated with how Bitcoin does things: which is by using a lot of computing power to calculate a specific hash including a nonce to meet certain arbitrary requirements, which is by allegedly having no central authority, which is by being “independent”, maybe even “democratic”, and the rest of the kool aid; and as these things are not seen in Git, well, Git cannot be a blockchain, right? And so the question would be answered literally.

Hidden behind this prima facie question is another question: What is a block chain? Now you could look up a definition somehwere and copy it over here, but I didn't do that as I have made up my mind years ago, when listening to a podcast about Bitcoin that strove to explain the new concept of a blockchain, that a blockchain works like Git and I don't intend to let my precious understanding be misled by random claims on the internet.

So what is a blockchain? What's in the word?

Nothing in the term “blockchain” presupposes the requirement to include a nonce in the content so as to come up with a hash of so and so many leading zeros. (This requirement is only there to be able to control the blockchain by computing power and so, ultimately, by money.)

Nothing in the term “blockchain” presupposes the existence of a network, let alone a decentralized one.

Nothing in the term “blockchain” presupposes any “independence” from “central authority”.

The term “block chain” only presupposes blocks (of data) chained together. Now what is a chain? Is it just a link? No, it is a strong link designed to hold things together by force.

A simple linked list doesn't qualify as a blockchain because the contents of the chunks of data in the list could be altered while the list would continue to link back and forth just fine. This is not how a chain works.

To make a link of blocks of data into a chain of blocks of data, the contents of the blocks need to be checksummed (digested) in one way or another and this checksum (digest) must be part of the link, making it a strong link protecting the content, preventing it from being altered. This is a blockchain.

And this is what Git does, and hence Git is a blockchain, or works as one, if you prefer.

To close the circle, let's ask again: Why is Git not considered a “block chain”? It could be because many people, perhaps even a large majority, do not focus on the essence of a concept but on blinking accidents.


Blockchain is not just any chain of any blocks.

Blockchain is when there is a way of determining the main chain when two or more are diverted, and when no central authority is needed for that determination.


Cyber Currencies like Bitcoin, use a distributed consensuses cryptographic chain of blocks (merkle tree). Common usage has shortened this to 'blockchain'

While git uses a chain of blocks (merkle tree), it lacks the distributed consensuses cryptographic components that common usage of the term 'BlockChain' imply.