Basisbetaling

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 token2022Program() plugin van @solana-program/token-2022 breidt je @solana/kit client uit met een client.token2022 helper. De transferToATA methode verwerkt ATA-afleiding en transactieopbouw automatisch, wat ideaal is voor enkelvoudige betalingsoverdrachten.

De onderstaande stappen tonen de kernflow. Zie de Demo voor complete uitvoerbare code.

Maak de token helper aan

Voeg de token2022Program() plugin toe aan je client met .use(token2022Program()). Dit maakt client.token2022 beschikbaar, waarvan de instructions methoden biedt voor veelgebruikte tokenbewerkingen.

Gebruik token2022Program() voor mints die eigendom zijn van het Token-2022 programma, of tokenProgram() van @solana-program/token voor mints die eigendom zijn van het originele Token program.

Verstuur de betaling

Gebruik transferToATA() om tokens tussen wallets over te dragen. De methode verwerkt:

  • ATA-resolutie: Leidt automatisch Associated Token Accounts (ATAs) 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.
  • Gecontroleerde bedragen: Geef amount door in basisunits samen met de decimals van de mint. De overdracht wordt gecontroleerd aan de hand van de decimalen van de mint on-chain (bijv. 250000 basisunits -> 0,25 tokens, als de mint 6 decimalen heeft)
  • Transactieopbouw: sendTransaction() bouwt, ondertekent en verstuurt de transactie, en geeft een resultaat terug waarvan context.signature de transactiehandtekening bevat
Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n,
decimals: 6
})
.sendTransaction();

Saldi verifiëren

Na afloop van de overdracht lees je de tokensaldi op uit de RPC. Leid de ATA van elke wallet af met findAssociatedTokenPda(), roep vervolgens getTokenAccountBalance() aan om het saldo van dat account op te halen.

Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n,
decimals: 6
})
.sendTransaction();
const [senderAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: sender.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const [recipientAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: recipient.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const senderBalance = await client.rpc.getTokenAccountBalance(senderAta).send();
const recipientBalance = await client.rpc
.getTokenAccountBalance(recipientAta)
.send();

Maak de token helper aan

Voeg de token2022Program() plugin toe aan je client met .use(token2022Program()). Dit maakt client.token2022 beschikbaar, waarvan de instructions methoden biedt voor veelgebruikte tokenbewerkingen.

Gebruik token2022Program() voor mints die eigendom zijn van het Token-2022 programma, of tokenProgram() van @solana-program/token voor mints die eigendom zijn van het originele Token program.

Verstuur de betaling

Gebruik transferToATA() om tokens tussen wallets over te dragen. De methode verwerkt:

  • ATA-resolutie: Leidt automatisch Associated Token Accounts (ATAs) 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.
  • Gecontroleerde bedragen: Geef amount door in basisunits samen met de decimals van de mint. De overdracht wordt gecontroleerd aan de hand van de decimalen van de mint on-chain (bijv. 250000 basisunits -> 0,25 tokens, als de mint 6 decimalen heeft)
  • Transactieopbouw: sendTransaction() bouwt, ondertekent en verstuurt de transactie, en geeft een resultaat terug waarvan context.signature de transactiehandtekening bevat

Saldi verifiëren

Na afloop van de overdracht lees je de tokensaldi op uit de RPC. Leid de ATA van elke wallet af met findAssociatedTokenPda(), roep vervolgens getTokenAccountBalance() aan om het saldo van dat account op te halen.

Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());

Demo

Demo
// Generate signers for sender and recipient
const sender = await generateKeyPairSigner();
const recipient = await generateKeyPairSigner();
console.log("Sender Address:", sender.address);
console.log("Recipient Address:", recipient.address);
// Demo Setup: Create client, mint account, and fund the sender with initial tokens
const { client, mint } = await demoSetup(sender);
console.log("\nMint Address:", mint.address);
// =============================================================================
// Basic Token Payment Demo
// =============================================================================
// Transfer tokens from sender to recipient. The source and destination ATAs are
// derived automatically, and the recipient's ATA is created if it does not exist.
const result = await client.token2022.instructions
.transferToATA({
mint: mint.address,
authority: sender,
recipient: recipient.address,
amount: 250_000n, // 0.25 tokens (base units for a mint with 6 decimals)
decimals: 6
})
.sendTransaction();
console.log("\n=== Token Payment Complete ===");
console.log("Transaction Signature:", result.context.signature);
// Derive the sender and recipient ATAs to read their balances
const [senderAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: sender.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
const [recipientAta] = await findAssociatedTokenPda({
mint: mint.address,
owner: recipient.address,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS
});
// Fetch final token account balances via RPC
const senderBalance = await client.rpc.getTokenAccountBalance(senderAta).send();
const recipientBalance = await client.rpc
.getTokenAccountBalance(recipientAta)
.send();
console.log(
"\nSender Token Account Balance:",
senderBalance.value.uiAmountString
);
console.log(
"Recipient Token Account Balance:",
recipientBalance.value.uiAmountString
);
// =============================================================================
// Demo Setup Helper Function
// =============================================================================
Console
Click to execute the code.

Is this page helpful?

Inhoudsopgave

Pagina Bewerken
© 2026 Solana Foundation. Alle rechten voorbehouden.