link
Before starting developing it's highly recommended to study the fundamentals of blockchain. Here are some prerequisites that are essential for really understanding blockchain.
Prerequisites
- Data Structures : As blockchain is a complex data structure it's necessary to understand the basis before diving further. The most important are: Binary Search Trees, Linked Trees, Hash Table and Graphs (for a more advanced study in graphs I highly recommend A First Course in Graph Theory, Gary Chartand).
- Cryptography: All cryptocurrencies use private and public key cryptography for authentication and identity confirmation. Study RSA and then dive into ECDSA this one requires some heavy math, which is not totally necessary understanding, so focus in understanding the tech only. Go for SHA algorithms, Merkle Trees and Merkle Proof.
- Distributed Systems: Understanding distributed systems is essential for blockchain development, but it's not a trivial theme. As the system is no longer centralized, it's necessary to worry about consensus and consistency. I recommend this video for understanding some basis of distributed systems.
After going through this you must be able to understando the Byzantine fault tolerance consensus, wich is the primary requisite of public blockchains. You also may like to read the PBFT paper, wich is one of the first scalable algorithms to hand the Byzantine fault tolerance.
It's also very usefull to understand Sharding and Distributed Hash Tables. - Network: The blockchain network is derived from peer-to-peer networks, so some networking fundamentals are necessary. Studying TCP vs UDP and Routing is essential.
Public blockchains usually spread messages per gossip protocols using flooding, so you should also take some time to study it.
Bitcoin Fundamentals
Before you can understand the big ideas behind blockchains, you have to start with Bitcoin and grasp Satoshi’s original insight. I recommend reading the whitepaper. And here are two must view videos for understanding blockchain conceptos such as mining and proof-of-work. How cryptocurrencies work? and Blockchain 101.
Now that you have walked trough this, it's time to start developing. Here we will start with smart contracts at Ethereum.
Ethereum and smart contract programming
link
Ethereum implements a decentralized computer using the blockchain. You pay miner to execute programs in this decentralized network, obviously including payments. This brings us to smart contracts, wich you can create financial contracts that automatcally enforces themselves.
Ethereum is the second largest cryptocurrency, it has a strong development team, it also has a big support from the industry. In a likehood, if you are working with blockchain you will develop smart contracts at Ethereum. Watch this video for a good understanding of Ethereum.
I recommend reading the full yellow paper but in this link you will find a great review, which should be enough.
The dominant progamming language for Ethereum is Solidity which is a statically typed JavaScript-esque language. The best to start with Solidity is working through the Cryptozombies tutorial. They are still developing the game, but it has already four lessos that are great for learning Solidity. I also recommend joining the Telegram chat, there you can ask questions about Ethereum and Solidity, they also have the developer chat for highly technical discussions around Ethereum developement or Loom Network product. If you have a beginners question you should ask in the main chat. You can access the developer through the main chat.
After finishing the CryptoZombies tutorial it's time to start developing. Remix is a great in-browser IDE for Solidity it's worth working with Remix, but I recommend setting up a local blockchain, this tutorial is great.
Next I would recommend building a voting system, which is one great application for smart contracts. Try to do it on your own, withou any tutorial, but if you get stuck this tutorial is awesome and may help you.
At last I recommend doing a little game that involves money. You can build a number bet game, where users win when their predict is the same as the drawn number.
Conclusion
I don't want this to be a long tutorial so I'm finishing it here. I pretend to do a few more guides in the future, talking about smart contracts security, building your own blockchain and a few more, but this guide should give you an idea on how to start with blockchain development, any questions fell free to ask here or DM me at Twitter.
Hope this guide was usefull for you.
May the blockchain be with you
Nice article. I wrote something similiar about Solidity for ethereum the other day: https://steemit.com/utopian-io/@netscape101/learning-solidity
Will be following you.
Hey, nice article too. Will be following for more articles like this.
We are glad to have people like you posting this material and advice! Thank You