Robert Sams inspired this post. As we were discussing stacks (software, IT) and the draw backs of the bitcoin blockchain architecture recently in London, we slowly gravitated towards a new term and discussed the merits of modularity.
First, distributed ledgers or “blockchain” seem to miss the mark as descriptive terms and we gravitated towards the term Consensus Computer (CC). This new term makes sense to me. A distributed ledger, although strong and simple as it evokes a distributed state, seems passive. A ledger is by definition passive. What we have in mind is a system, a machine which is much more dynamic, and which, with the help of smart code, smart contracts to be precise performs dynamic tasks and handles discrete processes. A CC is much more elegant and includes this dynamism via the word “consensus”.
All distributed ledgers need some form of consensus computation to update the ledger. This ledger updating needs to draw on a turing-complete mechanism in order to encode the business logic that will solve “real” problems. As such, the CC term shifts the emphasis from ledger state to how that state gets updated which is much more appropriate.
We then focused on how a CC stack should look like. Think .Net stack or LAMP stack or Java stack in software and you get the idea. One has to strive for a simple stack, modular and articulated across several easy to grasp layers which in the aggregate form the stack and individually layers. The advantage of such a construct is obvious: It is much easier to prosecute change management. Change a line of code or an object within one layer and other layers are not impacted. One perfect example is the bitcoin blockchain: No modularity here which is one of the reasons why implementing any type of change is such a pain and why change management is a non-trivial issue. Another added benefit to a CC stack framework is how it will facilitate standardization of business logic coding going forward.
Without further ado, here is the framework we came up with:
Smart Contract Layer: Think of this layer like the Java programming language. This is where the business logic resides and where smart contracts are coded.
Consensus Computer (CC) Layer: The analogy here is the Java Virtual Machine which delivers core functionality for the Java programming language, or maybe the Ethereum Virtual Machine (EVM). In other words, the layer that allows for portability of the code created at the Smart Contract layer. A loose analogy, still it helps creating the picture. The whole idea being having a programming language that compiles down to the CC layer level is to have code that is written without knowing what hardware architecture it will run on. The goal is to arrive at a point where different developers and starts focus on and write business logic at the smart contract layer, ported at the CC layer, which will ensure that any hardware difference between nodes will not cause consensus failures (see the consensus layer below).
Consensus Algorithm Layer: Easy to understand, how transactions get verified or confirmed. The cryptographic part of the stack.
Network Topology Layer: Bitcoin uses p2p broadcasting mechanisms. There are other mechanisms whereby nodes will communicate though.
Truth be told, Robert was advocating a three layer stack by collapsing the Consensus and Topology layers together and I chose to represent a four layer stack in this post.
I repeat myself here. Abstracting the framework of a CC stack is very important. Continuous innovation and core technology roadmaps that project in the future need to encounter as little friction as possible. Change is greatly facilitated with modularity. Replace one module, or change one layer without impacting the whole is the key here.
My take is we will gravitate towards several CC stacks, much like there are several software development stacks out there. Diversity is the spice of life. The Bitcoin stack was evolutionary stack v0.1. Ethereum may be evolutionary stack v1. Surely we should expect Ethereum to evolve along its own track, or maybe morph into different stacks depending on use cases and hacker eco-systems preferences. Surely we should also expect other stacks emerging in the near future.
It used to be that most people thought Bitcoin was it. As Ethereum is emerging out of its stealth mode, many are thinking it is it. I reserve my judgement as the evolutionary road to mature stacks is still unfolding. Fascinating times.