PYUSD auf Solana: Der praktische Integrationsleitfaden (mit BlockEden.xyz RPC)
PayPal USD (PYUSD) ist auf Solana gelandet und markiert einen bedeutenden Meilenstein für digitale Zahlungen. Dieser Leitfaden bietet Ingenieuren, die PYUSD in Wallets, dApps und Handelsplattformen auf Solana integrieren, eine direkte, produktionsorientierte Anleitung.
Alle Beispiele verwenden aktuellen, Token-2022-kompatiblen Code und sind so konzipiert, dass sie nahtlos mit den latenzarmen Solana RPC-Endpunkten von BlockEden.xyz funktionieren.
Kurz gesagt
- Was: PayPal USD (PYUSD) ist jetzt ein natives Token-2022 SPL-Token auf Solana und bietet eine schnelle, kostengünstige Abwicklung für einen weltweit anerkannten Stablecoin.
- Schlüsselparameter: Mint
2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo
, Dezimalstellen6
und Token-ProgrammToken-2022
. - Funktionsumfang: Nutzt Solana Token Extensions (Token-2022). Es verfügt über einen initialisierten, aber derzeit inaktiven Transfer Hook (Null-Programm) sowie vertrauliche Übertragungsfunktionen und andere Erweiterungen.
- Cross-Chain: Eine offizielle LayerZero-Integration ermöglicht es PYUSD, über einen sicheren Burn-and-Mint-Mechanismus zwischen Ethereum und Solana zu wechseln, wodurch traditionelle Bridges umgangen werden.
- Aktion: Verwenden Sie diesen Leitfaden als sofort einsatzbereite Vorlage, um Ihrer Anwendung mit dem zuverlässigen Solana RPC von BlockEden.xyz PYUSD-Unterstützung hinzuzufügen.
Warum PYUSD auf Solana wichtig ist
Die Kombination der Marke PayPal mit der Leistung von Solana schafft eine leistungsstarke neue Schiene für digitale Dollars.
- Verbrauchervertrauen trifft auf Krypto-UX: PYUSD wird von der regulierten Treuhandgesellschaft Paxos ausgegeben und ist tief in PayPal und Venmo integriert. Dies bietet Nutzern ein vertrautes Asset. Sie können ein einziges PYUSD-Guthaben halten und wählen, ob sie es auf eine externe Wallet auf Ethereum oder Solana abheben möchten, wodurch die Komplexität der Kette abstrahiert wird.
- Zahlungsbereite Infrastruktur: Solanas Architektur bietet eine Transaktionsfinalität von unter einer Sekunde und Gebühren, die Bruchteile eines Cents betragen. PYUSD legt eine stabile, erkennbare Rechnungseinheit über dieses effiziente Abwicklungsnetzwerk, wodurch es ideal für Zahlungen, Handel und Überweisungen ist.
- Kontrollen auf institutionellem Niveau: Durch die Einführung als Token-2022-Token kann PYUSD integrierte Erweiterungen für Funktionen wie vertrauliche Übertragungen, umfangreiche Metadaten und einen permanenten Delegierten nutzen. Dies ermöglicht erweiterte Compliance und Funktionalität, ohne maßgeschneiderte, schwer zu prüfende Smart Contracts zu erfordern.
Die absoluten Grundlagen (Merken Sie sich diese)
Bevor Sie eine einzige Codezeile schreiben, legen Sie diese Parameter fest. Überprüfen Sie die Mint-Adresse immer in einem vertrauenswürdigen Explorer, um die Interaktion mit betrügerischen Token zu vermeiden.
- Mint (Mainnet):
2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo
- Dezimalstellen:
6
(bedeutet 1 PYUSD = 1.000.000 Basiseinheiten) - Token-Programm:
Token-2022
(Programm-ID:TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
) - Verwendete Token-Erweiterungen (beim Minting):
- Metadata & Metadata Pointer
- Permanent Delegate
- Transfer Hook (initialisiert mit einem Null-Programm)
- Confidential Transfer Configuration
Sie können all dies im Solana Explorer überprüfen. Der Explorer zeigt deutlich die offizielle Mint-Adresse und ihre aktivierten Erweiterungen an.
Projekt einrichten
Bereiten wir unsere Umgebung vor. Sie benötigen die neuesten Solana web3- und SPL-Token-Bibliotheken, um die volle Token-2022-Kompatibilität zu gewährleisten.
1. Bibliotheken
Installieren Sie die notwendigen Pakete von npm.
npm i @solana/web3.js @solana/spl-token
2. RPC-Verbindung
Verweisen Sie Ihre Anwendung auf Ihre BlockEden.xyz Solana Mainnet RPC-URL. Für die Produktion sind Umgebungsvariablen ein Muss.
// package.json
// npm i @solana/web3.js @solana/spl-token
import { Connection, Keypair, PublicKey } from "@solana/web3.js";
import {
TOKEN_2022_PROGRAM_ID,
getMint,
getOrCreateAssociatedTokenAccount,
getAssociatedTokenAddress,
createTransferCheckedInstruction,
} from "@solana/spl-token";
// Use your BlockEden.xyz Solana RPC URL from your dashboard
const RPC_ENDPOINT =
process.env.SOLANA_RPC_URL ??
"[https://your-blockeden-solana-mainnet-endpoint.com](https://your-blockeden-solana-mainnet-endpoint.com)";
export const connection = new Connection(RPC_ENDPOINT, "confirmed");
// PYUSD (mainnet)
export const PYUSD_MINT = new PublicKey(
"2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo",
);
PYUSD Mint-Daten lesen
Zuerst wollen wir die Eigenschaften des PYUSD-Mints programmatisch bestätigen. Dies ist ein entscheidender erster Schritt, um sicherzustellen, dass Ihre Konstanten korrekt sind und um Details wie das Gesamtangebot abzurufen.
// Confirm PYUSD mint info via Token-2022 APIs
const mintInfo = await getMint(
connection,
PYUSD_MINT,
"confirmed",
TOKEN_2022_PROGRAM_ID, // Specify the program ID
);
console.log({
supply: mintInfo.supply.toString(),
decimals: mintInfo.decimals, // Expect 6
isInitialized: mintInfo.isInitialized,
});
Beachten Sie, dass wir TOKEN_2022_PROGRAM_ID
explizit übergeben. Dies ist die häufigste Fehlerquelle bei der Arbeit mit Token-Erweiterungen.
Associated Token Accounts (ATAs) erstellen oder abrufen
Associated Token Accounts für Token-2022-Token müssen unter Verwendung der Token-2022-Programm-ID abgeleitet werden. Wenn Sie die veraltete TOKEN_PROGRAM_ID
verwenden, schlagen Transaktionen mit einem Fehler "incorrect program id" fehl.
// Payer and owner of the new ATA. Replace with your wallet logic.
const owner = Keypair.generate();
// Create or fetch the owner's PYUSD ATA (Token-2022 aware)
const ownerAta = await getOrCreateAssociatedTokenAccount(
connection,
owner, // Payer for creation
PYUSD_MINT, // Mint
owner.publicKey, // Owner of the ATA
false, // allowOwnerOffCurve
"confirmed",
undefined, // options
TOKEN_2022_PROGRAM_ID, // <-- IMPORTANT: Use Token-2022 Program ID
);
console.log("Owner PYUSD ATA:", ownerAta.address.toBase58());
PYUSD-Guthaben prüfen
Um das PYUSD-Guthaben eines Benutzers zu überprüfen, fragen Sie dessen ATA ab und denken Sie daran, die korrekte Programm-ID anzugeben.
Verwendung von @solana/spl-token
import { getAccount } from "@solana/spl-token";
const accountInfo = await getAccount(
connection,
ownerAta.address,
"confirmed",
TOKEN_2022_PROGRAM_ID,
);
const balance = Number(accountInfo.amount) / 10 ** mintInfo.decimals; // decimals = 6
console.log("PYUSD balance:", balance);
Direkte JSON-RPC-Aufrufe (curl)
Sie können auch alle Token-Konten für einen Eigentümer überprüfen und nach der Token-2022-Programm-ID filtern.
curl -X POST "$SOLANA_RPC_URL" -H 'content-type: application/json' -d '{
"jsonrpc":"2.0",
"id":1,
"method":"getTokenAccountsByOwner",
"params":[
"<OWNER_PUBLIC_KEY>",
{ "programId":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" },
{ "encoding":"jsonParsed" }
]
}'
PYUSD übertragen (Benutzer zu Benutzer)
Die Faustregel für die Übertragung jedes Token-2022-Assets ist die Verwendung von createTransferCheckedInstruction
. Diese Anweisung enthält die Dezimalstellen des Tokens, wodurch potenzielle dezimalbezogene Schwachstellen verhindert werden.
Hier ist eine vollständige, wiederverwendbare Funktion zur Übertragung von PYUSD.
import { Transaction } from '@solana/web3.js';
async function transferPyusd({
fromWallet, // The sender's Keypair
toPubkey, // The recipient's PublicKey
uiAmount, // The amount in PYUSD, e.g., 1.25
}: {
fromWallet: Keypair;
toPubkey: PublicKey;
uiAmount: number;
}) {
const decimals = 6; // From mintInfo.decimals
const rawAmount = BigInt(Math.round(uiAmount * (10 ** decimals)));
// Get the sender's ATA address
const fromAta = await getAssociatedTokenAddress(
PYUSD_MINT,
fromWallet.publicKey,
false,
TOKEN_2022_PROGRAM_ID
);
// Ensure the recipient's ATA exists for Token-2022
const toAta = await getOrCreateAssociatedTokenAccount(
connection,
fromWallet, // Payer
PYUSD_MINT,
toPubkey,
false,
'confirmed',
undefined,
TOKEN_2022_PROGRAM_ID
);
const transferInstruction = createTransferCheckedInstruction(
fromAta, // Source ATA
PYUSD_MINT, // Mint
toAta.address, // Destination ATA
fromWallet.publicKey, // Owner of the source ATA
rawAmount, // Amount in base units
decimals, // Decimals
[], // Multisig signers
TOKEN_2022_PROGRAM_ID // <-- IMPORTANT
);
const transaction = new Transaction().add(transferInstruction);
// Set recent blockhash and fee payer
transaction.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;
transaction.feePayer = fromWallet.publicKey;
const signature = await connection.sendTransaction(transaction, [fromWallet]);
await connection.confirmTransaction(signature, 'confirmed');
console.log('Transaction successful with signature:', signature);
return signature;
}
Hinweis zum Transfer Hook: Das Mint von PYUSD initialisiert die Transfer Hook-Erweiterung, setzt ihr Programm jedoch auf null
. Dies bedeutet, dass Standardübertragungen derzeit ohne zusätzliche Konten oder Logik funktionieren. Sollten PayPal/Paxos den Hook jemals aktivieren, werden sie das Mint aktualisieren, um auf ein neues Programm zu verweisen. Ihre Integration müsste dann die zusätzlichen Konten übergeben, die von der Schnittstelle dieses Programms benötigt werden.
Solana CLI-Schnelltest
Für einen schnellen manuellen Test über Ihre Befehlszeile können Sie spl-token
mit der korrekten Programm-ID verwenden.
# Ensure your CLI points to mainnet and your keypair is funded.
# Transfer 1.00 PYUSD to a recipient.
spl-token --program-id TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb \
transfer 2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo 1.00 <RECIPIENT_PUBKEY> \
--fund-recipient --allow-unfunded-recipient
Cross-Chain PYUSD (Ethereum ↔ Solana)
PayPal hat eine offizielle Cross-Chain-Funktion unter Verwendung von LayerZero implementiert. Anstatt sich auf riskante Drittanbieter-Bridges zu verlassen, handelt es sich hierbei um einen nativen Burn-and-Mint-Prozess: PYUSD wird auf der Quellkette (z. B. Ethereum) verbrannt und ein äquivalenter Betrag wird auf der Zielkette (Solana) gemintet. Dies eliminiert Bridge-spezifische Risiken und Slippage.
Das vollständige Tutorial und die Parameter finden Sie in der offiziellen PayPal-Entwicklerdokumentation.
Mit Faucets testen
Verwenden Sie für Entwicklung und Tests keine Mainnet-Assets. Nutzen Sie die offiziellen Faucets:
- Paxos PYUSD Faucet: Um Testnet-PYUSD-Token zu erhalten.
- Solana Faucet: Um Devnet-/Testnet-SOL für Transaktionsgebühren zu erhalten.
Häufige Fallstricke (und Lösungen)
- Falsche Programm-ID: Problem: Transaktionen schlagen mit
incorrect program id for instruction
fehl. Lösung: Übergeben SieTOKEN_2022_PROGRAM_ID
explizit an allespl-token
-Hilfsfunktionen (getOrCreateAssociatedTokenAccount
,getAccount
,createTransferCheckedInstruction
usw.). - Falsches Mint oder gefälschte Assets: Problem: Ihre Anwendung interagiert mit einem gefälschten PYUSD-Token. Lösung: Hardcodieren und überprüfen Sie die offizielle Mint-Adresse:
2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo
. Verwenden Sie einen Explorer, der vor nicht-kanonischen Mints warnt. - Dezimalstellen-Fehler: Problem: Das Senden von 1 PYUSD sendet tatsächlich 0,000001 PYUSD. Lösung: Konvertieren Sie UI-Beträge immer in Rohbeträge, indem Sie mit
10^6
multiplizieren. Rufen Sie die Dezimalstellen des Mints programmatisch ab, um sicherzugehen. - Hook-Annahmen: Problem: Sie erstellen komplexe Logik für einen Transfer Hook, der nicht aktiv ist. Lösung: Überprüfen Sie die Erweiterungsdaten des Mints. Ab heute ist der Hook von PYUSD null. Bauen Sie Ihr System so auf, dass es sich anpasst, falls das Hook-Programm in Zukunft aktiviert wird.
Produktions-Checkliste für PYUSD + BlockEden.xyz
Stellen Sie bei der Umstellung auf die Produktion sicher, dass Ihre Infrastruktur robust ist.
- RPC: Verwenden Sie einen hochverfügbaren BlockEden.xyz-Endpunkt. Verwenden Sie
confirmed
Commitment für eine reaktionsschnelle UX und Abfragen mitfinalized
für Operationen, die Ledger-Integrität erfordern. - Wiederholung & Idempotenz: Umhüllen Sie Transaktionsübermittlungen mit einem exponentiellen Backoff-Wiederholungsmechanismus. Speichern Sie einen Idempotenzschlüssel bei jeder Geschäftsoperation, um doppelte Übertragungen zu verhindern.
- Observability: Protokollieren Sie Transaktionssignaturen, Slot-Nummern und Guthaben nach der Transaktion. Verwenden Sie die Websocket-Abonnements von BlockEden.xyz, um Echtzeit-Abwicklungssignale für das Backend Ihrer Anwendung zu erhalten.
- Compliance: Token-2022 bietet Primitive für die Compliance. Wenn Sie Funktionen wie die Travel Rule implementieren müssen, ermöglicht Ihnen das Erweiterungsmodell dies sauber zu tun, indem Ihre Geschäftslogik von der Kernfunktionalität des Tokens getrennt bleibt.
Anhang A — Kurzübersicht
- Mint (Mainnet):
2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo
- Dezimalstellen:
6
- Token-Programm-ID:
TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
- Hintergrund: PayPal kündigte die Solana-Unterstützung am 29. Mai 2024 an.
- Offizielle Dokumentation: Solana Token Extensions, PayPal Developer Portal
Anhang B — Direkte JSON-RPC-Aufrufe (curl)
Mint-Kontoinformationen abrufen & Eigentümer bestätigen
Dieser Aufruf ruft die Mint-Kontodaten ab und ermöglicht Ihnen zu überprüfen, ob der Eigentümer das Token-2022-Programm ist.
# Replace with your BlockEden.xyz RPC URL
curl -s -X POST "$SOLANA_RPC_URL" -H 'content-type: application/json' -d '{
"jsonrpc":"2.0","id":1,"method":"getAccountInfo",
"params":["2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo",
{"encoding":"base64","commitment":"confirmed"}]
}'
# In der JSON-Antwort sollte das Feld "owner" gleich "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" sein.
Alle PYUSD Token-Konten eines Benutzers auflisten
Dies ist nützlich für Wallets, die alle PYUSD-Bestände eines bestimmten Benutzers ermitteln müssen.
curl -s -X POST "$SOLANA_RPC_URL" -H 'content-type: application/json' -d '{
"jsonrpc":"2.0",
"id":1,
"method":"getTokenAccountsByOwner",
"params":[
"<OWNER_PUBLIC_KEY>",
{"mint":"2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo"},
{"encoding":"jsonParsed","commitment":"confirmed"}
]
}'
Bereit zum Bauen? Holen Sie sich Ihren Hochleistungs- BlockEden.xyz RPC-Endpunkt und beginnen Sie noch heute mit der Integration der Zukunft des Zahlungsverkehrs.