Wie Zahlungen auf Solana funktionieren

Bevor Sie Zahlungsabläufe auf Solana erstellen, müssen Sie fünf Kernkonzepte verstehen: Wallets, Stablecoins, Token-Konten, Fees und Transaktionen. Solana-Zahlungen lassen sich klar auf Mehrwährungs-Zahlungssysteme abbilden:

Traditionelles ZahlungsmodellSolanaBeschreibung
Kunden-ID / KontonummerWallet-AdresseEindeutige Kennung für einen Kontoinhaber
Währung (USD, EUR)Token Mint (USDG, USDC)Der zu übertragende Vermögenswert
Saldo nach WährungToken account (ATA)Enthält einen Saldo einer bestimmten Währung/Mint

So wie ein Bankkunde eine einzige Identität hat, aber separate Salden für jede Währung hält, hat eine Solana-Wallet eine Adresse, aber ein eigenes Token account für jeden Vermögenswert, den sie hält. Lassen Sie uns jede Komponente aufschlüsseln.

Wallets: Sender und Empfänger

Jede Zahlung umfasst zwei Parteien, die jeweils durch eine Wallet-Adresse identifiziert werden – einen eindeutigen 32-Byte-Public-Key (z. B. 7EcDhS...).

  • Sender: Die Wallet, die die Zahlung initiiert. Muss über einen ausreichenden Stablecoin-Kontosaldo verfügen und die Transaktion signieren.
  • Empfänger: Die Ziel-Wallet. Muss nicht signieren oder über einen bestehenden Saldo verfügen.
  • Fee-Zahler: Die optionale Fee-Zahler-Wallet. Kann verwendet werden, um Stablecoin-only-Transaktionen zwischen Benutzern zu subventionieren oder zu ermöglichen.

Betrachten Sie Wallet-Adressen wie Bankkontonummern: öffentlich, sicher zu teilen und erforderlich, um Geld zu senden oder zu empfangen.

Stablecoins

Stablecoins werden auf Solana als "Token" bezeichnet. Token repräsentieren einen Vermögenswerttyp im Netzwerk. Jeder Token hat eine eindeutige Kennung, die als "Mint-Adresse" bezeichnet wird. Beim Erstellen von Zahlungssystemen verweisen Sie auf diese Mint-Adressen, um den Vermögenswert zu identifizieren, mit dem Sie interagieren. Hier sind einige gängige Stablecoin-Mints im Mainnet:

TokenHerausgeberMint-Adresse
USDCCircleEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDTTetherEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB
PYUSDPayPal2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo
USDGPaxos2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH

Weitere Informationen zu Stablecoins auf Solana finden Sie auf der Lösungsseite Stablecoins.

Validieren Sie beim Akzeptieren von Zahlungen immer die Mint-Adresse und das Token Program. Tokens können denselben Namen haben, aber unterschiedliche Herausgeber und zugrunde liegende Assets.

Token-Konten

Wallets halten Tokens nicht direkt. Stattdessen hat jede Wallet die Berechtigung über ein Token-Konto für jeden Typ von Token, den sie hält. Zahlungen erfolgen durch Übertragung von Tokens vom Token-Konto des Absenders zum Token-Konto des Empfängers desselben Mints:

Token-KontenToken-Konten

Ein Associated Token Account ist ein deterministisches Token-Konto, das an eine bestimmte Wallet und einen Mint gebunden ist. Bei gegebener Wallet-Adresse und Mint ist die ATA-Adresse immer dieselbe.

  1. Ein ATA pro Mint. Eine Wallet hat genau ein ATA für USDC, eines für USDT, usw.
  2. Muss vor dem Empfang existieren. Sie können keine Tokens an ein ATA senden, das nicht existiert.
  3. Absender erstellt typischerweise. Wenn das ATA des Empfängers nicht existiert, kann der Absender es als Teil der Zahlungstransaktion erstellen.
import { findAssociatedTokenPda } from "@solana-program/token";
const [receiverATA] = await findAssociatedTokenPda({
mint: USDG_MINT_ADDRESS,
owner: receiverWallet.address,
tokenProgram: TOKEN_PROGRAM_ADDRESS
});

Token Programs

Auf Solana sind Programme ausführbare Logik, die den Zustand von Konten steuern. Token-Konten werden von einem Token Program verwaltet – dem On-Chain-Code, der Übertragungen verifiziert und Guthaben atomar aktualisiert.

Solana hat zwei Token Programs:

ProgrammAdresseBeispiel-Token, die
dieses Programm verwenden
Token ProgramTokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DAUSDC, USDT
Token-2022TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEbPYUSD, USDG

Token-2022 (auch "Token Extensions" genannt) fügt Funktionen wie Transfer-Hooks, Transfer-Fee und vertrauliche Transfers hinzu. Beide Programme funktionieren ähnlich für grundlegende Transfers, aber Sie müssen das richtige verwenden, wenn Sie ATAs ableiten.

Warum das wichtig ist

Das Token Program, das zur Erstellung eines Tokens verwendet wurde, bestimmt die Anweisungen und den Konten-Status für das Token. Wenn Sie das falsche Programm verwenden, können Sie das Token nicht übertragen.

ATAs werden aus drei Eingaben abgeleitet: wallet + mint + token_program. Die Verwendung des falschen Programms erzeugt eine völlig andere Adresse:

import {
findAssociatedTokenPda,
TOKEN_PROGRAM_ADDRESS
} from "@solana-program/token";
import { TOKEN_2022_PROGRAM_ADDRESS } from "@solana-program/token-2022";
// USDC uses Token Program
const [usdcAta] = await findAssociatedTokenPda({
mint: USDC_MINT,
owner: walletAddress,
tokenProgram: TOKEN_PROGRAM_ADDRESS // ✓ Correct
});
// ❌ This will produce a different address because it uses the wrong program
const [wrongUsdcAta] = await findAssociatedTokenPda({
mint: USDC_MINT,
owner: walletAddress,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS // ❌ Wrong program
});
// PYUSD uses Token-2022
const [pyusdAta] = await findAssociatedTokenPda({
mint: PYUSD_MINT,
owner: walletAddress,
tokenProgram: TOKEN_2022_PROGRAM_ADDRESS // ✓ Correct
});

Das Ableiten eines ATA mit dem falschen Programm erzeugt eine ungültige Adresse. Passen Sie das Programm immer an das Mint des Tokens an.

Das gleiche Prinzip gilt für Transfer-Anweisungen. Jedes Token-Programm hat seine eigene Transfer-Anweisung, und Sie müssen die richtige aufrufen:

import { getTransferInstruction } from "@solana-program/token";
import { getTransferInstruction as getTransferInstruction22 } from "@solana-program/token-2022";
// For USDC (Token Program)
const usdcTransferIx = getTransferInstruction({
source: senderUsdcAta,
destination: receiverUsdcAta,
authority: senderWallet,
amount: 1_000_000n // 1 USDC (6 decimals)
});
// For PYUSD (Token-2022)
const pyusdTransferIx = getTransferInstruction22({
source: senderPyusdAta,
destination: receiverPyusdAta,
authority: senderWallet,
amount: 1_000_000n // 1 PYUSD (6 decimals)
});
// *Note*: Most token program JS Client functions include the ability
// to specify the token program address. Generally, defining it is a
// good practice to ensure you are fully aware of the program you are using
const usdcTransferIx2 = getTransferInstruction(
{
source: senderUsdcAta,
destination: receiverUsdcAta,
authority: senderWallet,
amount: 1_000_000n // 1 USDC (6 decimals)
},
{ tokenProgram: TOKEN_PROGRAM_ADDRESS }
);

Das Senden einer Transfer-Anweisung an das falsche Programm schlägt fehl. Das Programm validiert, dass es die beteiligten Token-Konten besitzt – Konten, die vom Token Program erstellt wurden, können nicht über Token-2022 übertragen werden und umgekehrt.

Um zu überprüfen, welches Programm ein Token oder Token-Konto verwendet, rufen Sie das Mint oder Token- Konto ab und prüfen Sie dessen owner-Feld:

import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");
const accountInfo = await rpc.getAccountInfo(address(mintAddress)).send();
// The owner field tells you which program manages this token
const tokenProgram = accountInfo.value?.owner;
// Returns: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA (Token Program)
// or: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb (Token-2022)

Für Zahlungsanwendungen speichern Sie die korrekte Programmadresse zusammen mit jedem unterstützten Token:

const SUPPORTED_TOKENS = {
USDC: {
mint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
program: TOKEN_PROGRAM_ADDRESS,
decimals: 6
},
PYUSD: {
mint: "2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo",
program: TOKEN_2022_PROGRAM_ADDRESS,
decimals: 6
}
};

Token Extensions

Das Token Extensions Program (Token 2022) bietet zusätzliche Funktionen durch weitere Anweisungen, die als Extensions bezeichnet werden. Extensions sind optionale Features, die Sie einem Token-Mint oder einem token account hinzufügen können.

Weitere Informationen zu Token Extensions finden Sie in der Token Extensions Dokumentation.

Fee

Solana-Zahlungen bestehen aus bis zu drei Kostenkomponenten:

Fee-TypSOLUSD (ca.)Wann
Basis-Transaktionsfee5.000 Lamports*~$0,0007Jede Transaktion (mehrere Zahlungen bündeln, um zu sparen)
Priority FeeVariabelVariabelOptional; schnellere Ausführung bei Netzwerkauslastung
Account-Erstellung (rent)~0,0029 SOL~$0,40Nur bei Erstellung eines neuen token account

Gesamtkosten pro Zahlung: Unter $0,001 für die meisten Transfers. Wenn ein neuer token account erstellt wird, rechnen Sie mit insgesamt ca. $0,40.

Solana verwendet lokale Fee-Märkte—jede Transaktion eines Programms konkurriert nur mit anderen Transaktionen, die denselben Status ansprechen. Das bedeutet, dass die Zahlungsgebühren auch bei hoher Netzwerkauslastung an anderer Stelle niedrig und vorhersehbar bleiben. Die rent-Kosten werden zudem in naher Zukunft um 50 % gesenkt.

Sie können Fee vollständig abstrahieren, sodass Nutzer nie mit SOL interagieren müssen. Siehe Fee Abstraction für Implementierungsmuster.

Transaktionen und Anweisungen

Eine Transaktion ist die atomare Ausführungseinheit auf Solana – entweder alle Operationen werden erfolgreich ausgeführt oder keine. Jede Transaktion enthält eine oder mehrere Anweisungen, also einzelne Befehle (z. B. „10 USDC übertragen“, „token account erstellen“).

Eine typische Zahlungs-Transaktion kann zwei Anweisungen enthalten: Erstellen des token account des Empfängers (falls erforderlich) und anschließende Token-Übertragung. Beide werden atomar ausgeführt – es gibt keine Zwischenzustände. Wie Sie in Payment Processing sehen werden, können Sie mehrere Zahlungen in einer einzigen Transaktion bündeln, um Kosten zu senken und den Durchsatz zu erhöhen.

Alles zusammenfügen

Ein typischer Zahlungsablauf:

  1. Eingaben sammeln. Wallet-Adressen von Sender und Empfänger sowie die Mint-Adresse des zu übertragenden Tokens abrufen.
  2. ATAs ableiten. Token-Konten für beide Parteien bestimmen.
  3. Erstellen und signieren. Transaktion mit den erforderlichen Überweisungs-Anweisungen erstellen und mit dem Schlüssel des Senders signieren.
  4. Senden und bestätigen. Transaktion wird in unter einer Sekunde abgewickelt.

Nächste Schritte


* ein lamport ist die kleinste Einheit von SOL und entspricht 0,000000001 SOL

Is this page helpful?

Inhaltsverzeichnis

Seite bearbeiten

Verwaltet von

© 2026 Solana Foundation.
Alle Rechte vorbehalten.
Verbinden Sie sich