Solana maakt directe, wereldwijde tokenoverdrachten mogelijk met kosten onder de $0,001. Of je nu grensoverschrijdende geldovermakingen, salarisuitbetalingen of treasury- operaties bouwt, een basisbetaling met stablecoins wordt in minder dan een seconde afgewikkeld en kost een fractie van een cent.
Hoe het werkt
Een betaling verplaatst stablecoins van het token account van de verzender naar het token account van de ontvanger. Als de ontvanger deze token voor het eerst ontvangt, kan hun token account worden aangemaakt als onderdeel van dezelfde transactie.
Zie Hoe betalingen werken op Solana voor kernconcepten van betalingen.
De splToken helper uit
@solana/client handelt ATA-
afleiding, decimaalconversie en transactieopbouw automatisch af. Dit is ideaal
voor enkele betalingsoverdrachten.
De onderstaande stappen tonen de kernflow. Zie de Demo voor complete uitvoerbare code.
Maak de token helper aan
Configureer de splToken() helper door client.splToken() aan te roepen met
het mint- adres. De helper biedt methoden voor veelvoorkomende tokenoperaties.
Door tokenProgram: "auto" in te stellen, wordt automatisch gedetecteerd of het
mint account eigendom is van het Token- of Token-2022-programma.
Verstuur de betaling
Gebruik sendTransfer() om tokens tussen wallets over te dragen. De methode
handelt het volgende af:
- ATA-resolutie: Leidt automatisch Associated Token Accounts (ATA's) af voor de verzender en ontvanger. Als de ATA van de ontvanger niet bestaat, wordt de instructie om het account aan te maken automatisch toegevoegd aan dezelfde transactie.
- Decimaalconversie: Accepteert tokenbedragen en converteert automatisch naar basiseenheden op basis van de decimalen van de mint (bijv. 0,25 tokens -> 250000 basis- eenheden, als de mint 6 decimalen heeft)
- Transactieopbouw: Maakt de transactie aan, ondertekent en verstuurt deze met de overdrachtsinstructie
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});
Saldi verifiëren
Nadat de overdracht is voltooid, gebruik je fetchBalance() om de tokensaldi te
verifiëren. Deze methode neemt een wallet-adres en leidt automatisch de
bijbehorende ATA af om het saldo op te halen.
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);
Demo
// 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?