Estrutura do Projeto
Um workspace Anchor separa programas on-chain, testes de cliente e configuração de implantação. Saber onde cada artefato reside evita desvios na IDL e scripts de implantação quebrados.
Busque em todas as páginas da documentação
Um workspace Anchor separa programas on-chain, testes de cliente e configuração de implantação. Saber onde cada artefato reside evita desvios na IDL e scripts de implantação quebrados.
my_workspace/
Anchor.toml # cluster, scripts, IDs de programa
Cargo.toml # raiz do workspace
programs/
my_program/
Cargo.toml # anchor-lang = "0.32.1"
src/lib.rs
tests/
my_program.ts
target/
deploy/ # .so após a compilação
idl/ # IDL JSONQuando usar isso: Você está se integrando a um repositório existente ou dividindo um programa em múltiplos crates.
# Anchor.toml (trecho)
[toolchain]
anchor_version = "0.32.1"
[programs.localnet]
my_program = "Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"
[scripts]
test = "yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/**/*.ts"# Cargo.toml (raiz do workspace)
[workspace]
members = ["programs/*"]
resolver = "2"O que isso demonstra:
Anchor.toml é a única fonte para IDs de programa por clusterprograms/target/idl/ é gerado; não edite manualmenteprograms/* com um lockfile compartilhado.lib.rs com #[program], structs de conta e tipos de estado.anchor build grava o JSON usado por clientes TS e declare_program!.[scripts] conecta o teste do Anchor ao seu framework de teste TS.| Caminho | Propósito |
|---|---|
programs/*/src/lib.rs | Lógica on-chain |
Anchor.toml | Alvos de implantação e scripts de teste |
target/idl/*.json | Entrada para geração de código do cliente |
target/deploy/*.so | Binário do programa atualizável |
anchor build.declare_id!. Correção: Execute anchor keys sync após a implantação.anchor test não consegue encontrá-los. Correção: Mantenha os testes em tests/ de acordo com a convenção do Anchor.Cargo.toml raiz.anchor-lang e anchor-spl na versão 0.32.1.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Monorepo com múltiplos workspaces Anchor | Produtos independentes compartilhando infraestrutura | Programa único com layout simples |
| Workspace Cargo nativo sem Anchor.toml | Controle máximo, sem IDL | Você deseja clientes tipados e restrições |
| Layout Pinocchio/Steel | Programas críticos para CU | Você precisa das macros de conta do Anchor |
0.32.1 para anchor-lang, Anchor CLI e exemplos nesta seção.
Sim. O Solana CLI 3.0.10 lida com keypairs, airdrops e inspeção de solana program.
target/idl/<program>.json no seu workspace.
Sim, mas cada campo não verificado precisa de restrições explícitas ou verificações no manipulador.
Use anchor test com Surfpool 0.12.0 ou LiteSVM 0.6.x em CI.
Discriminador de conta Anchor; não o remova ao dimensionar o space.
Sim, ou publique a IDL on-chain para que os clientes tenham uma fonte canônica.
Execute com logs; o Anchor imprime o nome da restrição e o índice da conta.
Sim. Esta stack tem como alvo validadores Agave com Solana CLI 3.0.10.
Veja artigos irmãos vinculados em Relacionados para tópicos mais aprofundados sobre estrutura de projeto.
Versões da Stack: Esta página foi escrita para 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, e LiteSVM 0.6.x.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026