Codama a partir de uma IDL do Anchor
Codama transforma a IDL do Anchor em TypeScript compatível com @solana/kit 7.0.0: codecs de instrução, decodificadores de conta e enums de erro.
Receita
anchor build
npx @codama/cli@latest run --idl target/idl/my_program.json --out clients/ts/src/generatedimport { createSolanaRpc, pipe } from "@solana/kit";
import { getIncrementInstruction } from "./generated/instructions";Quando usar isso: Novas dApps padronizam com @solana/kit em vez de web3.js v1.
Exemplo de Trabalho
import { address, createSolanaRpc, pipe, setTransactionMessageLifetime } from "@solana/kit";
import { getIncrementInstruction } from "./generated/instructions";
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const programId = address("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");
const ix = getIncrementInstruction({
counter: counterPda,
authority: signerAddress,
});
// Pipe para construtores de mensagens de transação (padrões do kit 7)O que isso demonstra:
- Codama lê o JSON da IDL do Anchor
- Gera helpers de instrução nativos do kit
- Regenera quando a IDL muda
- Emparelha com testes surfpool/litesvm
Análise Profunda
Pipeline
anchor buildproduz a IDL.- Codama gera módulos TS.
- O aplicativo importa apenas codecs gerados (sem codificação manual).
CI
Falha na compilação se a pasta gerada diferir de uma execução recente do Codama.
Armadilhas
- Pasta gerada desatualizada - Discriminadores errados. Correção: Etapa do Codama no pré-build da CI.
- Recursos da IDL que o Codama não mapeia - Correções manuais necessárias. Correção: Acompanhe as notas de lançamento do Codama.
- Misturar kit e web3 em uma tx - Fricção de tipo. Correção: Migre a montagem da transação para o kit.
- Tipos de RPC incorretos com decodificadores gerados - Falhas na decodificação. Correção: Use o RPC do kit em todo o lado.
- Não fixar a versão do Codama - Derivação do codegen. Correção: Trave a versão da CLI em package.json.
Alternativas
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| @coral-xyz/anchor Program | anchor test legado | Aplicativos com foco em Kit |
| Gill helpers | Wrapper do kit de nível superior | Codecs brutos do kit |
FAQs
Versão do Anchor?
0.32.1 em tópicos avançados.
Quando usar zero_copy?
Grandes layouts fixos quando Borsh CU é muito alto.
realloc é reversível?
Não facilmente; planeje o crescimento futuro.
As contas restantes estão na IDL?
Não; documente separadamente.
declare_program! precisa de quê?
JSON da IDL do chamador em tempo de compilação.
O Anchor pode fazer CPI para Pinocchio?
Sim, com metadados de conta corretos.
Flags de recursos e IDL?
Evite IDLs diferentes por recurso no mainnet.
Como medir CU?
LiteSVM, Surfpool, simulação em devnet.
Tipos de conta personalizados são comuns?
Não; último recurso.
Próximos passos?
Veja os links relacionados para codama.
Relacionado
- solana/kit Codama e gill - crates
- Construindo Instruções - kit ix
- Gerando Clientes TS - Cliente Anchor
Versões da Pilha: 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.