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.
-
Por defecto usar
localnetpara CI: Ejecutasolana-test-validator --reseten pipelines; evita los límites de tasa dedevnet(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 endevnetduranteanchor test. -
Siempre usar
--reseten 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 logsen 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
mainnetdurante la clonación necesita una--urlfiable con clave API. -
Coincidir los IDs de programa en todas partes: La clave pública de
--bpf-programdebe ser igual adeclare_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
computeUnitsConsumedantes de establecer los presupuestos de cómputo demainnet. -
Reducir
msg!en compilaciones de producción: El ruido de los logs trunca y desperdicia CU; usa feature gates para logs detallados. -
Omitir
local-validatorintencionalmente: Al gestionar un validador de larga duración, pasaanchor test --skip-local-validatorconsistentemente. -
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
--ledgerpor 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
mainnetuse transacciones versionadas. -
No depender de
devnetpara las puertas de CI: Tratadevnetcomo 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
mainnetrompan las pruebas de CPI. -
Exportar JSON de transacciones fallidas: Adjunta la salida de
solana transactiona los problemas para reproducibilidad. -
Demos de billetera en
devnet: Apunta Phantom al RPC dedevnetpara demos a stakeholders; ellocalhostdelocalnetes frágil. -
Sondear
mainnetcon polvo: Las comprobaciones finales de aterrizaje necesitan tarifas reales; no reemplazables solo porlocalnet. -
Emparejar pruebas locales con clientes del kit: Apunta las pruebas de integración de
@solana/kit7.0.0 a la misma URL RPC que la CLI.
Preguntas frecuentes
¿Cuál es la pila de pruebas rápida y fiable?
Pruebas unitarias de LiteSVM más anchor test en localnet con reinicio; añade Surfpool solo para integración DeFi.
¿Debería persistir el ledger localmente?
Solo al explorar el estado manualmente; CI y las comprobaciones de PR deben reiniciarse en cada ejecución.
¿Cómo afectan las prácticas locales a los incidentes de mainnet?
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.
Relacionado
- Conceptos básicos de desarrollo local - entrada de sección
-
solana-test-validator- referencia del validador - Mejores prácticas de pruebas de Solana - política de pruebas más amplia
- Mejores prácticas de Solana CLI - higiene de la CLI
Versiones 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.