Anchor Basics Best Practices
A clean starting structure for new Anchor 0.32.1 workspaces. Use as a PR checklist for greenfield programs.
Search across all documentation pages
A clean starting structure for new Anchor 0.32.1 workspaces. Use as a PR checklist for greenfield programs.
Cargo.toml and match Anchor CLI.programs/ with clear naming.lib.rs modules.initialize, deposit, withdraw.Err(ProgramError::Custom).close = destination.0.32.1 for anchor-lang, Anchor CLI, and examples in this section.
Yes. Solana CLI 3.0.10 handles keypairs, airdrops, and solana program inspection.
target/idl/<program>.json in your workspace.
Yes, but every unchecked field needs explicit constraints or handler checks.
Use anchor test with Surfpool 0.12.0 or LiteSVM 0.6.x in CI.
Anchor account discriminator; do not strip it when sizing space.
Yes, or publish on-chain IDL so clients have a canonical source.
Run with logs; Anchor prints constraint name and account index.
Yes. This stack targets Agave validators with Solana CLI 3.0.10.
See sibling articles linked in Related for deeper anchor basics bp topics.
Stack versions: This page was written for Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, and LiteSVM 0.6.x.
Reviewed by Chris St. John·Last updated Jul 19, 2026