What Programming Languages Do I Have to Learn to Build Blockchains?

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.

Javascript is another popular language sometimes used to develop blockchain networks. As Atwood’s law states, “Any application that can be written in JavaScript, will eventually be written in Javascript” and this seems to be the case. Lisk, started in 2016, was probably the first Javascript-based cryptocurrency to make it into the top 20 coins based on market capitalization. The Lisk network also enables Javascript developers to create applications on top of their blockchain, tied to it but still separate from it. Other Javascript-based blockchains include Ark, which tries to create “smart bridges” between existing blockchains, and Nimiq, which is relatively-unique in being fully browser-based.

Python, of course, has to be in the conversation, as is Perl, Node, and the Javascript-like language Solidity. Solidity, it should be mentioned, was developed specifically to write smart contracts on blockchain platforms such as Ethereum. It generates machine-level code that can execute on the Ethereum Virtual Machine (EVM) using its built-in compiler. Another language called Serpent does much the same thing as Solidity, though its focus is on lower-level commands. Another language, LLL, is similar to both Solidity and Serpent, but is very low-level — basically just one step above the base EVM code itself. Some additional languages worth mentioning with respect to blockchain development are Java, Rust, and Go (also called GoLang), which some tout as the ultimate language for building distributed blockchain networks.

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.”

If you’re getting involved in cryptocurrency and blockchain, come take a look at our project, Snowball. It is the only platform that is democratizing access to the best crypto fund manager and crypto index strategies. Learn about it and register to be one of our first users at www.snowball.money

Written by:

Parul Gujral, CEO-Snowball

Originally published at www.snowball.money.

What Programming Languages Do I Have to Learn to Build Blockchains? was originally published in Data Driven Investor on Medium, where people are continuing the conversation by highlighting and responding to this story.