Selling Shovels in a Gold Rush

Virtual currency mining is already clogged with big-time competition, so why not try building a more sure path with your blockchain programming skills?

You’ve almost certainly heard of bitcoin. But, this newsworthy virtual currency is really only a supporting element in the much more intriguing new blockchain technology.

Digital currencies have hogged most of the media spotlight around blockchain. There's something inherently newsworthy about a 2,000-percent rise in valuation over the course of a year, of course. But that focus on the sensational neglects the very real promise that blockchain holds for other industries.

Bitcoin, a Billion-Dollar Distraction?

Blockchain is a decentralized ledger of individual-to-individual data transactions within a secure, cryptographic system that resists retroactive alteration. Less than a decade old, plenty of computer power, electricity, effort and ink have been devoted to finding useful—and profitable—applications for this emerging technology. Bitcoin has erupted from its foundational blockchain technology as sort of a representational avatar for blockchain as a whole. And, while bitcoin's much-publicized successes and failures have overshadowed the underlying blockchain, it's worthwhile to note that, whatever bitcoin's faults (and those faults seem to be piling up lately), its stability as a ledger of financial transactions has proven that the world might be ready for the rise of a currency that is not linked to a central, governmental authority and guarantor.

And, with the rise of bitcoin as a financial and media darling, a lot of programming jobs are available within the blockchain sphere. Simply put, blockchain developers are in demand now, and that demand is only going to grow as blockchain matures. (A Dec. 2017 Computerworld article sees rapid and continuing growth in the sector, with “[b]lockchain developers rank second among the top 20 fastest-growing job skills, and job postings for workers with those skills have more than doubled this year.")

A Blockchain Primer

The basics of blockchain are still a bit opaque to many. So here's a basic rundown of what a blockchain is and how it propagates itself. People or entities that want to participate in the blockchain are called nodes. All communication between nodes is encrypted to securely identify the sender and the receiver. If a node wants to add information to the blockchain, the information must be validated. The validation within the blockchain process occurs through proof-of-work consensus. Once this proof-of-work is accepted, the information is validated, becomes a block and is added to the blockchain.

It takes considerable computing power and energy to validate the information to transform it into a block and add it to the blockchain. This validation process also needs to be randomized in order to prevent incorrect or contradictory information being added to the blockchain. Someone who wants to have information validated pays a fee for the service. As an additional reward for helping to validate information, virtual currency is generated for each block that is successfully validated. As a result, the process of validating information to create blocks is called mining. That virtual-currency reward, however, is given to only a fraction of the nodes that compete to validate that block.

This process of validation is self-regulating. As more computing power is added to the information-validation process, the difficulty of successfully finding a solution to the puzzle and validating a blockchain increases. If computing power decreases, the difficulty commensurately goes down. The bitcoin blockchain is designed to create a new validated block every 10 minutes.

Blockchain for Apps

Whereas the bitcoin blockchain will process blocks of transactions, Ethereum takes a different approach. Ethereum's creator, Vitalik Buterin, saw the need for a platform that could accommodate a range of applications. Bitcoin, by contrast, only operates as a peer-to-peer digital currency. Ethereum’s large blockchain acts as an open-software platform that lets developers build and release decentralized apps (dapps) through smart contracts. A smart contract—a term coined by computer scientist Nick Szabo—differs from a standard contract because it is digitally validated without recourse to a rule of law or governing authority. Within the Ethereum protocols, these smart contracts can be any sort of computer program. To date, State of the Dapps lists 996 decentralized apps using Ethereum protocols.

A New Vint Cerf?

Another intriguing outgrowth of blockchain technology is the rise of Protocol Labs, a startup run by Stanford graduate Juan Benet. The company envisions recreating the Internet by using decentralized file-transfer protocols called IPFS, InterPlanetary File Systems. It too uses a virtual currency, FileCoin, as a way to encourage people to use excess space to store files on the IPFS. Benet has referred to this as the “Airbnb of file storage.”

New Blockchain Uses the Same Old Programming Languages

Despite all of the new promise afforded by blockchain technology, it uses some of the same old programming languages. To be sure, there are new languages such as Solidity that are making inroads into blockchain development, but much of the development utilizes languages that have been around for years, even decades:

C++

To be a blockchain developer, you need to learn C++ because it can deal with parallel and nonparallel tasks. It's mature and upgraded regularly. It's the language that Satoshi Nakamoto used for the bitcoin source code. (Of course, it's also a flexible language that is used in countless other applications, so it's a good language to know.)

JavaScript

There’s a high demand for JavaScript developers—not just in the blockchain development field, but in all areas of programming. It is also one of the core technologies for web content production, so you're sure to find applications with this language in your toolkit. As a bonus, Solidity's syntax is similar to JavaScript, so you can use this language as a starting-point to learning the blockchain syntax.

Blockchain is most exciting perhaps as a foundational technology, much like those that helped launch the Internet such as TCP/IP. And, as a foundation, it's going to take time to mature from curiosity to widespread adoption. But, as people discover new ways to take advantage of secure, peer-to-peer transactions and contracts, the time to start is now.