Want to join the blockchain industry? This developer's authoritative guide is worth reading

About the author: Haseeb: General partner of cryptocurrency hedge fund MetaStable Capital .

Original link: https://haseebq.com/about/

This article should be the most comprehensive and best material I have ever seen for blockchain application development learning. I hope this article will benefit the friends who want to learn the development of the blockchain. I would like to thank the translators of the two authors: Managing Partner @Blake of Capital and @angryolk of China Community of Mochimo and Ixian.

The authoritative guide to blockchain development

Cryptographic currency, ICO, magical internet cash – it's all very exciting, and you, the eager developer, want to understand these crazy things, where do you start?

I am very happy that you are excited about this field. me too. But you may find it still unclear where to start. The blockchain is evolving at an extremely fast pace, but there is no clear guide to learning these things.

Since I left Airbnb to work full time on the blockchain, many people have asked me how to enter the blockchain space at all times. Consider the guidelines for blockchain engineering in my authority (and inevitably this article is incomplete).

This guide is divided into ten parts

  • Why study blockchain development?
  • prerequisites
  • The theoretical basis of Bitcoin
  • How to build blockchain yourself
  • Ethereum and smart contract programming
  • Smart contract security
  • Start to really get started
  • Build your own project
  • Leading blockchain community
  • Get a related job

Why do you want to learn blockchain development?

Before I answer this question, let me make a small statement: the blockchain is now an overrated thing. These prices are unsustainable and the crash will surely come. It all happened before, and it is likely to happen. But if you work long-term in this field, you will learn to ignore the price. In the words of emin gun sierr, price is the least interesting part of cryptocurrency. These are very important technologies that will change the world irreversibly. If you are not sure, I can't tell you directly if you jump in. But I can try to tell you five reasons to convince me:

Blockchain is still very early

Bitcoin was invented 10 years ago, but in the past few years, Bitcoin's innovation rate has reached an avid level, especially with the launch of Ethereum in 2015. Most of the new companies and ideas in this field are based on Ethereum, and Ethereum is still immature.

Even if you start now, you can become a world-class expert within a few years. Most people haven't been doing that for a long time, and it's not that hard to catch up. From now on (learning blockchain) is similar to studying deep learning at the end of the 21st century.

There is no strong talent funnel in this field.

Most of the best and brightest students in the university focus on machine learning, web programming or game development. Of course, blockchains are becoming more and more attractive in public discourse, but they are still a weird and subversive topic, and your career may be affected by some of this.

In the early days, blockchains belonged only to cypherpunk (in fact, more accurate persuasion should be encrypted punk), paranoia and geeks. It’s only recently that it has changed. As a curious and open developer, you will bring a lot of value to this field.

Most innovations happen outside of academia

As far as we know, Nakamoto is not a scholar. There is currently no university or institution offering a complete selection of blockchains. Most of the innovations here are led by enthusiasts, entrepreneurs and independent researchers. All you need to know is white papers, blogs, public leisure channels and open source software. You only need to roll up your sleeves and put in battle.

The demand for talent far exceeds supply

There are not enough developers in this field, and they can't get fast enough training. Everyone is competing to recruit blockchain talents, and the project also feels a shortage of talent. Many of the best companies can't afford enough money to keep employees behind because they have too many opportunities. If you have some skills, it's easy to find a job.

The cryptocurrency is really cool.

Where else can you create things in science fiction like encryption, security, and decentralized currency? It's wild west now – it brings good and bad aspects. This area can be more transparent and ultimately regulated. But there is no doubt that cryptocurrency is one of the most innovative areas you can use right now. Naval Ravikant said in a recent interview that the key to success is to give society what it wants, but you don't know how to do it. You can't learn this kind of knowledge at school; if you can, the material civilization of this world has long been extremely saturated. So go and build something that no one knows how to build. Now, the blockchain is brand new and there is still a lot to be solved. If you succeed in building the future of decentralized technology, then the world will bring you great returns. So, what do you need to know before you enter this field?

prerequisites

I suggest that you strengthen your understanding of the basic principles before you delve into it. The blockchain is based on decades of research in computer science, cryptography and economics. Nakamoto is a "traitor", but he is also very clear about his previous history. To understand how blockchain works, you need to understand the building blocks before the blockchain and why these things don't work.

Here are some good prerequisites to be familiar with, sorted by importance.

Note that these links are just a starting point and you may want to dig deeper into many of these topics.

computer science

data structure

You need to be familiar with the features and complexity guarantees of the main data structures: linked lists, binary search trees , hash maps , and graphs (especially directed acyclic graphs with significant features in the blockchain ). Building them from scratch helps to better understand how they work and their properties.

Cryptography

Cryptography is synonymous and basic for cryptocurrency. All cryptocurrencies use public/private key cryptography as the basis for identity and authentication. I recommend learning RSA ( RSA ) (it's easy to learn, doesn't require a strong mathematical background), then look at ecdsa ( ECDSA ). Elliptic curve cryptography requires more abstract mathematics – it doesn't matter to understand all the details, but be aware that this is the password used by most cryptocurrencies, including Bitcoin.

Another important cryptographic primitive is the cryptographic hash function (hash function). These are used for consistency and are building blocks for the merkle tree. Merkle trees support Merkle proofs , one of the key optimizations for blockchain for scalability.

Distributed Systems

There are some good textbooks on distributed systems ( https://dataintensive.net/ ), but this is a huge and difficult area of ​​research. Distributed systems are absolutely necessary for the demonstration of blockchains, so the foundation must be established here before processing blockchain programming.

Once your system is no longer running on a single machine, you must begin to demonstrate consistency and consensus. You need to understand the difference between linear and final consistency models. You also need to understand the guarantees of fault-tolerant consistency algorithms, such as Paxos and RAFT . Understand the difficulty of demonstrating time in a distributed system and appreciate the trade-off between security and activity.

With this background, you will be able to understand the difficulty of the Byzantine fault-tolerant consensus, which is the main security requirement for the public blockchain. You will need to understand PBFT , one of the first scalable algorithms to provide a Byzantine fault tolerance consensus. PBFT is the basis for many non-work proof blockchain consistency algorithms. Once again, you don't need to know too much detail about PBFT, but the overall idea and its security.

Understanding traditional distributed databases is also very useful (the core idea is that blockchains are essentially databases). Learn about sharding (for example, by consistent hashing), master-slave replication, distributed hash tables (DHTs) such as Chord or Kademlia .

The internet

The distribution of blockchains is largely due to its peer-to-peer network topology. Therefore, blockchain is a direct result of past p2p networks.

To understand the blockchain communication model, you need to understand the basics of computer networks: TCP and UDP, packet models, IP packets, and rough network routing.

Public blockchains tend to propagate information through gossip protocols and flooding . Learning the history of p2p network design, including Napster to Gnutella , BitTorrent , Tor , has certain guiding significance. Blockchains have their own characteristics, but they draw on the lessons of these networks and how they are designed.

economics

Encrypted currencies are multidisciplinary in nature – this is the main reason why they are so fascinating and radical. In addition to computer science, cryptography and networking, they are also closely related to economics. Encrypted currencies can acquire many security attributes through their economic structure, which is often referred to as encryption economics. Therefore, economics is essential for understanding cryptocurrencies.

game theory

The most important branch of economics for cryptocurrency is game theory, which studies the benefits and incentives between multiple subjects. You don't need to go into the details, but you need to understand the basic tools of game theory analysis and how to use them to analyze the motivating factors in one-time and continuous games.

The two key concepts in your script should be the Nash Equilibrium Point and the Schelling Point, as they have outstanding features in cryptanalysis.

macroeconomics

The cryptocurrency is not only an agreement but also a form of money. Therefore, they respond to macroeconomic laws (if they can be called regular). The cryptocurrency is subject to different monetary policies and provides a predictable response to inflation and deflation. You should understand these processes and their impact on spending, savings, etc.

Another valuable economic concept is the speed of currency circulation, especially when it corresponds to the value of money.

Microeconomics

The cryptocurrency is also deeply intertwined with the market, which requires an understanding of microeconomics. You need to have a strong intuition about the supply and demand curve. You should be able to explain the competition and opportunity costs (they will often be used in mining). In many coin issuing and cryptoeconomic systems, auction theory has outstanding features.

I hope that you are already familiar with some of these topics. If so, feel free to browse or skip them.

Ok, until now, you have completed and consolidated your basic knowledge. Now that you have mastered the above theory, let's start the blockchain development.

The theoretical basis of Bitcoin

In October 2008, Satoshi Nakamoto published a white paper in which he described an agreement to diversify digital currencies. He called this agreement Bitcoin.

Before you understand the great ideas behind the blockchain, you must start with Bitcoin and learn about Satoshi's unique insights.

First, I suggest that you establish an intuition about proof of work and fork selection rules (also known as the Nakamoto consensus). You can start with the following video: Blockchain Visualization Demo https://www.youtube.com/watch?v=_160oMzblY8&feature=youtu.be

I recommend watching a few more videos to get your ideas deeper into your mind: How Bitcoin works https://www.youtube.com/watch?v=bBC-nXj3Ng4&feature=youtu.be

well! Now that you have built your own intuition, this article will provide a more in-depth explanation of the key components of the Bitcoin principle.

Building your own blockchain

Now that you have a high level of intuition, it's time to build your own work-based blockchain proof. Don't worry, it's easier than it sounds. Here are some good resources.

First, I have a video lecture, I will detail how to do this in ruby ​​(even if you are not a ruby ​​programmer, I suggest you watch it): How to create a blockchain with ruby ​​to explain https://www.youtube .com/watch?time_continue=1016&v=3aJI1ABdjQk

Resources and PPT Click this link: https://github.com/Haseeb-Qureshi/lets-build-a-blockchain

You can also find blockchain implementations written in various other languages. Building your own blockchain and meeting your own needs is the most practical way.

Once you've done this, you should be well on how to implement a simple payment application on the blockchain (bitcoin). You should also have enough background to read and understand the original Bitcoin white paper.

In order to understand the economics and mechanisms of Bitcoin mining, I recommend watching a lecture on Bitcoin mining in Princeton's Bitcoin and Cryptography courses.

If you have completed this course, you should have a good understanding of Bitcoin and be able to understand the meaning of each of its components through the bitcoin block header. You should also be able to play the Bitcoin block browser and navigate the original Bitcoin transactions.

Now is a good time to study the history of Bitcoin and cryptocurrency. The video below, provided by the University of California at Berkeley, provides a good overview.

Berkeley School Bitcoin Learning Video: https://haseebq.com/the-authoritative-guide-to-blockchain-development/

Some additional reliable learning materials:

Academic precursors to Bitcoin

Bitcoin mechanism: utxos and bitcoin scripts (bitcoin scripts are not particularly important, just roughly know what it can do) ( UTXOs and Bitcoin script )

Short guide to Bitcoin forks

Soft forks and miner signaling

Double spending, 51% attack and selfish mining ( Double spends, 51% attacks, and selfish mining )

Replay attacks

The scalability problem of Bitcoin is at the root of most of the controversy in the Bitcoin ecosystem. You should know why there is so much debate about block size in the industry. ( Bitcoin scalability problems )

Segregation Witness, also known as Segwit, is not necessary, but it leads to a lot of things. ( Segregated witness, aka SegWit )

The Lightning Network is one of Bitcoin's more important expansion solutions and is also being rolled out to other blockchains. ( Lightning Network )

(NPC has also compiled a complete study on lightning network, which can be viewed in historical news)

Bitcoin full nodes , Bitcoin fee statistics , charts , charts

Bitcoin Energy Consumption Index (At the time of publication, bitcoin mining consumes as much energy as all regions in Peru)

( Bitcoin energy consumption index )

Gwen's deep discussion about Bitcoin ( Insightful essay by Gwern )

If you want to go deep into the rabbit hole, jameson lopp has a lot of other resources on Bitcoin. ( wealth of other resources )

Programming of Ethereum and Smart Contracts

Now that you have built a blockchain and learned about Bitcoin's dynamics, it's time to delve into Ethereum.

You understand how blockchain and proof of work can achieve distributed, Byzantine fault-tolerant consistency in a peer-to-peer network. However, the payment network is just one of the applications you can run on such a blockchain. In 2013, Eitafang founder Vitalik Buterin asked: What about using a blockchain to implement a decentralized computer?

At Ethereum, you pay the miners and let them execute your program on this distributed virtual machine. This means that you can perform arbitrary calculations using Turing's complete programming language (unlike Bitcoin scripts). Of course, this includes payment-related applications, so Ethereum enabled and spawned an innovative set of features that transcend Bitcoin.

This leads to a smart contract – the name of the program running on the virtual machine. Smart contracts can interact directly with the cryptocurrency of the blockchain based on the execution of the program. In other words, you can create automated financial contracts. This is a crazy idea, once you accept this programming model, you can do all sorts of things you want to do.

Ethereum has spawned the wave of ICOs and developers built on the blockchain. It is the second largest cryptocurrency next to Bitcoin, with more than 10 times the developer of the next generation of the most popular platforms, the most powerful development team, the most mature tools, and most of the ICOs and projects based on it. It also has the most industry support . If you are working on blockchain development, then you will write code for the Ethereum Smart Contract. (Even if you are not, it is important to understand the situation in this area.)

First, let's make a more detailed and high-level description of Ethereum:

The philosophy behind Ethereum has also spawned a wave of innovation in the field of cryptographic economics . You should have an in-depth understanding of DAO 's ideas and all the sci-fi fanatic dreams they imply.

Ok, there are enough fantasies, let's take a closer look at the technology.

Below is a good overview of the Ethereum yellow paper and its internal structure by Preethi Kasireddy. Ethereum uses an account model instead of Bitcoin's UTXO model – you'll soon see why it's easier to write smart contracts.

As with any technology, the best way to understand Ethereum is to build several small projects.

Ethereum's main programming language is Solidity, which is a statically typed JavaScript-esque language. This is a language with many shortcomings, and it also has a lot of design problems. Once more robust languages ​​such as Viper are ready for production, they may replace Solidity, but Solidity is currently the programming language of smart contracts. It's basically Ethereum's JavaScript, so you need to learn it (and its flaws ).

When I first came into contact with Solidity language development, I recommend that you read through all the cryptozombie tutorials . This is a delightful and high quality Codecademy-esque style tutorial that will teach you the basics of Solidity.

Now that you have aroused your curiosity, it is time to start your own experiment.

Ethereum's "hello world" can create a token compatible with ERC-20 . I recommend this guide as the first tutorial to guide you through the process.

Remix is a browser's Solidity editor and compiler – it's basically a training wheel developed by Ethereum, so I recommend doing the rest of the exercises in Remix. However, it is worthwhile to set up a blockchain in this area and understand the Ethereum tool. This tutorial is a good introduction to a point-to-point blockchain stack and explains the various parts of it.

Next, I suggest creating a voting system. I call this the Todo application called Ethereum. Karl Floersch has a great tutorial on how to build a secure committee public voting system.

Very good, start the midterm exam now: Build a safe coin toss game where two players can safely bet on a coin. There is no tutorial this time, do it yourself. Think about possible attacks – how do players cheat? Can you guarantee that they are honest? Here you can give some inspiration .

Smart contract security

Security is absolutely necessary for the development of blockchains. Smart contracts have been plagued by catastrophic hacking attacks, including DAO hacking , Parity wallet hacking , and the second Parity wallet hacking . If you want to write smart contracts, you must read the analysis of these three techniques.

The truth is that smart contracts are hard to do well . Although the programming toolchain will be improved to make these precise attacks more difficult, in the end they are all caused by programmer errors. There are also many more subtle bugs generated by smart contract programming, such as frontrunning or secure generation of randomness .

As a smart contract developer, you must consider security as the most important thing. There is no “quick action and breaking the rules” in smart contract programming. This means that any code that handles large capital flows should be run through a static analysis program like Oyente or Securify , thoroughly tested, and then audited by experienced smart contract auditors. You should also try to rely on pre-audited components, such as OpenZeppelin's open source contract .

To enhance your security, I recommend using Ethernaut, developed by OpenZeppelin , a game that you can find and exploit in a smart contract. Many of them have copied real attacks on smart contracts that have taken place in this area. Phil Daian also has an excellent smart contract hacking challenge called Hack This Contract .

From novice to veteran

If you have already done this, you should now be ready to skip Remix and start using a reliable development stack.

Most developers recommend using VSCode or Atom as a text editor because they have fairly reliable Solidity plugins. In order to interact with the local blockchain, you will use Ganache (formerly TestRPC), and you will use the Truffle framework for (JS based) testing and configuration build channels.

Then start working on IPFS , you can use IPFS as a completely decentralized file store, which costs much less than the Ethereum blockchain. The following is a short explanation by the author Juan Benet:

For the interaction of Ethereum and IPFS full nodes, most developers recommend Infura . Etherscan and ETH Gas Station provide useful real-time statistics on an Ethernet network.

Once you've built the full Web3 stack, try deploying an end-to-end Dapp (a decentralized application). This tutorial provides a good full-stack overview of using the Node and Postgres for the backend, and this tutorial will show you how to create a completely decentralized application using IPFS as the persistence layer.

Create your own project

Now, you should have an in-depth understanding of most technologies, and the rest is to start building something and going deep into the blockchain community.

First, start building your own project. If you are interested in an idea, then implement it and convince others to crack it with you! If you don't have a specific idea or are unwilling to do it, there are many high quality open source projects that welcome your contribution. OpenZeppelin may be a good starting point for getting started with smart contracts.

Even better, I recommend starting with looking for a project you are actively developing. Go to their Slack or Rocketcha – the developers are usually there. Tell them that you are willing to help and ask for some small tasks (or find some unresolved issues on their Github).

Note that while I have been focusing on the development of protocols and smart contracts, blockchain companies need web developers to build their core functionality. These roles often need to interact with the blockchain, so there is a good mental model of how the blockchain works, but for many blockchain startup engineers, your job is to build a web server in Python. , or design a front-end React, interacting with the blockchain may be just a small part of the work. You don't have to specialize in smart contract development—in fact, it's just part of the mature blockchain stack.

In addition to contributions to open source projects, there are many blockchain hackathons that continue to emerge. Most projects have a free Slack that you can join, and Ethereum itself has a very active Gitter channel , where there are many developers. As you dive into this space, you will eventually find your companion, whether it's on the Slack channel, Telegram, or Gitter channel. Wherever you are, find someone who shares your interests and continue to learn.

Browse blockchain community

The best way to truly understand the world of blockchain is to immerse yourself in it. Read and listen to the smartest people, especially what they have written in the past. When I tried to learn a new field, it was always my strategy and it paid me back.

There are a lot of good blockchain content, but there is also a lot of junk. This is the information diet I recommend.

media

Here I recommend three good podcasts, Software Engineering Daily Blockchain, which provide a good technical introduction to many themes and cryptocurrencies, as well as Epicenter and Unchained — many of the series they have launched in the past are worth listening to. Another interesting emerging technology podcast is Conspiratus. The above blog suggests that you all subscribe.

There are also a few good channels on YouTube (although there is a lot of junk on YouTube). Subscribe to the Ethereum Foundation and watch the DEVCON3 presentation. The blockchain at Berkeley records many of their lectures, most of which are excellent technical overviews. Decypher Media also released interviews, white paper ratings and tutorials. Jackson Palmer has a wonderful weekly overview with a small technical content but a comprehensive coverage.

read online

For real-time blockchain chat, it mainly exists in two places: Reddit and Twitter. For reddit, most columns are of poor quality. The quality of r/ethereum has been good (and there are some columns for a specific cryptocurrency). However, most of the columns are occupied by speculators and cannot be worth your attention. Stay away from Bitcoin-related sections. As we all know, Bitcoin is one of the most toxic communities, and Reddit only magnifies this.

The content on Twitter is even more uneven. Good or bad, most blockchain users live on Twitter. The blockchain Twitter was a bit mysterious to me at first, but in the end I built an informal Twitter blockchain character classification. In my experience, there are five types of blockchain characters: builders, entrepreneurs, journalists, traders, and "thought leaders."

Avoid "thought leaders" like the plague. Except entrepreneurs, most of them play the role of speculators, or promote their projects on Twitter. Most investors talk about price and hype items on Twitter. If you are like this, then go ahead. Journalists tend to post the main news of the day on Twitter. I recommend that you stay away from these messages, unless you need real-time information, but usually you don't have to accept it. If you're an active trader, this can be important, but if you're trying to make a difference in blockchain technology, most real-time stuff will distract you.

Focus on the blockchain builder. They are the most important people at the moment and the ones who promote technological progress.

There are several representatives in each category (if you want to fill your Twitter stream, please pay attention to them first):

Builder

Vitalik Buterin , Ethereum

Zooko Wilcox , ZCash

Nick Szabo , inventor of smart contracts

Vlad Zamfir , Ethereum

Marco Santori , Cooley LLP

Riccardo “fluffypony” Spagni , Monero

Matt Liston , Gnosis

entrepreneur

Balaji Srinivasan , Earn.com

Erik Voorhees , Shapeshift

Investors

Naval Ravikant , MetaStable

Ari Paul , Blocktower Capital

Linda Xie , Scalar Capital

Chris Burniske , Placeholder

reporter

Tuur Demeester , Adamant Research

Laura Shin , Forbes

All in all, I recommend minimizing your exposure to Twitter and Reddit. If you are not a reporter or a daily trader, chances are that you don't need live chat. Important information will be shown to you in an asynchronous manner, and you can focus on the summary of key messages instead of getting the information from the market at all times.

I recommend subscribing to Inside Bitcoin for a daily summary of the most important encrypted news (it covers more than just Bitcoin). For token projects, Token Economy has excellent content every week, while Week in Ethereum provides a good summary of developer-focused events in the Ethereum ecosystem. .

In addition to this, you may not need to monitor real-time news. Please focus on building and learning.

You will want to focus on the best blogs. Deep content is often the most valuable. I suggest the following:

  • Vitalik Buterin offers excellent blockchain and cryptographic analysis (read all his old blog posts, Vitalik is widely regarded as a century-old thinker)
  • Cracking, Distributed (Hacking, Distributed) Blockchain Security Analysis by Cornell Researchers
  • Unenumerated, Nick Szabo's famous blog about challenging and eclectic papers on the role of cryptocurrencies in society
  • Money Stuff, Matt Levine's Bloomberg feed, a deep analysis of market, financial and blockchain news intersections
  • Vlad Zamfir's moderately cautious view of the national and public blockchain
  • Chris Burniske has written a series of excellent blog posts on how to evaluate cryptographic assets.
  • Jameson Lopp presents his excellent technical articles from the perspective of building blockchain ecosystem software engineers.
  • The Great Wall of Numbers was written by Tim Swanson about his calm and firm deconstruction of blockchain fanaticism, especially in the corporate world.

If you want a more structured way to learn these materials, there are some high quality books and courses (and many low quality books and courses).

If you want to learn these materials in a more structured way, there are some high quality courses (and many low quality courses). I have already linked to some lectures at the Princeton University Coursera (video on YouTube) and UC Berkeley. I also heard about the good news about the Consensys Academy for those who want to enter smart contract development.

I also hosted a four-week cryptocurrency seminar for software developers at the Bradfield School of Computer Science in San Francisco. This course is limited to the San Francisco area and has limited seating as it is a small, in-depth seminar. But if you're a software engineer in San Francisco and want to learn more about the theory and practice behind cryptocurrencies, it might be a good fit for you.

But in my opinion, the best way to join a company is to find a project that interests you and contact them directly. Most blockchain teams are willing to offer telecommuting positions for the right people. Many developers can easily connect on Twitter, Github or their public Slack channel. If you have a solid portfolio and can show technical expertise, if you show some initiative. It will impress many people.

This is what I can give you. If you do all of the above, you should be prepared, and soon you may go further than me.

Rabbit wormhole

Because the rabbit hole does not really end. What I show you is just a beginning. The cryptocurrency is still in the early stages, and I really believe this is the fastest growing area in which you can work. I believe this guide will be out of date within a year, and there are still many amazing projects that I have not had the opportunity to talk about. But if you enter this space, you will find them at the right time.

Keep exploring. Keep getting better and better. Keep learning.

Source: NPC Community