Decoding the technical nuances of setting up this complicated yet futuristic platform
Rohas Nagpal/Sep 9, 2017
When Blockchain technology was announced through the paper titled Bitcoin: A Peer-to-Peer Electronic Cash System by Satoshi Nakamoto in 2008, it was an innovative mix of public key cryptography (invented in the 1970s), cryptographic hash functions (born in the 1970s) and proof-of-work (invented in the 1990s).
Over the last few years, many derivate and blockchain-inspired projects have been created. Most of them are not technically blockchains, but rather distributed ledger systems.
Let us dcode the how to build a blockchain in just eight steps. For simplicity, I have used the terms blockchain and distributed ledger system interchangeably in this article.
Step 1: Identify a Suitable Use-case
There’s a ton of hype around blockchain. I’ve read that blockchains can erase global hunger, make the world corruption-free, end poverty and do a lot more without breaking a sweat. Unfortunately, that’s not true. So, step 1 is to identify a use-case that makes business sense.
There are 3 things that blockchains can do very well:
- Data Authentication & Verification: this includes immutable storage, digital signatures and encryption. Data in almost any format can be stored in the blockchain. Blockchains can create public-private key pairs and also be used for generating and verifying digital signatures.
- Smart Asset Management: this includes issuance, payment, exchange, escrow and retirement. A smart / crypto asset is the tokenized version of a real-world asset e.g. gold, silver, oil, land.
- Smart Contracts: This is a term most often mis-understood, but that’s something for another day.
Step 2: Identify the Most Suitable Consensus Mechanism
The original blockchain, which powers the bitcoin crypto-currency, used proof of work as a consensus mechanism. But today there are multiple distributed ledger systems that offer a host of consensus mechanisms such as Proof of stake, Byzantine fault tolerant, Deposit based consensus, Federated Byzantine Agreement, Proof of Elapsed Time, Derived PBFT, Redundant Byzantine Fault Tolerance, Simplified Byzantine Fault Tolerance, Federated consensus, Round Robin and Delegated Proof of Stake.
Depending upon your use-case, you need to choose the consensus mechanism that makes the most sense.
Step 3: Identify the Most Suitable Platform
There are many blockchain platforms out there today and most of them are free and open source. Depending upon the consensus mechanism you chose in step 2, you need to select the most suitable blockchain platform.
Some of the more popular platforms, in alphabetical order are:
1. BigChainDB
2. Chain Core
3. Corda
4. Credits
5. Domus Tower Blockchain
6. Elements Blockchain Platform
7. Eris:db
8. Ethereum
9. HydraChain
10. Hyperledger Fabric
11. Hyperledger Iroha
12. Hyperledger Sawtooth Lake
13. Multichain
14. Openchain
15. Quorum
16. Stellar
17. Symbiont Assembly
Step 4: Designing the Nodes
Blockchain solutions can be permissioned (e.g. a Government run land registry) or permission-less (e.g. Bitcoin, where anyone can become a miner). Blockchain solutions can be private (e.g. a contract management system implemented in a pharmaceutical company), public (e.g. an asset backed cryptocurrency) or hybrid (e.g. a group of banks running a shared KYC platform).
Another factor to consider at this stage is whether the nodes will run on the cloud, on-premise or both. Then comes hardware configuration issues like processors, memory and disk size. You also need to decide on the base operating systems (usually Ubuntu, CentOS, Debian, Fedora, Red Hat or Windows).
Step 5: Design the Blockchain Instance
Most blockchain platforms need very careful planned configuration for the following elements:
1. Permissions
2. Asset issuance
3. Asset re-issuance
4. Atomic exchanges
5. Key management
6. Multi signatures
7. Parameters
8. Native assets
9. Address formats
10. Key formats
11. Block signatures
12. Hand-shaking
Some parameters can be changed at run-time but some cannot, so this is a very crucial step.
Step 6: Building the APIs
Some blockchain platforms come with pre-made APIs while some don’t. The major categories of APIs that you would need are for:
- Generating key pairs and addresses
- Performing audit related functions
- Data authenticatin through digital signatures and hashes
- Data strage and retrieval
- Smart-asset lifecycle management –issuance, payment, exchange, escrw and retirement
- Smart contracts
Step 7: Design the Admin and User Interface
At this stage you would need to choose the front end and programming languages (e.g. HTML5, CSS, PHP, C#, Java, Javascript, Python, Ruby, Golang, Solidity, Angular JS Nodejs). You would also need to choose external databases (e.g. MySQL, MongoDB) as well as servers (including Web servers, FTP servers, mail servers).
Step 8: Adding Future Tech
You can greatly enhance the power of your Blockchain solution by integrating Artificial Intelligence, Biometrics, Bots, Cloud, Cognitive services, Containers, Data Analytics, Internet of Things and Machine Learning.