Skip to content

A path to blockchain developers education with a focus on Polkadot, Substrate & Rust

Notifications You must be signed in to change notification settings

ericvanderwal/substrate_blockchain_journey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 

Repository files navigation

Substrate Blockchain Journey

A path to blockchain developers education with a focus on Polkadot, Substrate & Rust. Simply put, this is my journey to blockchain education as a developer who has no professional experience or education in blockchain previously.

One of the most difficult tasks I found to date, was often not understanding the content, but rather finding it. Blockchain spans a wide range of technologies from peer-to-peer networking to cryptography (not even considering the actual application of the blockchain itself). A fair amount of this education is either aimed at crypto traders or those with an extensive amount understanding of crypto development already. Neither of which may be of much help to new blockchain developers.

The following is my list of recommended free and paid educational resources which I found to be helpful. This list is ongoing.

A Few Notes

A few small notes for context. I have been a developer for 10+ years at this point, working mostly in languages that are compiled and type-safe. In this list, I focused on Substrate, a framework for creating your own blockchain (and blockchain applications), which is the underlying technology created for Polkadot Coin. Substrate allows you to avoid having to re-invent the wheel.

Substrate is written in Rust, which is considered to have a fairly difficult learning curve at the beginning. Especially if you have never worked with a compiled and type-safe language, such as C, C++, C#, Java, etc. Honestly, Rust is not recommended as a first programming language. If you are looking into your first programming language, I highly recommend learning one of the more popular ones beforehand.

Resources for Learning Rust

Online Courses / Videos

I watched most of these courses in parallel. I used Rust Fundamentals on Pluralsight as my topic guide. After finishing each topic/ section, I would watch the analogous section on the other courses (mostly). I find I better understand a topic after seeing more than one perspective on it.

Ultimate Rush Crash Course (Udemy) <- PAID

https://www.udemy.com/course/ultimate-rust-crash-course/

This is one of the most popular Rust courses on Udemy and it fills a specific niche. It does cover all of the fundamentals of Rust in a short period. It is clear and includes some good (and sometimes difficult) sample challenges to keep you sharp. I would note however, you still need to go outside of this course to look up specific topics in more depth. Various important topics are glossed over too fast.

Rust Fundamentals by Dmitri Nesteruk (Pluralsight) <- PAID

www.pluralsight.com

If you already have a Pluralsight subscription, this is a must-watch. While it was recorded in 2015 it still retains its value as a fundamentals course for Rust. I found this course to be a little bit slower than the Udemy course, but that is not a bad thing. For a paid course, this IMHO is the best one I have taken. It would be great to see an updated version. Interestingly, this is the only Rust course on all of Pluralsight, which is a shame. If you can get a free trial month on Pluralsight, you can finish it in that amount of time.

Rust Tutorial Series by Doug Milford (Youtube)

https://www.youtube.com/playlist?list=PLLqEtX6ql2EyPAZ1M2_C0GgVd4A-_L4_5

This is a great series on Rust for beginners. Doug likes to compare it back to other programming languages, which is nice. Be prepared for lots of dad jokes and other silly humor (which I think adds levity to an otherwise sometimes dry topic). Doug should probably be selling this course because it is certainly worth the value.

The pros are the videos get into more detail than the Rust Fundamental course on Pluralsight. The cons are, the videos get into more details than the Rust Fundamentals course. It also offers a little less structure, which is to be expected for youtube content.

Rust Programming Tutorials (Series) by DCode (Youtube)

https://www.youtube.com/playlist?list=PLVvjrrRCBy2JSHf9tGxGKJ-bYAN_uDCUL

Another solid series on youtube for free. This one compared to Doug Milfords is much terser and to the point. It works great as a brief introduction to each topic or a refresher. Well worth the watch.

Easy Rust - Learn To Program Rust in Simple English (Youtube)

https://www.youtube.com/playlist?list=PLfllocyHVgsRwLkTAhG0E-2QxCf-ozBkk

The Easy Rust series is yet another very solid series in learning rust. This one also goes into depth quite a bit more, similar to Doug Milfords series, which is helpful if you are trying to get beyond the absolute basics and tackle real-world problems. It has over 180 videos, so allocate a fair amount of time if you want to watch it all!

Books

The Rust Programming Language (Covers Rust 2018)

https://www.amazon.com/Rust-Programming-Language-Covers-2018-ebook/dp/B07SRQ97RD/ <- Paid

Free version: https://doc.rust-lang.org/book/ <- Free Online Version

"The official book on the Rust programming language, written by the Rust development team at the Mozilla Foundation, fully updated for Rust 2018."

A good solid introduction to Rust from the Rust development team. It covers all of the major topics but sometimes can be a bit light on the more advanced areas. As I mentioned above, no single source will teach you Rust and this book is no exception.

Hands-On Data Structures and Algorithms with Rust <- Paid

https://www.amazon.com/Hands-Data-Structures-Algorithms-Rust-ebook/dp/B07N7D6PG4/

An 'intermediate' level book on data structures with Rust. For me, this was 2.5 - 3 stars out of 5. It has some good leads on working with data structures in Rust, however, if you are not already familiar with the data structures, then this is probably not the right place to start. Overall, I was hoping it would be a little more clear.

Programming Rust: Fast, Safe Systems Development <- Paid

https://www.amazon.com/Programming-Rust-Fast-Systems-Development-ebook/dp/B077NSY211

Another introductory book on the topic of Rust. Covers all basic topics that one should know to get started.

Online Documents

Rust Website Documentation

https://www.rust-lang.org/learn

This will be key in learning Rust, as it contains all the official documentation. It is written quite clearly, especially compared to some other language documentation websites. This includes links to various online books for Rust as well.

Rust By Example Projects

https://doc.rust-lang.org/stable/rust-by-example/

As the title implies, this is a series of Rust by example lessons that you can follow along with. I highly recommend this one as you can only 'really' learn to do something by actually doing it. (Otherwise, it is purely theoretical).

Rustlings Github

https://github.com/rust-lang/rustlings/

"Greetings and welcome to rustlings. This project contains small exercises to get you used to reading and writing Rust code. This includes reading and responding to compiler messages!"

Want to get some more hands-on code experience in Rust? This is another good place to do it.

Rust Design Patterns - Online Book

https://rust-unofficial.github.io/patterns/

This book covers Rust design patterns, which differ a fair amount from traditional OOP programming. It covers some design patterns, anti-patterns, and idioms to help you remember various aspects of building with Rust. At this point, I haven't had enough time to read through it all to have a strong opinion about it. However, there seems to a lack of books in this specific area so far.

Other Helpful Links (Misc)

Rust Module Essentials (Working with Pub, Mod, and Use)

https://dev.to/hertz4/rust-module-essentials-12oi

Article on the difference between mod and use with pub in Rust.

Rust Code Explainer Live

https://jrvidal.github.io/explaine.rs/

Paste your Rust code here and hover over the code for an online explanation of the snippet. Helpful for new developers when you don't even know what keywords to search on google.

Blockchain (General)

Online Courses / Videos

A16Z Cryto Start Up School

https://a16z.com/crypto-startup-school/

After having a basic understanding of what blockchain is and crypto, this is a great (free) place to get a structured overview of crypto and blockchain technology, especially if you are interested from the business/ developer perspective.

The videos and files are available on demand without any signup and were recorded in 2020.

Substrate

Other Helpful Links (Misc)

Polkadot JS Apps UI

https://polkadot.js.org/apps/#/explorer
This online web prebuilt front-end UI can not only view the Polkadot network and other networks in real time but also allows you to view your development network. This is helpful when working with Substrate as a developer who needs to connect a development UI.

General or Advanced Knowledge Material

zk SNARK and zk Roll Ups

[ELI5 Style] Everything you need to know about ZK Roll ups I Layer 2 Scalability Explained

https://www.youtube.com/watch?v=IwY-D5J8otU

Ethereum LAYER 2 SCALING Explained (Rollups, Plasma, Channels, Sidechains)

https://www.youtube.com/watch?v=BgCgauWVTs0

Scaling Ethereum with Rollups – John Adler

https://www.youtube.com/watch?v=l4jccXoqLGM

Vitalik Buterin: An Incomplete Guide to Rollups Video & Docs

https://www.youtube.com/watch?v=wcCHlqgGSH4
https://vitalik.ca/general/2021/01/05/rollup.html

Online Documentation & Video for zkSync

https://zksync.io/faq/intro.html#introduction
https://www.youtube.com/watch?v=el-9YYGN1nw

Zero-Knowledge Proofs Information

https://zkp.science/
List of various ZKP and libraries available per language.

Merkle Tree & Hashing

Wikipedia

https://en.wikipedia.org/wiki/Merkle_tree
https://en.wikipedia.org/wiki/Cryptographic_hash_function
Yup, wikipedia. Its pretty blah, but it's a place to start if you don't know much about this topic.

Blockchain Basics Explained - Hashes with Mining and Merkle trees

https://www.youtube.com/watch?v=lik9aaFIsl4
Start here if you don't know what a Hash and Merkle Tree is. Then move onto something more technical.

Bitcoin 101 - Merkle Roots and Merkle Trees - Bitcoin Coding and Software - The Block Header

https://www.youtube.com/watch?v=gUwXCt1qkBU
A bit deeper look into how Merkle Roots/ Merkle Trees work. Not quite the do-it-yourself stage, but a better technical description of each part.

Merkle Tree with real world examples

https://www.youtube.com/watch?v=qHMLy5JjbjQ
Another look into the structure of Merkle Trees. Just around 10 minutes long.

Cryptography

Cryptography For Beginners

https://www.youtube.com/watch?v=cqgtdkURzTE

Build a cryptocurrency! - Blockchain in Rust #01: Blocks & Hashing

https://www.youtube.com/watch?v=vJdT05zl6jk&t=1139s

Using cryptography in Rust - Part 1: Hashing

https://www.youtube.com/watch?v=prVk6jGs7Fo

To Be Watched

About

A path to blockchain developers education with a focus on Polkadot, Substrate & Rust

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published