Mejores prácticas de desarrollo local
Un resumen condensado de las 25 prácticas más importantes de desarrollo local extraídas de todas las páginas de esta sección.
Busca en todas las páginas de la documentación
Un resumen condensado de las 25 prácticas más importantes de desarrollo local extraídas de todas las páginas de esta sección.
Por defecto usar localnet para CI: Ejecuta solana-test-validator --reset en pipelines; evita los límites de tasa de devnet (Conceptos básicos de desarrollo local).
Fijar RPC en Anchor.toml: La URL del proveedor debe coincidir con el clúster activo para evitar despliegues accidentales en devnet durante anchor test.
Siempre usar --reset en CI: La génesis determinista evita pruebas inestables debido al estado previo del ledger (solana-test-validator).
Iniciar logs antes de las transacciones: Ejecuta solana logs en una segunda terminal antes de enviar (Logs locales y depuración).
Confirmar archivos de fixture: Versiona los fixtures JSON con la ranura de origen documentada (Carga de programas y fixtures).
Minimizar conjuntos de clones: Clona solo las cuentas que tu instrucción toca; el tiempo de inicio escala linealmente (Clonación de cuentas de Mainnet).
Usar RPC del proveedor para clones: La obtención de mainnet durante la clonación necesita una --url fiable con clave API.
Coincidir los IDs de programa en todas partes: La clave pública de --bpf-program debe ser igual a declare_id! y a las constantes del cliente.
Usar LiteSVM para velocidad: Prueba las rutas críticas en LiteSVM 0.6.x; reserva el validador para integración.
Usar Surfpool para gráficos DeFi: Cuando los clones explotan, cambia a la simulación de la bifurcación de Surfpool 0.12.0 (Surfpool).
Documentar la elección del clúster por PR: Sigue el Flujo de trabajo de Localnet vs Devnet y registra la decisión.
Fondear generosamente las billeteras locales: Los airdrops locales son gratuitos; prueba diseños que consumen mucha renta de forma realista.
Medir CU localmente: Lee computeUnitsConsumed antes de establecer los presupuestos de cómputo de mainnet.
Reducir msg! en compilaciones de producción: El ruido de los logs trunca y desperdicia CU; usa feature gates para logs detallados.
Omitir local-validator intencionalmente: Al gestionar un validador de larga duración, pasa anchor test --skip-local-validator consistentemente.
Matar validadores huérfanos: Libera el puerto 8899 antes de que CI vuelva a ejecutarse; los procesos obsoletos causan "conexión rechazada".
Separar directorios de ledger para experimentos: Usa --ledger por rama de características al explorar el estado persistente.
Sincronizar pines de la toolchain: El validador local debe ejecutar Agave 4.1.1, coincidiendo con los artefactos de despliegue.
Probar transacciones v0 localmente: Incluye ALTs en las pruebas locales cuando mainnet use transacciones versionadas.
No depender de devnet para las puertas de CI: Trata devnet como una prueba de humo opcional, no como un bloqueador de fusión.
Refrescar clones obsoletos: Reinicia el validador cuando los cambios en el diseño de mainnet rompan las pruebas de CPI.
Exportar JSON de transacciones fallidas: Adjunta la salida de solana transaction a los problemas para reproducibilidad.
Demos de billetera en devnet: Apunta Phantom al RPC de devnet para demos a stakeholders; el localhost de localnet es frágil.
Sondear mainnet con polvo: Las comprobaciones finales de aterrizaje necesitan tarifas reales; no reemplazables solo por localnet.
Emparejar pruebas locales con clientes del kit: Apunta las pruebas de integración de @solana/kit 7.0.0 a la misma URL RPC que la CLI.
Pruebas unitarias de LiteSVM más anchor test en localnet con reinicio; añade Surfpool solo para integración DeFi.
Solo al explorar el estado manualmente; CI y las comprobaciones de PR deben reiniciarse en cada ejecución.
Los fixtures correctos y la medición de CU evitan fallos de aterrizaje de "funcionó localmente"; consulta la sección de optimización de transacciones.
solana-test-validator - referencia del validadorVersiones de la pila: Esta página se escribió 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 y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 16 jul 2026