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

  1. Ouvrez Solana Playground dans votre navigateur web
  2. Dans le panneau de gauche, cliquez sur + Créer un nouveau projet
  3. Saisissez un Nom de projet
  4. Sélectionnez Anchor (Rust) comme framework
  5. Cliquez sur Créer

Nouveau projetNouveau 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
lib.rs
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 logs
Ok(())
}
}
#[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

  1. Compiler le code du programme
Terminal
$
build

Votre identifiant de programme, défini dans declare_id!(), sera maintenant mis à jour.

  1. 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.

  1. Déployer le programme sur le réseau
Terminal
$
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 DeployBuild et Deploy

Tester le programme

  1. Ouvrez le fichier de test appelé tests/anchor.test.ts. Ce fichier démontre comment invoquer la structure initialize du programme depuis le client.
anchor.test.ts
// No imports needed: web3, anchor, pg and more are globally available
describe("Test", () => {
it("initialize", async () => {
// Generate keypair for the new account
const newAccountKp = new web3.Keypair();
// Send transaction
const 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 transaction
await pg.connection.confirmTransaction(txHash);
// Fetch the created account
const 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));
});
});
  1. Exécutez le fichier de test
Terminal
$
test
  1. 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 testExécuter le test

  1. Exécutez solana confirm -v [TxHash] pour voir les logs de transaction
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. 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!().

Terminal
$
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?

Table des matières

Modifier la page