Déploiement de programmes
Cette section explique le processus de base pour déployer un programme Solana en utilisant la CLI Solana.
Référence des commandes CLI
Tâche | Commande |
---|---|
Compiler le programme | cargo build-sbf |
Déployer un nouveau programme | solana program deploy <path_to_program.so> |
Mettre à jour un programme existant | solana program deploy <path_to_program.so> (identique au déploiement) |
Afficher les infos du programme | solana program show <program-id> |
Transférer l'autorité du programme | solana program set-upgrade-authority <program-id> --new-upgrade-authority <path_to_keypair> |
Rendre le programme immuable | solana program set-upgrade-authority <program-id> --final |
Fermer le programme | solana program close <program-id> --bypass-warning |
Vérifier le solde du portefeuille | solana balance |
Demander un airdrop (devnet/localhost) | solana airdrop 2 |
Concepts clés
Avant de commencer, clarifions quelques termes :
- ID du programme : L'adresse de votre programme sur la blockchain. Les utilisateurs interagissent avec votre programme en référençant l'ID du programme.
- Program Account : Le compte sur la blockchain qui stocke les métadonnées de votre programme. L'adresse du program account est l'ID du programme. Le program account stocke également l'adresse du ProgramData Account.
- ProgramData Account : Le compte sur la blockchain qui stocke le code exécutable déployé de votre programme.
- Autorité du programme : Le compte qui a la permission de mettre à jour ou de fermer le programme. Par défaut, il s'agit de votre portefeuille CLI.
Prérequis
Configurer le portefeuille
Après l'installation, créez un portefeuille local avec une paire de clés. L'adresse de ce portefeuille est définie comme l'autorité du programme par défaut lors du déploiement des programmes :
$solana-keygen new
Cela crée une paire de clés à ~/.config/solana/id.json
par défaut.
Configurer le cluster
Choisissez le cluster Solana sur lequel déployer. Utilisez la commande
solana config get
pour vérifier votre configuration actuelle :
$solana config get
Basculez entre les clusters selon vos besoins :
$solana config set --url mainnet-beta$solana config set --url devnet$solana config set --url localhost$solana config set --url testnet$solana config set --url "https://your-rpc-url.com"
Financer le portefeuille
Vous aurez besoin de SOL pour payer les déploiements de programmes. Le montant dépend de la taille de votre programme.
Pour devnet ou localhost, financez votre portefeuille à l'aide de la commande
solana airdrop
:
$solana airdrop 2
Vérifiez le solde de votre portefeuille :
$solana balance
Opérations de base
Compiler le programme
Pour compiler un programme, utilisez la commande cargo build-sbf
:
$cargo build-sbf
Programme d'exemple
Voici un programme Solana minimal qui affiche "Hello, Solana!" dans les logs du programme.
use solana_program::{account_info::AccountInfo, entrypoint, entrypoint::ProgramResult, msg, pubkey::Pubkey,};entrypoint!(process_instruction);pub fn process_instruction(_program_id: &Pubkey,_accounts: &[AccountInfo],_instruction_data: &[u8],) -> ProgramResult {msg!("Hello, Solana!");Ok(())}
Résultat de la compilation
Compilez votre programme en utilisant la commande cargo build-sbf
:
$cargo build-sbf
Cela crée deux fichiers importants dans target/deploy/
:
hello_world-keypair.json
: Un fichier keypair dont la clé publique sera utilisée comme votre ID de programmehello_world.so
: L'exécutable du programme compilé
Vérifier la taille et le coût du programme
Le déploiement d'un programme nécessite que des SOL soient alloués au compte du programme en fonction de la taille du programme. Les programmes plus volumineux coûtent plus de SOL à déployer.
Vérifiez la taille de votre programme :
$wc -c < ./target/deploy/hello_world.so
Calculez les SOL nécessaires pour cette taille (en octets) :
$solana rent 18504
Vous aurez besoin d'un peu plus de SOL que ce qui est indiqué pour couvrir les frais de transaction du déploiement.
Déployer le programme
Utilisez la commande solana program deploy
pour déployer votre programme :
$solana program deploy ./target/deploy/hello_world.so
L'ID du programme affiché est l'adresse permanente de votre programme sur le réseau.
Pour déployer avec un ID de programme spécifique (au lieu de celui généré automatiquement), utilisez :
$solana program deploy ./target/deploy/hello_world.so --program-id ./custom-keypair.json
Vous pouvez générer de nouveaux keypairs en utilisant la commande
solana-keygen
:
$solana-keygen new -o ./custom-keypair.json
Mettre à jour le programme
Mettez à jour votre programme en utilisant la même commande
solana program deploy
:
- Apportez des modifications à votre code de programme
- Recompilez votre programme :
cargo build-sbf
- Déployez la mise à jour :
$solana program deploy ./target/deploy/hello_world.so
Si votre programme mis à jour nécessite plus d'espace (octets) que ce qui est actuellement alloué, le déploiement étendra automatiquement le compte du programme. Cela se produit lorsque votre nouveau programme est plus volumineux que la version précédente. Le compte du programme a besoin d'octets supplémentaires pour stocker le nouveau programme. L'interface en ligne de commande calculera automatiquement le SOL requis et le déduira de votre portefeuille.
Vous pouvez également étendre manuellement un programme pour allouer plus d'octets :
$solana program extend 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE 1000
Gestion du programme
Une fois votre programme déployé, il existe plusieurs commandes courantes pour gérer le compte du programme.
Afficher les métadonnées du programme
Pour vérifier les métadonnées de votre programme, utilisez la commande
solana program show
:
$solana program show 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE
Exemple de sortie :
$ solana program show 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7Program Id: 7283x8k8fyBcfaFLyPsxbd2VV1AMmZFP7FNoyTXVKJw7Owner: BPFLoaderUpgradeab1e11111111111111111111111ProgramData Address: Gqn7YQVCP8NtYV1qkEqR4Udhj8EJ3fkikvS7HskCNQ7cAuthority: 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1Last Deployed In Slot: 6573Data Length: 18504 (0x4848) bytesBalance: 0.12999192 SOL
Transférer l'autorité du programme
Pour transférer l'autorité du programme à un compte différent, utilisez la
commande solana program set-upgrade-authority
:
$solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --new-upgrade-authority ./new-authority-keypair.json
Après avoir transféré l'autorité du programme, vous ne pourrez plus mettre à jour le programme à moins d'avoir accès à la nouvelle paire de clés d'autorité.
Rendre votre programme immuable
Pour rendre votre programme immuable, utilisez la commande
solana program set-upgrade-authority
avec l'option --final
pour supprimer
l'autorité du programme :
$solana program set-upgrade-authority 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --final
Une fois qu'un programme est immuable, il ne peut plus jamais être mis à jour ou fermé.
Fermer votre programme
Pour fermer votre programme et récupérer le SOL alloué au compte du programme,
utilisez la commande solana program close
:
$solana program close 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE --bypass-warning
Une fois fermé, l'ID du programme ne peut pas être réutilisé. Vous ne pouvez pas déployer un nouveau programme à la même adresse.
Commandes utilitaires
Lister tous les programmes
Afficher tous les programmes où votre portefeuille actuel est l'autorité :
$solana program show --programs
Exemple de sortie :
Program Id | Slot | Authority | Balance-------------------------------------------------|------------|------------------------------------------------|-------------7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE | 249885434 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.129991923KSGCk4m5hqJkTjPHBXUCPcqMwJnK3VmkqEsFUKKGJPK | 249883212 | 5kh6HxYZiAebF8HWLsUWod2EaQQ6iWHpHYCz8UcmFbM1 | 0.28654328
Télécharger un programme déployé
Pour télécharger un programme déployé, utilisez la commande
solana program dump
:
$solana program dump 7NxQjW8H8hVcqBKgXbVDWqGQCovHbqDW9p1SJJwUyTpE ./downloaded_program.so
Options avancées
Drapeaux de déploiement
Lorsque le réseau Solana est congestionné, utilisez ces drapeaux pour faciliter le déploiement de programmes.
Exemple d'utilisation :
$solana program deploy ./target/deploy/hello_world.so \--with-compute-unit-price 10000 \--max-sign-attempts 10 \--use-rpc
Explication des options :
--with-compute-unit-price
: Définit les frais prioritaires en micro-lamports (0,000001 SOL) par unité de calcul. Consultez l'API de frais prioritaires Helius pour les tarifs actuels. Les frais prioritaires sont des frais supplémentaires payés au leader actuel pour prioriser votre transaction.--max-sign-attempts
: Nombre de tentatives avec un nouveau blockhash si les transactions expirent. (Par défaut : 5)--use-rpc
: Envoie les transactions au RPC configuré. Ce drapeau nécessite une connexion RPC pondérée par enjeu fournie par des prestataires tels que Triton ou Helius.
Is this page helpful?