Déployez votre premier programme Solana
Construisez, déployez et testez votre premier programme sur la blockchain Solana en utilisant le framework Anchor. Ce guide vous aidera à vous familiariser avec Solana Playground et vous préparera à utiliser les Program Derived Addresses (PDA) et le Cross Program Invocation (CPI).
Créer un projet Anchor
- Ouvrez Solana Playground dans votre navigateur web
- Dans le panneau de gauche, cliquez sur + Créer un nouveau projet
- Saisissez un Nom de projet
- Sélectionnez Anchor (Rust) comme framework
- Cliquez sur Créer
Nouveau projet
Le fichier source src/lib.rs
s'ouvrira. Il contient une structure appelée
Initialize
, qui fait ce qui suit :
- Reçoit un paramètre obligatoire appelé
data: u64
- Crée un nouveau compte
- Enregistre la valeur de
data: u64
dans le nouveau compte - Ajoute un message aux journaux 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
- Compiler le code du programme
$build
Votre identifiant de programme,
défini dans declare_id!()
, sera maintenant mis à jour.
- Ajouter du SOL à votre portefeuille (Facultatif)
Le déploiement d'un programme nécessite du SOL dans le compte on-chain du programme. Si nécessaire, ajoutez du SOL à votre portefeuille avant de passer à l'étape 3.
- Déployer le programme sur le réseau
$deploy
Lors du déploiement, le bytecode du programme est stocké dans un program account exécutable.
Remarque : Si vous préférez, vous pouvez utiliser les boutons Build et Deploy sur le panneau de gauche, comme illustré dans la capture d'écran ci-dessous.
Build et Deploy
Tester le programme
- Ouvrez le fichier de test appelé
tests/anchor.test.ts
. Ce fichier démontre comment invoquer la structureinitialize
du 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));});});
- Exécutez le fichier de test
$test
- Enregistrez le hash de transaction (
TxHash
) inclus dans la sortie
(Dans l'exemple ci-dessus, le hash de transaction est
3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
.)
Remarque : Si vous préférez, vous pouvez utiliser le bouton Test
sur le
panneau de gauche.
Exécuter le test
- Exécutez
solana confirm -v [TxHash]
pour voir les logs de transaction
$solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
- Consultez les détails de la transaction
Ouvrez soit SolanaFM soit Solana Explorer et recherchez le hash de transaction.
Solana Explorer : Définissez le cluster réseau sur devnet
, pour
correspondre à celui du Solana Playground.
Fermer le programme
Fermez le programme pour récupérer le SOL alloué au programme on-chain. Pour ce
faire, exécutez solana program close [ProgramID]
, en utilisant l'adresse du
programme stockée dans la macro declare_id!()
.
$solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r
Les programmes peuvent uniquement être fermés ou mis à jour par un compte ayant l'autorité de mise à jour. Votre portefeuille Playground devient automatiquement l'autorité de mise à jour pour chaque programme lors de son déploiement. Si l'autorité de mise à jour est révoquée, le programme devient immuable.
Félicitations ! Vous avez créé et déployé votre premier programme Solana en utilisant Anchor.
Prochaines étapes
Maintenant que vous avez déployé votre premier programme, vous êtes prêt à explorer les adresses dérivées de programme et l'invocation inter-programmes.
Is this page helpful?