Déploiement de votre premier programme Solana
Dans cette section, vous allez construire, déployer et tester un programme Solana simple (smart contract) en utilisant le framework Anchor. À la fin, vous aurez déployé votre premier programme sur la blockchain Solana.
L'objectif de cette section est de vous familiariser avec Solana Playground. Le guide présente un exemple plus détaillé dans les sections Programme Derived Address (PDA) et Cross-Program Invocation (CPI). Pour plus de détails, consultez la page Programmes sur Solana.
Créer un projet Anchor
Tout d'abord, ouvrez https://beta.solpg.io dans un nouvel onglet du navigateur.
-
Cliquez sur le bouton "Create a new project" dans le panneau de gauche.
-
Saisissez un nom de projet, sélectionnez Anchor comme framework, puis cliquez sur le bouton "Create" .
Nouveau projet
Vous verrez un nouveau projet créé avec le code du programme dans le fichier
src/lib.rs
.
Ce programme Solana de base crée un nouveau compte et y stocke un nombre. Le
programme contient une instruction (initialize
) qui :
- Requiert un paramètre
data: u64
comme entrée - Crée un nouveau compte
- Enregistre la valeur du paramètre
data: u64
dans les données du compte - Journalise un message dans les logs du programme de la transaction
use anchor_lang::prelude::*;// This is your program's public key and it will update// automatically when you build the project.declare_id!("11111111111111111111111111111111");#[program]mod hello_anchor {use super::*;pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {ctx.accounts.new_account.data = data;msg!("Changed data to: {}!", data); // Message will show up in the tx logsOk(())}}#[derive(Accounts)]pub struct Initialize<'info> {// We must specify the space in order to initialize an account.// First 8 bytes are default account discriminator,// next 8 bytes come from NewAccount.data being type u64.// (u64 = 64 bits unsigned integer = 8 bytes)#[account(init,payer = signer,space = 8 + 8)]pub new_account: Account<'info, NewAccount>,#[account(mut)]pub signer: Signer<'info>,pub system_program: Program<'info, System>,}#[account]pub struct NewAccount {data: u64}
Compiler et déployer le programme
Pour compiler le programme, exécutez simplement build
dans le terminal. La
commande build
compile le programme. Le bytecode du programme est ensuite
stocké dans un compte de programme exécutable lors du déploiement.
$build
Solana Playground met à jour l'adresse dans declare_id!()
. Cette adresse
représente l'adresse on-chain de votre programme (ID du programme).
Après avoir compilé le programme, exécutez deploy
dans le terminal pour
déployer le programme sur le réseau (devnet par défaut). Le déploiement du
programme nécessite l'allocation de SOL au compte on-chain qui stocke le
programme.
Avant le déploiement, assurez-vous d'avoir suffisamment de SOL. Vous pouvez
obtenir du SOL sur devnet soit en exécutant solana airdrop 5
dans le
terminal Playground, soit en utilisant le
Web Faucet.
$deploy
Vous pouvez également utiliser les boutons Build
et Deploy
sur le panneau
latéral gauche.
Compiler et déployer
Après avoir déployé le programme, vous pouvez appeler ses instructions.
Tester le programme
Le code de démarrage inclut un fichier de test situé dans
tests/anchor.test.ts
. Ce fichier démontre comment invoquer l'instruction
initialize
sur le programme depuis le client.
// No imports needed: web3, anchor, pg and more are globally availabledescribe("Test", () => {it("initialize", async () => {// Generate keypair for the new accountconst newAccountKp = new web3.Keypair();// Send transactionconst data = new BN(42);const txHash = await pg.program.methods.initialize(data).accounts({newAccount: newAccountKp.publicKey,signer: pg.wallet.publicKey,systemProgram: web3.SystemProgram.programId}).signers([newAccountKp]).rpc();console.log(`Use 'solana confirm -v ${txHash}' to see the logs`);// Confirm transactionawait pg.connection.confirmTransaction(txHash);// Fetch the created accountconst newAccount = await pg.program.account.newAccount.fetch(newAccountKp.publicKey);console.log("On-chain data is:", newAccount.data.toString());// Check whether the data on-chain is equal to local 'data'assert(data.eq(newAccount.data));});});
Pour exécuter le fichier de test après avoir déployé le programme, exécutez
test
dans le terminal.
$test
Recherchez une sortie qui confirme que le test a réussi.
Vous pouvez également utiliser le bouton Test
sur le panneau latéral gauche.
Exécuter le test
Vous pouvez ensuite consulter les logs de transaction en exécutant la commande
solana confirm -v
et en spécifiant le hash de transaction (signature) à partir
de la sortie du test :
$solana confirm -v [TxHash]
Par exemple :
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
Vous pouvez également consulter les détails de la transaction sur SolanaFM ou Solana Explorer en recherchant la signature de transaction (hash).
N'oubliez pas de mettre à jour la connexion au cluster (réseau) sur l'Explorateur que vous utilisez pour correspondre à Solana Playground. Solana Playground utilise le cluster devnet par défaut.
Fermer le programme
Enfin, la fermeture du programme permet la récupération complète du SOL alloué au programme on-chain.
Vous pouvez fermer un programme en exécutant la commande suivante et en
spécifiant l'adresse du programme trouvée dans declare_id!()
:
$solana program close [ProgramID]
Par exemple :
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Félicitations. Vous venez de construire et de déployer votre premier programme Solana en utilisant le framework Anchor.
Is this page helpful?