Despliegue de Programas
Despliega programas sBPF compilados con solana program deploy, gestiona cuentas de búfer y controla la autoridad de actualización desde la CLI.
Busca en todas las páginas de la documentación
Despliega programas sBPF compilados con solana program deploy, gestiona cuentas de búfer y controla la autoridad de actualización desde la CLI.
Tarjeta de referencia rápida - lista para copiar y pegar.
cargo build-sbf
solana program deploy target/deploy/my_program.so
solana program show <PROGRAM_ID>
solana program set-upgrade-authority <PROGRAM_ID> --new-upgrade-authority <AUTH>Cuándo usar esto:
.so.Anchor.toml / declare_id! después de la generación de claves.cd my_anchor_program
anchor build
# Artefacto: target/deploy/my_anchor_program.so
solana config set --url devnet
solana airdrop 2
# Despliegue con keypair de programa explícito (primer despliegue)
solana program deploy \
target/deploy/my_anchor_program.so \
--program-id target/deploy/my_anchor_program-keypair.json
PROGRAM_ID=$(solana-keygen pubkey target/deploy/my_anchor_program-keypair.json)
solana program show "$PROGRAM_ID"Lo que esto demuestra:
cargo build-sbf / anchor build produce el .so consumido por el despliegue.program show confirma el cargador, la cuenta de datos del programa y la autoridad.programdata).programdata.none (inmutable).programdata exento de alquiler, proporcional al tamaño del .so.| Comando | Propósito |
|---|---|
program deploy | Sube y activa (o actualiza) el bytecode |
program write-buffer | Sube solo al búfer |
program deploy --buffer | Finaliza desde un búfer existente |
program close | Recupera lamports de un búfer (requiere autoridad) |
program set-upgrade-authority | Transfiere o revoca derechos de actualización |
# Mostrar estimación del coste de despliegue
solana program deploy my_program.so --dry-run 2>&1 | grep -i cost
# Programa inmutable: revocar autoridad de actualización
solana program set-upgrade-authority <PROGRAM_ID> --finaldeclare_id! no coincide con el keypair desplegado. Solución: alinear Anchor.toml y lib.rs con solana-keygen pubkey del keypair de despliegue.programdata más las tarifas..so no optimizado desperdicia CU y alquiler. Solución: cargo build-sbf --release / anchor build.solana config get antes de cada despliegue.| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
anchor deploy | Espacio de trabajo de Anchor con IDs guionizados | Programas nativos sin Anchor |
solana program write-buffer + finalización separada | CI divide la carga y la activación | Bucles de desarrollo local rápidos |
Pipeline solana-verify | Despliegues verificados reproducibles | Pruebas rápidas y desechables en devnet |
| Surfpool / validador local | Simulación pre-mainnet | Lanzamiento a producción |
target/deploy/<nombre_crate>.so más el archivo -keypair.json correspondiente para el ID del programa.
El alquiler de programdata escala con el tamaño del bytecode más las tarifas de transacción. Ejecuta el despliegue en devnet y lee los lamports cobrados en solana confirm -v.
Sí, envía un nuevo .so al mismo ID de programa mientras poseas la autoridad de actualización.
Elimina permanentemente la autoridad de actualización; el programa se vuelve inmutable.
Cuenta temporal que contiene fragmentos de ELF subidos antes de la activación en programdata.
Posible con firmantes compatibles, pero la mayoría de los equipos usan una clave de despliegue activa en devnet y autoridad multisig en mainnet.
A menudo es un búfer parcial o un despliegue concurrente. Cierra búferes obsoletos o espera a que las transacciones en curso se completen.
solana program dump <ID> out.so y compara SHA256 con tu artefacto de compilación, o usa solana-verify para compilaciones reproducibles.
Sí, inicia solana-test-validator y despliega en http://127.0.0.1:8899.
El pagador de tarifas en la transacción de despliegue, normalmente tu keypair de CLI configurado.
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.
Revisado por Chris St. John·Última actualización: 16 jul 2026