substrate-learning-resources
substrate-learning-resources copied to clipboard
My self-learning course for mastering Substrate
Master Substrate
My self-learning course for mastering Substrate
1. Backgrounds
Fundamentals
- [ ] Blockchain basics
- [ ] Why Substrate?
- [ ] Architecture
- [ ] Networks and blockchains
- [ ] Runtime development
- [ ] Consensus
- [ ] Transactions and block basics
- [ ] Transaction Lifecycle
- [ ] State transitions and storage
- [ ] Accounts, addresses and keys
- [ ] Rust for Substrate
- [ ] Offchain Operations
Build
- [ ] Introduction to libraries
- [ ] Build process
- [ ] Runtime storage
- [ ] Transactions, weights and fees
- [ ] Custom pallets
- [ ] Pallet coupling
- [ ] Events and errors
- [ ] Randomness
- [ ] Chain specification
- [ ] Priviledged calls and origins
- [ ] Remote procedure calls
- [ ] Application development
- [ ] Upgrade the runtime
How-to guides
Basics
- [ ] Import a pallet
- [ ] Configure runtime constants
- [ ] Configure genesis state
- [ ] Customize a chain specification
- [ ] Use helper functions
- [ ] Mint primitive tokens
Pallet design
- [ ] Add the contracts pallet
- [ ] Implement lockable currency
- [ ] Incorporate randomness
- [ ] Configure crowdfunding
- [ ] Create a storage structure (struct)
- [ ] Use tight pallet coupling
- [ ] Use loose pallet coupling
Weights
- [ ] Calculate fees
- [ ] Add benchmarks
- [ ] Use custom weights
- [ ] Use conditional weights
Testing
Consensus models
Parachains
- [ ] Convert a solo chain
- [ ] Connect to a relay chain
- [ ] Select collators
- [ ] Prepare to launch
- [ ] Runtime upgrades
- [ ] Auctions and crowdloans
- [ ] Add HRMP channels
Tools
- [ ] Use try-runtime
- [ ] Create a txwrapper for a chain
- [ ] Use REST endpoints to get chain data
- [ ] Verify a Wasm binary
Offchain workers
- [ ] Make offchain transactions
- [ ] Make offchain HTTP requests
- [ ] Offchain local storage
- [ ] Offchain indexing
Reference
- [ ] Glossary
- [ ] Runtime APIs
- [ ] FRAME pallets
- [ ] Frame macros
- [ ] Account data structures
- [ ] Type encoding(SCALE)
- [ ] Transaction formats
- [ ] Cryptography
Polkadot
- [ ] Polkadot Wiki
PolkadotJS
- [ ] PolkadotJS Docs
ink!
2. Learn by doing
"Practice makes perfect"
https://docs.substrate.io/tutorials/
Getting Started
- [ ] Build a local blockchain
- [ ] Simulate a network
- [ ] Add trusted nodes
- [ ] Authorize specific nodes
- [ ] Monitor node metrics
- [ ] Upgrade a running network
Work with pallets
- [ ] Add a pallet to the runtime
- [ ] Configure the contracts pallet
- [ ] Use macros in a custom pallet
- [ ] Specify the origin for a call
- [ ] Publish custom pallets
Develop smart contracts
- [ ] Prepare your first contract
- [ ] Develop a smart contract
- [ ] Use maps for storing values
- [ ] Build a token contract
- [ ] Troubleshoot smart contracts
Connect with other chains
Integrate with tools
Substrate Developer Hub - tutorials (Stale, not recommended)
- [ ] add a pallet
- [ ] build a dapp
- [ ] create your first substrate chain
- [ ] pallet in own crate
- [ ] start a private network
Rusty Crewmate - Substrate tutorials
- [ ] writing tests
- [ ] fungible token
- [ ] runtime
- [ ] nft
- [ ] marketplace
Substrate Collectables Workshop
3. Useful Tools
4. Substrate engineer job boards
- https://forms.gle/mUoLGsDUSpy4yB3F9
- https://careers.substrate.io/jobs
- https://dotjobs.net/
5. Misc.
- Awesome Substrate
- Substrate StackExchange
- SS58 Registry
- [x] Smart Contracts vs. Substrate Pallets: Important Building Blocks and Their Differences