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`,
);
Expand
[15 more lines]

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: ${destinationAta.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`,
);
Expand
[8 more lines]

Instruction Vérifiée

Blueshift © 2026Commit: 3c44267