This repository contains all the source code written during the learning process of Solana Development Course.
NOTE: The entire course structure underwent certain changes and certain courses were deleted / removed on the request of the community. This document needs to be cleaned up after careful review. A lot of the previous content's links are still accessible here ;)
This course is broken down into the following :
-
Introduction to Cryptography and Solana Clients
- Cryptography Fundamentals (Create and load keypairs)
- Read Data from the network (Connect to Solana and check account balances)
- Write Date to the network (Make transactions and use Explorer)
- Using custom on-chain programs (Make transactions from a custom onchain program)
- Interact with wallets (Make a React frontend to the Ping program)
- Serialize program data (Build a react frontend to submit movie reviews)
- Deserialize program data (Build a React frontend to show movie reviews)
- Page, Order, and Filter program data (Adding paging, ordering and searching for reviews)
-
Client Interaction with Common Solana Programs
- Create tokens with the Token Program (Mint, transfer and burn tokens)
- Create Solana NFTs with Metaplex (Mint NFTs, update their metadata, and associate with collection)
On-Chain Program Development Course Link
-
Basic Solana Program Development
- Hello World (Create and Deploy a 'hello-world' on-chain program)
- Handle Instruction Data (Receive movie reviews and deserializes them)
- State Management (Store movie reviews)
- Basic Security and Validation (Add security checks and updates to the movie review program)
-
Intermediate Solana Program Development
- Local Program Development (Configure Windows, Mac and Linux for localhost Solana dev)
- program Derived Addresses (Use PDAs to store comments for the movie reviews program)
- Cross Program Invocations (Use CPIs to mint token rewards for reviews and comments)
-
Anchor Program Development
- Intro to Anchor development (Create and deploy a ping-counter on-chain app using Anchor)
- Intro to client-side Anchor development (Create a React and Anchor frontend for the ping-counter app)
- Anchor PDAs and accounts (Use Anchor to create a Movie Review program)
- Anchor CPIs and errors (Mint token rewards for reviews)
-
Beyond the Basics
- Environment variables in Solana programs (Create feature flags to help test locally)
- Solana Pay (Use QR codes to create payment requests)
- Versioned transactions and lookup tables (Using a lookup table to handle many accounts in a single transaction)
- Rust procedural macros (Use Rust macros to generate program code)
-
Solana Program Security
- How to approach the Program Security unit (No lab)
- Signer authorization (Check signers are correct before processing transactions)
- Owner checks (Check owners are correct before processing transactions)
- Accoutn data matching (Check account data is correct before processing transactions)
- Reinitialization attacks (Ensure accounts can only be initialised once to prevent overriding data)
- Duplicate mutable accounts (Ensure accounts are distinct)
- Type cosplay (Implement checks for correct account types)
- Arbitrary CPIs (Implement checks for correct account types)
- Bump seed canonicalization (Ensure bump seeds are always canonical)
- Closing accounts and revival attacks (Ensure accounts that are closed can't be reused)
- PDA Sharing (Ensure PDA design avoids shared accounts)
-
Advanced Solana Programming
- Program architecture (Create an optimized on-chain RPG game)
- Oracles and oracle networks (Use Switchboard to create an Escrow program)
- Verifiable randomness functions (Add randomness to the Escrow program)
- Compressed NFTs (Mint, read and transfer NFTs at scale with Bubblegum)
- Generalized State Compression (Build a Notes program using State compression)
- Solana Mobile Development
- Introduction to Solana Mobile (Build Android counter dApp with React Native)
- Exploring Mobile Wallet Adapter (Builda simpe MMA-enabled mobile wallet)
- Build Solana Mobiel dApps with Expo (Mints NFTs from photos)