Mejores Prácticas de Patrones de Programas
Los patrones reutilizables solo son útiles cuando se aplican de manera consistente. Esta lista captura la disciplina de inicialización, custodia, estado y actualización para programas de Solana en producción.
Cómo Usar Esta Lista
- Mapea cada instrucción a la lista de verificación de patrones antes de la implementación.
- Cruza referencias de SEEDS.md y tablas de transición de estado en las revisiones.
- Simula rutas de fallo, no solo las rutas felices.
A - Ciclo de Vida
- Separa la creación de cuentas de la inicialización; escribe los discriminadores antes de aceptar el valor. Bloquea ataques de reinicialización.
- Modela los flujos de negocio como máquinas de estado explícitas con salvaguardas de transición ilegales. Previene la elusión de la lógica.
- Cierra las cuentas poniendo a cero los datos y enrutando el alquiler a un destinatario declarado. Detiene la reactivación.
- Usa Clock sysvar para expiraciones - nunca confíes solo en el tiempo proporcionado por el cliente. Fuente de tiempo honesta.
- Aplica comprobaciones-efectos-interacciones antes de cualquier CPI externa. Seguridad contra reentrada.
B - Custodia
- Aísla los PDAs de bóveda por usuario o por escrow con prefijos de semilla únicos. Control del radio de explosión.
- Verifica la menta, el ATA y el gráfico de autoridad antes de la CPI de tokens. Anti-sustitución.
- Recopila tarifas con matemáticas verificadas y bps configurables limitados. Seguridad económica.
- Proporciona rutas de cancelación/tiempo de espera para los escrows. Seguridad de los fondos del usuario.
- Minimiza los poderes de administrador; usa multisig y transferencia de administrador en dos pasos. Seguridad de gobernanza.
C - Evolución
- Reserva espacio en la cuenta o planifica la reasignación antes del despliegue inmutable. Compatibilidad futura.
- Versiona los esquemas y envía instrucciones de migración con las actualizaciones. Continuidad del usuario en vivo.
- Documenta la transición de estado y las tablas de semillas para los auditores. Revisión más rápida.
- Emite eventos en cambios de estado materiales para los indexadores. Visibilidad operativa.
- Prueba de regresión de invariantes de patrones en LiteSVM después de cada cambio. Previene la deriva.
Preguntas Frecuentes
¿Los patrones de Anchor son suficientes?
Comprende aún la salida de las macros.
¿Un patrón por programa?
Combina con cuidado.
¿Mercado de NFT?
Escrow + comprobaciones de metadatos.
¿DeFi?
Bóveda + máquina de estado + oráculo.
¿Juego?
Estado + reloj + límites de CU.
¿Inmutable?
Los patrones son 10 veces más importantes.
¿Orden de auditoría?
Init, custodia, admin, CPI.
¿Surfpool?
Pruebas de integración de patrones.
¿Agave 4.1.1?
Fija y vuelve a probar.
¿ADR de documentación?
Recomendado por elección de patrón.
¿Componible?
Documenta la superficie pública de CPI.
¿Simulacros de fallo?
Simula fallos de mainnet mensualmente.
Relacionado
- Conceptos Básicos de Patrones de Programas - Introducción
- Mejores Prácticas de PDA - PDAs
- Mejores Prácticas de CPI - CPIs
Versiones de Stack: Esta página fue 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, y LiteSVM 0.6.x.