Inspecionando Contas e Programas
Use solana account e solana program para ler state on-chain, owners e metadata de bytecode executável sem escrever client.
Receita
Card de receita de referência rápida - pronto para copiar e colar.
solana account <ACCOUNT_PUBKEY>
solana account <PUBKEY> --output json
solana program show <PROGRAM_ID>
solana program dump <PROGRAM_ID> program.soQuando usar:
- Depurar erros "account not found" ou owner errado.
- Verificar program ID de deploy e upgrade authority.
- Dump de bytecode
.sopara comparação de tamanho ou hash. - Inspecionar rent, comprimento de data e saldo de lamports rapidamente.
Exemplo Funcional
# Inspect the System Program (native program)
solana program show 11111111111111111111111111111111
# Inspect a wallet or data account
solana account "$(solana address)"
# JSON for scripting
solana account "$(solana address)" --output json-compact | jq '.account.lamports, .account.owner'
# Dump program binary from devnet/mainnet
solana program dump TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA spl_token.so
ls -la spl_token.soO que isso demonstra:
program showlista loader owner, endereço programdata, authority e último slot de deploy.accountimprime lamports, owner, flag executable e comprimento raw de data.program dumpescreve ELF on-chain em disco para inspeção ou verificação.
Aprofundamento
Como Funciona
- Toda conta armazena lamports, pubkey owner, bytes de data e flags.
- Programas são contas marcadas
executableowned por loader (BPF Loader v3 para programas upgradeable). solana accountbusca via RPCgetAccountInfopor baixo.- Programas upgradeable separam program ID e contas programdata.
Campos de Output de Conta
| Campo | Significado |
|---|---|
| Lamports | Saldo gastável + reserva isenta de rent |
| Owner | Programa permitido a escrever data |
| Executable | true para programas implantados |
| Data Length | Tamanho em bytes de data da conta |
| Allocated | Espaço total alocado (pode exceder data length) |
Notas bash
# Show only program metadata without dumping
solana program show <PROGRAM_ID> --programs
# Multiple accounts in one RPC round-trip via client libraries
# CLI inspects one at a time - use @solana/kit for batchesErros Comuns
- Ler binário como texto - data de conta não é UTF-8 para contas owned por programa. Correção: decode com seu IDL, structs Anchor ou ferramentas de layout
spl-token. - Cluster errado - conta existe em devnet mas não mainnet. Correção:
solana config getantes de depurar contas faltando. - Assumir program ID igual programdata - loader upgradeable usa duas contas. Correção: leia
ProgramData Addressdeprogram show. - Dumps enormes de conta - algumas contas têm megabytes. Correção: use
--output jsone parse seletivamente; evite pipe de binário raw para terminal. - Display obsoleto de upgrade authority - RPC em cache pode atrasar. Correção: consulte com commitment
finalizedpara checks sensíveis a authority.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| Solana Explorer / Solscan | UI rica e decode de token | Scripting ou workflows offline |
@solana/kit getAccountInfo | Reads em batch em apps TypeScript | Inspeção terminal one-off |
anchor account | Decode tipado por IDL Anchor | Programas nativos sem IDL |
spl-token account-info | Layout de conta SPL token | Contas não-token |
FAQs
O que significa Owner em uma conta?
Pubkey do programa permitido a mutar data da conta. Apenas o programa owner pode debitar lamports ou redimensionar data pelas regras do runtime.
Como saber se conta é PDA?
PDAs aparecem como pubkeys fora da curva Ed25519. CLI não rotula PDAs - derive endereços esperados client-side e compare.
Por que Data Length é zero na minha wallet?
Contas wallet owned pelo system guardam apenas lamports - sem payload de data customizado.
Posso inspecionar contas fechadas?
Não - contas fechadas são removidas do state da chain. Guarde signatures de transação para provar existência histórica.
O que é Allocated vs Data Length?
Allocated é espaço reservado; data length são bytes atualmente usados. Programas podem realloc entre eles.
Como decodificar data de conta Anchor?
Use anchor account <Type> <PUBKEY> em projetos Anchor, ou busque bytes raw e deserialize com client IDL.
program dump inclui metadata de upgrade?
Dump escreve apenas bytes ELF executáveis. Use program show para authority, slot e metadata de loader.
Como inspecionar mints de token?
Use spl-token display <MINT> para campos legíveis de mint, ou solana account para bytes raw.
Posso inspecionar contas em localnet?
Sim - aponte solana config para http://127.0.0.1:8899 e use os mesmos comandos.
Por que output json difere do texto?
JSON inclui campos data base64 adequados para scripts; output texto trunca data grande para legibilidade.
Relacionado
- Noções Básicas da Solana CLI - setup RPC e cluster
- Implantando Programas - o que
program showvalida após deploy - spl-token CLI - decode específico de conta token
- Métodos RPC Core - detalhes de
getAccountInfo
Versões do 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.