Blockchain as a Design Pattern

Blockchain as a Design Pattern

There is a lot of noise about blockchain these days. People are mystified as to what it is and there is a lot of confusion. Well, that is understandable because it is truly a disruptive technology. Remember, back in 1995-2000 there was a lot of talk of the “information superhighway” and soon that phrase went out of vogue along with Al Gore.

But if you ask me, Blockchain actually epitomizes the promise of the information superhighway more than any other technology before it. Blockchain actually marries three different concepts that we have all considered as discrete entities: 1) network 2) database 3) logic. Until now, we have pieced together the information superhighway where the network was distinct from the web services (logic) from the data. Holes were punched in firewalls to allow sharing of data and keys e.g. HMAC keys passed around to authenticate access.

Why all this fuss? Because data was usually guarded by sentries (web services). What if we did the unthinkable? Invert the model!!. Yes, put the data out in the open in a blockchain. We can put some safeguards in place as to who can view it and such. All updates being immutable and permanent.

In this new world order, we combine network + database + logic and we get Blockchain. Quite unique and takes getting used to. It's almost like we asked everyone to forget years of best practices and doctrine to embrace this pattern. Does every application need this paradigm shift? Nope. Absolutely not. But there are several technology problems that we encounter daily and have kludged up some ugly solutions to that can be elegantly solved with blockchain.

So, not to date myself, but those who remember and still practice the use of Design Patterns as first proposed by Gamma et al (https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612) then Blockchain offers yet another new and unique design pattern in constructing software.  The world may view blockchain as a technology, and that may be so. But I put forth the suggestion that it can also serve as an interesting design pattern in the construction of software. It is a design pattern where you combine network, database and logic. It is a design pattern where the system is decentralized. It is a design pattern where information is distributed. There is no central system of record. The blockchain is the system of record. Each node can update the information and all other nodes either embrace the update or not based on the consensus algorithm employed in the problem space. In short short, blockchain can be employed as a design pattern similar to your adapter, factory, facade or any other pattern.

There is a lot of talk of smart cities and driverless cars. These are systems of technologies where the concept of a central authority just doesn’t seem to jive well. My gut says such systems cry out for a distributed, decentralized infrastructure. Enter stage left, the star of our show – Blockchain. Let’s imagine your driverless car wants to park on street parking where there is a parking meter. Now both need to authenticate each other through some ecosystem technology that neither owns. Also, the transaction logic in this interaction can most likely be handled by a smart contract. A blockchain infrastructure would be perfect in this scenario to authenticate the car and the parking meter - one owned by an individual, the other by the municipality coming together in a transaction. Now, imagine this car drives to a different part of town 50 miles away and has to deal with another parking meter in the neighboring municipality. Given the replication capability between nodes in a blockchain, this second interaction my involve a separate blockchain node from the first but will have the up-to-date transaction information. 

So in my opinion, blockchain is a potent design pattern to consider when confronted with situations where there is no trusted central authority, information is distributed and decentralized, requiring replication between nodes with logic validating transactions.  I envisage a day where there is more interaction between devices without a common ownership structure, blockchains will become the trusted authority to help facilitate transactions.

Very interesting perspective Raghu Bala, I tend to agree that Blockchain seems to fit the bill between two or more parties when there is no trusted central authority, information is distributed and decentralized, requiring replication between nodes with logic validating transactions. Thanks for sharing.

To view or add a comment, sign in

More articles by Raghu Bala

Others also viewed

Explore content categories