Solana забезпечує миттєві глобальні перекази токенів з комісією менше $0.001. Незалежно від того, чи ви створюєте міжнародні грошові перекази, виплати заробітної плати чи операції казначейства, базовий платіж стейблкоїном завершується менш ніж за секунду і коштує частку цента.
Як це працює
Платіж переміщує стейблкоїни з token account відправника до token account отримувача. Якщо отримувач отримує цей токен вперше, його token account може бути створений як частина тієї ж транзакції.
Дивіться Як працюють платежі на Solana для ознайомлення з основними концепціями платежів.
Плагін token2022Program() із @solana-program/token-2022 розширює ваш клієнт
@solana/kit допоміжним об'єктом client.token2022.
Його метод transferToATA автоматично виконує деривацію ATA та побудову
транзакцій, що ідеально підходить для окремих платіжних переказів.
Кроки нижче показують основний процес. Дивіться Демо для повного робочого коду.
Створіть помічник токенів
Додайте плагін token2022Program() до свого клієнта за допомогою
.use(token2022Program()). Це відкриває доступ до client.token2022, чиї
instructions надають методи для поширених операцій з токенами.
Використовуйте token2022Program() для мінтів, якими керує програма Token-2022,
або tokenProgram() із @solana-program/token для мінтів, якими керує
оригінальний Token Program.
Надішліть платіж
Використовуйте transferToATA() для переказу токенів між гаманцями. Метод
обробляє:
- Визначення ATA: Автоматично виводить Associated Token Accounts (ATAs) для відправника та отримувача. Якщо ATA отримувача не існує, інструкція зі створення цього рахунку автоматично додається до тієї самої транзакції.
- Перевірені суми: Передайте
amountу базових одиницях разом ізdecimalsмінту. Переказ перевіряється відповідно до десяткових знаків мінту в мережі (наприклад, 250000 базових одиниць -> 0,25 токена, якщо мінт має 6 десяткових знаків) - Побудова транзакцій:
sendTransaction()будує, підписує та надсилає транзакцію, повертаючи результат, у якомуcontext.signatureмістить підпис транзакції
Перевірка балансів
Після завершення переказу зчитайте баланси токенів з RPC. Виведіть ATA кожного
гаманця за допомогою findAssociatedTokenPda(), а потім викличте
getTokenAccountBalance(), щоб отримати баланс для цього рахунку.
Демонстрація
// Generate signers for sender and recipientconst sender = await generateKeyPairSigner();const recipient = await generateKeyPairSigner();console.log("Sender Address:", sender.address);console.log("Recipient Address:", recipient.address);// Demo Setup: Create client, mint account, and fund the sender with initial tokensconst { client, mint } = await demoSetup(sender);console.log("\nMint Address:", mint.address);// =============================================================================// Basic Token Payment Demo// =============================================================================// Transfer tokens from sender to recipient. The source and destination ATAs are// derived automatically, and the recipient's ATA is created if it does not exist.const result = await client.token2022.instructions.transferToATA({mint: mint.address,authority: sender,recipient: recipient.address,amount: 250_000n, // 0.25 tokens (base units for a mint with 6 decimals)decimals: 6}).sendTransaction();console.log("\n=== Token Payment Complete ===");console.log("Transaction Signature:", result.context.signature);// Derive the sender and recipient ATAs to read their balancesconst [senderAta] = await findAssociatedTokenPda({mint: mint.address,owner: sender.address,tokenProgram: TOKEN_2022_PROGRAM_ADDRESS});const [recipientAta] = await findAssociatedTokenPda({mint: mint.address,owner: recipient.address,tokenProgram: TOKEN_2022_PROGRAM_ADDRESS});// Fetch final token account balances via RPCconst senderBalance = await client.rpc.getTokenAccountBalance(senderAta).send();const recipientBalance = await client.rpc.getTokenAccountBalance(recipientAta).send();console.log("\nSender Token Account Balance:",senderBalance.value.uiAmountString);console.log("Recipient Token Account Balance:",recipientBalance.value.uiAmountString);// =============================================================================// Demo Setup Helper Function// =============================================================================
Is this page helpful?