Commit hashes are a hash of the previous commit hash + new data. The structure (history) is replicated in a decentralized way on every user's node. The only missing thing is a proof-of-work, but that is optional in the definition of a blockchain.
Commit hashes are a hash of the previous commit hash + new data. The structure (history) is replicated in a decentralized way on every user's node. The only missing thing is a proof-of-work, but that is optional in the definition of a blockchain.
No.
You can say that git reduces to a Merkle tree. And blockchains use Merkle trees.
But you can't say that git is a blockchain.
https://gist.github.com/joepie91/e49d2bdc9dfec4adc9da8a8434f...
https://paragonie.com/blog/2017/07/chronicle-will-make-you-q...
I think you are looking for the other qualities that typically apply to a blockchain such as the implicit need to "mine" its resources. Git simply produces these resources incidentally. I think this is the only major difference.
A Merkle tree is not a recursive signature algorithm, because a hash function is not a signature algorithm.
https://paragonie.com/blog/2015/08/you-wouldnt-base64-a-pass...
(Yes, you can build signature algorithms out of hash functions, but definitions matter.)
Git + PGP + some computationally expensive mechanism to broadcast verified PGP key attributions + a consensus algorithm might be a little bit like a blockchain, but I can't think of a good use case for that. Git repos generally aren't intended to be pushed to by the whole world.
In other words, the blockchain is just the data structure, the consensus sits outside of that as a distributed protocol.
Of course, parts of that data structure enable the protocol to work, which is the most interesting property of the blockchain, but that's just blocks, merkle trees, and chained signatures.
Using the hash of a parent node as input to a nodes hash alongside the nodes data creates a link, but it doesn't create a merkle tree. In a Merkle tree the parent node is the hash of the hashes of its child nodes and only leafes have data. These are entirely different definitions and also serve completely different purposes (linking to a parent node vs efficient lookup of membership of some data in a larger dataset).
Could someone clear up my confusion and explain to me where Git/Blockchain use a Merkle tree in their fundamental functionality? Or is the term Merkle tree simply misreferenced a lot?
In a merkle tree the leaves are not linked and they have a tree structure of parent hashes on top. Git and Blockchain nodes are linked and the fundamental architecture doesn't need a tree structure of hashes on top. While this tree structure on top might be useful, it would be an optimization, but not part of the fundamental architecture. Again, what am I missing?
When you say that "git and blockchain nodes are linked", I think you might be not abstracting the concepts from the form the data usually takes. For instance in git you might be thinking of a commit as a single package with all its source changes, headers, parent details and hash, but it terms of it being a merkle tree the leaf node would be non-hash parts (source code, non-hash headers etc) and the "tree on top" would be the hashes. This tree structure of hashes are absolutely part of the fundamental architecture of git/blockchain.
If Git is like using a hammer to hammer nails, blockchain (with consensus protocol) enables you to write without a pen by using the hammer to hit your thumb until it bleeds. And Wikipedia already has a pen that works.
Honestly, "blockchain" as a word feels ill-defined and badly understood at the best of times. You could argue that "blockchain" deconstructs to nothing more than a "chain" of "blocks". What "blocks" actually are is up to the imagination, proof-of-work or other algorithms aside.
I get frustrated when people hail "blockchains" as the solution to everything because the term is so vague in everyday use that it's effectively meaningless.
However its more of a Merkle tree https://en.wikipedia.org/wiki/Merkle_tree; which blockchain is also.
Are there any traditional block chains where the proof of work is actually an investment into the chain? Such that the structure of the chain represents something of actual value (not a series of rare hashes), and additions to the chain add to that value? A la git. One potential example would be neural networks on a chain, where the work is training the network, and the value is intrinsic in the well-fitted resultant model.
A blockchain is basically a single, global Git repository, where each commit is a “block” and the data inside that block/“commit” are transactions.
The defining difference between Git and a blockchain is that blockchains define which branch (commit history) is the correct one — the branch that you should put your commit on top of.
Blockchain provides a means to arrive at a consensus on which commit history (branch) is correct, while Git does not.
There is no chain, it's a DAG.