Déploiement de programmes

Résumé

Les programmes déployés via loader-v3 peuvent être mis à niveau lorsqu'une autorité de mise à niveau est définie. La révocation de l'autorité rend le programme immuable. Couvre le mécanisme de mise à niveau, les instructions de déploiement et de mise à niveau loader-v3, la vérification de build, et les programmes de chargement disponibles.

Déploiement de programmes

Mise à niveau de programmes

Pour mettre à niveau un programme, un compte doit détenir l'autorité de mise à niveau (généralement le compte qui a initialement déployé le programme). Lors du déploiement ou de la mise à niveau, le nouveau bytecode est téléchargé vers un compte tampon temporaire, puis écrit dans le programdata account. Définir l'autorité de mise à niveau sur None rend le programme immuable et empêche définitivement toute mise à jour ultérieure.

Mécanisme de mise à niveau

Lorsque UpgradeableLoaderInstruction::Upgrade est traité, le runtime :

  1. Vérifie que le program account est modifiable et appartient à loader-v3.
  2. Vérifie que le compte tampon contient un état Buffer avec l'autorité correcte.
  3. Vérifie que l'upgrade_authority_address du programdata account correspond et n'est pas None.
  4. Vérifie que le programme n'a pas déjà été déployé dans le slot actuel (clock.slot != slot).
  5. Charge et vérifie les nouveaux octets ELF depuis le tampon.
  6. Copie le nouveau bytecode depuis le tampon dans le programdata account et met à zéro les octets restants.
  7. Finance le programdata account pour l'exemption de loyer.
  8. Vide le compte tampon (définit les lamports à 0) et tronque ses données.
  9. La nouvelle version devient effective dans le slot suivant (deployment_slot + 1).

Le compte Program lui-même (son état et le pointeur programdata_address) ne change pas lors d'une mise à niveau. Seuls le bytecode du compte ProgramData et les métadonnées de slot sont mis à jour.

Référence des instructions Loader-v3

Loader-v3 (BPF Loader Upgradeable) est le chargeur par défaut actuel pour déployer des programmes sur Solana.

InstructionDescription
InitializeBufferDéfinit l'état d'un compte tampon sur Buffer avec l'autorité spécifiée. Échoue si déjà initialisé.
WriteÉcrit des octets à l'offset spécifié dans un compte tampon. L'autorité doit signer.
DeployWithMaxDataLenCrée un nouveau programme : dérive l'adresse ProgramData, crée le compte ProgramData via CPI vers le System Program, vérifie et déploie l'ELF depuis le tampon, définit l'état du compte Program et le marque comme exécutable.
UpgradeRemplace le bytecode dans le compte ProgramData d'un programme existant à partir d'un tampon.
SetAuthorityModifie l'autorité d'un compte Buffer ou ProgramData. Définir sur None sur ProgramData rend le programme immuable. L'autorité Buffer ne peut pas être définie sur None.
SetAuthorityCheckedSimilaire à SetAuthority, mais requiert également que la nouvelle autorité signe la transaction.
CloseFerme un compte tampon, non initialisé, ou ProgramData en transférant ses lamports vers un destinataire. La fermeture de ProgramData écrit également une pierre tombale Closed dans le cache du programme. Ne peut pas fermer un programme déployé dans le slot actuel.
ExtendProgramCheckedÉtend l'allocation du compte ProgramData d'octets supplémentaires, en finançant le rent supplémentaire depuis le payeur.

Vérification des programmes

Solana prend en charge les builds vérifiables, qui permettent aux utilisateurs de confirmer que le bytecode onchain d'un programme correspond à son code source public. Le framework Anchor fournit une prise en charge intégrée pour les builds vérifiables.

Pour vérifier le statut de vérification d'un programme déployé, recherchez son identifiant de programme sur le Solana Explorer, ou utilisez la CLI de construction vérifiable Solana d'Ellipsis Labs pour vérifier indépendamment les programmes onchain.

Programmes de chargement

ChargeurAdresseÉvolutifDescription
Native LoaderNativeLoader1111111111111111111111111111111Uniquement via mise à jour du logiciel validatorPossède les builtins (System, Vote, Stake) et autres chargeurs
BPF Loader (v1)BPFLoader1111111111111111111111111111111111Non (gestion du chargeur désactivée)Programmes legacy
BPF Loader (v2)BPFLoader2111111111111111111111111111111111Non (gestion du chargeur désactivée)Programmes legacy
BPF Loader UpgradeableBPFLoaderUpgradeab1e11111111111111111111111Oui, si l'autorité de mise à jour est définiePossède tous les programmes nouvellement déployés

Is this page helpful?

Table des matières

Modifier la page

Géré par

© 2026 Fondation Solana.
Tous droits réservés.
Restez connecté