Solana memungkinkan transfer token global secara instan dengan biaya di bawah $0,001. Baik Anda membangun remitansi lintas negara, pencairan gaji, atau operasi perbendaharaan, pembayaran stablecoin dasar diselesaikan dalam waktu kurang dari satu detik dan biayanya hanya sebagian kecil dari satu sen.
Cara kerjanya
Pembayaran memindahkan stablecoin dari token account pengirim ke token account penerima. Jika penerima menerima token ini untuk pertama kalinya, token account mereka dapat dibuat sebagai bagian dari transaksi yang sama.
Lihat How Payments Work on Solana untuk konsep pembayaran inti.
Helper splToken dari
@solana/client menangani derivasi
ATA, konversi desimal, dan pembangunan transaksi secara otomatis. Ini ideal
untuk transfer pembayaran tunggal.
Langkah-langkah di bawah ini menunjukkan alur inti. Lihat Demo untuk kode lengkap yang dapat dijalankan.
Buat token helper
Konfigurasikan helper splToken() dengan memanggil client.splToken() dengan
alamat mint. Helper menyediakan metode untuk operasi token umum.
Mengatur tokenProgram: "auto" secara otomatis mendeteksi apakah mint account
dimiliki oleh program Token atau Token-2022.
Kirim pembayaran
Gunakan sendTransfer() untuk mentransfer token antar dompet. Metode ini
menangani:
- Resolusi ATA: Secara otomatis menurunkan Associated Token Accounts (ATA) untuk pengirim dan penerima. Jika ATA penerima tidak ada, instruksi untuk membuat akun secara otomatis ditambahkan ke transaksi yang sama.
- Konversi desimal: Menerima jumlah token dan secara otomatis mengonversi ke unit dasar berdasarkan desimal mint (misalnya 0,25 token -> 250000 unit dasar, jika mint memiliki 6 desimal)
- Pembangunan transaksi: Membuat, menandatangani, dan mengirim transaksi dengan instruksi transfer
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});
Verifikasi saldo
Setelah transfer selesai, gunakan fetchBalance() untuk memverifikasi saldo
token. Metode ini menerima alamat dompet dan secara otomatis menurunkan ATA yang
sesuai untuk mengambil 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?