Переказує SPL-токени з associated token account користувача до associated token account ескроу, зараховуючи баланс каналу користувача, який робить депозит (або баланс необов'язкового отримувача).
Акаунти
| Акаунт | Записуваний | Підписант | Опис |
|---|---|---|---|
payer | ✓ | ✓ | Платник комісії за транзакцію |
user | ✓ | Власник токена, який робить депозит | |
instance | PDA екземпляра ескроу | ||
mint | SPL-токен mint | ||
allowed_mint | PDA, що підтверджує дозвіл mint для цього екземпляра | ||
user_ata | ✓ | Associated token account користувача (джерело) | |
instance_ata | ✓ | Associated token account ескроу (призначення) | |
system_program | System Program | ||
token_program | SPL Token Program | ||
associated_token_program | Associated Token Program | ||
event_authority | PDA авторитету подій для CPI EmitEvent | ||
private_channel_escrow_program | Програма ескроу (самопосилання для CPI) |
Параметри
| Параметр | Тип | Опис |
|---|---|---|
amount | u64 | Кількість токенів для депозиту в найменших одиницях токена |
recipient | Option<Pubkey> | Необов'язковий отримувач у мережі; якщо None, зараховується баланс каналу користувача, який робить депозит |
Повертає
Повертає TransactionBuilder, який можна використати для побудови та надсилання
транзакції.
Приклад
import { getDepositInstructionAsync } from "../private-channel-escrow-program/clients/typescript/src/generated";// allowedMint and instanceAta are auto-derived from mint and instanceconst 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?