Let me start by noting that blockchain is an extremely overvalued area right now. These prices are not sustainable and a crash is certain. This has happened many times before and it will happen again. If you are willing to work in this industry for a long time, you will learn to ignore the price tags. Emin Gun Sier said that prices are the least fascinating part of cryptocurrency. These technologies are hugely important and will irrevocably alter the world.
If you are unsure, I cannot tell you if you should jump in. Five reasons convinced me to jump.
#1 It’s still early
Although Bitcoin was created 10 years ago, innovation has slowed to a crawl in the past few years, with the advent of Ethereum in 2015. Many of the innovative companies and new ideas in this sector have been built on Ethereum, which is still very young. British Bitcoin Profit says that getting in early can increase traders profitability.
Even if it’s not the best time to start, you can become a top-notch expert in a matter of years. It won’t take long to catch up with most people who haven’t been doing it for so many years. It would be similar to deep learning specialists who started studying the topic in late 2000s.
#2 The talent pipeline for this space is not yet strong
The best and brightest university students are focused on game development, machine learning, and web programming. Blockchains may be becoming more popular in public discourse, but it’s still a strange and subversive topic to which you can stake your career.
Blockchain was a domain reserved for cypherpunks and paranoids at the beginning. This has only recently changed. You can bring a lot to the space by being curious and open-minded developers.
3. A lot of innovation happens outside academia
As far as we know, Satoshi Nakamoto wasn’t an academic. There is no institution or university that has a cohesive blockchain concentration. Aficionados, entrepreneurs, as well as independent researchers, have led most of the innovation. White papers, blog posts and public Slack channels provide almost all the information you need. It takes nothing more than to get out there and start working.
4. Talent demand is far greater than supply
This space is not populated with enough developers, and it’s difficult for them to get enough training. Everybody is trying to recruit blockchain talent. Projects are feeling the effects of this talent crunch. Because there are so many opportunities, many of the top companies cannot pay their employees enough to stay. It’s easy to get a job if you have some experience.
5. Cryptocurrencies can be very cool.
You won’t find anywhere else where you can build sci-fi stuff such as cryptographically secure, decentralized money. This is the wild west, and it brings both good and bad. This space could use more transparency. Regulation will eventually follow. However, cryptocurrencies are a highly innovative area that you should be working in.
Naval Ravikant said in a recent interview: the key to success is to give society things that it wants, but doesn’t know how to get on its own. These things are not available at school; the world would have enough of them if it could.
Build something that no one else can build. Blockchains are still very new, and there is much to learn. The world will reward you handsomely if you can build the future of decentralized tech.
Let’s say that you are ready to put your hand up. Before you jump in the ring, here are some things you should know.
Before you dive into the details, I recommend that you have a solid understanding of the fundamentals. Blockchains were built on decades of research in cryptography, computer science, and economics. Although Satoshi Nakamoto was an outlaw, he knew the history of those who came before him. Understanding the building blocks of blockchains is key to understanding why they work. What happened before them and why did those things fail?
These are the top prerequisites you should know, ranked in order of importance.
These links are only a starting point. You’ll want to explore many of the topics.
It is important to understand the features and guarantees of major data structures, such as linked lists, binary search tree, hash maps and graphs. This includes directed acyclic diagrams, which are prominent in blockchains. To better understand their functions and properties, it helps to build them from scratch.
Cryptography is the name and foundation of all cryptocurrencies. All cryptocurrencies use public/private key cryptography as the basis for identity and authentication. It’s very easy to learn and does not require a strong math background. Then, look into ECDSA. The Elliptic curve cryptography is more complex — you don’t need to know all the details but it is the cryptography used in most cryptocurrencies including Bitcoin.
The other important cryptographic primitive is the cryptographic hash function. These are used to build commitment schemes and the basis for Merkle trees. Merkle trees enable Merkle proofs, one of the key optimizations that blockchains use for scalability.
There are a few good textbooks on distributed systems, but it’s a sprawling and difficult area of study. To understand blockchains you need to have a solid foundation.
You can no longer live on one machine and you need to think about consistency, consensus, and other issues. It is important to understand the differences between eventual consistency and linearizable models. It is also important to know the guarantees provided by fault-tolerant consensus algorithms such as Paxos or RAFT. Know the difficulties of reasoning about time in a distributed system. Appreciate the tradeoffs between safety and liveness.
With that background, you’ll be able to understand the difficulties around Byzantine fault-tolerant consensus, the primary security requirement of public blockchains. You’ll want to learn about PBFT, one of the first scalable algorithms to deliver Byzantine fault-tolerant consensus. PBFT is the foundation for many other non-proof-of work blockchain consensus algorithms. You don’t have to know all the details about PBFT, but you can get the basic idea and security guarantees.
It’s also very useful to understand the traditional methods of distributing databases (at its core, blockchains are databases after all). Learn about sharding, such as leader-follower replication and quorum-based commitments. Consider distributed hash tables (DHTs) such as Chord and Kademlia.
Peer-to-peer network topology is a major factor in the decentralization of blockchains. Blockchains are therefore direct descendants of P2P networks in the past.
Understanding the fundamentals of computer networking is necessary to fully understand the blockchain communication model. This includes understanding TCP vs UDP and the packet model. It also means understanding what IP packets are like and how Internet routing works.
Public blockchains are known to use flooding and gossip protocols to spread information. It is instructive to read the history of P2P network design from Napster to Gnutella to BitTorrent and Tor. While blockchains are their own thing, they can draw from the lessons learned and how they were built.
Cryptocurrencies are multidisciplinary in nature — this is what makes them so exciting and revolutionary. They are deeply interwoven with economics, as well as computer science, cryptography, networking. Cryptocurrencies can derive many security properties through their economic structures, which is often termed cryptoeconomics. Understanding cryptocurrencies requires an understanding of economics.
The most important branch of economics that plays into cryptocurrencies is game theory, the study of payoffs and incentives among multiple agents. You don’t have to get very technical here. However, you will need to be familiar with the basics of game theory analysis and how to use them to analyze incentives in iterated and one-shot games.
Schelling points and Nash equilibria should be key concepts in your arsenal, as they are prominent in crypto economic analysis.
Cryptocurrencies can be thought of as more than just protocols. They are also money forms. As such, they respond to the laws of macroeconomics (if they can be called laws). Different monetary policies are applied to cryptocurrencies. They respond to inflation and deflation in predictable ways. These processes should be understood and their effects on saving, spending, and so forth.
Another valuable economic concept is the velocity of money, especially as it corresponds to valuing a currency.
Cryptocurrencies are also deeply interwoven with markets, which requires an understanding of microeconomics. You’ll need a strong intuition for supply and demand curves. You should be able to reason about competition and opportunity costs (they’ll apply frequently to cryptocurrency mining). For many coin distributions and cryptoeconomic systems, auction theory features prominently.
You should be familiar with many of these topics. You can skip or skim these topics if you’re not familiar.
Now that you have a solid foundation, or maybe you skipped some, who knows? Now that you have your theory down, let’s move on to blockchain development.
The Theoretical Basis of Bitcoin
Satoshi Nakamoto published in October 2008 a whitepaper that described a protocol to create a digital currency. This protocol he called Bitcoin.
You must start with Bitcoin to understand the fundamental ideas behind blockchains.
First, I recommend that you build your intuitions about proof of work and the fork selection rule (also known by Nakamoto consensus). Here’s where you start:
To really grasp the concept, I suggest you watch more than one video explanation.
That’s great. Now that you’ve built up your intuition, this article will provide a deeper end-to-end exposition of the critical components of how Bitcoin works.
You can build a blockchain by yourself
Once you have high-level intuition, it is time to create your own proof of work based blockchain. It’s not as difficult as it sounds. These are some great resources.
First, I have a video lecture in which I show you exactly how I do it in Ruby. (I recommend watching even though you aren’t a Ruby programmer).
Source and slides here.
There are also other blockchain implementations you can find, written in various programming languages. You can build your own and you’ll be satisfied that it is functional.
After you have made it this far, your knowledge should be able to help you implement a simple payment application on top of a blockchain (i.e. Bitcoin).