For many investors, a basic understanding of blockchain and cryptocurrency is enough. They put their research time and effort into deciding which currency to invest in, which exchange(s) is the most reliable, and which wallet to select. After all, there’s enough complexity and confusion surrounding just these most fundamental issues to make some people throw up their hands in surrender.
Some, however, are interested in going to the next level, i.e. having a more thorough, comprehensive, and technical understanding of blockchain’s distributed database architecture and the nuances and capabilities of the various user interfaces, analytics, and other features that help them make savvy decisions about where, when, and how they buy, sell, and trade in the cryptocurrency marketplace.
Very few, however, elevate to the level of actually developing blockchain implementations, and coding the applications that live atop them and provide the full functionality of both the front- and back-ends of this technology. It will not go into any specifics but serves as a general overview of what’s necessary to know before getting started. It is for these individuals who may want to begin down this path that this blog was written.
There are numerous coding languages, some very popular and some more obscure, that can be used to create a public blockchain. These will be covered in a minute. However, before thinking of implementation, it’s critical that the programmer fully understand his or her obligations to the crypto community.
First and foremost, a blockchain must be a fortress. Not only is the number of people depending on the security of the blockchain immense, but millions, even billions of dollars may be at stake if the network is compromised.
Secondly, the network must be lightening fast. Millions of transactions will pass through this network and its servers, and any delays could be disastrous. The network must be designed to permit remote and local queries to zoom through unimpeded in milliseconds, with each being treated appropriately and in a timely manner.
Thirdly, blockchain performance must be solid, reliable, and bullet proof. While the redundancy on the network means that individual server crashes are not particularly impactful, network downtime is a dreaded occurrence, and can drive users away in droves. Some tasks can run in parallel and some are time-sensitive and must be executed in serial order, so the programming code must be versatile enough to manage both equally well.
Fourth, the accuracy of the execution of each transaction on the network must be perfect in all cases. Each transaction on the blockchain is taken as an input and run through a hashing algorithm, producing an output of a fixed length. The hash of the exact input must always create exactly the same output on every node on the network.
Fifth, the network must be vastly scalable. Given the almost unchecked growth of many cryptocurrency providers, their blockchain networks must be able to support rapid and dramatic growth in both number of nodes and transaction volume. The bitcoin network has a capacity of processing under 5 transactions per second, while the much more streamlined Ethereum network can process up to 15. Compare this with the number of VISA transactions processed per second — over 1600! This suggests that the network must be able to scale up quickly in response to demand to an extent that has not yet been realized.
Lastly, the contemporary blockchain ecosystem must be able to do more than record transactions on a distributed, immutable ledger. Smart contracts, for example, one of Ethereum’s contributions to the blockchain community, need to be implemented. Analytics must be available. Investment advice, histories, and minute-by-minute updates are highly desirable. As is the ability to trade in numerous diverse coins.
Once these basic obligations are understood and committed to, the next step is choosing an appropriate programming language.
The Bitcoin blockchain is coded in C++. Though this language wasn’t standardized until 1998, it was actually developed by Bjarne Stroustrup at Bell Labs in 1979. Needless to say, that makes it quite an old-timer when it comes to coding languages. However, it remains as a powerful, well-understood standard in the world of object-oriented programming. Its strengths are complete control over CPU and memory usage, it’s threading ability for handling both parallel and serial computing tasks, robust polymorphism for overloading either functions or operators, and as mentioned earlier, C++ is an extremely mature, well-understood, and well-documented language.
Regardless which language one choses for blockchain development, it is important to understand the immense complexity of the blockchain ecosystem. While there are many tutorials available online promising that you can “build a blockchain in under 200 lines of code”, remember the adage, “If it’s too good to be true, it probably isn’t.”