Conceptos básicos de despliegue
7 ejemplos para empezar con el despliegue de programas: 4 básicos y 3 intermedios. Cubre el cargador BPF, las cuentas de programa/buffer, los comandos de despliegue y la autoridad de actualización en Agave 4.1.1.
Prerrequisitos
- Solana CLI 3.0.10 instalado y una billetera financiada en devnet.
- Artefacto de programa compilado:
anchor buildproducetarget/deploy/*.so.
solana config set --url devnet
solana airdrop 2
anchor buildEjemplos básicos
1. Inspeccionar una cuenta de programa
Los programas desplegados son cuentas ejecutables propiedad del cargador BPF.
solana program show <PROGRAM_ID>- Muestra la dirección de los datos del programa, la autoridad y la última ranura de despliegue.
- La cuenta
ProgramDatacontiene los bytes ELF y la clave pública de la autoridad de actualización. - El indicador ejecutable está activado en la cuenta del programa.
Relacionado: Despliegue de programas
2. Desplegar con Solana CLI
El despliegue estándar carga el .so en un buffer y luego lo copia a la cuenta del programa.
solana program deploy target/deploy/my_program.so \
--program-id target/deploy/my_program-keypair.json- Cuesta el alquiler de la cuenta de datos del programa proporcional al tamaño del
.so. - El JSON del par de claves define la dirección del programa (o genera uno nuevo).
- El valor predeterminado utiliza el cargador actualizable en la CLI moderna.
Relacionado: Actualizaciones de programas
3. Desplegar con Anchor
Anchor integra la compilación y el despliegue en el flujo de trabajo del espacio de trabajo.
anchor deploy --provider.cluster devnet- Utiliza la billetera de
Anchor.tomlcomo pagador y autoridad de actualización por defecto. - Los IDs de programa deben coincidir con
declare_id!en el código fuente de Rust. anchor keys syncactualiza las rutas de los pares de claves enAnchor.toml.
4. Leer la autoridad de actualización
Quien posea la autoridad de actualización puede reemplazar el bytecode del programa.
solana program show <PROGRAM_ID> | grep AuthorityNonesignifica programa inmutable (autoridad revocada).- La autoridad debe migrar a una multisig antes de la TVL en mainnet.
- Perder la clave privada de la autoridad bloquea la ruta de actualización para siempre.
Relacionado: Hacer programas inmutables
Ejemplos intermedios
5. Flujo de trabajo de la cuenta de buffer
Los programas grandes se despliegan a través de un buffer intermedio para permitir la reanudación en caso de fallo.
solana program write-buffer target/deploy/my_program.so
solana program deploy --buffer <BUFFER_ADDRESS> --program-id <PROGRAM_ID>- El buffer contiene cargas parciales durante el despliegue.
- Útil en redes inestables o artefactos grandes.
- Cierra el buffer para recuperar el alquiler después de un despliegue exitoso.
6. Verificar el hash ejecutable
Compara la compilación local con el programa en cadena con solana-verify.
solana-verify get-executable-hash target/deploy/my_program.so
solana-verify get-program-hash <PROGRAM_ID> --url devnet- Los hashes deben coincidir después de un pipeline de compilación reproducible.
- Publica el hash con una etiqueta de lanzamiento para los auditores.
Relacionado: Compilaciones verificables
7. Autoridad controlada por gobernanza
Autoridad de actualización de producción en una multisig de Squads.
solana program set-upgrade-authority <PROGRAM_ID> --new-upgrade-authority <SQUADS_MULTISIG>- Las actualizaciones se convierten en propuestas de multisig, no en comandos CLI individuales.
- Documenta la plantilla de propuesta y los requisitos de prueba.
Relacionado: Actualizaciones controladas por gobernanza
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.