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 Zahlungsmodell | Solana | Beschreibung |
|---|---|---|
| Kunden-ID / Kontonummer | Wallet-Adresse | Eindeutige Kennung für einen Kontoinhaber |
| Währung (USD, EUR) | Token Mint (USDG, USDC) | Der zu übertragende Vermögenswert |
| Saldo nach Währung | Token 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:
| Token | Herausgeber | Mint-Adresse |
|---|---|---|
| USDC | Circle | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| USDT | Tether | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB |
| PYUSD | PayPal | 2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo |
| USDG | Paxos | 2u1tszSeqZ3qBWF3uNGPFc8TzMk2tdiwknnRMWGWjGWH |
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-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.
- Ein ATA pro Mint. Eine Wallet hat genau ein ATA für USDC, eines für USDT, usw.
- Muss vor dem Empfang existieren. Sie können keine Tokens an ein ATA senden, das nicht existiert.
- 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:
| Programm | Adresse | Beispiel-Token, die dieses Programm verwenden |
|---|---|---|
| Token Program | TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA | USDC, USDT |
| Token-2022 | TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb | PYUSD, 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 Programconst [usdcAta] = await findAssociatedTokenPda({mint: USDC_MINT,owner: walletAddress,tokenProgram: TOKEN_PROGRAM_ADDRESS // ✓ Correct});// ❌ This will produce a different address because it uses the wrong programconst [wrongUsdcAta] = await findAssociatedTokenPda({mint: USDC_MINT,owner: walletAddress,tokenProgram: TOKEN_2022_PROGRAM_ADDRESS // ❌ Wrong program});// PYUSD uses Token-2022const [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 usingconst 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 tokenconst 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-Typ | SOL | USD (ca.) | Wann |
|---|---|---|---|
| Basis-Transaktionsfee | 5.000 Lamports* | ~$0,0007 | Jede Transaktion (mehrere Zahlungen bündeln, um zu sparen) |
| Priority Fee | Variabel | Variabel | Optional; schnellere Ausführung bei Netzwerkauslastung |
| Account-Erstellung (rent) | ~0,0029 SOL | ~$0,40 | Nur 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:
- Eingaben sammeln. Wallet-Adressen von Sender und Empfänger sowie die Mint-Adresse des zu übertragenden Tokens abrufen.
- ATAs ableiten. Token-Konten für beide Parteien bestimmen.
- Erstellen und signieren. Transaktion mit den erforderlichen Überweisungs-Anweisungen erstellen und mit dem Schlüssel des Senders signieren.
- Senden und bestätigen. Transaktion wird in unter einer Sekunde abgewickelt.
Nächste Schritte
Interaktion mit Solana
Mit dem Netzwerk verbinden und Solana-Zahlungsdaten erkunden.
Erste Zahlung senden
Stablecoin-Überweisung erstellen und senden.
* ein lamport ist die kleinste Einheit von SOL und entspricht 0,000000001 SOL
Is this page helpful?