Typescript
SPL Token avec Web3.js

SPL Token avec Web3.js

Instruction Transfer

Déplace les jetons d'un compte à un autre. Il s'agit de l'opération de base permettant d'envoyer des jetons entre utilisateurs.

Avant de pouvoir transférer un jeton, nous devons déjà avoir :

  • Initialisé un compte de Mint
  • Un compte de Token ou Associated Token source qui contient déjà au moins le montant que nous souhaitons transférer
  • Un compte de Token ou Associated Token de destination qui recevra les jetons du compte de Token source

Le nombre de jetons que nous transférons est "normalisé" au niveau des décimales. Cela signifie que si nous voulons transférer 1 jeton comportant 6 décimales, nous devrons en réalité saisir 1e6 comme montant

Instruction Brute

En utilisant uniquement une instruction "brute" sans aucune abstraction, voici à quoi ressemble le transfert d'un jeton :

ts
const destination = Keypair.generate();
 
const destinationTokenAccount = await getAssociatedTokenAddress(
    mint.publicKey,
    destination.publicKey,
);
 
// Create ATA creation instruction
const createAtaInstruction = createAssociatedTokenAccountIdempotentInstruction(
    keypair.publicKey, // payer
    destinationTokenAccount, // associated token account address
    destination.publicKey, // owner
    mint.publicKey, // mint
);
 
// Transfer tokens to ATA 
const transferInstruction = createTransferInstruction(
    sourceTokenAccount, // source token account pubkey
    destinationTokenAccount, // destination token account pubkey
    keypair.publicKey, // owner of the source token account
    1e6, // amount
);
 
const transaction = new Transaction().add(
    createAtaInstruction,
    transferInstruction,
);
 
const signature = await sendAndConfirmTransaction(connection, transaction, [keypair]);
 
console.log(`Token accounts created and tokens transferred! Check out your TX here: https://explorer.solana.com/tx/${signature}?cluster=devnet`);

Instruction Abstraite

Voici à quoi ressemble la même instruction si elle est abstraite à l'aide de l'instruction transfer() :

ts
const destination = Keypair.generate();
 
const destinationAta = await getOrCreateAssociatedTokenAccount(
    connection,
    keypair,
    mint,
    destination.publicKey
);
 
console.log(`This is your ATA: ${ata.address}!`)
  
let tx = await transfer(
    connection, // connection
    keypair, // payer
    sourceAta, // source token account
    destinationAta, // destination token account
    keypair.publicKey, // owner of the source token account
    1e6, // amount to transfer
);
 
console.log(`Succesfully Transferred!. Transaction Here: https://explorer.solana.com/tx/${tx}?cluster=devnet`)

Instruction Vérifiée

Blueshift © 2025Commit: 6d01265
Blueshift | SPL Token avec Web3.js | Transfer