Top Considerations while Implementing Blockchain
Principal Software Engineer - 21 July 2020 -
Principal Software Engineer - 21 July 2020 -
If you are seeing the technology making a difference in the startup ecosystem, you might have seen a lot of hype around Blockchain. Innovative characteristics of Blockchain platform like decentralization, immutability, transparency, and automation are useful for various industry verticals. This will inspire the creation of a multitude of use cases.
Blockchain technology is still in its nascent phase and, while cryptocurrency platforms like Bitcoin and Ethereum have been in use since long, its adoption into the mainstream software industry has been limited. Having worked on Blockchain platform implementation for startups from various domains, I have tried to list down the top seven considerations that should back the implementation of the Blockchain in a product.
One of the key architectural decisions while implementing the Blockchain-based products is to understand where to go off-chain and where on-chain. It is for occasions when transaction data and business validation logic play a crucial role.
The primary constraint is the network latency due to the data replication across the Blockchain platform network. The degree of latency keeps increasing with increasing levels of data replication. For the same reason, Ethereum charges a reasonable fee to store data on the chain.
Some general guidelines-
Another important decision is the scope/access of the Blockchain itself, ranging between open & permissionless system to a private & controlled one. Public Blockchain platforms are useful where the users are anonymous and equally. Public chains require a community around them to ensure that no one person has the authority to change rules. They need to be community-driven, and a single user cannot change the rules of the entire network. However, a large number of nodes may limit the throughput of the transactions. It is better to have some incentivization to carry out effective processing.
Permissioned Blockchain platforms control who can write/read on the private Blockchain. If you compare them with public chains, they are scalable. They are suitable when controlled governance and compliance/regulations are important.
An example of a public permissionless chain is Libra, a global payment system by Facebook, which can be used by anyone for value exchange. On the other hand, an Insurance claim processing platform is a good use case to exemplify private permissioned Blockchain. It is essential to come up with this categorization at the initial stages itself. This is because both the categories require different kinds of consensus and identity management solutions.
Tamper-resistance, resistance to double-spending attacks, and data consistency are some essential attributes of a secure distributed system. We can achieve the first two using cryptographic principles of Blockchain technology. For consistency across the system, we need an appropriate consensus mechanism.
In public-facing systems where anyone can join the network, all the nodes are trust-less with no one node having more privilege than others. For such scenarios, security is important to prevent any malicious node. There in the Blockchain with POW is better despite the over-consumption of network resources and limitations in transaction throughput.
In consortium-like systems, multiple parties interact and share information. In these systems, although node identities are well known, only some nodes are fully trusted for processing the transactions, and security is required against the semi-trusted nodes or external users not directly participating in the network. A Blockchain, with appropriate governance model and consensuses like PBFT or POS, will not only provide the desired security attributes to the system but also increase operational efficiency because of high trust levels.
In a document workflow-based application, for example, where documents are exchanged between multiple parties for approval, a system of later type can provide the required security and efficiency.
Sometimes, data stored, or transactions executed on Blockchain need protection on account of confidentiality or compliance rules, and herein privacy comes into the picture. For instance- in the case of financial trades and medical-records-based applications, transactions may need to be hidden with data visibility for selected stakeholders. Even in the case of bitcoin, transaction trend graphs may reveal the user’s identity. These users may want to hide the beneficiary or amounts involved in these transactions.
Techniques like transaction mixing and zero-knowledge proof have been proposed to support that. Sometimes, there are variations in real-life situations where these techniques cannot fit directly and require the design of a new protocol using existing techniques.
We can turn physical assets (land registry, paper contracts, or fiat currency) into digital assets on the Blockchain. Leveraging from the decentralization of these documents will then become easier. However, this requires an inherent trust in the system. We would either need a trusted third party providing this guarantee or a physical legal agreement between the parties that cannot be repudiated in the court of law.
In the case of fiat currency-based applications, this trusted third party is a bank. But choosing a bank with a good technical infrastructure is essential to ensure easy Blockchain integration.
GDPR compliance requires that a user can selectively reveal personal data to others and can exercise his/her right to the erasure of this data. As it is not possible to delete any data from the Blockchain platform, we should either keep such personal data Off-Chain (in centralized servers) or provide end-to-end encryption of his/her records so that it can be viewed only by that user.
Last but not least, we should have tools that ease out processes of development and deployment. A better smart contract framework means fewer bugs and more trust. A good container orchestration tool like Kubernetes is a must-have for upgrading the product on all the validator nodes.
Before building a real Blockchain-based product, you got to take a close look at the considerations mentioned above that can make or break your efforts. Barring hype and covering all the teething problems, I believe that blockchain technology is a proof of something that has the potential to revolutionize industries. Happy Blockchaining!