Blockchain is a piece of software designed to create decentralized databases.
The system is completely open source, which means that anyone can view, edit and propose changes to the underlying code.
While it is becoming more popular thanks to the rise of Bitcoin, it has been around since 2008, making it about a decade old (ancient in computing terms).
The most important point about the “blockchain” is that it was designed to create applications that do not require a centralized data processing service. This means that if you use the system built on top of it (namely Bitcoin), your data will be stored on 1000’s of “independent” servers around the world (not owned by any central service).
The service works by creating a “ledger”. This ledger allows users to create “transactions” with each other, storing the contents of those transactions in new “blocks” of each “blockchain” database.
Depending on the application that creates the transactions, they must be encrypted with different algorithms. Because this encryption uses cryptography to “encrypt” the data stored in each new “block,” the term “crypto” describes the process of cryptographically protecting any new blockchain data that an application may create.
To fully understand how this works, you need to understand that “blockchain” is not a new technology – it just uses technology in a slightly different way. At its core is a data graph known as Merkle trees. Merkle trees are essentially ways for computer systems to store “versions” of a set of data in chronological order, allowing them to manage constant updates to that data.
The reason this is important is that today’s “data” systems are what can be described as “2D”, meaning they have no way to track updates to the underlying dataset. The data is mostly stored in its entirety – with any updates applied directly to it. While there’s nothing wrong with this, the problem with this is that it means the data either needs to be updated manually or is very difficult to update.
The solution that blockchain provides is essentially to create “versions” of data. Each “block” added to the “chain” (the “chain” being the database) provides a list of new transactions for that data. This means that if you can link this functionality to a system that facilitates data transfer between two or more users (messaging, etc.), you can create a completely independent system.
This is what we saw with Bitcoin. Contrary to popular belief, Bitcoin is not a “currency” per se; it is a public ledger of financial transactions.
This public ledger is encrypted so that only the participants in the transactions can see/edit the data (hence the name “crypto”)… but more than that, the fact that the data is stored and processed by 1000’s of servers around the world means that the service can work regardless of any banks (its main advantage).
Obviously, leaving aside the problems with the basic idea of Bitcoin etc., the basis of the service is that it is basically a system that runs on a network of processing machines (called “miners”). They all run on “blockchain” software and work to “compile” new transactions into “blocks” that keep the Bitcoin database as up-to-date as possible.
While many people blindly promise support for blockchain, it actually has a number of vulnerabilities – most notably that it relies almost entirely on the encryption algorithms used by its various applications. If one of these algorithms fails, or users are compromised in any way, the entire “blockchain” infrastructure can suffer as a result.