Compilación y Despliegue
anchor build compila tu programa a SBF y regenera el IDL. anchor deploy sube el archivo .so a un clúster y actualiza el mapeo del ID del programa en Anchor.toml.
Receta
anchor build
anchor deploy --provider.cluster devnet
anchor keys syncCuándo usar esto: Cuando envías una nueva versión o incorporas un ID de programa nuevo.
Ejemplo Funcional
# Verificar la toolchain
anchor --version # 0.32.1
solana --version # solana-cli 3.0.10
# Compilar SBF + IDL
anchor build
# Desplegar en devnet (wallet con fondos)
anchor deploy --provider.cluster devnet
# Sincronizar declare_id! y Anchor.toml desde el keypair desplegado
anchor keys sync
# Confirmar el programa en la cadena
solana program show <PROGRAM_ID> --url devnet# programs/my_program/Cargo.toml
[dependencies]
anchor-lang = "0.32.1"
anchor-spl = "0.32.1"Lo que esto demuestra:
target/deploy/*.soes el binario del programa actualizable.- El IDL en
target/idl/<nombre>.jsonimpulsa la generación de código del cliente. anchor keys syncalineadeclare_id!con el keypair.- La selección del clúster proviene de
Anchor.tomlo de las banderas de la CLI.
Análisis Profundo
Pipeline de Compilación
cargo build-sbfcompila Rust a Solana BPF.- Anchor extrae los layouts de cuentas e instrucciones al JSON del IDL.
- Se pueden generar tipos de TypeScript a partir del IDL para las pruebas.
Lista de Verificación de Despliegue
| Paso | Comando |
|---|---|
| Financiar desplegador | solana airdrop 2 (devnet) |
| Compilar | anchor build |
| Desplegar | anchor deploy |
| Sincronizar IDs | anchor keys sync |
| Verificar | solana program show |
Errores Comunes
- Desplegar sin reconstruir - Se sube un
.soantiguo. Solución: Siempre ejecutaanchor buildantes de desplegar. - IDL no confirmado - Los clientes se desvían de la API en cadena. Solución: Confirma el IDL o publica el IDL en cadena.
- Proveedor de clúster incorrecto - El programa aterriza en una red inesperada. Solución: Establece
[provider] clusterenAnchor.toml. - SOL insuficiente para el despliegue - La transacción falla a mitad de la subida. Solución: Financia al desplegador; el despliegue cuesta varios SOL en mainnet.
- Omitir la sincronización de claves - Errores de desajuste de
declare_id!. Solución: Ejecutasyncdespués de cada nuevo keypair del programa.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
solana program deploy | Flujos de trabajo que no son de Anchor | Pierdes el paso de generación del IDL |
| Compilaciones verificables en CI | Lanzamientos auditados | Iteración rápida local |
| Surfpool solo para local | No gastar en clúster | El despliegue final aún necesita un clúster |
Preguntas Frecuentes
¿Qué versión de Anchor utiliza este sitio?
0.32.1 para anchor-lang, Anchor CLI y ejemplos en esta sección.
¿Necesito Solana CLI además de Anchor?
Sí. Solana CLI 3.0.10 maneja keypairs, airdrops e inspección de solana program.
¿Dónde vive el IDL después de la compilación?
En target/idl/<program>.json en tu espacio de trabajo.
¿Puedo mezclar `UncheckedAccount` con `Signer`?
Sí, pero cada campo no verificado necesita restricciones explícitas o comprobaciones del manejador.
¿Cómo pruebo sin devnet?
Usa anchor test con Surfpool 0.12.0 o LiteSVM 0.6.x en CI.
¿Qué es el prefijo de 8 bytes en los datos de la cuenta?
El discriminador de cuenta de Anchor; no lo elimines al dimensionar space.
¿Debo confirmar el IDL generado?
Sí, o publica el IDL en cadena para que los clientes tengan una fuente canónica.
¿Cómo depuro fallos de restricciones?
Ejecuta con logs; Anchor imprime el nombre de la restricción y el índice de la cuenta.
¿Funciona Anchor en Agave 4.1.1?
Sí. Esta pila se dirige a validadores Agave con Solana CLI 3.0.10.
¿Qué debo leer a continuación en esta sección?
Consulta los artículos hermanos en "Relacionados" para temas más profundos sobre compilación y despliegue.
Relacionados
- El IDL de Anchor - Formato del IDL
- Estructura del Proyecto - Rutas de artefactos
- Conceptos Básicos de Despliegue - Operaciones de clúster
Versiones de la pila: 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.