Депозит

Переказує SPL-токени з associated token account користувача до associated token account ескроу, зараховуючи баланс каналу користувача, який робить депозит (або баланс необов'язкового отримувача).

Акаунти

АкаунтЗаписуванийПідписантОпис
payer✓✓Платник комісії за транзакцію
user✓Власник токена, який робить депозит
instancePDA екземпляра ескроу
mintSPL-токен mint
allowed_mintPDA, що підтверджує дозвіл mint для цього екземпляра
user_ata✓Associated token account користувача (джерело)
instance_ata✓Associated token account ескроу (призначення)
system_programSystem Program
token_programSPL Token Program
associated_token_programAssociated Token Program
event_authorityPDA авторитету подій для CPI EmitEvent
private_channel_escrow_programПрограма ескроу (самопосилання для CPI)

Параметри

ПараметрТипОпис
amountu64Кількість токенів для депозиту в найменших одиницях токена
recipientOption<Pubkey>Необов'язковий отримувач у мережі; якщо None, зараховується баланс каналу користувача, який робить депозит

Повертає

Повертає TransactionBuilder, який можна використати для побудови та надсилання транзакції.

Приклад

import { getDepositInstructionAsync } from "../private-channel-escrow-program/clients/typescript/src/generated";
// allowedMint and instanceAta are auto-derived from mint and instance
const depositIx = await getDepositInstructionAsync({
payer: payerSigner,
user: userSigner,
instance: instancePda,
mint: mintAddress,
userAta: userAtaAddress,
amount: 1_000_000n,
recipient: null
});

Важливі примітки

  • ID програми: 9tgHa1DcnaSSUtmMsst8ovKTe1Gfxzezn27KnH9xXYeU
  • Для мінтів Token-2022 передавайте tokenProgram: TOKEN_2022_PROGRAM_ADDRESS явно, оскільки за замовчуванням використовується стандартний SPL Token Program
  • PDA allowed_mint повинен існувати (створений за допомогою AllowMint); спроба депозиту з недозволеним мінтом призводить до помилки InvalidAllowedMint
  • Якщо recipient має значення None, зараховується баланс каналу користувача, який робить депозит; якщо вказано — зараховується баланс зазначеного гаманця
  • Обидва акаунти — payer і user — повинні підписати транзакцію
  • Акаунт instance_ata повинен вже існувати (створений за допомогою AllowMint для цього мінта)

Is this page helpful?

Зміст

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