Cultura de Revisión de Código
En Solana, una restricción has_one omitida puede costar millones. La cultura de revisión de código equilibra la enseñanza de patrones de Sealevel a los juniors con la agilización del envío: comentarios de alta señal sobre seguridad y semántica de cuentas, bajo ruido en el formato (rustfmt se encarga de eso).
Receta
Tarjeta de receta de referencia rápida, lista para copiar y pegar.
## Lista de Revisión de PR de Solana
- [ ] Flags de propietario/firmante/escritura de cuenta correctos
- [ ] Semillas y bumps de PDA validados
- [ ] IDs de programa CPI codificados o en lista blanca
- [ ] Aritmética verificada (sin suma sin verificar)
- [ ] Pruebas: camino feliz + atacante (LiteSVM)
- [ ] Impacto en IDL/cliente anotado en la descripción del PRCuándo usar esto:
- Incorporación de revisores nuevos en Anchor
- Post-incidente "¿cómo pasó esto la revisión?"
- Establecimiento de SLAs y normas de equipo
- Escalado de la carga de revisión entre zonas horarias
Ejemplo de Trabajo
// Comentario de revisión BUENO - específico, enseña, sugiere corrección
// "El atacante puede pasar una bóveda externa como `user_vault` - añadir:
// constraint = user_vault.owner == user.key()
// Ver: ataques de sealevel - sustitución de cuenta"
// BAJA SEÑAL - evitar
// "Renombrar esta variable a `amt`"Plantilla de descripción de PR:
## Cambio
Añadir instrucción withdraw_v2
## Notas de seguridad
Nueva CPI a Jupiter; ID de programa en lista blanca en constantes
## Plan de pruebas
- anchor test
- Replay de exploit LiteSVM #42 de la auditoríaLo que esto demuestra:
- Marco de comentarios centrado en la seguridad con material de referencia
- El autor del PR presenta evidencia de CPI y pruebas por adelantado
- Reduce la ida y vuelta en las restricciones de cuentas
Inmersión Profunda
SLAs de Revisión
| Tipo de PR | Primera respuesta | Objetivo de aprobación |
|---|---|---|
| Hotfix | 1 hora | Mismo día |
| Lógica del programa | 1 día hábil | 2 días |
| UI del cliente | 1 día hábil | 2 días |
Roles
- Autor es responsable de las pruebas y la descripción
- Revisor es responsable de la lista de verificación de seguridad
- Líder técnico rompe el empate en arquitectura
Trampas
- LGTM sin leer
#[account]- Modo de fallo #1. Solución: Revisión obligatoria de la sección de cuentas. - Nits de estilo bloqueando la fusión - Desmoraliza; rustfmt/clippy en CI. Solución: prefijo
[nit]opcional. - Revisiones de sello de goma - La auditoría encuentra errores obvios. Solución: Rotar revisores; auditorías puntuales.
- PRs enormes - Nadie revisa profundamente. Solución: Guía de 400 líneas; dividir programa/cliente.
- Revisión como control de acceso - Los juniors dejan de preguntar. Solución: Emparejar en el primer PR de Sealevel.
Alternativas
| Alternativa | Usar cuándo | No usar cuándo |
|---|---|---|
| Revisión en grupo | Cambio complejo de CPI | Corrección de cliente rutinaria |
| Solo auditoría | Programa inmutable | Actualizaciones continuas |
| Solo lint automatizado | Errores tipográficos | Semántica de cuentas |
Preguntas Frecuentes
¿Cuántos aprobadores para el programa?
Dos para programs/ de producción; uno para solo documentación.
¿Comentarios de bots?
Clippy, comprobaciones de anchor, cargo audit en CI - los humanos se centran en la semántica.
¿Revisar código propio?
Nunca ser el único aprobador en el propio PR para cambios de programa.
¿Desacuerdo?
Escalar al líder técnico; ADR si es arquitectónico.
¿Enseñar en comentarios?
Enlazar documento interno o catálogo de Sealevel; mantener un tono colaborativo.
¿Revisar cambios de IDL?
Mismo rigor que Rust - los clientes dependen de ello.
¿Asincronía entre zonas horarias?
Video solo para RFC; PR asíncrono con SLA claro.
¿Métricas?
Tiempo hasta la primera revisión, tiempo de resolución de comentarios, tasa de defectos post-fusión.
¿PRs de internos?
Revisor senior emparejado; comentarios explicativos extra amables.
¿Bypass de Hotfix?
Revisión post-fusión dentro de las 24h; el comandante de incidentes puede fusionar con un senior.
Relacionado
- Ejecución de Revisiones de Diseño - diseño pre-PR
- Mentoría y Nivelación - formar revisores
- Catálogo de Ataques de Sealevel - referencia de revisión
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.