The spectacular wonder of GIT, and how it helped me understand Bitcoin.

GIT is an amazing little piece of technology that is used by millions of programmers on a daily basis. In fact, most modern large software projects use it all day, everyday. It’s so ubiquitous that people basically take it for granted at this point. I would say it is almost as ubiquitous as Unix. It’s a fundamental building block that is already woven into most coding workflows, and code repositories, of every major company across the globe. Developed by Linus Torvalds (who also invented Linux) – this little piece of technology is astoundingly useful. GIT – has a short name that is easy to remember, and that is a reflection of how it is used. It’s used on the command line like almost any other Unix command, and this is appropriate because when you’re using GIT, you use it as often as you would any other CLI command.

So what is it good for?

GIT is a distributed version control system. It’s a “content tracker”. Sounds simple, and maybe even boring – but I think it is anything but that. As a programmer, and someone who has worked with computers since I was a child… I have to say that out of decades of seeing technologies come and go...GIT stands out to me as being one of the most useful and most miraculous. And like Unix, (or Linux) – it has also been astonishingly resilient. First created in 2005, it has only continued to grow in its use. What GIT does is quite miraculous. It will take any file, or any number of files – even a very large number of files, and compresses them into a much smaller size. This is incredibly useful when you are sending large numbers of files across the internet. But that’s not all it does. While it compresses the data, it also organizes and keeps track of it. And so it can determine what if anything has changed – from one moment in time to the next. So as your writing your code, you can immediately see within a large file that may be several screens worth of code – GIT can show you what is old, what is new – and where the differences are. And it turns out that when you’re working on a large project – a large application – with a team of people – being able to see what has changed from one revision to the next is essential. GIT also acts as a time machine – say you just launched a new version of the software and then you get a call from the client that some functionality that was there before, is now broken. Well, we all want happy clients – so instead of tearing your hair out and trying to fix it on the spot – you can instantly go back to a prior version-- the one that was working. Thank goodness for GIT. Another useful aspect of this technology is that because it is so good at keeping track of changes in your code – it basically acts as a single source of truth. GIT knows if you posted code changes, who posted those code changes and when… so if there’s a problem, you can look through the code and GIT can pinpoint exactly when something changed, and by whom. Part of the genius of how this works is that when you create a new version of your software project, GIT doesn’t need to store both versions – it miraculously, just keeps track of the changes. And when you are pushing files up to a server in the cloud, or pulling them down to your laptop in a Starbucks in Costa Rica while you’re on vacation… GIT knows what the latest version is. It knows ‘the truth’. How GIT works is that it catalogs all of your data into it’s own ‘blobs’, and then uses what is known as a hashing algorithm, to determine where the changes are. Specifically it uses SHA-1. What does this have to do with Bitcoin? Bitcoin is also a ‘distributed version control system’ / or ‘content tracker’ of sorts. Bitcoin is a ledger. All it has to do – is keep track of is it’s own ‘coins’. Bitcoins are divided into a hundred million satoshis. And within the Bitcoin network, there are ‘addresses’. Any number of addresses can be added to the network – and Bitcoin keeps track of which satoshis are moving from one address to the next. In a similar way, it doesn’t need to make a copy of the entire ledger everytime someone sends satoshis. It just has to keep track of the changes – the UTXOs. The unspent transaction outputs. I won’t go into a full explanation of how Bitcoin works here– but the thing that stood out to me when I first learned about it – is that it is similar to GIT in the sense that it is ‘keeping track of truth’, by keeping track of changes. And part of the way it does that is again, by using a hashing algoroithm. The idea of having a distributed network of computers that all have to stay in sync with each other in order to know ‘the truth’ of the data in the system, is no small feat. That is the miracle of Bitcoin – Satoshi solved the ‘double spending problem’. And one of the integral pieces of technology that he wove into the system – was another hashing algorithm known as SHA-256.

A difference of magnitude

So GIT is used my millions of people and thousands of companies all day everyday to keep track of the ‘truth’ of their code. It is astonishingly reliable. But it’s just code – it’s not money. If we want a distributed network of computers to be able to keep track of something as important as a ledger of global money… we need something that is even more trust-worthy. Even more in-corruptible. By orders of magnitude. And that is exactly what SHA-256 is – it is a better hashing algorithm – by orders of magnitude. As hashing algorithms go, SHA-256 is roughly 280 trillion times stronger than SHA-1. So the ‘truthiness’ of the data in the Bitcoin network is roughly 280 trillion times stronger than the ‘truthiness’ of the data that most most software systems are built on, and that we rely on day in and day out, and that includes ALL of the software that the current banking systems are built on – and relies on to keep track of all the trillions of dollars of wealth that exists currently. The traditional banking rails. Gold stock in your brokerage account. All of your credit cards – all you mortgage payments. Your paycheck. They’re all managed within centralized control systems. Sure these systems may also implement hashing as a tool for error detection or authentication – but Bitcoin uses SHA-256 as a core part of the monetary security and ledger activity, and it is completely de-centralized. So with Bitcoin, there is no single point of failure. And so in a way, Bitcoin is roughly 280 trillion times stronger – 280 trillion times more “truthy”… than the entire financial system as we know and use it today. Math!