Blockchain is a decentralized database. Developed in 2008 and released as "open source" software, it was designed to provide software developers with the ability to create scalable, global applications which worked in a peer-to-peer capacity.
The most important thing to understand about how "blockchain" works is that it's designed to provide the same functionality that you experience with computer systems today, except allowing for 100's or even 1000's of servers to act as the processing service for the data the application may use.
Whilst most people only know about "blockchain" because of its association with Bitcoin, it's actually a standalone piece of technology which was created independently to the "Bitcoin" or "crypto" paradigm.
More specifically, the "blockchain" is not an entity in itself - it is an individual piece of software which can be used at the core of a "decentralized" application such as Bitcoin or Ethereum. Ironically, the components for the technology have actually been around for many years in several forms.
The culmination of Bitcoin's rise has been that "blockchain" has achieved a following of people (mainly idiots) who don't really understand what it is or how it works. This tutorial will explore the way in which "blockchain" is meant to work and how it fulfills that promise.
The whole point of "blockchain" is to provide "decentralization" functionality for digital applications. To give the specific term, it's meant to provide peer-to-peer functionality with a global data-set...
The standard paradigm today is what's known as "client/server", which means that any computing application requires a central "server" through which all the data is sent & processed. Whilst the "server" could actually be a range of them ("cloud"), it's still the case that there will be a central "endpoint" through which client requests/commands are sent.
There is no problem with client/server in itself. It's how almost all digital services work (Facebook/Google etc), and in actual fact - "blockchain" / "decentralization" doesn't really change the paradigm much anyway.
The big difference lies in how the "data" in a "decentralized" network is processed. More pertinently, how it's stored, accessed and edited.
In a "centralized" system, all the data is "owned" be a central intermediary. Whilst this means the data is relatively safe (although a target for hacking), it also means that the company/entity which "controls" the data is at liberty to do as they please with it (which includes selling it to marketing agencies etc).
In other words, if you've ever wondered how "Sanjeef" who wants to "help you fix your PC" got your phone number, it's likely because you used a service who resold your data to a third-party database provider (who then sold it to a scammy call center).
The promise of "blockchain" is not only to stop this, but ensure that any data stored in the system is publicly available for anyone to view/edit/save. However, in order to protect the privacy of some elements of the data, "cryptography" ("encryption" / "crypto") is used to obscure any of the information people want to be kept secret.
This, along with the ability to create a database that's neither owned nor operated by a central entity, has given rise to the new idea of "decentralization" - as demonstrated so aptly by how "Bitcoin" has become relatively popular...
Bitcoin - "Killer App"
In the technology business, the REAL money is in paradigms.
Paradigms is the term used to describe the way in which particular "solutions" are used in either the commercial or end-user market. For example, the "Internet Search Engine" is a paradigm, as is the "Relational Database" or the "PC Operating System".
The point is that each "paradigm" always has a "killer app" - a piece of software so good that it encourages an entirely new market to adopt it due to the way it's better than ALL the previous "software" systems that existed before it.
Such examples would include "Windows", "iPod" (which combined software with hardware prowess), "iPhone", etc.
Ultimately, "Bitcoin" seems to have become the "killer app" for Blockchain. That is, the lure of "decentralized money transfer" is so strong that people have flocked to the system in their millions. Whilst this has increased the "price" of a "Bitcoin" dramatically, it's also shown that the functionality that "blockchain" promised is not only effective, but as a real-world purpose.
To this end, when considering "why" someone would want to adopt the paradigm, you're actually looking at the way in which decentralized applications (such as "Bitcoin") are able to work - and thrive - on it. This is why many people only heard about "blockchain" as a result of Bitcoin's burgeoning popularity.
This means that if you're looking at "why" someone may want to even consider "decentralization" as a technology-set, you're actually looking at whether any use-cases in the "real" world can be handled much better as a result of its operation.
With the obvious contender of "monetary transfer" being covered by Bitcoin, there are a number of other uses which the plethora of other "crypto" systems have been designed to try and resolve.
This is why so many "ICO"'s are designed around quite strange applications (such as "revolutionizing the gaming industry" etc) - they're trying to apply the "decentralized" paradigm to new markets, in the hope they will replicate at least some of Bitcoin's success.
How It Works
So I actually lied at the start of the article - the system doesn't provide a "decentralized" database, rather a distributed database system.
The two are somewhat similar, but have a critical difference - "decentralized" typically still has large centralized "nodes" which act as "mini" service providers. Examples of this would be localized service providers (in the case of CDN servers for example):
You could argue (for example) that "Amazon" is somewhat decentralized, because its database facilities are split into many "sub" divisions depending on geographic location.
The big problem, though, is that "Amazon" still owns your data. This means that it's still a centralized service, no matter the structure of its network.
The big difference (and indeed why you can just call "blockchain" decentralized) is that "blockchain" databases are stored on 100's or 1000's of "nodes" around the world. These nodes are all equal (none have priority over others) which means that if you're looking to store data on them, the "decentralized application" is designed to let the "fastest" server provide the response (this is where "mining" comes from with "crypto").
To be specific, the "blockchain" system works by providing users with the ability to interact with each other directly (hence "peer to peer"). This is done with client-side software (in the case of "crypto" - a "wallet"), which allows the user to interact with their peers if they know the unique identifier of that user (which could be an email, or in the case of Bitcoin, is a "Bitcoin address").
The system works by keeping a "ledger" of transactions of users on the system. This is what the "blockchain" database is going to save each time a user is going to perform a transactions. In other words, when you "know" the other person's information / address, you use the client-side application to "send" data to them.
The data is then sent to the "Bitcoin" (or which ever application you're using)'s blockchain database, which is operated by 100's or 1000's of "nodes". These nodes then "compete" to process the newly transmitted data, and add the produced result to the "blockchain" ledger (which stores the various updates that have been made).
After the "blockchain" database has been updated, the other "nodes" are informed about the update, synchronize with it and the process starts over again. Obviously, the client-side software will also upate to accomodate the changes.
Path To Industry 4.0...
The most important thing to understand about "blockchain" is the way it's being heralded as a way to bring about "Industry 4.0" or "Internet of Things"...
These ideas ("paradigms") have existed for a long time, but until now there has been no way to really implement them effectively. There's been no standardized way through which they're able to share data or resources.
One of the big reasons why "Microsoft" was successful in the early days, or why the likes of "Bitcoin" has become popular is because they've provided a standard way through which people are able to interact with particular functionality.
The problem for "Industry 4.0" exists in the way in which "connected" devices don't have a standardized protocol through which they're able to communicate with others (with data).
The reason this is an issue is because of how each device will produce / expect completely different types of data. This not only prevents the system from being able to "exist" with others, but a lack of infrastructure-layer means that they will not be able to communicate effectively with other systems.
For example, an "automated" harvester machine in the US may be programmed well to work a particular field, but without knowing how the vehicle has progressed, or whether it's hit a problem.
The idea of "blockchain" gives rise to the idea that users are able to amalgamate data and its resources into central client-side software. Not only would this open the door for more immersive applications, but will allow different applications to share data more effectively than ever before.