Solana обеспечивает мгновенные глобальные переводы токенов с комиссиями менее $0.001. Независимо от того, строите ли вы сервис для международных переводов, выплат зарплаты или казначейских операций, базовый платёж в стейблкоинах проводится менее чем за секунду и стоит лишь доли цента.
Как это работает
Платёж переводит стейблкоины с токен-аккаунта отправителя на токен-аккаунт получателя. Если получатель впервые получает этот токен, его токен-аккаунт может быть создан в рамках той же транзакции.
Подробнее о ключевых концепциях платежей читайте в разделе Как работают платежи в Solana.
Вспомогательный инструмент splToken из
@solana/client автоматически
обрабатывает вывод ATA, преобразование десятичных значений и построение
транзакций. Это идеально подходит для одиночных переводов.
Ниже приведены основные этапы процесса. Полный рабочий код смотрите в разделе Демо.
Создайте токен-хелпер
Настройте вспомогательный инструмент splToken(), вызвав функцию
client.splToken() с адресом mint. Хелпер предоставляет методы для стандартных
операций с токенами.
Установка tokenProgram: "auto" позволяет автоматически определить, принадлежит
ли mint account программе Token или Token-2022.
Отправьте платёж
Используйте sendTransfer() для перевода токенов между кошельками. Метод
выполняет:
- Разрешение ATA: Автоматически определяет Associated Token Accounts (ATA) для отправителя и получателя. Если ATA получателя не существует, инструкция на создание аккаунта автоматически добавляется в ту же транзакцию.
- Преобразование десятичных значений: Принимает сумму токенов и автоматически переводит её в базовые единицы в зависимости от количества знаков после запятой у mint (например, 0.25 токена → 250000 базовых единиц, если у mint 6 знаков после запятой)
- Построение транзакции: Создаёт, подписывает и отправляет транзакцию с инструкцией на перевод
Проверка балансов
После завершения перевода используйте fetchBalance(), чтобы проверить балансы
токенов. Этот метод принимает адрес кошелька и автоматически определяет
соответствующий ATA для получения баланса.
Демонстрация
// 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?