Hacker News new | comments | show | ask | jobs | submit login
Ask HN: Is Git a blockchain?
6 points by ocds 10 months ago | hide | past | web | favorite | 14 comments
Git is based on a merkel tree and I think it makes git the first widly used blockchain.

What do you think about this?

Ref: https://en.wikipedia.org/wiki/Merkle_tree

The key element of the blockchain is proof-of-work as a way to establish consensus: https://en.wikipedia.org/wiki/Proof-of-work_system

git doesn’t have (or for its purposes, need) this, so it doesn’t meet any common definition of blockchain.

Prior question: https://news.ycombinator.com/item?id=9436847

Proof of work is the key element of bitcoin, not blockchain in my opinion.

From the same source: "A blockchain[1][2][3] – originally block chain[4][5] – is a continuously growing list of records, called blocks, which are linked and secured using cryptography.[1][6] Each block typically contains a hash pointer as a link to a previous block,[6] a timestamp and transaction data.[7] By design, blockchains are inherently resistant to modification of the data."


> The key element of the blockchain is proof-of-work as a way to establish consensus

It's not "a way to establish consensus". It's just to slow everybody down to comparable level, while keeping verification fast. Consensus is a totally different problem blockchain doesn't even touch.

Ok thanks for the prior question. I'm new here, I don't see the search bar at the bottom of HN.

It's nuanced, but proof-of-work is instrumental in achieving consensus... right now. Truly, the key element is the consensus itself which can be achieved (theoretically) in a number of other ways.

In software development using git (without the help of centralized solution as github), the consensus is reached by mail and discussions betweens human people who build software and decide where is the trunk.


"I found blockchain resembles Git, the source code management system a lot. Git is decentralized, each programer has a local duplication. What’s saved by Git is a journal of updates to source files (commits). To get the latest file, you apply a series of patches onto the initial commit. You can generate local git commits. These commits will not be written to other people’s Git repository yet, until you perform a “git push”. This is like having a local Bitcoin block, but only when you have won a lottery (mined a lucky number), you have the opportunity to write your local block to the blockchain. You also cannot write random data to the blockchain. Your change has to be verified by others, just like doing code reviews before a “git push”. Or in Bitcoin, a commit (a data write to the blockchain) has several recent transactions. Each of them needs to be cross verified by others."

Ask yourself - is git decentralized? No. Therefore it’s not a blockchain. Its bytes live in one single location.

Git has been design with decentralized development in mind. It is decentralized by design ... Many user use git in a centralized maner (with github for instance like the old svn and so on ...) but it doesn't make the git core a centralized tool.

So, in my opinion, you're wrong; its bytes lives in many locations.


It’s a cloud based architecrure. You work locally, you synch to a cloud. It’s not a P2P based architecture. It is centralized.

Is it a blockchain? No.

Git is a peer-to-peer tool, but flexible enough to let you use a workflow with a more-equal-than-others peer, or even communicate with actual centralized servers that expose a git interface.

Git doesn't swarm in a way that often gets associated with the idea of "p2p" by the prevalence of more popular p2p protocols used for file-sharing or cryptocurrencies. Nor is it geared towards world-readability. But none of those are intrinsic properties of peer to peer protocols.

I can (and do) use the git software on my computer to pull from co-workers development desktops running the same git software as me. And they pull from me, all with no external servers used coordinate that exchange of trees. That makes git peer to peer. No amount of tools built on top of git that require treating one peer as the a point of centralization can undo that. It just means that those tools aren't p2p.

This distinction is often invisible to users, and I don't blame people for missing it because the business model of GitHub and GitHub-competitors rests on everyone thinking they're necessary.

Thank you for your accurate answer!

Don't take the "cloud" memes as prescriptive, your and collaborators' computers can still talk to each other over IP (unless you block it), just like before, without paying Amazon or Google.

Just reading the resource I have put to support my words ...

"Unlike Centralized Version Control Systems (CVCSs), the distributed nature of Git allows you to be far more flexible in how developers collaborate on projects. In centralized systems, every developer is a node working more or less equally on a central hub. In Git, however, every developer is potentially both a node and a hub – that is, every developer can both contribute code to other repositories and maintain a public repository on which others can base their work and which they can contribute to. This opens a vast range of workflow possibilities for your project and/or your team, so we’ll cover a few common paradigms that take advantage of this flexibility. We’ll go over the strengths and possible weaknesses of each design; you can choose a single one to use, or you can mix and match features from each."

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact