Clonando Contas da Mainnet
Semeie o solana-test-validator com dados reais de contas da mainnet para que testes locais exercitem layouts de programas de produção e estado de oráculos.
Busque em todas as páginas da documentação
Semeie o solana-test-validator com dados reais de contas da mainnet para que testes locais exercitem layouts de programas de produção e estado de oráculos.
Cartão de receita de referência rápida - pronto para copiar e colar.
solana-test-validator --reset \
--url mainnet-beta \
--clone <ACCOUNT_PUBKEY> \
--clone <PROGRAM_ID>Quando usar:
# Exemplo: clone o programa SPL Token e um mint USDC (verifique pubkeys atuais na documentação)
TOKEN_PROGRAM=TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA
USDC_MINT=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
solana-test-validator --reset \
--url mainnet-beta \
--clone "$TOKEN_PROGRAM" \
--clone "$USDC_MINT"
solana config set --url http://127.0.0.1:8899
solana account "$USDC_MINT"O que isso demonstra:
--url.--clone os lamports, owner, data e flag executável.| Tipo de conta | Clonar? | Notas |
|---|---|---|
| IDs de programa | Frequentemente sim | Necessário para CPI |
| Estado de pool/oráculo | Sim | Captura reservas realistas |
| Carteiras de usuário | Raro | Use keypairs locais |
| Sysvars | Automático | Clock, rent incluídos por padrão |
# Clone muitas contas a partir de um arquivo (um pubkey por linha)
solana-test-validator --reset --url mainnet-beta \
$(awk '{print "--clone "$1}' accounts.txt)--url.| Alternativa | Use quando | Não use quando |
|---|---|---|
| Surfpool 0.12.0 | Fork contínuo da mainnet | Testes simples só de programa |
| Fixtures construídos à mão | Testes unitários isolados pequenos | Integrações DeFi complexas |
| Espelhos devnet | Staging compartilhado da equipe | Versões de programa específicas da mainnet |
| Injeção de conta LiteSVM | Testes unitários Rust rápidos | Caminhos completos de cliente RPC |
Sim para contas executáveis - o ELF é armazenado como um deploy.
Sim se a conta PDA existir na mainnet no momento da busca - derive o endereço e verifique com solana account.
Inspecione transações da mainnet em um explorer - copie todas as contas que sua instrução toca.
Apenas se o programa for builtin nativo ou você clonar/implantar localmente.
Não - busca RPC somente leitura; você paga aluguel local apenas se transações redimensionarem contas.
Sim - --url devnet para programas publicados na devnet.
Contas muito grandes tornam a inicialização lenta - prefira Surfpool para cenários pesados de fork.
Sim - lamports e dados da conta de token copiam exatamente no snapshot da busca.
Leia logs de inicialização do validador para erros RPC; verifique se o pubkey existe no cluster de origem.
Faça cache de diretórios de ledger ou use conjuntos mínimos de fixture para manter o CI rápido e confiável.
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: 16 de jul. de 2026