Solana Development Course

by James Pacheco and others

Welcome to the best place for Web Developers looking to learn Web3 development. Solana's high speed, low cost, and energy efficiency make it the ideal network to build on.


Module 1


dApp development

Module 1

Introduction to cryptography and Solana clients

Cryptography fundamentals

Lab: Create and load keypairs

Read data from the network

Lab: Connect to Solana and check account balances

Write data to the network

Lab: Make transactions and use Explorer

Create tokens with the Token Program

Lab: Mint, transfer and burn tokens

Create Solana NFTs With Metaplex

Lab: Mint NFTs, update their metadata, and associate with a collection

Using custom onchain programs

Lab: Make transactions for a custom onchain program

Interact with wallets

Lab: Make a React frontend to the Ping program

Onchain program development

Module 1

Introduction to Onchain Program Development

Local Program Development

Lab: Configure Windows, Mac and Linux for localhost Solana development

Module 2

Anchor Program Development

Intro to Anchor development

Lab: Create a 'hello world' application

Intro to client-side Anchor development

Lab: Create a React and Anchor frontend for the ping-counter app

Anchor PDAs and accounts

Lab: Use Anchor to create a Movie Review program

Anchor CPIs and errors

Lab: Mint token rewards for reviews

Module 3

Native Solana Program Development

Serialize program data

Lab: Build a React frontend to submit movie reviews

Deserialize program data

Lab: Build a React frontend to show movie reviews

Page, Order, and Filter program data

Lab: Adding paging, ordering and searching to the movie reviews frontend

Hello World

Lab: Create and deploy a native 'hello world' onchain program

Handle Instruction Data

Lab: Make an onchain program that recieves movie reviews and deserialises them

State Management

Lab: Make an onchain program that stores movie reviews

Basic Security and Validation

Lab: Add security checks and updates to the movie reviews program

Module 4

Intermediate Solana Program Development

Program Derived Addresses

Lab: Use PDAs to store comments for the movie reviews program

Cross Program Invocations

Lab: Use CPIs to mint token rewards for reviews and comments

Module 5

Beyond the Basics

Environment variables in Solana programs

Lab: Create feature flags to help test locally

Solana Pay

Lab: Use QR codes to create payment requests

Versioned transactions and lookup tables

Lab: Using a lookup table to handle many accounts in a single transaction

Rust procedural macros

Lab: Use Rust macros to generate program code

Module 6

Solana Program Security

Signer authorization

Lab: Check signers are correct before processing transactions

Owner checks

Lab: Check owners are correct before processing transactions

Account data matching

Lab: Check account data is correct before processing transactions

Reinitialization attacks

Lab: Ensure accounts can only be initialised once to prevent overriding existing data

Duplicate mutable accounts

Lab: Ensure accounts are distinct

Type cosplay

Lab: Implement checks for correct account types

Arbitrary CPIs

Lab: Ensure CPIs are only called by the correct program

Bump seed canonicalization

Lab: Ensure bump seeds are always canonical

Closing accounts and revival attacks

Lab: Ensure accounts that are closed can't be reused

PDA sharing

Lab: Ensure PDA design avoids shared accounts

Module 7

Advanced Solana Programming

Program architecture

Lab: Create an optimized onchain RPG game

Oracles and oracle networks

Lab: Use Switchboard to create an Escrow program

Verifiable randomness functions

Lab: Add randomness to the Escrow program

Compressed NFTs

Lab: Mint, read and transfer NFTs at scale with Bubblegum

Generalized State Compression

Lab: Build a Notes program using state compression

Solana Mobile Development

Module 1

Solana Mobile Development

Introduction to Solana Mobile

Lab: Build a simple Android counter dApp with React Native

Exploring Mobile Wallet Adapter

Lab: Build a simple MWA-enabled mobile wallet

Building Solana Mobile dApps with Expo

Lab: Build a mobile dApp that mints NFTs from photos

Token Extensions Program

Module 1

Intro To Token Extensions Program

Intro To Token Extensions Program

Lab: Use the CLI to interact with the Token Extensions Program

Intro to Token Extensions Program in the Client

Lab: Integrate Token Program and Token Extensions Program in the client

Intro to Token Extensions Program On-Chain

Lab: Integrate Token Program and Token Extensions Program on-chain

Module 2

Mint Extensions

Metadata and Metadata Pointer Extension

Lab: Make an NFT using the Token Extensions Program

Non-Transferrable Token Extension

Lab: Create a soul-bound NFT

Transfer Fee Extension

Lab: Create a mint with transfer fees enabled

Close Mint Extension

Lab: Create a closable mint

Module 3

Token Extensions

Default State Extension

Lab: Test token interactions with frozen default states