Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions messages/de/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@
"title": "Solana Developer Foundations",
"description": "Starte deine Solana-Reise mit Blockchain-Grundlagen, Tokens und NFTs."
},
"anchor-mastery": {
"title": "Anchor Mastery",
"anchor-for-dummies": {
"title": "Anchor for Dummies",
"description": "Meistere das Anchor-Framework von den Grundlagen bis zur fortgeschrittenen Programmentwicklung."
},
"native-rust-developer": {
Expand Down
6 changes: 3 additions & 3 deletions messages/en/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@
"title": "Solana Developer Foundations",
"description": "Start your Solana journey with blockchain fundamentals, tokens, and NFTs."
},
"anchor-mastery": {
"title": "Anchor Mastery",
"description": "Master Anchor framework from basics to advanced program development with hands-on challenges."
"anchor-for-dummies": {
"title": "Anchor for Dummies",
"description": "Build Solana programs with Anchor from fundamentals through security, testing, and production deployment."
},
"native-rust-developer": {
"title": "Native Rust Developer",
Expand Down
83 changes: 56 additions & 27 deletions messages/en/courses.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,34 +21,63 @@
}
}
},
"anchor-for-dummies": {
"title": "Anchor for Dummies",
"description": "Go from zero to deploying your first Solana program. Learn PDAs, CPIs, testing, and client integration. 8 lessons with real code you'll actually use.",
"anchor-fundamentals": {
"title": "Anchor Fundamentals",
"description": "Learn the core building blocks of Anchor: accounts, discriminators, PDAs, instructions, constraints, CPIs, and errors. Build and deploy your first program.",
"lessons": {
"anchor-101": {
"title": "Anchor 101"
},
"anchor-accounts": {
"title": "Anchor Accounts"
},
"anchor-instructions": {
"title": "Anchor Instructions"
},
"testing-your-program": {
"title": "Testing your Program"
},
"program-deployment": {
"title": "Program Deployment"
},
"client-side-development": {
"title": "Client Side Development"
},
"advanced-anchor": {
"title": "Advanced Anchor"
},
"conclusion": {
"title": "Conclusion"
}
"what-is-anchor": { "title": "What Is Anchor", "description": "Understand what Anchor is and how it eliminates boilerplate for account validation, serialization, and error handling in Solana program development." },
"accounts-and-discriminators": { "title": "Accounts and Discriminators", "description": "Learn how Anchor wraps Solana accounts with typed validation, ownership checks, and 8-byte discriminators that prevent type confusion attacks." },
"pdas-and-state": { "title": "PDAs and State", "description": "Learn how Program Derived Addresses store state and sign CPIs without private keys. Understand seed derivation, bump seeds, and PDA ownership." },
"instructions-and-context": { "title": "Instructions and Context", "description": "Define program entry points with the #[program] module, Context type, instruction discriminators, parameters, and return values in Anchor." },
"constraints": { "title": "Constraints", "description": "Use Anchor constraints like has_one, mut, seeds, and custom expressions to generate compile-time validation that runs before your instruction logic." },
"cross-program-invocations": { "title": "Cross-Program Invocations", "description": "Call other Solana programs from Anchor using CpiContext. Transfer SOL, move tokens, and compose instructions atomically within a single transaction." },
"errors-and-events": { "title": "Errors and Events", "description": "Define custom error codes with #[error_code] and emit structured events for indexers. Handle failures precisely and broadcast on-chain activity." },
"your-first-program": { "title": "Your First Program", "description": "Build a complete SOL vault program with initialize, deposit, withdraw, and close instructions. Apply accounts, PDAs, constraints, and CPIs together." },
"testing-and-deployment": { "title": "Testing and Deployment", "description": "Write TypeScript tests with anchor test, run against a local validator, build and deploy to devnet, and verify your on-chain bytecode." }
}
},
"building-with-anchor": {
"title": "Building with Anchor",
"description": "Architectural decisions for Solana programs. When and why to split state, shape PDA hierarchies, design for composability, control access, and manage account lifecycles.",
"lessons": {
"state-design": { "title": "State Design", "description": "Choose between single and multi-account layouts, embed data vs reference accounts, and plan for write contention. Design decisions that shape your program's economics and scalability." },
"pda-architecture": { "title": "PDA Architecture", "description": "Architect PDA seed hierarchies as namespace systems. Design deterministic addressing that scales, composes with other programs, and simplifies client lookups." },
"composability": { "title": "Designing for Composability", "description": "Design instructions other programs actually want to call. Payer flexibility, authorization paths, minimal account requirements, predictable PDAs, and meaningful errors." },
"access-control-patterns": { "title": "Access Control Patterns", "description": "Choose the right access control model for each instruction. Single authority, multi-authority, the #[access_control] macro, two-step transfers, and pause mechanisms." },
"account-lifecycle": { "title": "Account Lifecycle", "description": "Design decisions around account persistence. When to use init_if_needed vs separate instructions, realloc vs close-and-recreate, and permanent vs temporary accounts." }
}
},
"testing-anchor-programs": {
"title": "Testing Anchor Programs",
"description": "Testing strategies for Anchor programs. TypeScript test patterns, security testing, and debugging techniques.",
"lessons": {
"testing-strategy": { "title": "Testing Strategy", "description": "Plan your Solana testing pyramid with unit tests, integration tests, and end-to-end tests. Understand what to cover and which tools to use at each layer." },
"typescript-test-patterns": { "title": "TypeScript Test Patterns", "description": "Write integration tests using Anchor's generated TypeScript client. Set up providers, derive PDAs, send instructions, and assert on-chain state changes." },
"testing-security": { "title": "Testing Security", "description": "Write negative tests that prove your program rejects unauthorized access, invalid inputs, and impossible state transitions. Confirm vulnerabilities don't exist." },
"debugging-anchor": { "title": "Debugging Anchor", "description": "Read Anchor error codes, analyze transaction logs, simulate transactions, profile compute units, and use anchor expand to inspect generated macro output." }
}
},
"advanced-anchor-patterns": {
"title": "Advanced Anchor Patterns",
"description": "Zero-copy accounts, raw CPIs, feature flags, compute optimization, remaining accounts, and versioning with migration strategies.",
"lessons": {
"zero-copy-accounts": { "title": "Zero-Copy Accounts", "description": "Access large account data directly in memory without stack or heap copies. Bypass Solana's 4 KB stack limit using zero-copy deserialization in Anchor." },
"raw-cpis-and-syscalls": { "title": "Raw CPIs and Syscalls", "description": "Go beneath Anchor's CPI abstractions to use raw invoke and invoke_signed syscalls. Call non-Anchor programs and optimize compute-critical paths." },
"feature-flags": { "title": "Feature Flags", "description": "Use Cargo features for compile-time configuration across environments. Swap addresses, toggle instructions, and build different binaries for devnet and mainnet." },
"compute-optimization": { "title": "Compute Optimization", "description": "Measure and reduce compute unit usage in Anchor programs. Profile expensive operations, optimize account loading, and stay within Solana's CU budget." },
"remaining-accounts-patterns": { "title": "Remaining Accounts Patterns", "description": "Pass variable-length account lists using ctx.remaining_accounts. Handle batch operations, optional accounts, and dynamic recipient lists safely." },
"versioning-and-migration": { "title": "Versioning and Migration", "description": "Migrate account data layouts across program upgrades. Handle version enums, lazy migration, and the transition period when old and new accounts coexist." }
}
},
"anchor-in-production": {
"title": "Anchor in Production",
"description": "Deploy, upgrade, and operate Anchor programs. Deployment strategies, client SDKs, governance, indexing, monitoring, and operational patterns.",
"lessons": {
"deployment-strategies": { "title": "Deployment Strategies", "description": "Deploy Anchor programs to devnet and mainnet. Manage keypairs, buffer accounts, multi-stage deployments, and produce verifiable builds from source." },
"client-sdk-generation": { "title": "Client SDK Generation", "description": "Generate type-safe TypeScript clients from your Anchor IDL. Publish IDLs on-chain for discovery and build production integrations that stay in sync." },
"upgrades-and-governance": { "title": "Upgrades and Governance", "description": "Manage program upgrade authorities, execute safe bytecode upgrades, transfer control to multisigs, and decide when to make programs immutable." },
"indexing-and-monitoring": { "title": "Indexing and Monitoring", "description": "Index on-chain state into queryable databases using Anchor events, account subscriptions, Geyser plugins, and transaction log parsing for production apps." },
"operational-patterns": { "title": "Operational Patterns", "description": "Run programs in production with cranks, rate limiting, fee collection, recovery instructions, configuration accounts, and operational runbooks." }
}
},
"pinocchio-for-dummies": {
Expand Down
4 changes: 2 additions & 2 deletions messages/fr/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@
"title": "Solana Developer Foundations",
"description": "Commencez votre voyage Solana avec les fondamentaux de la blockchain, les tokens et les NFTs."
},
"anchor-mastery": {
"title": "Anchor Mastery",
"anchor-for-dummies": {
"title": "Anchor for Dummies",
"description": "Maîtrisez le framework Anchor, des bases au développement avancé de programmes."
},
"native-rust-developer": {
Expand Down
4 changes: 2 additions & 2 deletions messages/id/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@
"title": "Solana Developer Foundations",
"description": "Start your Solana journey with blockchain fundamentals, tokens, and NFTs."
},
"anchor-mastery": {
"title": "Anchor Mastery",
"anchor-for-dummies": {
"title": "Anchor for Dummies",
"description": "Master Anchor framework from basics to advanced program development with hands-on challenges."
},
"native-rust-developer": {
Expand Down
4 changes: 2 additions & 2 deletions messages/uk/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@
"title": "Solana Developer Foundations",
"description": "Start your Solana journey with blockchain fundamentals, tokens, and NFTs."
},
"anchor-mastery": {
"title": "Anchor Mastery",
"anchor-for-dummies": {
"title": "Anchor for Dummies",
"description": "Master Anchor framework from basics to advanced program development with hands-on challenges."
},
"native-rust-developer": {
Expand Down
4 changes: 2 additions & 2 deletions messages/vi/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@
"title": "Lập trình Solana cơ bản",
"description": "Bắt đầu hành trình Solana của bạn với các kiến thức cơ bản về blockchain, token và NFT."
},
"anchor-mastery": {
"title": "Thành thạo Anchor",
"anchor-for-dummies": {
"title": "Anchor for Dummies",
"description": "Thành thạo framework Anchor từ cơ bản đến phát triển chương trình nâng cao với các thử thách thực hành."
},
"native-rust-developer": {
Expand Down
4 changes: 2 additions & 2 deletions messages/zh-CN/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@
"title": "Solana Developer Foundations",
"description": "Start your Solana journey with blockchain fundamentals, tokens, and NFTs."
},
"anchor-mastery": {
"title": "Anchor Mastery",
"anchor-for-dummies": {
"title": "Anchor for Dummies",
"description": "Master Anchor framework from basics to advanced program development with hands-on challenges."
},
"native-rust-developer": {
Expand Down
4 changes: 2 additions & 2 deletions messages/zh-HK/core.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@
"title": "Solana Developer Foundations",
"description": "Start your Solana journey with blockchain fundamentals, tokens, and NFTs."
},
"anchor-mastery": {
"title": "Anchor Mastery",
"anchor-for-dummies": {
"title": "Anchor for Dummies",
"description": "Master Anchor framework from basics to advanced program development with hands-on challenges."
},
"native-rust-developer": {
Expand Down
31 changes: 31 additions & 0 deletions public/ascii/advanced-anchor-patterns.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

--
#====@
@%=====@
+%%======#
@%%========-
@%%=========+-
#=%===========+
#=%=============@
#=%===============#
-##@++===================-
--#@@+============================+@-
-@++=======================================+@-
#===============================================+@#
-@===================================================+@-
###@@+==================================================@
--###@++==============================================
--###@@+======================================+@#-
---##@@+===========================++@#--
--##@===================++@#--
#@+%================@
#@=%==============+
@@==============+-
-@+=============#
#@+%==========#
#@=%========@
@@=%======+-
-@+=======-
#@+=====#
-#####-

Loading