Despliegue de programas

Resumen

Los programas desplegados mediante loader-v3 pueden actualizarse cuando se establece una autoridad de actualización. Revocar la autoridad hace que el programa sea inmutable. Cubre el mecanismo de actualización de 9 pasos, las 9 instrucciones de loader-v3, la verificación de compilación y los 5 tipos de cargadores.

Despliegue de programas

Actualización de programas

Para actualizar un programa, una cuenta debe poseer la autoridad de actualización (normalmente la cuenta que originalmente desplegó el programa). Durante el despliegue o actualización, el nuevo bytecode se carga en una cuenta de búfer temporal y luego se escribe en la cuenta de datos del programa. Establecer la autoridad de actualización como None hace que el programa sea inmutable y previene permanentemente futuras actualizaciones.

Mecanismo de actualización

Cuando se procesa UpgradeableLoaderInstruction::Upgrade, el runtime:

  1. Verifica que la cuenta del programa sea escribible y esté en propiedad de loader-v3.
  2. Verifica que la cuenta de búfer contenga un estado Buffer con la autoridad correcta.
  3. Verifica que el upgrade_authority_address de la cuenta ProgramData coincida y no sea None.
  4. Verifica que el programa no haya sido desplegado ya en el slot actual (clock.slot != slot).
  5. Carga y verifica los nuevos bytes ELF desde el búfer.
  6. Copia el nuevo bytecode desde el búfer a la cuenta ProgramData y pone a cero los bytes restantes.
  7. Financia la cuenta ProgramData hasta la exención de renta.
  8. Vacía la cuenta de búfer (establece lamports a 0) y trunca sus datos.
  9. La nueva versión entra en vigor en el siguiente slot (deployment_slot + 1).

La cuenta Program en sí (su estado y el puntero programdata_address) no cambia durante una actualización. Solo se actualizan el bytecode de la cuenta ProgramData y los metadatos del slot.

Referencia de instrucciones de Loader-v3

Loader-v3 (BPF Loader Upgradeable) es el cargador predeterminado actual para desplegar programas en Solana.

InstrucciónDescripción
InitializeBufferEstablece el estado de una cuenta de búfer a Buffer con la autoridad especificada. Falla si ya está inicializada.
WriteEscribe bytes en el desplazamiento especificado en una cuenta de búfer. La autoridad debe firmar.
DeployWithMaxDataLenCrea un nuevo programa: deriva la dirección de ProgramData, crea la cuenta ProgramData mediante CPI al System Program, verifica y despliega el ELF desde el búfer, establece el estado de la cuenta del programa y la marca como ejecutable.
UpgradeReemplaza el bytecode en la cuenta ProgramData de un programa existente desde un búfer.
SetAuthorityCambia la autoridad de una cuenta Buffer o ProgramData. Establecerla a None en ProgramData hace que el programa sea inmutable. La autoridad del búfer no puede establecerse a None.
SetAuthorityCheckedSimilar a SetAuthority, pero requiere que la nueva autoridad también firme la transacción.
CloseCierra una cuenta de búfer, no inicializada o ProgramData transfiriendo sus lamports a un destinatario. Cerrar ProgramData también escribe una marca Closed en la caché del programa. No puede cerrar un programa que fue desplegado en el slot actual.
ExtendProgramCheckedExtiende la asignación de la cuenta ProgramData en bytes adicionales, financiando el rent extra desde el pagador.
MigrateMigra un programa loader-v3 a loader-v4 transfiriendo la propiedad de la cuenta del programa y copiando el bytecode. Requiere que la autoridad de migración o la autoridad de actualización del programa firme. Loader-v4 aún no está disponible en mainnet.

Verificación de programas

Solana admite compilaciones verificables, que permiten a los usuarios confirmar que el bytecode en cadena de un programa coincide con su código fuente público. El framework Anchor proporciona soporte integrado para compilaciones verificables.

Para verificar el estado de verificación de un programa desplegado, busca su ID de programa en el Solana Explorer, o utiliza la CLI de compilación verificable de Solana de Ellipsis Labs para verificar de forma independiente los programas en cadena.

Programas de carga

CargadorDirecciónActualizableDescripción
Native LoaderNativeLoader1111111111111111111111111111111Solo mediante actualización del software del validadorPosee builtins (System, Vote, Stake) y otros cargadores
BPF Loader (v1)BPFLoader1111111111111111111111111111111111No (gestión del cargador deshabilitada)Programas heredados
BPF Loader (v2)BPFLoader2111111111111111111111111111111111No (gestión del cargador deshabilitada)Programas heredados
BPF Loader UpgradeableBPFLoaderUpgradeab1e11111111111111111111111Sí, si la autoridad de actualización está configuradaPosee todos los programas recién desplegados
Loader-v4LoaderV411111111111111111111111111111111111Sí, si la autoridad está configuradaAún no lanzado en mainnet

Is this page helpful?

Tabla de Contenidos

Editar Página

Gestionado por

© 2026 Fundación Solana.
Todos los derechos reservados.
Conéctate