Blockchain Architecture

September 24, 2019

My own personal career can be neatly divided into two parts: before blockchain, and after.

Before blockchain I worked as a developer, team lead and for many years as a solution architect for large enterprises.

The term architect, like many terms in the software industry, including the term blockchain itself, is widely used, abused and misunderstood.

I learned throughout my own career that there is a major difference between a software developer and a software architect. Between a building a solution that evolves, to one that has been thought through from the ground up, with all of the technical and requirement considerations. A software architect will typically build up years if not decades of experience developing software and, more importantly, living with that software - in other words, experiencing all of the challenges of supporting software that you’ve designed throughout its lifecycle in a live production environment.

A software architect will be aware of all of the common, often enterprise, non-functional requirements in areas including, but not limited to security, performance, scalability, integration, high availability, disaster recovery, platform and vendor independence and consider those before a line of code is written or a platform is selected.

A software architect will consider the end to end design of a solution in relation to all of those non-functional requirements, and NOT only focus on individual components or layers.

The reason I raise these points in relation to blockchain is because it is a new technology, and there is still much to be solved and learned. There is also much misinformation and naivety. There are many unique properties of blockchain that require special consideration in an end to end architecture, else the fundamental benefits of the technology are undermined.

Very few people have taken blockchain solutions into a real enterprise production environment. Very few people have had to ‘live’ with their solutions throughout their lifecycle. Very few people have seen real users using their solutions. Very few people have had their implementations of non-functional requirements, such as security, properly challenged.

Many blockchain applications are being created without considering the full implications of an end-to-end distributed architecture. Smart contracts are developed and integrated with existing or new applications without considering all aspects. This will inevitably lead to solutions that use blockchain technology but compromise the basic security and trust fundamentals. At best this will undermine the value and benefits of using the technology in the first place, at worst, this will lead to breaches of security and trust.

There is far too much focus on the underlying blockchain platforms. Hundreds are in development, and new ones are announced daily, each one slightly different to the other, claiming to have finally solved scalability, privacy or both. The existing platforms are actually fine for most applications (e.g. ~1000 TPS using private Ethereum on commodity infrastructure), and incremental improvements continue to deliver.

Dani Grant and Nick Grossman of Union Square Ventures, one of the most influential funds to invest in blockchain, recently posted this blog post citing that:

The history of new technologies shows that apps beget infrastructure, not the other way around

There is not enough focus on the applications, and ensuring value is delivered through consistent and correct end to end architecture.

The blockchain ledger and smart contracts are typically only one part of a broader solution inevitably integrating with web, mobile, legacy software and cloud infrastructure. How integration is designed, and how different users and parties, and their devices, interact with the ledger is critical to integrity of the overall solution. Similarly, true decentralisation of the network, secure key distribution and management, and ensuring these are not compromised when distributing the application to real users and integrating with non-blockchain applications is imperative.

Designing an architecture that avoids platform and vendor lock-in, especially given the nascent state of the technology is equally important.

Where these fundamentals are compromised, the value of the technology itself is massively compromised, to the point where in many of these solutions the benefits of blockchain are completely undermined.

It’s time we started considering blockchain architecture, and not simply building blockchain solutions.