Everybody is talking about blockchains. No, they mean Blockchains. Or is it Bitcoin? Where is the difference? Isn’t that all the same?
Many people tend to mix up the terms Blockchain and Bitcoin wildly. Therefore, I decided to write a short article which tries to shed some light on the terms in order to highlight differences and similarities.
Please note the small b in the heading. What are blockchains? I think the word is almost self-explanatory: A “blockchain” is a “chain of blocks”. So, what is a block? Referring to existing solutions, a block is nothing more than a defined set of data, consisting of header information and a area for playload data. (You could call it “package”, but i guess “packagechain” is quite hard to pronounce). The “chain” component comes in, when we examine the header data. Each header contains the hash of one or more predecessor (mostly regarding time) blocks.
So, using cryptographic stable hashes, you can achieve a cryptographic proven unchangeable history. This idea is not new, for example Git uses hashes for identifying commits – and also uses it to refer to the previous commit in the branch, or, in case of a merge, both merge candidates. This also leads to what Git uses the user data part in the blocks for: For files or their changes.
Please note the capital B in the heading this time. In my opinion, the word “Blockchain” should be used when talking about a concrete blockchain, e. g. the one from Bitcoin. But there are other instances like Ethereum etc. (Sorry, I don’t want to go into the details of the individual blockchain instances and Bitcoin derivatives here.)
So, what’s the difference from Bitcoin’s Blockchain to blockchain? Bitcoin introduces blockchains along with a definition, how the header data should be structured (for example by using Merkle Trees etc.) and what’s the payload block for. In case of Bitcoin, the payload consists of (financial) transactions, expressing the movement and change of possession of so called Bitcoins. The Bitcoin paper also defines, that a block can only have one single predecessor, which raises the question, which branch of a blockchain is the right one. For that, consensus methods come in.
When you have a linked list (of blocks) with links only in one direction, for example to the respective predecessor, branches in this linked list (ok, let’s call it blockchain) could occur. Some tools, e.g. like Git, allow to merge two branches to a single one, which contains all information from both originating branches. In Git, where the block payload consists of files and file changes, a merge is easy, as long as there are no changes on the same file. When having two conflicting changes, Git asks the user for a decision which change should be kept.
This is possible in software development, but not in financial context. So we need a method for finding a consensus, which branch is the right one (or: Where has the Bitcoin cash gone). What can easily be solved in the real world with central authorities is quite complex in a decentralized environment. For that, Nakamoto, the author of Bitcoin, also offers a solution: The Proof-of-Work method. Simple summary: A lot of computers are trying to solve a mathematical task in parallel – but only the first one wins and can extend one of the Bitcoin Blockchain branches. The standard requires to use always the longest branch in the Blockchain for that. By extending the longest branch, it will be even longer – and will remain the longest (for more details please read the Bitcoin paper).
There is much criticism that proof-of-work wastefully uses energy, so there are some alternative consensus methods. Here a (incomplete) list of consensus methods:
- The base idea was already formulated here:
Dwork, C., Naor, M., & Sahai, A. (2004). Concurrent zero-knowledge. Journal of the ACM (JACM), 51(6), 851-898.Dwork, C., Naor, M., & Sahai, A. (2004). Concurrent zero-knowledge. Journal of the ACM (JACM), 51(6), 851-898.ISO 690
- The base idea was already formulated here:
- Proof-of-Elapsed Time
A blockchain is a chain of blocks, containing the hash of one or more predecessor blocks in the meta data.
A Blockchain is an instance of blockchains with some regulations and limitations regarding block layout, etc.
Bitcoin is a name for a software, a protocol and a blockchain (the Bitcoin Blockchain) Instance. It also includes the requirement that there’s only one true branch which holds valid transactions, and defines that the decision between branches should be made by using the Proof-of-Work consensus method.