Grundlegende Zahlung

Solana ermöglicht sofortige, globale Token-Überweisungen mit Gebühren unter 0,001 $. Egal, ob Sie grenzüberschreitende Überweisungen, Gehaltsauszahlungen oder Treasury- Operationen aufbauen – eine grundlegende Stablecoin-Zahlung wird in unter einer Sekunde abgewickelt und kostet einen Bruchteil eines Cents.

So funktioniert es

Eine Zahlung verschiebt Stablecoins vom Token-Konto des Absenders zum Token-Konto des Empfängers. Wenn der Empfänger diesen Token zum ersten Mal erhält, kann sein Token-Konto als Teil derselben Transaktion erstellt werden.

Siehe Wie Zahlungen auf Solana funktionieren für grundlegende Zahlungskonzepte.

Das token2022Program()-Plugin aus @solana-program/token-2022 erweitert Ihren @solana/kit-Client um einen client.token2022-Helper. Dessen Methode transferToATA übernimmt die ATA-Ableitung und den Transaktionsaufbau automatisch – ideal für einzelne Zahlungsüberweisungen.

Die folgenden Schritte zeigen den grundlegenden Ablauf. Siehe die Demo für vollständigen ausführbaren Code.

Token-Helfer erstellen

Fügen Sie das token2022Program()-Plugin mit .use(token2022Program()) zu Ihrem Client hinzu. Dadurch wird client.token2022 verfügbar, dessen instructions Methoden für gängige Token-Operationen bereitstellen.

Verwenden Sie token2022Program() für Mints, die dem Token-2022-Programm gehören, oder tokenProgram() aus @solana-program/token für Mints, die dem ursprünglichen Token Program gehören.

Zahlung senden

Verwenden Sie transferToATA(), um Token zwischen Wallets zu übertragen. Die Methode übernimmt:

  • ATA-Auflösung: Leitet automatisch Associated Token Accounts (ATAs) für den Sender und Empfänger ab. Falls die ATA des Empfängers nicht existiert, wird die Anweisung zur Erstellung des Konten automatisch zur selben Transaktion hinzugefügt.
  • Geprüfte Beträge: Übergeben Sie amount in Basiseinheiten zusammen mit den decimals des Mints. Die Übertragung wird on-chain gegen die Dezimalstellen des Mints geprüft (z. B. 250000 Basiseinheiten -> 0,25 Token, wenn der Mint 6 Dezimalstellen hat)
  • Transaktionsaufbau: sendTransaction() erstellt, signiert und sendet die Transaktion und liefert ein Ergebnis, dessen context.signature die Transaktionssignatur enthält
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();

Guthaben überprüfen

Nach Abschluss der Übertragung können die Token-Salden vom RPC abgerufen werden. Leiten Sie die ATA jeder Wallet mit findAssociatedTokenPda() ab und rufen Sie anschließend getTokenAccountBalance() auf, um den Saldo für das jeweilige Konten abzurufen.

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();

Token-Helfer erstellen

Fügen Sie das token2022Program()-Plugin mit .use(token2022Program()) zu Ihrem Client hinzu. Dadurch wird client.token2022 verfügbar, dessen instructions Methoden für gängige Token-Operationen bereitstellen.

Verwenden Sie token2022Program() für Mints, die dem Token-2022-Programm gehören, oder tokenProgram() aus @solana-program/token für Mints, die dem ursprünglichen Token Program gehören.

Zahlung senden

Verwenden Sie transferToATA(), um Token zwischen Wallets zu übertragen. Die Methode übernimmt:

  • ATA-Auflösung: Leitet automatisch Associated Token Accounts (ATAs) für den Sender und Empfänger ab. Falls die ATA des Empfängers nicht existiert, wird die Anweisung zur Erstellung des Konten automatisch zur selben Transaktion hinzugefügt.
  • Geprüfte Beträge: Übergeben Sie amount in Basiseinheiten zusammen mit den decimals des Mints. Die Übertragung wird on-chain gegen die Dezimalstellen des Mints geprüft (z. B. 250000 Basiseinheiten -> 0,25 Token, wenn der Mint 6 Dezimalstellen hat)
  • Transaktionsaufbau: sendTransaction() erstellt, signiert und sendet die Transaktion und liefert ein Ergebnis, dessen context.signature die Transaktionssignatur enthält

Guthaben überprüfen

Nach Abschluss der Übertragung können die Token-Salden vom RPC abgerufen werden. Leiten Sie die ATA jeder Wallet mit findAssociatedTokenPda() ab und rufen Sie anschließend getTokenAccountBalance() auf, um den Saldo für das jeweilige Konten abzurufen.

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?

Inhaltsverzeichnis

Seite bearbeiten
© 2026 Solana Foundation. Alle Rechte vorbehalten.