What is “blockchain”? An anecdotal lexigraphy

in #blockchain6 years ago

Preamble

This article is for people familiar with a decent background in Computer Science and new to the whole “blockchain” world. I will try to dissect the problem with understanding word “blockchain” which I observed among university professors, students, software developers.

Intro

Recently I have tried to explain what blockchain is to a lot of people with a very good Computer Science background. And found it surprisingly difficult. One of the main reasons for that is the fact that we (as a community) use word “blockchain” to describe a large variety of different things. I want to bring this problem to light, so newcomers more accustomed to “tidier” domain are prepared.
To make things easier to understand I will be using a lot of analogues from DBMS domain. But I want to be clear from the start: It is very wrong to assign properties from DBMS domain to blockchain analogues. For example, smart contract is a very different beast from stored procedure (semantically, pragmatically).

Blockchain

It all starts with blocks. We define transactions. We define a hashing function. We define a block. We require immutability. And we get a “continuously growing list of blocks”. And that is our first definition of blockchain. Easy to understand. Very rarely used in practice. We can cross-reference it with “database”.
Now lets say, we have a large number of copies of our list of blocks. Each of them is a blockchain. Surprisingly together they are also a blockchain. Database+replicas.
Now we add software which is responsible for generation of new blocks (mining, packing), peer-to-peer communication between “nodes” with “replicas”, fault tolerance, achieving consensus. And we call it…. blockchain. Database+replicas+DBMS+DDBMS.
Then we say that we can store programmable logic in blockchain – smart contracts (stored procedures). We add ability to execute this logic to our software. And we call it blockchain.
We can also add some additional functionality like file storage, streaming, replica management, fraud detection, etc,etc,etc. It is still a blockchain.
But all this software and all this data is actually deployed on the network. And once deployed and fully functional this system with all its data and smart contracts is called… blockchain.
Now we have a system which can be used as a platform for applications. We call those applications DApps. But sometimes we call them… blockchains.
So we have a blockchain which runs on top of a blockchains which consists of blockchains managed by a blockchain. And that’s why sometimes it is very hard to explain what the heck is going on with software architecture in a blockchain world.

Conclusion

While scientific papers on topics of consensus, distributed ledges, blockchain do make a good effort to be clear about definitions most of articles on the Internet do not. So each time we meet the word “blockchain” we have to first decipher which meaning of this word author is using.