Mejores prácticas avanzadas de Anchor
Los programas de Anchor 0.32.1 eficientes y listos para producción combinan optimización con una barra de seguridad sin cambios.
Cómo usar esta lista
- Úsala después de que los conceptos básicos, las cuentas y las secciones de CPI estén sólidos.
- Realiza perfiles antes de aplicar
zero_copyo CPI nativo. - La revisión de seguridad sigue siendo necesaria.
A - Rendimiento
- Analiza las CU en LiteSVM antes de mainnet para optimización basada en datos únicamente.
- Almacena
bumpsy prefierezero_copypara estados grandes y fijos cuando el análisis lo justifique. - Elimina las características de depuración de las compilaciones de lanzamiento para mainnet para obtener un
.somás pequeño y menor CU.
B - Patrones avanzados
- Documenta los protocolos
remaining_accountsque no están en el IDL. - Planifica
realloc/migraciones con bytes de versión antes de expandir las cuentas. - Prefiere
declare_program!sobreinvokemanual cuando exista el IDL. - Mantén los tipos de cuenta personalizados en raras ocasiones y pruébalos; usa
Account<T>por defecto.
Preguntas frecuentes
¿Versión de Anchor?
0.32.1 en temas avanzados.
¿Cuándo usar `zero_copy`?
Diseños fijos grandes cuando la CU de Borsh es demasiado alta.
¿Es `realloc` reversible?
No fácilmente; planifica el crecimiento futuro.
¿Están `remaining_accounts` en el IDL?
No; documéntalos por separado.
¿Qué necesita `declare_program!`?
JSON del IDL del llamado en tiempo de compilación.
¿Puede Anchor hacer CPI a Pinocchio?
Sí, con metadatos de cuenta correctos.
¿Banderas de características e IDL?
Evita diferentes IDL por característica en mainnet.
¿Cómo medir la CU?
LiteSVM, Surfpool, simulación en devnet.
¿Son comunes los tipos de cuenta personalizados?
No; último recurso.
¿Próximos pasos?
Consulta los enlaces relacionados para ver las mejores prácticas avanzadas.
Relacionados
- Optimización de CU y tamaño - CU
- Cuentas Zero-Copy -
zero_copy - Mejores prácticas básicas de Anchor - Fundamentos
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.