Blockchain is an emerging technology for decentralised and transactional data sharing across a large network of untrusted participants. It enables new forms of distributed software architectures, where agreement on shared states can be established without trusting a central integration point. While many of us talk about how blockchain can change the way businesses operate and consumers get services, very of us have actually solutioned the projects or designed the architecture. Since blockchains are at an early stage, there is little product data or reliable technology evaluation available to compare different blockchains or even provide design decision points.
Based on my knowledge and understanding, I have tried to structure briefly, key design decision considerations for architecting a blockchain-based system.
- Degree of decentralization
This is a deliberate decision of the project to let go of the control. Fully centralized systems exist today, but blockchain introduces decentralization. It is up to the project requirements whether you need to a fully decentralized system or a partial one (mostly useful for enterprise solutions).
- Control of verification process
Verification process may also be a key consideration, by either allowing a fixed single verifier, x-of-y verifiers, random leader selection or all nodes as verifiers. This is again based on project requirements and should be weighed against the four key parameters mentioned in this article later.
- Storage and Computation
While blockchains provide some unique properties, the amount of computational power and data storage space available on a blockchain network remains limited. It should be decided clearly, whether to keep transaction data, transaction collection (only hashes) or its computation (through smart contracts) on the blockchain or off the blockchain.
You may chose to keep a blockchain private (within an organization), make it public or enter a consortium with a group of organizations. For business purposes, both private and public make little sense. While private blockchains defeat the purpose of blockchain and provide little RoI, public blockchains are too risky for a business.
The choice of a consensus protocol is also a critical consideration for handling transactions and may also affect the choice of blockchain, mainly because there are not many blockchains which give an option of choosing a consensus mechanism.
The above design decision considerations should be weighed against the impact of the following key parameters:
- Fundamental Design Principles of Blockchain
Concepts like immutability, transparency, etc as explained in my book ‘Internet of Transactions’
- Cost Efficiency
The development effort and infrastructure required to build this solution.
Required Throughputs and Transactions per second
Interoperability and data exchange with other blockchains
This article is based on my ongoing research in this area, which is going to be a part of my next book on ‘How to Advise and Design Blockchain Solutions’.
I would love to hear any suggestions or contributions, write to me at firstname.lastname@example.org