Newbie guide to Blockchain programming
A short primer on getting started with Blockchain development
A lot of developers who are just starting off with blockchain have questions like these -
“After starting off with a few tutorials and introductory material, I have not been able to make much headway. I think I understand the basic concepts, and I have written a few sample contracts in Solidity.
But I don’t think I understand what to do next? I even took a CryptoZombies course, but I am not able to understand how and where to proceed next. Can you please help me with a definite learning path I could follow to hone my skills further? I am willing to invest time in this, but it almost seems like I am not making progress.”
This is actually quite common. Blockchain does have a steep learning curve, and it does require a fair bit of patience to gain an understanding of just the basics. But once you understand the basics, it is guaranteed to be a fun ride. Many people — developers and non-developers alike, have likened this experience to “falling down the rabbit hole”, a la Alice from Alice’s Adventures in Wonderland!
There is this quote by Peter Smith in this Wired article, which is quite amusing and true:
“When you get into Bitcoin, you fall down a rabbit hole. You start talking about Bitcoin all the time at social events to other obsessives and to your significant other. What happens in a few years is that you have no significant others,” he jokes, which gives the obsessives more time to work on Bitcoin.
You can replace “Bitcoin” with “blockchain” and it is still the same — dare I say, even more than that.
There is actually now quite a lot of introductory material for learning blockchain development on the Internet nowadays, and I will list a few of the excellent collections of intermediate to advanced learning resources at the bottom of this post for your reference. This post is a relatively simple to-do for your first steps into the blockchain space.
Do note most of the advice here in this blog post will help you in understanding public blockchain development, mostly Ethereum. For resources in private blockchain space — Hyperledger, etc — you might need to look for better alternative learning paths. However, the basics of both are the same, and you should always start with understanding how a public blockchain works. As you ahead in your blockchain journey, you will come to realise that a public blockchain solution with it’s attendant constraints will mostly always work on a private chain setup as well, but the inverse is not guaranteed to be true. Private chains offer deceptively more functionality, but sometimes end up being poor cousins of databases if not implemented correctly, which defeat the entire purpose of blockchains. But I am getting way ahead of me…
You must have most certainly heard of Solidity and Ethereum. Solidity is one of the higher-level languages that you can use to program smart contracts on Ethereum. And there are many introductory articles on getting started with Solidity. In fact, there is even a Code School-style learning game called CryptoZombies, which teaches Solidity in a fun, interative manner.
However DO NOT start with Solidity first.
Before getting into Solidity specifics, it is imperative that you truly understand what blockchain technology is and what it can be used for. Start off with a few videos on what Bitcoin and blockchain are. Watch this short video first, and then this longer one. This article is also a good starting point.
Do note that “blockchain technology” is actually a combination of 4 components:
- Peer-to-peer networks
- Consensus mechanism; crypto economics and game theory
- Blockchain data structure
You will need to gain an understanding of all 4 of these components at a basic level to be start off with. Ha, I told you, it has a steep learning curve!
I recommend every newbie developer to start with reading (and re-reading!) “Mastering Bitcoin” by Andreas Antonopoulos to get a clear idea of how a typical blockchain network works. Along with this, read the Bitcoin whitepaper here, the original author being the awesome Satoshi Nakamoto.
At the same, you can go through the “Internet of Money” playlists on Youtube by Andreas Antonopoulos. This will give you an overview of the business use cases and shifts that are going to happen with the emergence of Bitcoin and blockchain in general. Links to these can be found here
Take your time to understand the basics of Bitcoin. Follow along with basic scripts and query the Bitcoin network.
Once you are comfortable with the basics of Bitcoin, move onto “Mastering Ethereum” by Andreas A. and Gavin W. — this is still a Work-in-Progress and is available directly on Github. You can read the whitepaper and the yellowpaper here. If you find the whitepaper a little dense, go for the yellowpaper first.
Once you are through the first few chapters of Mastering Ethereum, start writing basic scripts to query the blockchain and understand the Ethereum data structures — transactions, receipts and the world state. You can see a great depiction of the block structure here.
Finish the book; and simultaneously move to writing basic smart contracts for a few real use cases. Not all applications can be ported to the blockchain — look for concrete use cases. Go back to https://cryptozombies.io/ if you want. Start writing a sample DApp (Decentralized Application).
To make it easy, you can go through this blog series:
Ethereum Development Walkthrough
- Part 1: Smart contracts
- Part 2: Truffle, Ganache, Geth and Mist
- Part 3: Security, limitations, and considerations
- Part 4: Tokens and ERCs
- Part 5: Making a DApp
That’s it — this should be more than enough to get you going. Feel free to reach out to me at firstname.lastname@example.org or anyone else at ETHIndia or Matic Network if you wish to start your blockchain journey.
There is another frequent debate that comes up — public chain vs private chain. Rather than take sides, you can go through this excellent article by Vitalik Buterin on the subject.
As promised, more links are given here for reference: