Solana permet des transferts de tokens instantanés et mondiaux avec des frais inférieurs à 0,001 $. Que vous développiez des transferts de fonds transfrontaliers, des versements de salaires ou des opérations de trésorerie, un paiement de stablecoin de base se règle en moins d'une seconde et coûte une fraction de centime.
Comment ça fonctionne
Un paiement déplace des stablecoins du token account de l'expéditeur vers le token account du destinataire. Si le destinataire reçoit ce token pour la première fois, son token account peut être créé dans le cadre de la même transaction.
Consultez Comment fonctionnent les paiements sur Solana pour les concepts de paiement fondamentaux.
L'assistant splToken de
@solana/client gère automatiquement
la dérivation ATA, la conversion des décimales et la construction de la
transaction. C'est idéal pour les transferts de paiement uniques.
Les étapes ci-dessous montrent le flux principal. Consultez la Démo pour le code complet exécutable.
Créer l'assistant de token
Configurez l'assistant splToken() en appelant client.splToken() avec
l'adresse du mint account. L'assistant fournit des méthodes pour les opérations
de token courantes.
Définir tokenProgram: "auto" détecte automatiquement si le mint account
appartient au programme Token ou Token-2022.
Envoyer le paiement
Utilisez sendTransfer() pour transférer des tokens entre portefeuilles. La
méthode gère :
- Résolution ATA : Dérive automatiquement les Associated Token Accounts (ATA) pour l'expéditeur et le destinataire. Si l'ATA du destinataire n'existe pas, l'instruction pour créer le compte est automatiquement ajoutée à la même transaction.
- Conversion des décimales : Accepte les montants de tokens et les convertit automatiquement en unités de base selon les décimales du mint account (par exemple, 0,25 tokens -> 250000 unités de base, si le mint account a 6 décimales)
- Construction de la transaction : Crée, signe et envoie la transaction avec l'instruction de transfert
const client = createClient({endpoint: "http://localhost:8899",websocketEndpoint: "ws://localhost:8900",commitment: "confirmed"});const splToken = client.splToken({mint: mint.address,tokenProgram: "auto"});const signature = await splToken.sendTransfer({amount: 0.25,authority: sender,destinationOwner: recipient.address});
Vérifier les soldes
Une fois le transfert terminé, utilisez fetchBalance() pour vérifier les
soldes de jetons. Cette méthode prend une adresse de portefeuille et dérive
automatiquement l'ATA correspondant pour récupérer le solde.
const client = createClient({endpoint: "http://localhost:8899",websocketEndpoint: "ws://localhost:8900",commitment: "confirmed"});const splToken = client.splToken({mint: mint.address,tokenProgram: "auto"});const signature = await splToken.sendTransfer({amount: 0.25,authority: sender,destinationOwner: recipient.address});const senderBalance = await splToken.fetchBalance(sender.address);const recipientBalance = await splToken.fetchBalance(recipient.address);
Démo
// Generate keypairs for sender and recipientconst sender = (await generateKeypair()).signer;const recipient = (await generateKeypair()).signer;console.log("Sender Address:", sender.address);console.log("Recipient Address:", recipient.address);// Demo Setup: Create client, mint account, token accounts, and fund with initial tokensconst { client, mint } = await demoSetup(sender, recipient);console.log("\nMint Address:", mint.address);// =============================================================================// Basic Token Payment Demo// =============================================================================// Create splToken helper for this mint using @solana/clientconst splToken = client.splToken({mint: mint.address,tokenProgram: "auto"});// Transfer tokens from sender to recipient (ATA and decimals handled automatically)const signature = await splToken.sendTransfer({amount: 0.25,authority: sender,destinationOwner: recipient.address});console.log("\n=== Token Payment Complete ===");console.log("Transaction Signature:", signature.toString());// Fetch final token account balances using splToken helperconst senderBalance = await splToken.fetchBalance(sender.address);const recipientBalance = await splToken.fetchBalance(recipient.address);console.log("\nSender Token Account Balance:", senderBalance);console.log("Recipient Token Account Balance:", recipientBalance);// =============================================================================// Demo Setup Helper Function// =============================================================================
Is this page helpful?