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.