Переводит SPL-токены из associated token account пользователя в associated token account эскроу, зачисляя депозит на баланс канала депонирующего пользователя (или указанного получателя).
Аккаунты
| Аккаунт | Записываемый | Подписант | Описание |
|---|---|---|---|
payer | ✓ | ✓ | Плательщик комиссии за транзакцию |
user | ✓ | Владелец токенов, выполняющий депозит | |
instance | PDA экземпляра эскроу | ||
mint | Минт SPL-токена | ||
allowed_mint | PDA, подтверждающий разрешённость минта для данного экземпляра | ||
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?