Solana umożliwia natychmiastowe, globalne transfery tokenów z opłatami poniżej 0,001 USD. Niezależnie od tego, czy tworzysz rozwiązania do przekazów międzynarodowych, wypłat wynagrodzeń czy operacji skarbowych, podstawowa płatność stablecoinem rozlicza się w mniej niż sekundę i kosztuje ułamek centa.
Jak to działa
Płatność przenosi stablecoiny z token account nadawcy na token account odbiorcy. Jeśli odbiorca otrzymuje ten token po raz pierwszy, jego token account może zostać utworzone w ramach tej samej transakcji.
Zobacz Jak działają płatności na Solanie, aby poznać podstawowe pojęcia dotyczące płatności.
Helper splToken z @solana/client
automatycznie obsługuje wyznaczanie ATA, konwersję dziesiętną i budowanie
transakcji. To idealne rozwiązanie do pojedynczych transferów płatności.
Poniższe kroki pokazują główny przebieg procesu. Pełny, gotowy do uruchomienia kod znajdziesz w sekcji Demo.
Utwórz Token Helper
Skonfiguruj helpera splToken(), wywołując client.splToken() z adresem mint.
Helper udostępnia metody do najczęstszych operacji na tokenach.
Ustawienie tokenProgram: "auto" automatycznie wykrywa, czy mint account jest
własnością programu Token lub Token-2022.
Wyślij płatność
Użyj sendTransfer(), aby przelać tokeny między portfelami. Metoda obsługuje:
- Rozpoznawanie ATA: Automatycznie wyznacza Associated Token Accounts (ATA) dla nadawcy i odbiorcy. Jeśli ATA odbiorcy nie istnieje, instrukcja utworzenia konta zostanie automatycznie dodana do tej samej transakcji.
- Konwersja dziesiętna: Przyjmuje kwoty tokenów i automatycznie przelicza je na jednostki bazowe na podstawie liczby miejsc po przecinku dla danego mint (np. 0,25 tokena -> 250000 jednostek bazowych, jeśli mint ma 6 miejsc dziesiętnych)
- Budowanie transakcji: Tworzy, podpisuje i wysyła transakcję z instrukcją transferu
const client = createClient({endpoint: "http://localhost:8899",websocketEndpoint: "ws://localhost:8900",commitment: "confirmed"});const splToken = client.splToken({mint: mint.address,tokenProgram: "auto"});const signature = await splToken.sendTransfer({amount: 0.25,authority: sender,destinationOwner: recipient.address});
Weryfikacja sald
Po zakończeniu transferu użyj fetchBalance(), aby zweryfikować salda tokenów.
Ta metoda przyjmuje adres portfela i automatycznie wyprowadza odpowiadający mu
ATA, aby pobrać saldo.
const client = createClient({endpoint: "http://localhost:8899",websocketEndpoint: "ws://localhost:8900",commitment: "confirmed"});const splToken = client.splToken({mint: mint.address,tokenProgram: "auto"});const signature = await splToken.sendTransfer({amount: 0.25,authority: sender,destinationOwner: recipient.address});const senderBalance = await splToken.fetchBalance(sender.address);const recipientBalance = await splToken.fetchBalance(recipient.address);
Demo
// Generate keypairs for sender and recipientconst sender = (await generateKeypair()).signer;const recipient = (await generateKeypair()).signer;console.log("Sender Address:", sender.address);console.log("Recipient Address:", recipient.address);// Demo Setup: Create client, mint account, token accounts, and fund with initial tokensconst { client, mint } = await demoSetup(sender, recipient);console.log("\nMint Address:", mint.address);// =============================================================================// Basic Token Payment Demo// =============================================================================// Create splToken helper for this mint using @solana/clientconst splToken = client.splToken({mint: mint.address,tokenProgram: "auto"});// Transfer tokens from sender to recipient (ATA and decimals handled automatically)const signature = await splToken.sendTransfer({amount: 0.25,authority: sender,destinationOwner: recipient.address});console.log("\n=== Token Payment Complete ===");console.log("Transaction Signature:", signature.toString());// Fetch final token account balances using splToken helperconst senderBalance = await splToken.fetchBalance(sender.address);const recipientBalance = await splToken.fetchBalance(recipient.address);console.log("\nSender Token Account Balance:", senderBalance);console.log("Recipient Token Account Balance:", recipientBalance);// =============================================================================// Demo Setup Helper Function// =============================================================================
Is this page helpful?