Депозит

Переводит SPL-токены из associated token account пользователя в associated token account эскроу, зачисляя депозит на баланс канала депонирующего пользователя (или указанного получателя).

Аккаунты

АккаунтЗаписываемыйПодписантОписание
payer✓✓Плательщик комиссии за транзакцию
user✓Владелец токенов, выполняющий депозит
instancePDA экземпляра эскроу
mintМинт SPL-токена
allowed_mintPDA, подтверждающий разрешённость минта для данного экземпляра
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?

Содержание

Редактировать страницу