El Punto de Entrada del Programa
El punto de entrada recibe el slice de bytes de datos de instrucción y un slice de AccountInfo. La macro #[program] de Anchor genera el dispatch desde el discriminador de 8 bytes a tus manejadores.
Receta
use anchor_lang::prelude::*;
#[program]
pub mod my_program { /* handlers */ }Cuándo recurrir a esto:
- Al construir o depurar en Agave 4.1.1
- Al integrar con programas de Anchor 0.32.1
- Trabajo de cliente con @solana/kit 7.0.0
Ejemplo Funcional
// Nativo (sin Anchor):
// entrypoint!(process_instruction);
// fn process_instruction(program_id, accounts, data) -> ProgramResultLo que esto demuestra:
- Patrones idiomáticos para la era de Agave 4.1
- Manejo correcto de cuentas y firmantes
- Comportamiento observable a través de logs o RPC
Análisis Profundo
Cómo Funciona
- Los programas de Solana se ejecutan en el runtime paralelo Sealevel
- Las transacciones declaran todas las cuentas; el trabajo no superpuesto se ejecuta en paralelo
- La computación se mide en CUs; las cuentas exentas de alquiler persisten el estado
Errores Comunes
- Ejemplos obsoletos de web3.js v1 - usa @solana/kit 7.0.0. Solución: migra el código del cliente.
- Banderas de firmante faltantes - las transacciones fallan en tiempo de ejecución. Solución: marca los firmantes explícitamente.
- Blockhash expirado al reintentar - caídas silenciosas. Solución: actualiza y vuelve a firmar.
- RPC del cluster incorrecto - cuentas no encontradas. Solución: haz coincidir el cluster de extremo a extremo.
- Espacio de cuenta insuficiente - la inicialización falla. Solución: usa
InitSpaceen Anchor 0.32.1.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Anchor 0.32.1 | Desarrollo rápido | BPF nativo mínimo |
| Rust Nativo | Máximo control | Se necesita iteración rápida |
| LiteSVM 0.6.x | Pruebas unitarias | Pruebas de integración de red |
| Surfpool 0.12.0 | Pruebas de integración de Anchor | Tareas CLI únicas |
Preguntas Frecuentes
¿Cómo se relaciona esto con Sealevel?
Ver las secciones anteriores para más detalles.
¿Qué versión de CLI debo usar?
Ver las secciones anteriores para más detalles.
¿Se aplica esto a mainnet-beta?
Ver las secciones anteriores para más detalles.
¿Qué nivel de compromiso deben usar los clientes?
Ver las secciones anteriores para más detalles.
¿Cómo depuro fallos?
Ver las secciones anteriores para más detalles.
¿Están involucrados los PDAs?
Ver las secciones anteriores para más detalles.
¿Qué pasa con las unidades de cómputo?
Ver las secciones anteriores para más detalles.
¿Puedo usar devnet?
Ver las secciones anteriores para más detalles.
¿Cómo funcionan las actualizaciones?
Ver las secciones anteriores para más detalles.
¿Qué reemplaza a web3.js?
Ver las secciones anteriores para más detalles.
¿Cómo pruebo localmente?
Ver las secciones anteriores para más detalles.
¿Qué es Agave 4.1.1?
Ver las secciones anteriores para más detalles.
Relacionado
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.