Базовий платіж

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(), щоб отримати баланс для цього рахунку.

Створіть помічник токенів

Додайте плагін 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(), щоб отримати баланс для цього рахунку.

Basic Payment
const client = createClient()
.use(signer(sender))
.use(solanaLocalRpc())
.use(token2022Program());

Демонстрація

Demo
// Generate signers for sender and recipient
const 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 tokens
const { 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 balances
const [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 RPC
const 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
// =============================================================================
Console
Click to execute the code.

Is this page helpful?

Зміст

Редагувати сторінку